android - 以编程方式将应用程序语言环境设置为 pt_BR

标签 android resources locale

我有一个支持葡萄牙语和巴西地区的应用程序。我创建了一个 values-pt(包含葡萄牙语翻译)和 values-pt-rBR(包含巴西语翻译)。然后我尝试将应用程序语言更改为 Potuguese(葡萄牙)并且应用程序语言正确更改。当我将它设置为葡萄牙语(巴西)时,它没有。我尝试将手机默认语言更改为葡萄牙语(巴西),但仍然无效。它在两种情况下(以编程方式和系统方式)都适用于葡萄牙语(葡萄牙)。有谁知道问题出在哪里?以编程方式更改应用程序语言环境的代码如下:

Locale locale = new Locale(strLocale);
Locale.setDefault(locale);

config.locale = locale;
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());

对于葡萄牙语和巴西语,strLocale 分别设置为“pt”或“pt_BR”。

最佳答案

我假设您的目标是 Android OS > 2.2,因为 Android 从 2.3+ 版本开始支持这两种葡萄牙语。
我在模拟器上测试了它,通过交换语言和键盘并且只有 1 个字符串不同:app_name,所以它出现在应用程序标题中并且工作正常。

唯一的区别是我将葡萄牙区域命名为 values-pt-rPT 而不是 values-pt。
我没有测试 fly-relocalization,但我想它也能正常工作。
我认为当你使用区域时,你必须为每个本地化指定一个区域(即法国的 fr-rFR 和加拿大的 fr-rCA)并且不能使用 default (在你的情况下为 pt ,或者在我的第二个例子中是 fr)。

link更深入地说明了整个事情。

[编辑]

通过代码创建新的语言环境时,尝试:

final Locale myLocale = new Locale("pt", "PT");

final Locale myLocale = new Locale("pt", "BR");

这是引用文献 site 中的另一页.

关于android - 以编程方式将应用程序语言环境设置为 pt_BR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527164/

相关文章:

java - 如何分割 List<List<String>> 行

android - 在构造函数中设置 BitmapDrawable 资源

c# - 在 C# 中循环遍历不同语言/文化的嵌入式资源

java - 如何在 Spring-Boot 中使用 SSL 证书并为 Android 客户端生成公钥

android - 找不到 NAndroid project.properties

.NET 等同于 Java 资源包中的选择?

angular - 在 angular2-material-datepicker 中设置区域设置

java - 输入字符串 : "15,7" 的 NumberFormatException

ios - UIDatePicker 显示 12 小时时间而不是 24 小时时间

Android - session Cookie