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

各国際化された拡張機能またはアプリには、ロケールに固有の文字列を提供する messages.json という名前のファイルが 1 つ以上あります。このページでは、messages.json ファイルの形式について説明します。詳細については、 国際化とローカライズの方法については、国際化のページをご覧ください。

フィールドの概要

次のコードは、messages.json でサポートされているフィールドを示しています。必須フィールドは name フィールドと message フィールドのみです。

{
  "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 ファイルを示します。

{
  "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 つの名前の例を示します。

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

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

メッセージ

翻訳されたメッセージ(プレースホルダを含むことができる文字列形式)。使用 $_placeholder_name_$(大文字と小文字を区別しない)は、特定のプレースホルダを参照します。たとえば、「our_site」という名前のプレースホルダは、$our_site$$OUR_SITE$$oUR_sITe$ として参照できます。

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

"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 $):

"message": "Amount (in $$)"
 を使用します。

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

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

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

description

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

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

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

プレースホルダ

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

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

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

[content] アイテムの値は、置換文字列を参照できる文字列です。この文字列は、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」プレースホルダに「example」が含まれていません 値が「content」から明らかであるため、表示されます。

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