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

各国際化された拡張機能やアプリには、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."
      },
      ...
    }
  },
  ...
}

次の messages.json ファイルでは、「prompt_for_name」、「hello」、 "bye":

{
  "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 $$)"
 を使用します。

ただし、置換文字列を参照する場合は、$USER$ などのプレースホルダを使用することをおすすめします。 (i18n.getMessagesubstitutions パラメータを使用して指定された文字列)は、 置換文字列に直接書き込むことができます。たとえば、次のメッセージは 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」が表示されます。プレースホルダの名前 大文字と小文字は区別されません。また、メッセージ名と同じ文字を含めることができます。

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

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

「例」アイテム(省略可。ただし強く推奨)を使用すると、コンテンツがどのように 表示されます。たとえば、金額のプレースホルダは、 "$23.45"

次のスニペットはのセクションから抜粋したものですが、「プレースホルダ」を示しています。CANNOT TRANSLATE 「our_site」という名前のプレースホルダが 2 つあります。「our_site」プレースホルダに「example」が含まれていません 値が「content」から明らかであるため、表示されます。

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