【发布时间】:2014-04-19 14:18:32
【问题描述】:
我正在致力于 Android 应用程序的全球化。我必须提供从应用程序中选择不同语言环境的选项。我在我的活动 (HomeActivity) 中使用以下代码,我提供了更改语言环境的选项
Configuration config = new Configuration();
config.locale = selectedLocale; // set accordingly
// eg. if Hindi then selectedLocale = new Locale("hi");
Locale.setDefault(selectedLocale); // has no effect
Resources res = getApplicationContext().getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
只要没有像屏幕旋转这样的区域设置默认为 android 系统级区域设置而不是代码设置的区域设置的配置更改,此方法就可以正常工作。
Locale.setDefault(selectedLocale);
我能想到的一个解决方案是使用 SharedPreferences 持久化用户选择的语言环境,并在每个活动的 onCreate() 方法中将语言环境设置为持久化语言环境,因为每次配置更改都会一次又一次地调用 onCreate()。有没有更好的方法来做到这一点,这样我就不必在每项活动中都这样做了。
基本上我想要的是 - 一旦我在 HomeActivity 中更改/设置为某个区域设置,我希望我的应用程序中的所有活动都使用该区域设置本身,而不管任何配置更改......除非它被更改为应用的 HomeActivity 中提供更改语言环境的选项的其他语言环境。
【问题讨论】:
-
解决方案可以在Set Locale programmatically找到。
标签: java android localization locale globalization