Intl.DisplayNames

公開日: · タグ: Intl

グローバルなオーディエンスにリーチする Web アプリケーションは、言語、地域、スクリプト、通貨の表示名をさまざまな言語で表示する必要があります。これらの名前の翻訳には、Unicode CLDR で入手可能なデータが必要です。データをアプリケーションの一部としてパッケージ化すると、開発者の時間にコストがかかります。ユーザーは言語名と地域名の一貫した翻訳を好む可能性が高く、そのデータを世界の地政学的出来事に合わせて最新の状態に保つには、継続的なメンテナンスが必要です。

幸いなことに、ほとんどの JavaScript ランタイムは、まさにその翻訳データをすでに提供しており、最新の状態に保っています。新しい Intl.DisplayNames API により、JavaScript 開発者はこれらの翻訳に直接アクセスできるようになり、アプリケーションはローカライズされた名前をより簡単に表示できるようになります。

使用例 #

次の例は、ISO-3166 2 文字の国コードを使用して、英語で地域名を取得するための Intl.DisplayNames オブジェクトを作成する方法を示しています。

const regionNames = new Intl.DisplayNames(['en'], { type: 'region' });
regionNames.of('US');
// → 'United States'
regionNames.of('BA');
// → 'Bosnia & Herzegovina'
regionNames.of('MM');
// → 'Myanmar (Burma)'

次の例では、Unicode の言語識別子文法を使用して、繁体字中国語で言語名を取得しています。

const languageNames = new Intl.DisplayNames(['zh-Hant'], { type: 'language' });
languageNames.of('fr');
// → '法文'
languageNames.of('zh');
// → '中文'
languageNames.of('de');
// → '德文'

次の例では、ISO-4217 3 文字の通貨コードを使用して、簡体字中国語で通貨名を取得しています。単数形と複数形が異なる言語では、通貨名は単数形です。複数形の場合は、Intl.NumberFormat を使用できます。

const currencyNames = new Intl.DisplayNames(['zh-Hans'], {type: 'currency'});
currencyNames.of('USD');
// → '美元'
currencyNames.of('EUR');
// → '欧元'
currencyNames.of('JPY');
// → '日元'
currencyNames.of('CNY');
// → '人民币'

次の例は、ISO-15924 4 文字のスクリプトコードを使用して、英語で最後にサポートされているタイプであるスクリプトを示しています。

const scriptNames = new Intl.DisplayNames(['en'], { type: 'script' });
scriptNames.of('Latn');
// → 'Latin'
scriptNames.of('Arab');
// → 'Arabic'
scriptNames.of('Kana');
// → 'Katakana'

より高度な使用法については、2 番目の options パラメーターは style プロパティもサポートします。style プロパティは表示名の幅に対応し、"long""short"、または "narrow" のいずれかになります。異なるスタイルの値が常に異なるとは限りません。デフォルトは "long" です。

const longLanguageNames = new Intl.DisplayNames(['en'], { type: 'language' });
longLanguageNames.of('en-US');
// → 'American English'
const shortLanguageNames = new Intl.DisplayNames(['en'], { type: 'language', style: 'short' });
shortLanguageNames.of('en-US');
// → 'US English'
const narrowLanguageNames = new Intl.DisplayNames(['en'], { type: 'language', style: 'narrow' });
narrowLanguageNames.of('en-US');
// → 'US English'

完全な API #

Intl.DisplayNames の完全な API は次のとおりです。

Intl.DisplayNames(locales, options)
Intl.DisplayNames.prototype.of( code )

コンストラクターは、他の Intl API と一貫性があります。最初の引数は、ロケールリストであり、2 番目のパラメーターは、localeMatchertype、および style プロパティを受け取る options パラメーターです。

"localeMatcher" プロパティは、他の Intl API と同じように扱われます。type プロパティは、"region""language""currency"、または "script" にすることができます。style プロパティは、"long""short"、または "narrow" にすることができ、デフォルトは "long" です。

Intl.DisplayNames.prototype.of( code ) は、インスタンスがどのように構築されたかの type に応じて、次の形式を想定しています。

結論 #

他の Intl API と同様に、Intl.DisplayNames がより広く利用可能になるにつれて、ライブラリとアプリケーションは、ネイティブ機能を使用することを優先して、独自の翻訳データのパッケージ化と提供をやめることを選択するでしょう。

Intl.DisplayNames のサポート #