我正在建立一个网站,人们可以在其中将语言信息与内容相关联。
该网站大量使用 Javascript,与各种元素相关的语言信息在内部被视为 ISO 639-1 代码。
如何以用户的语言显示语言名称列表?
我正在建立一个网站,人们可以在其中将语言信息与内容相关联。
该网站大量使用 Javascript,与各种元素相关的语言信息在内部被视为 ISO 639-1 代码。
如何以用户的语言显示语言名称列表?
stackoverflow上有一些类似的问题。我需要一个 javascript 函数来获取不同语言的英文名称和本地名称。我在 stackoverflow (基于wikipedia )上找到了一个不错的json 格式的 ISO 693-1 语言代码列表,并创建了一个包含两个函数 getLanguageName 和 getLanguageNativeName 的要点。以下是如何使用它:
getLanguageNativeName("cv"); // --> "чӑваш чӗлхи"
getLanguageName("cv"); // --> "Chuvash"
getLanguageNativeName("cv-RU"); // --> "чӑваш чӗлхи"
getLanguageName("cv-RU"); // --> "Chuvash"
我用它来回答另一个类似的问题:生成带有谷歌翻译链接的本地化语言名称列表
在 new(ish) Intl API中有对此的本机支持:
let languageNames = new Intl.DisplayNames(['en'], {type: 'language'});
languageNames.of('fr'); // "French"
languageNames.of('de'); // "German"
languageNames.of('fr-CA'); // "Canadian French"
如果您想要任意语言中任意语言的名称(例如,如何用日语说“韩语”),您可以使用Unicode CLDR数据。
要在 JavaScript 中使用它,您可以使用cldr NPM 包,例如:
cldr.extractLanguageDisplayNames('it').en;
# => 'inglese'
但不确定该包是仅支持 Node.js 还是还支持浏览器。如果没有,您可以搜索其他库或编写自己的代码来直接解析 CLDR。
我认为您必须为您希望支持的每种语言维护自己的本地语言名称映射列表。但看起来 Wikipedia正是您所需要的。
另一种解决方案是使用iso-639-1 包。
安装:
npm install iso-639-1
Node.js 中的用法:
const ISO6391 = require('iso-639-1')
console.log(ISO6391.getAllCodes()) // ['aa', 'ab', ...]
console.log(ISO6391.getName('cv')) // 'Chuvash'
console.log(ISO6391.getNativeName('cv')) // 'чӑваш чӗлхи'
在浏览器中的用法:
<script type="text/javascript" src="./node_modules/iso-639-1/build/index.js"></script>
<script>
console.log(ISO6391.getAllCodes()) // ['aa', 'ab', ...]
console.log(ISO6391.getName('cv')) // 'Chuvash'
console.log(ISO6391.getNativeName('cv')) // 'чӑваш чӗлхи'
</script>
最好的办法:
<script>
var language = window.navigator.userLanguage || window.navigator.language;
alert(language);
</script>