ローカライズ メッセージの形式

各国際化拡張機能には、ロケールに固有の文字列を提供する 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."
      },
      ...
    }
  },
  ...
}

以下に、prompt_for_name、hello、bye という 3 つのメッセージを定義する messages.json ファイルを示します。

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

「name」というフィールドはありません。このフィールドの名前はメッセージの名前です。 名前__MSG__name___ または getMessage("_name_") 内に表示されます。

名前は、ローカライズされたメッセージ テキストを取得できる大文字と小文字を区別しないキーです。名前には次の文字を含めることができます。

  • 名前順(昇順)
  • a-z
  • 0~9
  • _(アンダースコア)
  • @

セクションから、名前の例を 3 つ示します。

messages.json:

"prompt_for_name": {
  ...
},
"hello": {
  ...
},
"bye": {
  ...
}

名前の使用例については、国際化のページをご覧ください。

メッセージ

翻訳されたメッセージ。プレースホルダを含めることができる文字列形式になります。使用 $_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 $$)"
 を使用します。

ただし、置換文字列を参照する場合は、$USER$ などのプレースホルダを使用することをおすすめします。 (i18n.getMessagesubstitutions パラメータを使用して指定された文字列)は、 置換文字列に直接書き込むことができます。たとえば、次のメッセージは、getMessage() に渡された最初の 3 つの置換文字列を指しています。

messages.json:

"message": "Params: $1, $2, $3"

上記の例でも、$_n_ 文字列ではなくプレースホルダを使用することをおすすめします。 見つけることができます。プレースホルダは、適切な変数名と考えてください。コードを記述してから 1 週間後には、$1 が参照するものを忘れてしまう可能性がありますが、プレースホルダが参照するものは覚えているでしょう。プレースホルダと置換文字列の詳細については、プレースホルダのセクションをご覧ください。

description

省略可。メッセージの説明(翻訳者に役立つコンテキストや詳細を提供することを目的としています) 最適な翻訳を行えるようにします

以下に、のセクションから抜粋した 3 つの説明の例を示します。

messages.json:

"description": "Ask for the user's name"
...
"description": "Greet the user"
...
"description": "Say goodbye to the user"

プレースホルダ

省略可。メッセージ内で使用される 1 つ以上の部分文字列を定義します。2 つの理由は次のとおりです。 プレースホルダを使用できます。

  • メールの翻訳対象外の箇所のテキストを定義する場合。例: HTML コード、 商標登録された名前、フォーマット指定子など)が含まれます。
  • getMessage() に渡される置換文字列を参照する場合。例: $1

各プレースホルダには名前と「content」がと、オプションの「example」が表示されます。プレースホルダの名前 大文字と小文字は区別されません。また、メッセージ名と同じ文字を含めることができます。

「コンテンツ」item の値は、指定された置換文字列を参照できる文字列です。 i18n.getMessage メソッドの substitutions パラメータを使って抽出します。"content"の値はアイテム 通常は“Example.com”などを指定します「$1」を入力します。一致していない置換文字列を参照した場合は、 空の文字列が返されます。次の表に、$_n_ 文字列が substitutions パラメータで指定された文字列に対応する方法を示します。

substitutions パラメータ1 ドルの価値2 ドルの価値3 ドルの価値
userNameuserName の値""""
["Cira", "Kathy"]"Cira""Kathy"""

[例] 項目(省略可、ただし強く推奨)は、コンテンツがエンドユーザーにどのように表示されるかを示して、翻訳者の作業を支援します。たとえば、金額のプレースホルダは、 "$23.45"

次のスニペットは、のセクションから抜粋したものです。our_site と user という名前の 2 つのプレースホルダを含む「placeholders」アイテムを示しています。「our_site」プレースホルダには「例」アイテムがありません。これは、「content」フィールドから値が明らかであるためです。

messages.json:

"placeholders": {
  "our_site": {
    "content": "Example.com",
  },
  "user": {
    "content": "$1",
    "example": "Cira"
  }
}