メインコンテンツまでスキップ

「Intl」タグの記事が5件件あります

全てのタグを見る

`Intl.DisplayNames`

· 約5分
Shu-yu Guo ([@_shu](https://twitter.com/_shu)) と Frank Yung-Fong Tang

全世界のユーザーに届くWebアプリケーションは、多くの異なる言語で言語名、地域名、スクリプト名、通貨名を表示する必要があります。それらの名称の翻訳にはデータが必要であり、そのデータはUnicode CLDRで利用可能です。これらのデータをアプリケーションの一部としてパッケージングすることは開発者の時間を費やすことにつながります。ユーザーは言語名や地域名の翻訳において一貫性を好む傾向があり、世界の地政学的動向に合わせてそのデータを更新するには、絶え間ないメンテナンスが必要です。

`Intl.NumberFormat`について

· 約5分
Mathias Bynens([@mathias](https://twitter.com/mathias))とShane F. Carr

すでにご存知かもしれませんが、Intl.NumberFormat APIはモダンな環境でしばらくの間サポートされてきました。

Intl.NumberFormatの最も基本的な形では、ロケールに対応した数値フォーマットをサポートする再利用可能なフォーマッタインスタンスを作成できます。他のIntl.*Format APIと同様に、フォーマッタインスタンスはformatメソッドとformatToPartsメソッドの両方をサポートしています。

`Intl.ListFormat`

· 約4分
Mathias Bynens([@mathias](https://twitter.com/mathias))およびFrank Yung-Fong Tang

モダンなWebアプリケーションでは、動的なデータで構成されたリストがよく使用されます。例えば、写真ビューアアプリでは以下のような表示がされることがあります:

この写真にはAda、Edith、_および_Graceが含まれます。

テキストベースのゲームでは、異なる種類のリストが用いられるかもしれません:

あなたの超能力を選んでください:不可視化、念動力、_または_共感力

各言語ごとにリストのフォーマットの慣例や単語が異なるため、ローカライズされたリストフォーマッタを実装するのは簡単ではありません。サポートしたいすべての言語の単語(上記の例では「and」や「or」など)のリストが必要なだけでなく、それらの言語における特定のフォーマットの慣例もすべてエンコードする必要があります。Unicode CLDRはそのデータを提供していますが、それをJavaScriptで使用するには、他のライブラリコードと一緒に埋め込んで配送する必要があります。このため、そのようなライブラリの場合、バンドルサイズが増加し、読み込み時間、解析/コンパイルコスト、メモリ使用量に悪影響を及ぼします。

`Intl.RelativeTimeFormat`

· 約5分
Mathias Bynens ([@mathias](https://twitter.com/mathias))

現代のウェブアプリケーションでは、完全な日付やタイムスタンプの代わりに「昨日」「42秒前」「3ヶ月後」といったフレーズを使用することが増えています。このような_相対的な時刻形式の値_は非常に一般的となり、いくつかの人気のあるライブラリがこれをローカライズして形式化するユーティリティ関数を実装しています。(例として、Moment.jsGlobalizedate-fnsがあります。)

`Intl.PluralRules`

· 約5分
Mathias Bynens ([@mathias](https://twitter.com/mathias))

国際化(Iñtërnâtiônàlizætiøn)は難しいです。複数形を処理することは、一見簡単そうに見えますが、実際には言語ごとにそれぞれの複数形ルールがあります。

英語の複数形に関しては、可能な結果は2種類だけです。「猫(cat)」という言葉を例にしましょう:

  • 1 cat、すなわち英語で一つのものとされる 'one' 形式
  • 2 cats、そして 42 cats、0.5 cats など、つまり唯一のもう一つの形式となる 'other'(英語では複数形とされます)。

新しい Intl.PluralRules API を使用すると、指定された数に基づいて選択した言語にどの形式が適用されるかを判断できます。

const pr = new Intl.PluralRules('en-US');
pr.select(0); // 'other' (例: '0 cats')
pr.select(0.5); // 'other' (例: '0.5 cats')
pr.select(1); // 'one' (例: '1 cat')
pr.select(1.5); // 'other' (例: '0.5 cats')
pr.select(2); // 'other' (例: '0.5 cats')