私は人々が言語情報をコンテンツに関連付けることができるウェブサイトを構築しています。
WebサイトはJavascriptを多用しており、さまざまな要素に関連付けられている言語情報は、ISO639-1コードとして内部的に扱われます。
言語名のリストを表示する方法-ユーザーの言語で?
私は人々が言語情報をコンテンツに関連付けることができるウェブサイトを構築しています。
WebサイトはJavascriptを多用しており、さまざまな要素に関連付けられている言語情報は、ISO639-1コードとして内部的に扱われます。
言語名のリストを表示する方法-ユーザーの言語で?
スタックオーバーフローについても同様の質問がいくつかあります。さまざまな言語の英語名とネイティブ名を取得するためのJavaScript関数が必要でした。私はstackoverflow(ウィキペディアに基づく)でISO 693-1言語コードの素敵なjson形式のリストを見つけ、 2つの関数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"
任意の言語の任意の言語の名前(たとえば、日本語で「韓国語」を言う方法)が必要な場合は、UnicodeCLDRデータを使用できます。
JavaScriptで使用するには、次のようなcldrNPMパッケージを使用できます。
cldr.extractLanguageDisplayNames('it').en;
# => 'inglese'
ただし、パッケージがNode.jsのみをサポートしているのか、ブラウザーもサポートしているのかはわかりません。そうでない場合は、他のライブラリを検索するか、CLDRを直接解析するための独自のコードを作成できます。
サポートしたい言語ごとに、母国語名へのマッピングの独自のリストを維持する必要があると思います。しかし、ウィキペディアには必要なものが揃っているようです。
別の解決策は、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>