在我的应用程序中,我要求语言,可以是英语或德语。所选语言及其iso代码将保存到首选项中。在选定语言的基础上,我需要将所有文本更改为相应的语言。
为此,我创建了res / values和res / values-de;每个文件夹包含一个strings.xml文件。问题是: 1)我正在使用opengl打开相机和屏幕。在通过它们两者导航后,文本不会完全变为德语(如果被选中)。某些文本值更改为德语,甚至不在同一页面上。 2)即使没有通过摄像头和opengl屏幕,结果也不会总是100%实现,但与案例1相比总能得到更好的结果。
我的实施: 1)在启动画面的onResume()中,我在config.locale()的帮助下根据首选项更改了语言环境。 2)在清单文件中,每个活动都设置为activity:configChanges =“locale”。 3)在相机活动和opengl活动中,onConfigurationChanged()被覆盖,其中我再次按照首选项设置语言环境。
请指导如何解决区域设置问题。
答案 0 :(得分:0)
此外,您可以尝试使用此代码。这是我更新我的应用程序的区域设置:
public void updateLocale(String language) {
Locale myLocale = new Locale(language);
Locale.setDefault(myLocale);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
让我知道它是否有帮助!
答案 1 :(得分:0)
我相信您需要在AndroidManifest文件中添加一些内容以指示区域设置更改。以下是一个示例:http://android.programmerguru.com/android-localization-at-runtime/
答案 2 :(得分:0)
我的应用程序遇到了类似的问题。 App在土耳其语和英语之间有强制语言更改选项。如果我的设备语言是英语,如果我使用土耳其语的应用程序,我可以使用以下代码轻松转换语言:
public void setAppLanguage(String languageCode) {
String countryCode;
if (languageCode.equals("tr")){
countryCode = "TR";
}else{
countryCode = "US";
}
Locale locale = new Locale(languageCode, countryCode);
Locale.setDefault(locale);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = locale;
res.updateConfiguration(conf, dm);
loginPrefsEditor.putString("uLang",languageCode);
loginPrefsEditor.apply();
}
但是,当我打开相机并从中返回时,应用语言会更改为默认手机语言。当我打开相机时,应用程序会杀死我的活动。从相机返回后,它刷新一切。因此,为了解决这个问题,我将强制更改语言方法放在每个活动的 onResume()方法中。
通过这样做,我将能够解决这个问题。