javascript - 对于具有多个 "alphabetic orders"的语言,如何确定浏览器支持 Intl.Collat​​or 的排序规则变体?

标签 javascript sorting internationalization collation ecmascript-intl

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

关于javascript - 对于具有多个 "alphabetic orders"的语言,如何确定浏览器支持 Intl.Collat​​or 的排序规则变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860031/

相关文章:

c - 在c中使用sift down方法实现堆排序

mongodb 聚合查询排序结果并显示日期名称

ruby-on-rails - 如何在 Rails 4 中将 html 类添加到 I18n 语言环境链接?

javascript - 当通过直接输入或按钮更改输入值时突出显示一行

javascript - 编译为 JavaScript 时,有没有办法在 Haxe 中为类型别名?

sorting - Elasticsearch基于多个字段的排序

grails - 在 Grails 中翻译 HTML 选择元素

url - 在搜索中显示特定国家/地区的网站

javascript - map 花边 map 不显示

javascript - 从字符串变量设置 ng-click 属性值