説明
chrome.i18n
インフラストラクチャを使用して、アプリまたは拡張機能全体に国際化を実装します。
マニフェスト
拡張機能に /_locales
ディレクトリがある場合は、マニフェストで "default_locale"
を定義する必要があります。
コンセプトと使用方法
ユーザーに表示されるすべての文字列を、messages.json
という名前のファイルに配置する必要があります。毎回
新しい言語 / 地域を追加する場合は、/_locales/_localeCode_
という名前のディレクトリにメッセージ ファイルを追加します。
localeCode は、英語の場合は en
などのコードです。
英語(en
)、スペイン語をサポートする国際化した拡張機能のファイル階層は次のとおりです
(es
)、韓国語(ko
):
複数言語の対応
次の図に示すファイルの拡張子があるとします。
この拡張機能を国際化するには、ユーザーに表示される各文字列に名前を付け、メッセージに挿入します 表示されます。拡張機能のマニフェスト、CSS ファイル、JavaScript コードは、各文字列の名前を使用して文字列を取得します。 ローカライズ版。
国際化した場合の拡張機能の外観は次のとおりです(ただし、 英語の文字列):
<img "__msg_extname__",="" "default_locale"="""ja".="""extname"."="""hello=""_locates=""a=""alt="manifest.json ファイルの内容: "and=""""changed=""chrome.i18n.getmessage("extname”)=""defines=""en=""file=""file,=""has=""hello=""in=""item=""javascript=""messages.json=""named=""新規 = ""src="/static/docs/extensions/mv2/reference/i18n/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
をコピーします。
変換し、そのコピーを /_locates
の下の新しいディレクトリに配置します。たとえば
スペイン語の「messages.json
」の翻訳版を /_locates/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 つの翻訳で 1 つの言語の複数のバリエーションをサポートできる言語 / 地域(en
など)を含め、さまざまな言語 / 地域から選択できます(en_GB
と en_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
ファイルにはすべての文字列に値があるため、拡張機能やアプリはどの方法でも実行されます
変換がスパースになるからです拡張機能のシステムでメッセージが検索される仕組みは次のとおりです。
- メッセージ ファイル(存在する場合)でユーザーが使用する言語 / 地域を検索します。たとえば、Google
Chrome の言語 / 地域がイギリス英語(
en_GB
)に設定されている場合、システムはまず、/_locates/en_GB/messages.json
。このファイルが存在し、メッセージがある場合は、 もうありません - ユーザーが希望する言語 / 地域に地域が含まれている場合(つまり、言語 / 地域にアンダースコア(_)が付いている場合)は、検索します。
その地域がない言語 / 地域のみが返されます。たとえば、
en_GB
メッセージ ファイルが存在しない場合や、 メッセージが含まれていない場合、システムはen
メッセージ ファイルを参照します。このファイルが存在し、 存在すれば、システムはこれ以上探すことはありません。 - メッセージ ファイルでデフォルトの言語 / 地域を検索します。たとえば、拡張機能の
「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”です
ブラウザの言語 / 地域を設定する
翻訳をテストするには、ブラウザの言語 / 地域を設定できます。このセクションでは、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 以降でサポートされていますが、 下位互換性が確保されます同じ関数呼び出しで両方を使用することはできません。「 Promise はコールバックに渡された型と同じ型で解決されます。
getAcceptLanguages()
chrome.i18n.getAcceptLanguages(
callback?: function,
)
ブラウザの受け入れ言語を取得します。ブラウザで使用されている言語 / 地域とは異なります。言語 / 地域を取得するには、i18n.getUILanguage
を使用します。
パラメータ
-
callback
関数(省略可)
callback
パラメータは次のようになります。(languages: string[]) => void
-
言語
string[]
LanguageCode の配列
-
戻り値
-
Promise<LanguageCode[]>
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
ブール値(省略可)
<
を<
に翻訳してエスケープします。これはメッセージ自体にのみ適用され、プレースホルダには適用されません。翻訳が HTML のコンテキストで使用される場合、デベロッパーはこのオプションを使用することをおすすめします。Closure Compiler で使用するクロージャ テンプレートでは自動的に生成されます。
-
戻り値
-
文字列
現在の言語 / 地域に合わせてローカライズされたメッセージ。
getUILanguage()
chrome.i18n.getUILanguage()
ブラウザの UI 言語を取得します。これは、ユーザーの優先言語を返す i18n.getAcceptLanguages
とは異なります。
戻り値
-
文字列
ブラウザの UI 言語コード(en-US、fr-FR など)。