我有以下问题:
我想以编程方式更改应用的语言。
所以我使用共享首选项来更改区域设置。
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
非常接受任何帮助。
答案 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
,这不是你想要的。