我可以从不同的locale android访问资源吗?

时间:2012-06-03 22:52:22

标签: android locale

我的应用程序中有两个区域设置。我是否可以访问资源,例如来自不同语言环境的字符串数组,而无需更改当前语言环境? 我的意思是编码,我不想在设置中更改它。

4 个答案:

答案 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)

答案 3 :(得分:0)

在Java 7中(所以不是android)可以为格式资源设置不同的区域设置,并为显示设置不同的区域设置:

Locale.setDefault(DISPLAY, Locale.PL);
Locale.setDefault(FORMAT, Locale.US);

类似帖子:Changing Locale within the app itself