我的应用程序中有两个区域设置。我是否可以访问资源,例如来自不同语言环境的字符串数组,而无需更改当前语言环境? 我的意思是编码,我不想在设置中更改它。
答案 0 :(得分:23)
更好的解决方案是(如果您使用的是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;
}
答案 1 :(得分:9)
如果cMK是来自当前语言环境的String数组,而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);
当前的语言环境没有改变,这就是重点。
答案 2 :(得分:2)
是的,你可以。您必须创建一个新的Resources
对象,指定打算Configuration
。
答案 3 :(得分:0)
在Java 7中(所以不是android)可以为格式资源设置不同的区域设置,并为显示设置不同的区域设置:
Locale.setDefault(DISPLAY, Locale.PL);
Locale.setDefault(FORMAT, Locale.US);