2016-01-21 148 views
1

JavaScript字符串toLocaleUpperCase()方法應該考慮在不同語言環境(如土耳其語)(我不是映射器到無點I,而是點到土耳其語中的點)上的大小寫映射。String.toLocaleUpperCase():在Node.js上設置語言環境

但是,看起來語言環境僅從操作系統捕獲:我沒有看到設置語言環境的方法。因此,如果我使用的是en-US操作系統,並且想在「tr」中輸入toLocaleUpperCase()土耳其字符串,則它將返回en-US版本(無點I,而不是點I)。

假設我正在使用用INTL編譯的Node.js(https://github.com/nodejs/node/wiki/Intl),我怎樣才能將區域設置定義爲toLocaleUpperCase()

+1

請注意,每個進程可以有不同的語言環境,例如「LOCALE = tr_TR.UTF-8」。查看'Intl'的文檔,目前還不清楚它是否可以實例化並用作字符串操作的上下文......但這可能是您想查找的方向。 – david

+0

Thanks @david,I我會檢查一下。但是,我希望能夠根據客戶端請求切換區域設置。通過爲每個進程設置一個語言環境,它將以該語言環境永久運行。對於正確國際化的sw,根據不同的用戶請求,需要使用'toLocaleUpperCase()'。我會看看這是否可以在運行時動態更改。 – noderman

回答

2

這不是現在的答案。但ECMA-402現在規定(截至規格第2版)String.prototype.toLocaleUpperCase的行爲。 ECMA-402更改函數以採用locale參數(undefined,字符串或區域設置類似) - 類似於ECMA-262修改時ECMA-262中的Number.prototype.toLocaleString和各種其他區域設置敏感功能 - 以及行爲與該區域設置一致。一旦節點實現了(it doesn't right now),你可以簡單地改變

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

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

,並用自己的方式。我不知道土耳其語,我只是從土耳其的單詞列表中選擇一個包含「我」的單詞,而我是,假設區域設置敏感的大寫作品按我期望的方式工作, )

+0

謝謝,我會標記爲答案。 – noderman

+0

它的工作原理,非常感謝 – dreampowder