Android 如何通过代码设置b+zh+hans等扩展格式的Locale
实现方法
Java 7及更高版本已经内置了BCP 47语言标签标准的支持,无需手动解析编码,直接调用Locale.forLanguageTag()方法即可完成符合扩展格式要求的Locale实例化。
针对你提到的两类特殊编码适配方式如下:
- 对于
b+zh+hans这类Android场景常用的带b+前缀的变体标识,只需要先做简单的字符替换,将前缀移除、把+替换为标准分隔符-即可转换为标准BCP 47标签传入方法 - 对于
pt-rBR这类带-r区域标识的格式,将-r直接替换为-即可得到符合要求的标准标签pt-BR
代码示例
// 标准扩展标签直接实例化 Locale zhHansLocale = Locale.forLanguageTag("zh-Hans"); Locale ptBrLocale = Locale.forLanguageTag("pt-BR"); // 兼容Android格式的特殊标签处理 String androidLangTag = "b+zh+hans"; String standardTag = androidLangTag.replaceFirst("^b\\+", "").replace('+', '-'); Locale targetLocale = Locale.forLanguageTag(standardTag);
如果你使用的是Java 7以下的版本,可引入ICU4J第三方库,使用
com.ibm.icu.util.Locale类的同名forLanguageTag()方法实现相同能力,不需要手动编码解析复杂的语言码规则。
内容的提问来源于stack exchange,提问作者hoshiKuzu
相关产品推荐
相关产品推荐

