来自 Javascript 中 ISO 639-1 代码的语言名称
Language name from ISO 639-1 code in Javascript
我正在建立一个网站,人们可以将语言信息与内容相关联。
该网站大量使用Javascript,与各种元素相关的语言信息在内部被视为ISO 639-1代码。
如何显示语言名称列表 - 以用户的语言?
在新的(ish)国际API中对此有本机支持:
let languageNames = new Intl.DisplayNames(['en'], {type: 'language'});
languageNames.of('fr'); // "French"
languageNames.of('de'); // "German"
languageNames.of('fr-CA'); // "Canadian French"
关于stackoverflow也有一些类似的问题。我需要一个javascript函数来获取不同语言的英文名称和本地名称。我在stackoverflow(基于维基百科)上找到了一个很好的json格式的ISO 693-1语言代码列表,并创建了一个包含两个函数getLanguageName和getLanguageNativeName的要点。以下是使用它的方法:
getLanguageNativeName("cv"); // --> "чӑваш чӗлхи"
getLanguageName("cv"); // --> "Chuvash"
getLanguageNativeName("cv-RU"); // --> "чӑваш чӗлхи"
getLanguageName("cv-RU"); // --> "Chuvash"
我用它来回答另一个类似的问题:生成一个本地化语言名称列表,其中包含指向谷歌翻译的链接
如果你想要一个任意语言的任意语言的名称(例如,如何用日语说"韩语"),你可以使用 Unicode CLDR 数据。
要在 JavaScript 中使用它,您可以使用 cldr NPM 包,例如:
cldr.extractLanguageDisplayNames('it').en;
# => 'inglese'
但不确定该软件包是否仅支持 Node.js还是也支持浏览器。如果没有,您可以搜索其他库或编写自己的代码来直接解析 CLDR
我认为您必须为希望支持的每种语言维护自己的本地语言名称映射列表。但看起来维基百科正好有你需要的东西。
另一种解决方案是使用 iso-639-1 封装。
安装:
npm install iso-639-1
在节点.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>
对于Michal Bryxí的答案相反,使用Intl.DisplayNames从语言名称中获取ISO 639-1代码(例如 English
➜ en
):
function generateLangMap () {
const langNames = new Intl.DisplayNames(['en'], {type: 'language'})
const langMap = {}
for (let i = 0; i < 26; i++) {
for (let j = 0; j < 26; j++) {
let code = String.fromCharCode(97 + i) + String.fromCharCode(97 + j)
let name = langNames.of(code)
if (name !== code) {
langMap[name] = code
}
}
}
const langMap2 = {
// Avoid using deprecated codes:
'Akan': 'ak',
'Hebrew': 'he',
'Indonesian': 'id',
'Javanese': 'jv',
'Romanian': 'ro',
'Yiddish': 'yi',
// Optional extras:
'Tagalog': 'tl',
}
return { ...langMap, ...langMap2 }
}
// Usage:
const langMap = generateLangMap()
console.log(langMap['English']) // 'en'
console.log(langMap['Chinese']) // 'zh'
console.log(langMap['Spanish']) // 'es'
最佳方法:
<script>
var language = window.navigator.userLanguage || window.navigator.language;
alert(language);
</script>
相关文章:
- 为现有Roslyn语言lexer/parser选择基于javascript的代码编辑器
- GeoIP2-如何获取语言代码
- 除了JS,其他语言是否按加载顺序执行代码
- 来自 Javascript 中 ISO 639-1 代码的语言名称
- 使用 JavaScript 更改浏览器语言代码,用于 Google Analytics
- 在我的 URL 中添加语言代码
- 需要忽略值中是否有任何单引号字符来自表达式语言,而不会破坏 JavaScript 代码
- 将语言代码转换为(dojo)区域设置代码
- 获取访问者语言&带有javascript的国家/地区代码(客户端)
- JavaScript语言代码
- 如何在JavaScript中将语言代码转换为语言名称
- 我在网上看到一个帖子,是一个女孩理发后发的.我想知道代码是用什么语言写的
- 不同语言的代码高亮显示
- 从代码片段中检测编程语言
- 在不更改站点代码的情况下,使用哪种语言来自动单击站点
- 如何存储javascript代码或其他语言代码,并使用该代码网站使用url
- 如何在同一页面上使用代码镜像突出显示多种语言源代码
- 自定义java脚本语言,从代码到代码
- 粗略的 Unicode -> 没有 CLDR 的语言代码
- 适合在沙盒中运行客户端代码的语言