特定區域設定的訊息引用

每個國際化擴充套件至少有一個名為 messages.json 的檔案,該檔案提供特定區域設定的字串。本文件介紹了 messages.json 檔案的格式。

注意:有關如何使擴充套件國際化的資訊,請參閱我們的 i18n 指南。

messages.json 示例

以下程式碼顯示了一個 messages.json 檔案示例,該示例摘自我們的 notify-link-clicks-i18n 示例擴充套件。只有 "name" 和 "message" 欄位是必需的。

json
{
  "extensionName": {
    "message": "Notify link clicks i18n",
    "description": "Name of the extension."
  },

  "extensionDescription": {
    "message": "Shows a notification when the user clicks on links.",
    "description": "Description of the extension."
  },

  "notificationTitle": {
    "message": "Click notification",
    "description": "Title of the click notification."
  },

  "notificationContent": {
    "message": "You clicked $URL$.",
    "description": "Tells the user which link they clicked.",
    "placeholders": {
      "url": {
        "content": "$1",
        "example": "https://mdn.club.tw"
      }
    }
  }
}

放置

您的 messages.json 檔案需要放置在以每個檔案支援的區域設定為名的目錄中 — endeja 等。這些目錄又需要放置在名為 _locales 的目錄中,該目錄位於擴充套件的根目錄下。

成員詳情

本節介紹 messages.json 檔案中可能出現的每個成員。

name

每個頂級成員都以您正在本地化的訊息字串的名稱命名,例如上面示例中的 "extensionName""notificationContent"。每個名稱不區分大小寫,並充當檢索本地化訊息文字的鍵。

名稱可以包含以下字元

  • A-Z
  • a-z
  • 0-9
  • _ (下劃線)
  • @

注意:您不應該定義以 @@ 開頭的名稱。這些名稱是為 預定義訊息保留的。

message

至少此屬性必須為每個字串設定。"message" 成員包含一個本地化字串,該字串可以包含 佔位符。您可以使用

  • $placeholder_name$(不區分大小寫)將特定的佔位符(例如上面示例中的 $URL$)插入到您的字串中。
  • $1$2$3 等,用於直接將從 i18n.getMessage() 呼叫中獲取的值插入到您的字串中。

其他注意事項

  • 字串中出現的任意數量的連續美元符號將被替換為相同數量的美元符號減一。因此,$$ > $$, $$$ > $$, 等。
  • 當讀取區域設定檔案時,匹配 /\$([a-z0-9_@]+)\$/i 的令牌將替換為字串 "placeholders" 物件中匹配的值。這些替換髮生在處理訊息中的任何 /\$\d/ 令牌之前。
  • 使用區域設定字串時,匹配 /\$\d+/ 的令牌將替換為傳遞給 i18n.getMessage() 的替換值。
  • getMessage() 不會處理超過 9 個佔位符/替換的呼叫。

description

可選

"description" 成員應包含訊息字串內容的描述,旨在幫助翻譯人員儘可能地對字串進行最佳翻譯。

佔位符

可選

"placeholders" 成員定義了一個或多個佔位符子字串,用於在訊息中使用 — 這些可以用於硬編碼您不想翻譯的專案,或引用變數。

每個佔位符子字串定義本身有多個值

json
"url" : {
  "content" : "$1",
  "example" : "https://mdn.club.tw"
}

佔位符名稱

佔位符名稱用於在替換字串中表示佔位符(例如,"url" 變成 $url$)。它不區分大小寫,並且可以包含與訊息字串 名稱相同的字元。

content

"content" 項定義了佔位符的內容。它可以是硬編碼的字串,例如 "My placeholder",但它也可以包含從 i18n.getMessage() 呼叫中獲取的值。此屬性是必需的。有關更多資訊,請參閱 從 JavaScript 中檢索訊息字串

示例

可選

可選的 "example" 項同樣旨在透過向翻譯人員展示佔位符如何對終端使用者顯示,幫助他們選擇最佳的本地化檔案。