android - 以编程方式更改语言和国家/地区
android - Change language AND country programmatically
我正在开发一款允许用户在应用设置中更改语言的应用。但只要有些国家有 2 种或更多语言,有些语言在 1 个以上的国家使用,我就需要使用 xx-XX 格式。
例如,来自比利时的用户可以 select 法语或荷兰语。
我使用下一个代码片段来更改语言:
protected void setLocale() {
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
Locale locale = new Locale(dataManager.getLocale().toLowerCase());
Locale.setDefault(locale);
conf.locale = locale;
res.updateConfiguration(conf, dm);
}
dataManager.getLocale()
returns String
喜欢 "fr-BE" 或 "nl-BE".
我有以下资源文件:
values-fr/strings.xml
values-fr-rBE/strings.xml
values-nl/strings.xml
values-nl-rBE/strings.xml
但即使我将语言环境设置为 nl-BE
,它也会使用来自 values-nl
目录的字符串,而不是来自 values-nl-rBE
.
的字符串
所以,我的问题是:"How can I make my app to use resources for certain language AND region in runtime?"
您应该在 Locale
构造函数的第二个参数中指定国家/地区。
Locale (String language, String country)
Constructs a new Locale
using the specified language and country codes.
例如:
Locale locale = new Locale("nl", "BE");
我正在开发一款允许用户在应用设置中更改语言的应用。但只要有些国家有 2 种或更多语言,有些语言在 1 个以上的国家使用,我就需要使用 xx-XX 格式。 例如,来自比利时的用户可以 select 法语或荷兰语。
我使用下一个代码片段来更改语言:
protected void setLocale() {
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
Locale locale = new Locale(dataManager.getLocale().toLowerCase());
Locale.setDefault(locale);
conf.locale = locale;
res.updateConfiguration(conf, dm);
}
dataManager.getLocale()
returns String
喜欢 "fr-BE" 或 "nl-BE".
我有以下资源文件:
values-fr/strings.xml
values-fr-rBE/strings.xml
values-nl/strings.xml
values-nl-rBE/strings.xml
但即使我将语言环境设置为 nl-BE
,它也会使用来自 values-nl
目录的字符串,而不是来自 values-nl-rBE
.
所以,我的问题是:"How can I make my app to use resources for certain language AND region in runtime?"
您应该在 Locale
构造函数的第二个参数中指定国家/地区。
Locale (String language, String country)
Constructs a new Locale using the specified language and country codes.
例如:
Locale locale = new Locale("nl", "BE");