根区域设置和回退

问题

    • 马库斯(Markus)的问题:是否有任何回退会变成零?他们不应该停在根语言环境中吗?

设计问题

    1. 根语言环境的规范表示是什么?

      1. 三个可能的选项-“”(空字符串)、“root”或“und”(待定)

      2. JDK 1.6添加了Locale。使用空语言的根-新区域设置(“”,“”,”)。

      3. {吉藤}我喜欢“”(空字符串)有几个原因

        1. 逻辑(无特殊处理)

        2. 与Java相同

        3. 然而,向后兼容性问题-我们可以更改ULocale吗。现在从ULocale(“ROOT”)根到ULocable(“”)?

    2. 规范化

      1. 在区域设置构造函数中应该做什么?

      2. 预期的行为是什么 ULocale.canonicalize(字符串)?

      3. {Yoshito}规范化应该规范化大小写和以下映射

        1. 不推荐的ICU地区

          1. fr_fr_PREEURO->fr_fr@货币=FRF

          2. hi__DIRECT->(高_直接->)hr@排序=直接

          3. 映射到关键字的其他变量

        2. 祖父BCP 47标签

          1. art_LOJBAN->jbo

          2. zh_HAKKA/zh__HAKQA->hak

          3. 其他BCP47特权标签-首选映射

        1. POSIX公司

          1. C->en_US_POSIX

        1. .NET名称

          1. az_az_CYRL->az_CYRL_az

          2. zh_CHS->zh_Hans

        1. 常见错误

          1. 具有两个等效字母的三字母语言代码(eng)

          2. 具有两个等效字母的三字母区域码(xxx)

          3. 具有两个等效字母的三位数代码(813)

          4. 交换脚本和区域代码(另请参见上面的.NET名称)

        1. 不推荐的代码

          1. iw->他

          2. 其他一些

拟议变更

    1. U定位。

      1. 当前:新ULocale(“root”);

      2. 提议:新ULocale(“”);

  1. U本地#getFallback()

      1. 当前:ULocable(“en__POSIX”)->ULocale(“en_”)->U本地(“en”)->L本地(“”)->空

      2. 建议:ULocale(“en__POSIX”)->ULocale(“en”)->ULocale(“”)->null

  2. ULocale.getFallback(字符串)

      1. 当前:“en__POSIX”->“en_”->“en”->“”->“

      2. 建议:“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”

    • 资源捆绑包

      • 根.res

        • 德雷斯

          • de-de.res公司

        • 根-DE.res

    • en->“”->null?

      • Java ULocale#getFallback()中的Yes(是)-例如ULocale(“en”)->ULocable(“”)->null

      • Java ULocale#getFallback(String)中没有-例如“en”->“”->“

      • C中没有++

      • 做好记录。