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");