3

Android 内置了基于用户设备语言(http://developer.android.com/training/basics/supporting-devices/languages.html)在资源之间切换的功能,但是可以手动切换资源吗?

例如,如果我有:yProject/res/values/strings.xml values-es/strings.xml values-fr/strings.xml

我可以根据用户偏好而不是他们的设备语言来更改使用哪个字符串文件吗?所以使用法语设备的人可以根据需要选择使用英文文本吗?

我知道我可以在代码中使用字符串变量而不是使用 xml,但我觉得 xml 会更整洁。

4

1 回答 1

1

是的你可以。这是一个项目的复制/粘贴,根据用户偏好,将其放入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,您可以手动覆盖设置语言。通过删除首选项,您将获得系统默认值。

于 2015-07-12T12:07:22.747 回答