根语言环境的规范表示是什么?
三个可能的选项-“”(空字符串)、“root”或“und”(待定)
JDK 1.6添加了Locale。使用空语言的根-新区域设置(“”,“”,”)。
{吉藤}我喜欢“”(空字符串)有几个原因
逻辑(无特殊处理)
与Java相同
然而,向后兼容性问题-我们可以更改ULocale吗。现在从ULocale(“ROOT”)根到ULocable(“”)?
规范化
在区域设置构造函数中应该做什么?
预期的行为是什么 ULocale.canonicalize(字符串)?
{Yoshito}规范化应该规范化大小写和以下映射
不推荐的ICU地区
fr_fr_PREEURO->fr_fr@货币=FRF
hi__DIRECT->(高_直接->)hr@排序=直接
映射到关键字的其他变量
祖父BCP 47标签
art_LOJBAN->jbo
zh_HAKKA/zh__HAKQA->hak
其他BCP47特权标签-首选映射
az_az_CYRL->az_CYRL_az
zh_CHS->zh_Hans
具有两个等效字母的三字母语言代码(eng)
具有两个等效字母的三字母区域码(xxx)
具有两个等效字母的三位数代码(813)
交换脚本和区域代码(另请参见上面的.NET名称)
U定位。根
当前:新ULocale(“root”);
提议:新ULocale(“”);
U本地#getFallback()
当前:ULocable(“en__POSIX”)->ULocale(“en_”)->U本地(“en”)->L本地(“”)->空
建议:ULocale(“en__POSIX”)->ULocale(“en”)->ULocale(“”)->null
ULocale.getFallback(字符串)
当前:“en__POSIX”->“en_”->“en”->“”->“
建议:“en_POSIX”->“en”->“”->空?
2009年11月17日举行了电话会议,讨论这些设计问题。与会者:马克、马库斯、道格、乌梅什和吉藤。
我们的结论如下:
U定位。ROOT.toString()==“”,而不是“ROOT”
业务连续性第47页
U定位。根至BCP47“und”
区域设置。根至BCP47“und”
BCP47“und”到ULocale“”
getFallback()从名义形式而不是规范形式中截取,从不留下划线,只适用于“_”分隔的字符串。
ULocale类{
。。。
static ULocale getCanonicalInstance(String);//工厂
ULocale getCanonicalEquivalent();//使用缓存的内部指针
。。。
};
将“und”规范化为“”。ULocale(“und-DE”)将具有
lang=“und”,region=“DE”
规范lang=“”,规范region=“DE”
资源捆绑包
en->“”->null?