我的应用程序中有两个语言环境。我可以在不更改当前语言环境的情况下访问资源,例如来自不同语言环境的字符串数组吗?我的意思是编码我不喜欢在设置中更改它。
问问题
7519 次
4 回答
32
更好的解决方案是(如果您使用的是 API 17):
@NonNull
protected String getEnglishString() {
Configuration configuration = getEnglishConfiguration();
return getContext().createConfigurationContext(configuration).getResources().getString(message);
}
@NonNull
private Configuration getEnglishConfiguration() {
Configuration configuration = new Configuration(getContext().getResources().getConfiguration());
configuration.setLocale(new Locale("en"));
return configuration;
}
于 2015-11-10T11:41:19.393 回答
9
如果 cMK 是来自当前语言环境的字符串数组并且 cEN 是来自不同语言环境的字符串数组,那么这是对我有用的代码
cMK = getResources().getStringArray(R.array.cities);
Configuration confTmp =new Configuration( getResources().getConfiguration());
confTmp.locale = new Locale("en");
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Resources resources = new Resources(getAssets(), metrics, confTmp);
/* get localized string */
cENG = getResources().getStringArray(R.array.cities);
当前的语言环境没有改变,这就是重点。
于 2012-06-04T09:35:33.847 回答
2
是的你可以。您必须创建一个新Resources
对象来指定预期的Configuration
.
于 2012-06-03T22:54:52.677 回答
0
在 Java 7(所以不是 android)中,可以为格式资源设置不同的区域设置,并为显示设置不同的区域设置:
Locale.setDefault(DISPLAY, Locale.PL);
Locale.setDefault(FORMAT, Locale.US);
类似的线程:在应用程序本身内更改区域设置。
于 2013-01-30T10:32:45.527 回答