2

JavaScript StringtoLocaleUpperCase()方法应该考虑不同语言环境的大小写映射,例如土耳其语(i 不是映射到无点 I,而是映射到土耳其语中的点 İ)。

但是,似乎仅从操作系统捕获了区域设置:我看不到设置区域设置的方法。因此,如果我使用的是 en-US 操作系统并且想要toLocaleUpperCase()在“tr”中使用土耳其语字符串,它将返回 en-US 版本(无点 I,而不是点 İ)。

假设我使用的是用 INTL ( https://github.com/nodejs/node/wiki/Intl ) 编译的 Node.js,我该如何定义语言环境toLocaleUpperCase()

4

1 回答 1

4

这不是现在的答案。但是 ECMA-402 现在指定(从规范的第 2 版开始)String.prototype.toLocaleUpperCase. ECMA-402 将函数更改为采用locale参数(undefined、字符串或类似语言环境的数组)——类似于Number.prototype.toLocaleStringECMA-262 中的各种其他语言环境敏感函数在被 ECMA-402 修改时采用的参数——并且行为与那个语言环境。一旦 Node 实现了它(它现在没有),你可以简单地改变

var str = "bira";
str.toLocaleUpperCase(); // "BIRA"

var str = "bira";
str.toLocaleUpperCase("tr-TR"); // BİRA

并在路上。

(免责声明:我根本不懂土耳其语,我只是从土耳其语单词列表中挑选了一个包含“i”的单词,并且我假设对区域设置敏感的大写字母按我期望的方式工作,出于示例的目的多于。)

于 2016-10-26T21:21:58.063 回答