对于具有多个“字母顺序”的语言,如何确定浏览器支持Intl.Collat​​or的校对变体?

时间:2015-04-25 01:39:58

标签: javascript sorting internationalization collation ecmascript-intl

JavaScript ES6 / Harmony现在具有特定于语言的排序/整理。

现在浏览器的支持各不相同,所以我在Chrome中找到了一些我使用的语言而其他语言没有。

但我遇到的问题是芬兰语,日语,西班牙语和瑞典语等语言,它们有多种方式来排序文本,找到浏览器支持的方式?

1 个答案:

答案 0 :(得分:1)

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语言环境扩展,然后检查{{1在collat​​or上查看是否转移了Unicode扩展。例如,

resolvedOptions().locale

将返回Intl.Collator("de-u-co-phonebk").resolvedOptions().locale ,而

"de-u-co-phonebk"

将返回Intl.Collator("de-u-co-phonebm").resolvedOptions().locale