android - 以编程方式更改语言和国家/地区

时间:2015-10-02 13:00:59

标签: android runtime locale region

我正在开发一款允许用户在应用设置中更改语言的应用。但只要一些国家/地区有两种或更多种语言并且某些语言在一个以上的国家/地区使用,我就需要使用xx-XX格式。 例如,来自比利时的用户可以选择法语或荷兰语。

我使用下一个代码段来更改语言:

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()返回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中的字符串。

所以,我的问题是:"如何让我的应用程序在运行时使用某些语言和区域的资源?"

1 个答案:

答案 0 :(得分:1)

您应该在@media print { html, body { color: yellow; font-size: 0.9em; } } 构造函数的第二个参数中指定国家/地区。

  

Locale (String language, String country)
  构造一个新的Locale   使用指定的语言和国家/地区代码。

例如:

Locale