我的应用中有一个设置,允许用户选择不同的本地化(语言),即Chinese, German, etc
。
我想做的是,一旦用户做出选择,立即使用当前所选语言的字符串更新布局。当然,我希望将lang更改传播到所有当前活动,而无需重新加载应用程序。
我发现了这个(还没有尝试过),但是想知道是否有更清洁的方法。
http://www.tutorialforandroid.com/2009/01/force-localize-application-on-android.html
格拉西亚斯
答案 0 :(得分:2)
我也有这个问题。我使用下面的代码然后它改变了语言而没有刷新活动
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
onConfigurationChanged(conf);
/*Intent refresh = new Intent(this, AndroidLocalize.class);
startActivity(refresh);*/
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// refresh your views here
lblLang.setText(R.string.langselection);
super.onConfigurationChanged(newConfig);
}
我希望它能帮到你.......
答案 1 :(得分:0)
您应该实施一些步骤
首先,您需要更改配置的区域设置
Resources resources = context.getResources();
Configuration configuration = resources.getConfiguration();
configuration.locale = new Locale(language);
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
其次,如果您希望更改直接应用于可见的布局,您可以直接更新视图,也可以调用activity.recreate()来重新启动当前活动。
此外,您还必须保留更改,因为在用户关闭您的应用程序后,您将失去语言更改。
我在博文Change Language Programmatically in Android
上解释了更详细的解决方案基本上,您只需在应用程序类上调用LocaleHelper.onCreate(),如果要动态更改语言环境,可以调用LocaleHelper.setLocale()