説明
chrome.i18n
インフラストラクチャを使用して、アプリまたは拡張機能全体に国際化を実装します。
ユーザーに表示されるすべての文字列を、messages.json
という名前のファイルに配置する必要があります。毎回
新しい言語 / 地域を追加する場合は、_locales/_localeCode_
という名前のディレクトリにメッセージ ファイルを追加します。
localeCode は、英語の場合は en
などのコードです。
英語(en
)、スペイン語をサポートする国際化した拡張機能のファイル階層は次のとおりです
(es
)、韓国語(ko
):
複数の言語をサポートする方法
次の図に示すファイルの拡張子があるとします。
この拡張機能を国際化するには、ユーザーに表示される各文字列に名前を付け、メッセージに挿入します 表示されます。拡張機能のマニフェスト、CSS ファイル、JavaScript コードは、各文字列の名前を使用して文字列を取得します。 ローカライズ版。
国際化した場合の拡張機能の外観は次のとおりです(ただし、 英語の文字列):
<img "__msg_extname__",="" "default_locale"="""ja".="""extname"."="""hello=""_locales=""a=""alt="manifest.json ファイルの内容: "and=""""changed=""chrome.i18n.getmessage("extname”)=""defines=""en=""file=""file,=""has=""hello=""in=""item=""javascript=""messages.json=""named=""新規 = ""src="/static/images/i18n-after-1.gif"the=""to=""value=""世界"=""/
国際化に関する注意事項:
- サポートされている言語 / 地域のどれでも使用できます。サポートされていない言語 / 地域を使用すると、Google Chrome は 無視されます。
manifest.json
ファイルと CSS ファイルで、次のように messagename という名前の文字列を参照します。__MSG_messagename__
拡張機能またはアプリの JavaScript コードで、次のように messagename という名前の文字列を参照します。
chrome.i18n.getMessage("messagename")
getMessage()
の呼び出しごとに、メッセージに含める文字列を 9 つまで指定できます。詳しくは、 例: getMessage をご覧ください。@@bidi_dir
や@@ui_locale
などの一部のメッセージは、国際化によって提供されています。 ありません定義済みのメッセージ名の一覧については、事前定義されたメッセージのセクションをご覧ください。messages.json
では、ユーザーに表示される各文字列には名前(「メッセージ」)が含まれます。オプションの "description"表示されます。名前は「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
の下に置いてください。次の図
新しいスペイン語翻訳が適用された前の拡張機能を示しています。
定義済みのメッセージ
国際化システムには、ローカライズに役立つ事前定義メッセージがいくつか用意されています。これらの
@@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_GB
と en_US
など)をサポートする。
サポートされるロケール
Chrome ウェブストアでサポートされている言語 / 地域であればどれでも使用できます。
メールの検索
サポートされている言語 / 地域ごとにすべての文字列を定義する必要はありません。デフォルトの
messages.json
ファイルにはすべての文字列に値があるため、拡張機能やアプリはどの方法でも実行されます
変換がスパースになるからです拡張機能のシステムでメッセージが検索される仕組みは次のとおりです。
- メッセージ ファイル(存在する場合)でユーザーが使用する言語 / 地域を検索します。たとえば、Google
Chrome の言語 / 地域がイギリス英語(
en_GB
)に設定されている場合、システムはまず、_locales/en_GB/messages.json
。このファイルが存在し、メッセージがある場合は、 もうありません - ユーザーが希望する言語 / 地域に地域が含まれている場合(つまり、言語 / 地域にアンダースコア(_)が付いている場合)は、検索します。
その地域がない言語 / 地域のみが返されます。たとえば、
en_GB
メッセージ ファイルが存在しない場合や、 メッセージが含まれていない場合、システムはen
メッセージ ファイルを参照します。このファイルが存在し、 存在すれば、システムはこれ以上探すことはありません。 - メッセージ ファイルでデフォルトの言語 / 地域を検索します。たとえば、拡張機能の
「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”です
ブラウザの言語 / 地域を設定する方法
翻訳をテストするには、ブラウザの言語 / 地域を設定できます。このセクションでは、Google Chat で Windows、Mac OS X、Linux、ChromeOS のロケール。
Windows
言語 / 地域固有のショートカットまたは Google Chrome UI を使用して言語 / 地域を変更できます。「 一度設定すれば、複数の言語を一度に使えるようになります。
地域ごとのショートカットを使用する
特定の言語 / 地域で Google Chrome を起動するショートカットを作成、使用するには:
- デスクトップにすでにある Google Chrome のショートカットのコピーを作成します。
- 新しいショートカットの名前を新しい言語 / 地域に合わせて変更します。
[Target] フィールドに
--lang
を指定するように、ショートカットのプロパティを変更します。--user-data-dir
フラグ。ターゲットは、次のようになります。path_to_chrome.exe --lang=locale --user-data-dir=c:\locale_profile_dir
ショートカットをダブルクリックして 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 を使用して言語 / 地域を変更する方法は次のとおりです。
- アプリアイコン >オプション
- [高度な設定] タブを選択します。
- [ウェブ コンテンツ] まで下にスクロールします。
- [フォントや言語を変更] をクリックします。
- [言語] タブを選択します。
- プルダウンを使用して、Google Chrome の言語を設定します。
- Chrome を再起動する
Mac OS X
Mac で言語 / 地域を変更するには、システム環境設定を使用します。
- Apple メニューから [システム環境設定] を選択します。
- [Personal] セクションで [International] を選択します。
- 言語と地域を選択
- Chrome を再起動する
Linux
Linux の言語 / 地域を変更するには、まず Google Chrome を終了します。次に、「LANGUAGE」を 1 行で設定します。 Google Chrome を起動します。例:
LANGUAGE=es ./chrome
ChromeOS
ChromeOS で言語 / 地域を変更するには:
- システムトレイから [設定] を選択します。
- [言語と入力] セクションで [言語] プルダウンを選択します。
- 使用する言語がリストにない場合は、[言語を追加] をクリックして追加します。
- 追加したら、言語の横にある [その他の操作] メニュー項目をクリックして ChromeOS をこの言語で表示します。
- 設定した言語の横に表示される [再起動] ボタンをクリックして、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
ISO 言語コード(en
、fr
など)。このメソッドでサポートされている言語の一覧については、kLanguageInfoTable をご覧ください。不明な言語の場合は und
が返されます。これは、テキストの [percentage] が CLD に認識されていないことを意味します。
タイプ
文字列
メソッド
detectLanguage()
chrome.i18n.detectLanguage(
text: string,
callback?: function,
)
CLD を使用して、指定されたテキストの言語を検出します。
パラメータ
-
テキスト
文字列
翻訳対象のユーザー入力文字列。
-
callback
関数(省略可)
callback
パラメータは次のようになります。(result: object) => void
-
件の結果
オブジェクト
検出された言語の信頼性と DetectedLanguage の配列を保持する LanguageDetectionResult オブジェクト。
-
isReliable
ブール値
CLD で検出された言語の信頼性
-
言語
object[]
検出された言語の配列
-
language
文字列
-
パーセンテージ
数値
検出された言語の割合
-
-
-
戻り値
-
Promise<object>
Chrome 99 以降Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(
callback?: function,
)
ブラウザの受け入れ言語を取得します。ブラウザで使用されている言語 / 地域とは異なります。言語 / 地域を取得するには、i18n.getUILanguage
を使用します。
パラメータ
-
callback
関数(省略可)
callback
パラメータは次のようになります。(languages: string[]) => void
-
言語
string[]
LanguageCode の配列
-
戻り値
-
Promise<LanguageCode[]>
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
ブール値(省略可)
<
を<
に翻訳してエスケープします。これはメッセージ自体にのみ適用され、プレースホルダには適用されません。翻訳が HTML のコンテキストで使用される場合、デベロッパーはこのオプションを使用することをおすすめします。Closure Compiler で使用するクロージャ テンプレートでは自動的に生成されます。
-
戻り値
-
文字列
現在の言語 / 地域に合わせてローカライズされたメッセージ。
getUILanguage()
chrome.i18n.getUILanguage()
ブラウザの UI 言語を取得します。これは、ユーザーの優先言語を返す i18n.getAcceptLanguages
とは異なります。
戻り値
-
文字列
ブラウザの UI 言語コード(en-US、fr-FR など)。