特定于区域设置的消息引用

每个国际化的扩展至少有一个名为 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.org.cn"
      }
    }
  }
}

放置位置

您的 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

可选

"placeholders" 成员定义了一个或多个要在消息中使用的占位符子字符串 - 这些占位符可以用来硬编码您不想翻译的项目,或引用变量。

每个占位符子字符串定义都有几个值

json
"url" : {
  "content" : "$1",
  "example" : "https://mdn.org.cn"
}

占位符名称

占位符名称用于在替换字符串中表示占位符(例如 "url" 变为 $url$)。它不区分大小写,并且可以包含与消息字符串 名称 相同的字符。

content

"content" 项目定义了占位符的内容。这可以是一个硬编码的字符串,例如 "My placeholder",但它也可以包含从 i18n.getMessage() 调用中获得的值。此属性是必需的。有关更多信息,请参阅 从 JavaScript 中检索消息字符串

example

可选

可选的 "example" 项目同样旨在帮助翻译人员,通过向他们展示占位符如何显示给最终用户的示例,让他们在本地化文件时做出最佳选择。