Node.js

【JavaScript】デフォルトロケールの取得(Node.js/ブラウザ)

更新日:2023/10/24

アプリケーションの多言語化をおこなう場合、環境がどのような言語(ロケール)を使用しているかを把握する必要があります。

そこでNode.jsやブラウザで、デフォルトのロケールを取得する方法をお伝えします。

 

ロケール取得方法

デフォルトのロケールは、Intlオブジェクトを使用することで取得できます。

const defultLocale = Intl.NumberFormat().resolvedOptions().locale;
console.log( defultLocale );
>> ja-Jp

Intl(Internationalization API、国際化API)は、数値の書式等の各言語によって異なる情報や文字列フォーマットなどを管理するオブジェクトです。
上記コードは数値を文字列に変換するためのフォーマット情報から、ロケールプロパティを参照しています。

同じ日本語環境でも、結果が異なることがあります。
僕の環境ではFirefoxが "ja-JP"、Chromeが "ja" でした。
どちらかに依存したコードを作成しない方がよさそうです。

この他に、次のコードでも取得可能です。

  • Intl.DateTimeFormat().resolvedOptions().locale
  • Intl.DateTimeFormat().resolvedOptions().locale
  • Intl.Collator().resolvedOptions().locale
  • new Intl.ListFormat().resolvedOptions().locale
  • new Intl.PluralRules().resolvedOptions().locale
  • new Intl.RelativeTimeFormat().resolvedOptions().locale
  • new Intl.Segmenter().resolvedOptions().locale

最後の、new Intl.Segmenter()…は、現在(2023/10)時点では実装されていません。
ChromeとNode.jsでは使用できます。

 

ブラウザの言語設定を得る方法

ブラウザで言語を取得する場合は、navigatorオブジェクトを使用できます。
詳しくは次のページを参照してください。

更新日:2023/10/24

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。