Android内置了基于用户设备语言(http://developer.android.com/training/basics/supporting-devices/languages.html)在资源之间切换的功能,但是可以手动切换资源吗?
例如,如果我有: yProject / RES / 值/ strings.xml中 值-ES / strings.xml中 值-FR / 的strings.xml
我可以根据用户偏好而不是设备语言更改使用哪个字符串文件吗?那么使用法语设备的人可以选择使用英文文本吗?
我知道我可以在代码中使用字符串变量而不是使用xml,但我觉得xml会更整洁。
答案 0 :(得分:0)
是的,你可以。这是根据用户偏好从项目复制/粘贴到onCreate()
:
Resources res = getResources();
Configuration conf = res.getConfiguration();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String def = Locale.getDefault().getDisplayLanguage();
String lang = prefs.getString("LANGUAGE", def);
conf.locale = new Locale(lang);
Log.v("myapp", lang+" = "+conf.locale+" = "+conf.locale.getDisplayName());
res.updateConfiguration(conf, res.getDisplayMetrics());
通过将名为LANGUAGE的用户首选项设置为所需语言的双字母代码,然后重新启动Activity,您可以手动覆盖设置语言。通过删除首选项,您将获得系统默认值。