本地化訊息格式

每個國際化擴充功能或應用程式都有至少一個名為 messages.json 的檔案,提供 特定語言代碼的字串本頁說明 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」和 「再見」:

{
  "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 檔案可以顯示的每個欄位。若要進一步瞭解 郵件檔案 (例如,特定語言代碼未定義所有郵件時會發生什麼情況),請參閱 國際化

名稱

實際上沒有名為「名稱」的欄位。欄位名稱是訊息的名稱 - 相同 您看到的名稱名稱__MSG__name___getMessage("_name_")

名稱是不區分大小寫的鍵,可讓您擷取本地化訊息文字。名稱可以 包括以下字元:

  • A 至 Z
  • a-z
  • 0-9
  • _ (底線)
  • @
注意:請勿定義開頭為「@@」的名稱。這些名稱僅供預先定義的訊息使用。

下列三個名稱範例取自「示例」部分:

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

如需更多名稱使用範例,請參閱國際化頁面。

訊息

翻譯的訊息,格式為可包含預留位置的字串。使用 $_placeholder_name_$ (不區分大小寫) 是指特定的預留位置。舉例來說: 是指名為「our_site」的預留位置例如 $our_site$$OUR_SITE$$oUR_sITe$

以下三個範例訊息範例從「範例」部分擷取:

"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() 的替代字串:

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

儘管如此,我們仍建議您繼續使用預留位置,而非 $_n_ 字串 你的通訊內容請將預留位置視為好的變數名稱。寫完 您可能會忘記 $1 的參照,但您將知道預留位置所指的意義。 如要進一步瞭解預留位置和替換字串,請參閱預留位置一節。

說明

選用。訊息說明,可用於提供背景資訊或詳細資料,協助翻譯者瞭解翻譯內容 盡可能取得最佳翻譯

以下是三個從「範例」部分取得的說明範例:

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

預留位置

選用。定義要在訊息中使用的一或多個子字串。以下兩個原因 建議使用預留位置:

  • 指定訊息中不應翻譯的文字。例如 HTML 程式碼 商標名稱、格式規範
  • 如要參照傳入 getMessage() 的替代字串。範例:$1

每個預留位置都有名稱、「內容」項目和選用的「範例」項目。預留位置名稱 不區分大小寫,且包含與「訊息名稱」相同的字元。

「內容」項目值是一個字串,可參照指定的替代字串 使用 i18n.getMessage 方法的 substitutions 參數。「內容」的值項目是 例如「Example.com」或「$1」。若您參照的替代字串未 就會得到空白字串下表顯示 $_n_ 字串如何對應至字串 由 substitutions 參數指定。

substitutions 參數$1 美元的價值$2 美元的價值$3 美元的價值
userNameuserName 的值""""
["Cira", "Kathy"]"Cira""Kathy"""

「範例」項目 (選用,但強烈建議使用) 呈現內容 使用者會看到的文字例如,金額的預留位置應使用以下示例: "$23.45"

下列程式碼片段取自「示例」部分,其中顯示「預留位置」CANNOT TRANSLATE 包含兩個名為「our_site」的預留位置和「user」「our_site」placeholder 不含「example」 因為其值很容易在「content」] 欄位。

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