各国際化拡張機能には、ロケール固有の文字列を提供する messages.json
という名前のファイルが 1 つ以上あります。このページでは、messages.json
ファイルの形式について説明します。国際化とローカライズの方法については、国際化ページをご覧ください。
フィールドの概要
次のコードは、messages.json
でサポートされているフィールドを示しています。「name」と「message」のフィールドのみは必須です。
messages.json:
{
"name": {
"message": "Message text, with optional placeholders.",
"description": "Translator-aimed description of the message.",
"placeholders": {
"placeholder_name": {
"content": "A string to be placed within the message.",
"example": "Translator-aimed example of the placeholder string."
},
...
}
},
...
}
例
次の messages.json
ファイルでは、「prompt_for_name」、「hello」、「bye」という 3 つのメッセージが定義されています。
messages.json:
{
"prompt_for_name": {
"message": "What's your name?",
"description": "Ask for the user's name"
},
"hello": {
"message": "Hello, $USER$",
"description": "Greet the user",
"placeholders": {
"user": {
"content": "$1",
"example": "Cira"
}
}
},
"bye": {
"message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!",
"description": "Say goodbye to the user",
"placeholders": {
"our_site": {
"content": "Example.com",
},
"user": {
"content": "$1",
"example": "Cira"
}
}
}
}
フィールドの詳細
このセクションでは、messages.json
ファイルに指定できる各フィールドについて説明します。メッセージ ファイルの使用方法(ロケールですべてのメッセージが定義されていない場合など)の詳細については、多言語対応をご覧ください。
name
実は、「名前」というフィールドはありません。このフィールドの名前はメッセージの名前です。これは、__MSG__name___
または getMessage("_name_")
に表示される名前と同じです。
この名前は、ローカライズされたメッセージ テキストを取得できるキー(大文字と小文字を区別しません)です。名前には次の文字を使用できます。
- 名前順(昇順)
- a-z
- 0~9
- _(アンダースコア)
- @
例のセクションから、名前の例を 3 つ紹介します。
messages.json:
"prompt_for_name": {
...
},
"hello": {
...
},
"bye": {
...
}
名前のその他の使用例については、多言語対応のページをご覧ください。
message
翻訳されたメッセージ。文字列形式になります。placeholdersを含めることができます。特定のプレースホルダを参照するには、$_placeholder_name_$
(大文字と小文字を区別しない)を使用します。たとえば、「our_site」という名前のプレースホルダは、$our_site$
、$OUR_SITE$
、または $oUR_sITe$
として参照できます。
例セクションから抜粋したメッセージの例を 3 つ紹介します。
messages.json:
"message": "What's your name?"
...
"message": "Hello, $USER$"
...
"message": "Goodbye, $USER$. Come back to $OUR_SITE$ soon!"
文字列にドル記号($
)を挿入するには、$$
. For example, use the following code to specify
the message Amount (in $):
messages.json:
"message": "Amount (in $$)"
を使用します。置換文字列(i18n.getMessage の substitutions パラメータを使用して指定された文字列)を参照する場合は、
$USER$
などのプレースホルダを使用することをおすすめしますが、メッセージ内で直接置換文字列を参照することもできます。たとえば、次のメッセージは、getMessage()
に渡される最初の 3 つの置換文字列を参照しています。messages.json:
"message": "Params: $1, $2, $3"
それでも、メッセージ内では
$_n_
文字列ではなくプレースホルダを使用することをおすすめします。プレースホルダは変数名と考えてください。コードを記述してから 1 週間経つと、$1
が何を参照しているかは忘れてしまうかもしれませんが、プレースホルダが何を参照しているかは知っています。プレースホルダと置換文字列の詳細については、placeholders セクションをご覧ください。description
省略可。メッセージの説明。翻訳者が最適な翻訳を行えるように、コンテキストや詳細を記載します。
例セクションから抜粋した説明の例を 3 つ紹介します。
messages.json:
"description": "Ask for the user's name" ... "description": "Greet the user" ... "description": "Say goodbye to the user"
placeholders
省略可。メッセージ内で使用される 1 つ以上の部分文字列を定義します。プレースホルダを使用する理由は 2 つあります。
- メッセージ内の翻訳対象外のテキストを定義します。例: HTML コード、商標名、フォーマット指定子。
getMessage()
に渡された置換文字列を参照する場合。例:$1
各プレースホルダには、名前、「content」項目、省略可能な「example」項目があります。プレースホルダの名前では大文字と小文字が区別されません。また、メッセージ名と同じ文字を含めることができます。
「content」アイテムの値は置換文字列を参照できる文字列で、i18n.getMessage メソッドの substitutions パラメータを使用して指定します。「コンテンツ」アイテムの値は通常、「Example.com」や「$1」などです。存在しない置換文字列を参照した場合、空の文字列が返されます。次の表に、$_n_
文字列と substitutions パラメータで指定された文字列の対応を示します。
substitutions パラメータ | 1 ドルの価値 | 価値: $2 | 価値: $3 |
---|---|---|---|
userName | userName の値 | "" | "" |
["Cira", "Kathy"] | "Cira" | "Kathy" | "" |
「サンプル」項目(省略可だが強く推奨)は、コンテンツがエンドユーザーにどのように表示されるかを示すことで、翻訳者に役立ちます。たとえば、金額のプレースホルダは "$23.45"
のようになります。
以下の例セクションからのスニペットは、「our_site」と「user」という 2 つのプレースホルダを含む「プレースホルダ」アイテムを示しています。「our_site」プレースホルダには「example」アイテムがありません。その値が「content」フィールドから明白です。
messages.json:
"placeholders": {
"our_site": {
"content": "Example.com",
},
"user": {
"content": "$1",
"example": "Cira"
}
}