JavaScript ES6/Harmony 现在具有特定于语言的排序/整理。
现在浏览器的支持有所不同,所以我在 Chrome 中找到了一些我使用的语言,而另一些则没有。
但我遇到的问题是芬兰语、日语、西班牙语和瑞典语等语言,它们有不止一种排序文本的方式,找到浏览器支持的方式?
JavaScript ES6/Harmony 现在具有特定于语言的排序/整理。
现在浏览器的支持有所不同,所以我在 Chrome 中找到了一些我使用的语言,而另一些则没有。
但我遇到的问题是芬兰语、日语、西班牙语和瑞典语等语言,它们有不止一种排序文本的方式,找到浏览器支持的方式?
Intl.Collator.supportedLocalesOf
接受一个语言环境列表并返回它支持的那些,但它会在测试支持之前从每个语言环境中删除 Unicode 扩展。所以如果你要做
Intl.Collator.supportedLocalesOf("de-u-co-phonebk")
并且de
支持语言环境,但不支持电话簿排序,你会回来["de-u-co-phonebk"]
的。可能更糟(因为我怀疑对de
语言环境的支持几乎总是意味着对电话簿排序的支持),如果你把它打错了
Intl.Collator.supportedLocalesOf("de-u-co-phonebm")
你会得到["de-u-co-phonebm"]
这可能真的很糟糕。
鉴于这已经结束,我认为您必须单独尝试为所有语言环境创建整理器,指定您关心的可能影响排序顺序的所有可能的 Unicode 语言环境扩展,然后检查resolvedOptions().locale
整理器以查看 Unicode 扩展是否转移超过。例如,
Intl.Collator("de-u-co-phonebk").resolvedOptions().locale
将返回"de-u-co-phonebk"
,而
Intl.Collator("de-u-co-phonebm").resolvedOptions().locale
将返回"de"
。