我尝试遵循https://stackoverflow.com/a/42269965/1067596,它与两个字母代码一起工作,但不与b+zh+hans
或pt-rBR
等代码一起工作
看起来像Locale
类不能直接实例化这样的值,如果java不理解他们?这样的代码可以在不手动解析的情况下以编程方式设置吗?
对于IETF BCP 47语言标记,您可以使用静态方法Locale.forLanguageTag(String)
。这是自Android SDK 21以来可用的。如果你想支持更低的SDK,你可以像这里描述的那样使用common -lang。
为了符合IETF BCP 47,标签必须用连字符(-
)分隔。你的第一个例子不工作,似乎应该是zh-hans-...
。你的第二次运行,但似乎也错了。我猜应该是pt-BR
或pt-PT
。
请注意,语言标签是大小写独立的,但国家代码通常都是大写的
Locale chineseSimplifiedHongkong = Locale.forLanguageTag("zh-Hans-HK");
Locale portugueseBrazil = Locale.forLanguageTag("pt-BR");