3

我有以下问题:

我想以编程方式更改我的应用程序的语言。

所以我使用共享首选项来更改语言环境。

        Locale locale2 = new Locale("b0"); 
        Locale.setDefault(locale2);
        Configuration config2 = new Configuration();
        config2.locale = locale2;
        getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());

b0 是保存的本地。

b0 与德语语言环境 de 和英语语言环境 en 完美配合,但不适用于美国语言环境: en_US

当然,我添加了一个新文件夹:

res/values-en-rUS

使用美国字符串 xml。

如果我将手机的语言更改为英语(美国),应用程序会以美国英语开头。

我什至将我的台词编辑为:

            Locale locale2 = new Locale("en_US"); 

还是行不通。

“en_US”有什么问题吗?

http://developer.android.com/reference/java/util/Locale.html

任何帮助都非常受欢迎。

4

1 回答 1

2

我刚刚找到了答案(请参阅javadoc)。

在你的情况下,你应该写:

Locale locale2 = new Locale("en","US"); 

在基于 scala 的语言中,一般功能如下:

val locale = if(name contains '_') {
  val splitted = sign.split("_")
  new Locale(splitted(0),splitted(1))
} else {
  new Locale(name); 
}

否则它定义了一个新的语言代码en_us,这不是你想要的。

于 2014-04-11T21:49:32.620 回答