我可以访问的资源来自不同区域的Android?我可以访问的资源来自不同区域的Android?(Can

2019-05-12 02:34发布

我在我的应用二区域设置。 我可以访问的资源,例如字符串数组从不同的语言环境不改变当前的语言环境? 我指的是编码,我不喜欢去改变它的设置。

Answer 1:

更好的解决办法是(如果你是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;
}


Answer 2:

这里是为我工作的代码,如果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);

目前的语言环境没有改变,这正是关键所在。



Answer 3:

是的你可以。 你必须创建一个新的Resources对象,指定打算Configuration

参考: http://developer.android.com/reference/android/content/res/Resources.html#Resources%28android.content.res.AssetManager,%20android.util.DisplayMetrics,%20android.content.res.Configuration% 29



Answer 4:

在Java 7(因此不是机器人)区域设置可以不同地为格式资源集和不同的用于显示:

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

类似的线程: 在应用程式中更改地区 。



文章来源: Can I access to resources from different locale android?