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"
.