chrome.i18n

説明

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

マニフェスト

拡張機能に /_locales ディレクトリがある場合は、マニフェスト"default_locale" を定義する必要があります。

コンセプトと使用方法

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

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

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

複数言語の対応

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

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

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

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

<img "__msg_extname__",="" "default_locale"="""ja".="""extname"."="""hello=""_locates=&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/docs/extensions/mv2/reference/i18n/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 をコピーします。 変換し、そのコピーを /_locates の下の新しいディレクトリに配置します。たとえば スペイン語の「messages.json」の翻訳版を /_locates/es の下に置いてください。次の図 新しいスペイン語翻訳が適用された前の拡張機能を示しています。

上の画像と同じですが、/_locates/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 つの翻訳で 1 つの言語の複数のバリエーションをサポートできる言語 / 地域(en など)を含め、さまざまな言語 / 地域から選択できます(en_GBen_US など)。

拡張機能は、Chrome ウェブストアでサポートされているすべての言語 / 地域にローカライズできます。お住まいの地域がリストにない場合は、最も近い言語 / 地域を選択してください。たとえば、拡張機能のデフォルトの言語 / 地域が "de_CH" の場合は、Chrome ウェブストアで "de" を選択します。

言語 / 地域コード 言語(地域)
ar アラビア語
am アムハラ語
bg ブルガリア語
bn ベンガル語
ca カタロニア語
cs チェコ語
da デンマーク語
de ドイツ語
el ギリシャ語
en 英語
en_AU 英語 (オーストラリア)
EN_GB 英語(英国)
en_US 英語(アメリカ)
es スペイン語
es_419 スペイン語(ラテンアメリカ、カリブ海)
et エストニア語
fa ペルシャ語
fi フィンランド語
fil フィリピン語
fr フランス語
gu グジャラート語
ヘブライ語
hi ヒンディー語
時間 クロアチア語
hu ハンガリー語
id インドネシア語
it イタリア語
ja 日本語
kn カンナダ語
ko 韓国語
lt リトアニア語
lv ラトビア語
ml マラヤーラム語
mr マラーティー語
ミリ秒 マレー語
nl オランダ語
× ノルウェー語
pl ポーランド語
pt_BR ポルトガル語(ブラジル)
pt_PT ポルトガル語(ポルトガル)
ro ルーマニア語
ru ロシア語
sk スロバキア語
sl スロベニア語
sr セルビア語
sv スウェーデン語
sw スワヒリ語
ta タミル文字
te テルグ文字
th タイ語
tr トルコ語
uk ウクライナ語
vi ベトナム語
zh_CN 中国語(中国)
zh_TW 中国語(台湾)

メールを検索

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

  1. メッセージ ファイル(存在する場合)でユーザーが使用する言語 / 地域を検索します。たとえば、Google Chrome の言語 / 地域がイギリス英語(en_GB)に設定されている場合、システムはまず、 /_locates/en_GB/messages.json。このファイルが存在し、メッセージがある場合は、 もうありません
  2. ユーザーが希望する言語 / 地域に地域が含まれている場合(つまり、言語 / 地域にアンダースコア(_)が付いている場合)は、検索します。 その地域がない言語 / 地域のみが返されます。たとえば、en_GB メッセージ ファイルが存在しない場合や、 メッセージが含まれていない場合、システムは en メッセージ ファイルを参照します。このファイルが存在し、 存在すれば、システムはこれ以上探すことはありません。
  3. メッセージ ファイルでデフォルトの言語 / 地域を検索します。たとえば、拡張機能の 「default_locale」「es」に設定され、/_locates/en_GB/messages.json/_locates/en/messages.json にはメッセージが含まれ、拡張機能はメッセージを使用して /_locates/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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。

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 など)。