多语言android应用程序?

时间:2011-03-18 05:58:31

标签: android locale

我必须用3种语言制作我的Android应用程序,即德语,英语和荷兰语。我在res目录中的android应用程序名values-devalues-nl中创建了三个文件夹。 现在,当用户选择特定语言时,我执行以下代码:

Resources res = getResources();
Configuration newConfig = new Configuration(res.getConfiguration());
newConfig.locale = Locale.ENGLISH;
res.updateConfiguration(newConfig, null);

不同值文件夹中的所有字符串都具有相同的名称,即values文件夹中名为add_site的字符串在the values-de文件夹中具有相同的名称,但具有不同的值。 当我将语言环境设置为德语时,我的应用程序没有加载德语值?可能是什么问题?

谢谢你的帮助。

2 个答案:

答案 0 :(得分:6)

在调用onCreate()之后尝试将其放入super.onCreate

Locale locale = new Locale("de");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
      getBaseContext().getResources().getDisplayMetrics());

编辑: Here's another approach。它似乎非常灵活,但在评论中似乎存在一些不同意见是否适用于所有Android版本。

答案 1 :(得分:0)

如果您还支持具有不同布局方向LTR或RTL的语言,则设置配置区域设置是不够的。

subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid)