android US Locale无法正常工作

时间:2012-11-19 15:20:02

标签: android locale

我有以下问题:

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

所以我使用共享首选项来更改区域设置。

        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

非常接受任何帮助。

1 个答案:

答案 0 :(得分:1)

我刚刚找到the answer(请参阅the 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,这不是你想要的。