我正在建立一个人们可以将语言信息与内容相关联的网站。
网站大量使用Javascript,与各种元素相关的语言信息在内部被视为ISO 639-1代码。
如何以用户的语言显示语言名称列表?
答案 0 :(得分:14)
stackoverflow上有一些类似的问题。我需要一个javascript函数来获取不同语言的英文名称和原生名称。我找到了一个不错的json formatted list of ISO 693-1 language codes on stackoverflow(基于wikipedia)并创建了一个gist with two functions getLanguageName and getLanguageNativeName。以下是如何使用它:
getLanguageNativeName("cv"); // --> "чӑваш чӗлхи"
getLanguageName("cv"); // --> "Chuvash"
getLanguageNativeName("cv-RU"); // --> "чӑваш чӗлхи"
getLanguageName("cv-RU"); // --> "Chuvash"
我用它来回答另一个类似的问题:generate a list of localized language names with links to google translate
答案 1 :(得分:3)
我认为您必须为您希望支持的每种语言维护自己的母语名称映射列表。但看起来维基百科有just what you need。
答案 2 :(得分:3)
新Intl API中对此提供本地支持:
let languageNames = new Intl.DisplayNames(['en'], {type: 'language'});
languageNames.of('fr'); // "French"
languageNames.of('de'); // "German"
languageNames.of('fr-CA'); // "Canadian French"
答案 3 :(得分:1)
另一种解决方案是使用iso-639-1 package。
安装:
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>
答案 4 :(得分:1)
如果您想要任意语言的任意语言名称(例如,如何说&#34;朝鲜语&#34;日语),您可以使用Unicode CLDR数据。
要在JavaScript中使用它,您可以使用cldr NPM package之类的:
cldr.extractLanguageDisplayNames('it').en;
# => 'inglese'
但不确定该软件包是否仅支持Node.js还是支持浏览器。如果没有,您可以搜索其他库或编写自己的代码来直接解析CLDR。
答案 5 :(得分:-2)
最佳方式:
<script>
var language = window.navigator.userLanguage || window.navigator.language;
alert(language);
</script>