chrome.i18n

説明

chrome.i18n インフラストラクチャを使用して、アプリまたは拡張機能全体に国際化を実装します。

ユーザーに表示されるすべての文字列を、messages.json という名前のファイルに配置する必要があります。毎回 新しい言語 / 地域を追加する場合は、_locales/_localeCode_ という名前のディレクトリにメッセージ ファイルを追加します。 localeCode は、英語の場合は en などのコードです。

英語(en)、スペイン語をサポートする国際化した拡張機能のファイル階層は次のとおりです (es)、韓国語(ko):

拡張機能のディレクトリ: manifest.json、*.html、*.js、_locales ディレクトリ。_locales ディレクトリ: en、es、ko ディレクトリ。それぞれ messages.json ファイルがある。

複数の言語をサポートする方法

次の図に示すファイルの拡張子があるとします。

manifest.json ファイルと JavaScript を含むファイル。.json ファイルには、

この拡張機能を国際化するには、ユーザーに表示される各文字列に名前を付け、メッセージに挿入します 表示されます。拡張機能のマニフェスト、CSS ファイル、JavaScript コードは、各文字列の名前を使用して文字列を取得します。 ローカライズ版。

国際化した場合の拡張機能の外観は次のとおりです(ただし、 英語の文字列):

<img "__msg_extname__",="" "default_locale"="""ja".="""extname"."="""hello=""_locales=&quot;&quot;a=&quot;&quot;alt="manifest.json ファイルの内容: "and=&quot;&quot;""changed=&quot;&quot;chrome.i18n.getmessage("extname”)=""defines=&quot;&quot;en=&quot;&quot;file=&quot;&quot;file,=&quot;&quot;has=&quot;&quot;hello=&quot;&quot;in=&quot;&quot;item=&quot;&quot;javascript=&quot;&quot;messages.json=&quot;&quot;named=&quot;&quot;新規 = ""src=&quot;/static/images/i18n-after-1.gif&quot;the=&quot;&quot;to=&quot;&quot;value=""世界"=""/

国際化に関する注意事項:

  • サポートされている言語 / 地域のどれでも使用できます。サポートされていない言語 / 地域を使用すると、Google Chrome は 無視されます。
  • manifest.json ファイルと CSS ファイルで、次のように messagename という名前の文字列を参照します。

    __MSG_messagename__
    
  • 拡張機能またはアプリの JavaScript コードで、次のように messagename という名前の文字列を参照します。

    chrome.i18n.getMessage("messagename")
    
  • getMessage() の呼び出しごとに、メッセージに含める文字列を 9 つまで指定できます。詳しくは、 例: getMessage をご覧ください。

  • @@bidi_dir@@ui_locale などの一部のメッセージは、国際化によって提供されています。 ありません定義済みのメッセージ名の一覧については、事前定義されたメッセージのセクションをご覧ください。

  • messages.json では、ユーザーに表示される各文字列には名前(「メッセージ」)が含まれます。オプションの &quot;description&quot;表示されます。名前は「extName」のようなキーで、または「search_string」Pod の 使用します。「メッセージ」このロケールでの文字列の値を指定します。オプションの「description」 翻訳者にヘルプが提示されるため、翻訳者はテキストで文字列がどのように使用されているか あります。例:

    {
      "search_string": {
        "message": "hello%20world",
        "description": "The string we search for. Put %20 between words that go together."
      },
      ...
    }
    

    詳細については、形式: ロケール固有のメッセージをご覧ください。

拡張機能やアプリを国際化したら、簡単に翻訳できます。messages.json をコピーします。 変換し、そのコピーを _locales の下の新しいディレクトリに配置します。たとえば スペイン語の「messages.json」の翻訳版を _locales/es の下に置いてください。次の図 新しいスペイン語翻訳が適用された前の拡張機能を示しています。

外観は上の画像と同じですが、_locales/es/messages.json に新しいファイルがあり、そこにメッセージのスペイン語翻訳が含まれています。

定義済みのメッセージ

国際化システムには、ローカライズに役立つ事前定義メッセージがいくつか用意されています。これらの @@ui_locale を含めると、現在の UI ロケールと、いくつかの @@bidi_... メッセージを検出できます。 テキストの方向を検出できます後者のメッセージには、 ガジェットの BIDI(双方向)API

特別なメッセージ @@extension_id は、 拡張機能またはアプリがローカライズされています。このメッセージは、マニフェスト ファイルでは機能しません。

次の表に、事前定義された各メッセージを示します。

メッセージ名説明
@@extension_id拡張機能またはアプリ IDこの文字列を使用して、拡張機能内のリソースの URL を作成できます。ローカライズされていない拡張機能でも、このメッセージを使用できます。
注: このメッセージは、マニフェスト ファイルでは使用できません。
@@ui_locale現在の言語 / 地域。この文字列を使用して、地域ごとの URL を作成できます。
@@bidi_dir現在の言語 / 地域のテキスト方向(「ltr」のいずれか)(英語や「rtl」のように左から右に表記する言語の場合)サポートしています。
@@bidi_reversed_dir@@bidi_dir が「ltr」の場合は「rtl」、それ以外の場合は「ltr」です。
@@bidi_start_edge@@bidi_dir が「ltr」の場合は「left」、それ以外の場合は「right」です
@@bidi_end_edge@@bidi_dir が「ltr」の場合、これは「正しい」です。そうでない場合は「left」です。

以下は、CSS ファイルで @@extension_id を使用して URL を作成する例です。

body {
  background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
}

拡張機能 ID が abcdefghijklmnopqrstuvwxyzabcdef の場合、前のコードの太字行は スニペットは次のようになります。

  background-image:url('chrome-extension://abcdefghijklmnopqrstuvwxyzabcdef/background.png');

CSS ファイルで @@bidi_* メッセージを使用する例を次に示します。

body {
  direction: __MSG_@@bidi_dir__;
}

div#header {
  margin-bottom: 1.05em;
  overflow: hidden;
  padding-bottom: 1.5em;
  padding-__MSG_@@bidi_start_edge__: 0;
  padding-__MSG_@@bidi_end_edge__: 1.5em;
  position: relative;
}

英語のように左から右に表記する言語の場合、太字の行は次のようになります。

  dir: ltr;
  padding-left: 0;
  padding-right: 1.5em;

言語 / 地域

1 つの翻訳が可能な言語 / 地域(en など)など、多数の言語 / 地域から選択できます 1 つの言語の複数のバリエーション(en_GBen_US など)をサポートする。

サポートされるロケール

Chrome ウェブストアでサポートされている言語 / 地域であればどれでも使用できます。

メールの検索

サポートされている言語 / 地域ごとにすべての文字列を定義する必要はありません。デフォルトの messages.json ファイルにはすべての文字列に値があるため、拡張機能やアプリはどの方法でも実行されます 変換がスパースになるからです拡張機能のシステムでメッセージが検索される仕組みは次のとおりです。

  1. メッセージ ファイル(存在する場合)でユーザーが使用する言語 / 地域を検索します。たとえば、Google Chrome の言語 / 地域がイギリス英語(en_GB)に設定されている場合、システムはまず、 _locales/en_GB/messages.json。このファイルが存在し、メッセージがある場合は、 もうありません
  2. ユーザーが希望する言語 / 地域に地域が含まれている場合(つまり、言語 / 地域にアンダースコア(_)が付いている場合)は、検索します。 その地域がない言語 / 地域のみが返されます。たとえば、en_GB メッセージ ファイルが存在しない場合や、 メッセージが含まれていない場合、システムは en メッセージ ファイルを参照します。このファイルが存在し、 存在すれば、システムはこれ以上探すことはありません。
  3. メッセージ ファイルでデフォルトの言語 / 地域を検索します。たとえば、拡張機能の 「default_locale」「es」に設定され、_locales/en_GB/messages.json_locales/en/messages.json にはメッセージが含まれ、拡張機能はメッセージを使用して _locales/es/messages.json

次の図では、「colores」という名前のメッセージが設定されている 3 つの言語 / 地域すべてに 「extName」はサポートされているが、2 つの言語 / 地域のみです。米国内で Google Chrome を実行しているユーザー 英語では「Colors」、英国英語では「Colours」と表示されます。英語(米国)と イギリス英語のユーザーには、拡張機能の名前「Hello World」が表示されます。既定の言語はスペイン語なので 英語以外の言語で Google Chrome を実行しているユーザーには、「Colores」というラベルが表示されますおよび 名前は“Hola mundo”です

4 つのファイル: manifest.json と 3 つの messages.json ファイル(es、en、en_GB 用)。es ファイルと en ファイルには、名前を付けたメッセージのエントリが

ブラウザの言語 / 地域を設定する方法

翻訳をテストするには、ブラウザの言語 / 地域を設定できます。このセクションでは、Google Chat で WindowsMac OS XLinuxChromeOS のロケール。

Windows

言語 / 地域固有のショートカットまたは Google Chrome UI を使用して言語 / 地域を変更できます。「 一度設定すれば、複数の言語を一度に使えるようになります。

地域ごとのショートカットを使用する

特定の言語 / 地域で Google Chrome を起動するショートカットを作成、使用するには:

  1. デスクトップにすでにある Google Chrome のショートカットのコピーを作成します。
  2. 新しいショートカットの名前を新しい言語 / 地域に合わせて変更します。
  3. [Target] フィールドに --lang を指定するように、ショートカットのプロパティを変更します。 --user-data-dir フラグ。ターゲットは、次のようになります。

    path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dir
    
  4. ショートカットをダブルクリックして Google Chrome を起動します。

たとえば、スペイン語(es)で Google Chrome を起動するショートカットを作成するには、 次のターゲットを持つ chrome-es という名前のショートカット:

path_to_chrome.exe --lang=es --user-data-dir=c:\chrome-profile-es

ショートカットはいくつでも作成できるため、複数の言語で簡単にテストできます。次に例を示します。

path_to_chrome.exe --lang=en --user-data-dir=c:\chrome-profile-en
path_to_chrome.exe --lang=en_GB --user-data-dir=c:\chrome-profile-en_GB
path_to_chrome.exe --lang=ko --user-data-dir=c:\chrome-profile-ko
UI の使用

Windows 版 Google Chrome で UI を使用して言語 / 地域を変更する方法は次のとおりです。

  1. アプリアイコン >オプション
  2. [高度な設定] タブを選択します。
  3. [ウェブ コンテンツ] まで下にスクロールします。
  4. [フォントや言語を変更] をクリックします。
  5. [言語] タブを選択します。
  6. プルダウンを使用して、Google Chrome の言語を設定します。
  7. Chrome を再起動する

Mac OS X

Mac で言語 / 地域を変更するには、システム環境設定を使用します。

  1. Apple メニューから [システム環境設定] を選択します。
  2. [Personal] セクションで [International] を選択します。
  3. 言語と地域を選択
  4. Chrome を再起動する

Linux

Linux の言語 / 地域を変更するには、まず Google Chrome を終了します。次に、「LANGUAGE」を 1 行で設定します。 Google Chrome を起動します。例:

LANGUAGE=es ./chrome

ChromeOS

ChromeOS で言語 / 地域を変更するには:

  1. システムトレイから [設定] を選択します。
  2. [言語と入力] セクションで [言語] プルダウンを選択します。
  3. 使用する言語がリストにない場合は、[言語を追加] をクリックして追加します。
  4. 追加したら、言語の横にある [その他の操作] メニュー項目をクリックして ChromeOS をこの言語で表示します。
  5. 設定した言語の横に表示される [再起動] ボタンをクリックして、ChromeOS を再起動します。

国際化の簡単な例は、examples/api/i18n ディレクトリにあります。1 つの 完全な例については、examples/extensions/news をご覧ください。その他の例や、検出ルールの確認方法については、 サンプルをご覧ください。

例: getMessage

次のコードは、ローカライズされたメッセージをブラウザから取得して文字列として表示します。これは、 メッセージ内の 2 つのプレースホルダを文字列「string1」に置き換えます。"string2" を渡しています。

function getMessage() {
  var message = chrome.i18n.getMessage("click_here", ["string1", "string2"]);
  document.getElementById("languageSpan").innerHTML = message;
}

1 つの文字列を指定して使用する方法は次のとおりです。

  // In JavaScript code
  status.innerText = chrome.i18n.getMessage("error", errorDetails);
"error": {
  "message": "Error: $details$",
  "description": "Generic error template. Expects error parameter to be passed in.",
  "placeholders": {
    "details": {
      "content": "$1",
      "example": "Failed to fetch RSS feed."
    }
  }
}

プレースホルダの詳細については、言語 / 地域固有のメッセージのページをご覧ください。詳細については、 getMessage() の呼び出しについては、API リファレンスをご覧ください。

例: getAcceptLanguages

次のコードは、Accept-language をブラウザから取得し、 単語を , で区切ることもできます。

function getAcceptLanguages() {
  chrome.i18n.getAcceptLanguages(function(languageList) {
    var languages = languageList.join(",");
    document.getElementById("languageSpan").innerHTML = languages;
  })
}

getAcceptLanguages() の呼び出しの詳細については、API リファレンスをご覧ください。

例: detectLanguage

次のコードは、指定された文字列から最大 3 つの言語を検出し、結果を 改行で区切られます。

function detectLanguage(inputText) {
  chrome.i18n.detectLanguage(inputText, function(result) {
    var outputLang = "Detected Language: ";
    var outputPercent = "Language Percentage: ";
    for(i = 0; i < result.languages.length; i++) {
      outputLang += result.languages[i].language + " ";
      outputPercent +=result.languages[i].percentage + " ";
    }
    document.getElementById("languageSpan").innerHTML = outputLang + "\n" + outputPercent + "\nReliable: " + result.isReliable;
  });
}

detectLanguage(inputText) の呼び出しについて詳しくは、API リファレンスをご覧ください。

LanguageCode

Chrome 47 以降

ISO 言語コード(enfr など)。このメソッドでサポートされている言語の一覧については、kLanguageInfoTable をご覧ください。不明な言語の場合は und が返されます。これは、テキストの [percentage] が CLD に認識されていないことを意味します。

タイプ

文字列

メソッド

detectLanguage()

<ph type="x-smartling-placeholder"></ph> 約束 Chrome 47 以降 をご覧ください。
chrome.i18n.detectLanguage(
  text: string,
  callback?: function,
)

CLD を使用して、指定されたテキストの言語を検出します。

パラメータ

  • テキスト

    文字列

    翻訳対象のユーザー入力文字列。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (result: object) => void

    • 件の結果

      オブジェクト

      検出された言語の信頼性と DetectedLanguage の配列を保持する LanguageDetectionResult オブジェクト。

      • isReliable

        ブール値

        CLD で検出された言語の信頼性

      • 言語

        object[]

        検出された言語の配列

        • language

          文字列

        • パーセンテージ

          数値

          検出された言語の割合

戻り値

  • Promise&lt;object&gt;

    Chrome 99 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

getAcceptLanguages()

<ph type="x-smartling-placeholder"></ph> 約束
chrome.i18n.getAcceptLanguages(
  callback?: function,
)

ブラウザの受け入れ言語を取得します。ブラウザで使用されている言語 / 地域とは異なります。言語 / 地域を取得するには、i18n.getUILanguage を使用します。

パラメータ

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (languages: string[]) => void

    • 言語

      string[]

      LanguageCode の配列

戻り値

  • Promise&lt;LanguageCode[]&gt;

    Chrome 99 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

getMessage()

chrome.i18n.getMessage(
  messageName: string,
  substitutions?: any,
  options?: object,
)

指定されたメッセージのローカライズされた文字列を取得します。メッセージがない場合、このメソッドは空の文字列('')を返します。getMessage() 呼び出しの形式が正しくない場合(たとえば、messageName が文字列でない場合、置換配列に 9 個を超える要素がある場合)、このメソッドは undefined を返します。

パラメータ

  • messageName

    文字列

    messages.json ファイルで指定されているメッセージの名前。

  • substitutions

    任意

    最大 9 個までの置換文字列(メッセージに必要な場合)。

  • オプション

    オブジェクト(省略可)

    Chrome 79 以降
    • escapeLt

      ブール値(省略可)

      <&lt; に翻訳してエスケープします。これはメッセージ自体にのみ適用され、プレースホルダには適用されません。翻訳が HTML のコンテキストで使用される場合、デベロッパーはこのオプションを使用することをおすすめします。Closure Compiler で使用するクロージャ テンプレートでは自動的に生成されます。

戻り値

  • 文字列

    現在の言語 / 地域に合わせてローカライズされたメッセージ。

getUILanguage()

chrome.i18n.getUILanguage()

ブラウザの UI 言語を取得します。これは、ユーザーの優先言語を返す i18n.getAcceptLanguages とは異なります。

戻り値

  • 文字列

    ブラウザの UI 言語コード(en-US、fr-FR など)。