このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Intl.DisplayNames.prototype.of()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2021年4月以降、すべてのブラウザーで利用可能です。

of()Intl.DisplayNames インスタンスのメソッドで、コードを受け取り、Intl.DisplayNames をインスタンス化するときに指定されたロケールとオプションに基づいて文字列を返します。

試してみましょう

const regionNamesInEnglish = new Intl.DisplayNames(["en"], { type: "region" });
const regionNamesInTraditionalChinese = new Intl.DisplayNames(["zh-Hant"], {
  type: "region",
});

console.log(regionNamesInEnglish.of("US"));
// 予想される結果: "United States"

console.log(regionNamesInTraditionalChinese.of("US"));
// 予想される結果: "美國"

構文

js
of(code)

引数

code

与える code は、 type によって変わります。

  • type が "region" である場合、code2 文字の ISO 3166 地域コードまたは 3 桁の M49 地理的領域である必要があります。unicode_region_subtag の文法に従う必要があります。小文字のコード("us" など)では、すべての環境で確実に動作しないことがあるため、大文字のコード("US" など)を使用してください。
  • type が "script" である場合、codeISO-15924 文字体系の 4 文字コードである必要があります。unicode_script_subtag の文法に従う必要があります。
  • type が "language" である場合、codeunicode_language_id の非終端記号と一致する必要があります。
  • type が "currency" である場合、code3 文字の ISO 4217 通貨コードである必要があります。アルファベットちょうど 3 文字である必要があります。
  • 型が "dateTimeField" の場合、code"era""year""quarter""month""weekOfYear""weekday""day""dayPeriod""hour""minute""second""timeZoneName" のいずれかである必要があります。
  • 型が "calendar" の場合、code暦キーである必要があります。また、Unicode ロケール識別子type 構文に従う必要があります。

返値

言語に応じて書式化された文字列、または、入力データが存在せず、かつ fallback"none" の場合は undefined となります。

メモ: fallback は、code が構造的に有効な場合にのみ使用されます。詳細は fallback の使用をご覧ください。

例外

RangeError

指定された type に対して code の構造が有効でない場合、例外が発生します。

of メソッドの使用

js
const regionNames = new Intl.DisplayNames("en", { type: "region" });
regionNames.of("419"); // "Latin America"

const languageNames = new Intl.DisplayNames("en", { type: "language" });
languageNames.of("fr"); // "French"

const currencyNames = new Intl.DisplayNames("en", { type: "currency" });
currencyNames.of("EUR"); // "Euro"

const languageNamesStandard = new Intl.DisplayNames("fr", {
  type: "language",
  languageDisplay: "standard",
});
languageNamesStandard.of("fr-CA"); // "français (Canada)"

const languageNamesDialect = new Intl.DisplayNames("fr", {
  type: "language",
  languageDisplay: "dialect",
});
languageNamesDialect.of("fr-CA"); // "français canadien"

fallback の使用

Intl.DisplayNamesfallback: "code" 付きで生成した場合、入力の構造は有効であるもののデータがない場合、of() メソッドは code を返します。fallback"none" の場合は、undefined が返されます。

js
console.log(
  new Intl.DisplayNames("en", { type: "region", fallback: "code" }).of("ZL"),
); // "ZL"

console.log(
  new Intl.DisplayNames("en", { type: "region", fallback: "none" }).of("ZL"),
); // undefined

ただし、これは code が構造的に有効な場合にのみ適用されます。例えば、type"region" であるにもかかわらず、codeunicode_region_subtag の文法(2 文字の英字または 3 桁の数字)に従っていない場合、代替されるのではなく、直接 RangeError が発生します。

js
console.log(
  new Intl.DisplayNames("en", { type: "region", fallback: "code" }).of("ZLC"),
); // throws RangeError: invalid value "ZLC" for option region

仕様書

仕様書
ECMAScript® 2027 Internationalization API Specification
# sec-Intl.DisplayNames.prototype.of

ブラウザーの互換性

関連情報