Android以编程方式将区域设置更改为扩展代码



我尝试遵循https://stackoverflow.com/a/42269965/1067596,它与两个字母代码一起工作,但不与b+zh+hanspt-rBR等代码一起工作

看起来像Locale类不能直接实例化这样的值,如果java不理解他们?这样的代码可以在不手动解析的情况下以编程方式设置吗?

对于IETF BCP 47语言标记,您可以使用静态方法Locale.forLanguageTag(String)。这是自Android SDK 21以来可用的。如果你想支持更低的SDK,你可以像这里描述的那样使用common -lang。

为了符合IETF BCP 47,标签必须用连字符(-)分隔。你的第一个例子不工作,似乎应该是zh-hans-...。你的第二次运行,但似乎也错了。我猜应该是pt-BRpt-PT

请注意,语言标签是大小写独立的,但国家代码通常都是大写的

Locale chineseSimplifiedHongkong = Locale.forLanguageTag("zh-Hans-HK");
Locale portugueseBrazil = Locale.forLanguageTag("pt-BR");

最新更新