【发布时间】:2018-08-27 06:16:27
【问题描述】:
我正在尝试打印出排序的项目列表并将第一个字母打印为每个项目的“组”标题。该代码用于客户端。 .
排序工作得很好,问题是当语言特定的字符在另一个语言环境中排序时。例如,å 在 en-GB 中被视为a,在大多数语言环境中ñ 被视为n。
有什么通用的方法可以判断一个字符是否“属于” js 中的语言环境?
-
Å在en-US和es-ES中有a的基数,不应打印 -
Å应打印在sv-SE -
Ñ在en-US和sv-SE中有n的基数,不应该是 印刷 -
Ñ应该打印在es-ES
包括显示问题的最简单的例子:
console.clear();
var sortedItems;
var uniqueStartLetters;
var locales = ['en-US', 'es-ES', 'sv-SE'];
var items = ['am', 'ån', 'ao', 'na', 'ñb', 'nc' ];
sortAlphabetically = (array, locale) => {
const sortFunc = (a, b) => a.localeCompare(b, locale, { sensitivity: 'base' });
return array.sort(sortFunc);
}
render = sortedItems => {
const processedLetters = {};
const res = sortedItems.map((item) => {
const firstLetter = item[0].toUpperCase();
if (!processedLetters[firstLetter]) {
processedLetters[firstLetter] = true;
console.log(firstLetter);
}
console.log(item);
});
}
locales.map(locale => {
console.log('\n' + 'Using locale: ' + locale);
sortedItems = sortAlphabetically(items, locale);
render(sortedItems, uniqueStartLetters);
})
【问题讨论】:
-
这是供客户端还是服务器端使用?
-
@RobbyCornelissen 这是客户端
-
Unicode CLDR 数据在其杂项信息中包含
exemplarCharacters。这是misc file for Swedish。也许这有帮助?
标签: javascript localization locale