本地化消息格式

每个国际化的扩展或应用程序至少有一个名为 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”和“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
  • a-z
  • 0-9
  • _ (underscore)
  • @

注意:不要定义以“@@”开头的名称。这些名称是为预定义的消息保留的。

以下是来自示例部分的三个名称示例

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

有关使用名称的更多示例,请参阅国际化页面。

# message

翻译后的消息,采用可包含占位符的字符串形式。使用 $_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!"

要将美元符号 ($) 放入字符串中,请使用 $$。例如,使用以下代码指定消息金额(以 $ 为单位)

"message": "Amount (in $$)"

尽管诸如 $USER$ 之类的占位符是引用替换字符串(使用 i18n.getMessage 的替换参数指定的字符串)的首选方式,但您也可以直接在消息中引用替换字符串。例如,以下消息指的是传递给 getMessage() 的前三个替换字符串:

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

尽管如此,我们还是建议您在消息中坚持使用占位符而不是 $_n_ 字符串。将占位符视为好的变量名称。编写代码一周后,您可能会忘记 $1 指的是什么,但您会知道占位符指的是什么。有关占位符和替换字符串的更多信息,请参阅占位符部分。

# description

可选的。消息的描述,旨在提供上下文或详细信息,以帮助翻译人员做出最佳翻译。

以下是来自示例部分的三个消息示例

  • 定义不应翻译的消息部分的文本。示例:HTML 代码、商标名称、格式说明符。
  • 引用传递给 getMessage() 的替换字符串。示例:$1

每个占位符都有一个名称、一个“内容”项和一个可选的“示例”项。占位符的名称不区分大小写,并且可以包含消息名称相同的字符。

“内容(content)”项的值是一个可以引用替换字符串的字符串,这些字符串是使用 i18n.getMessage 方法的替换参数指定的。“内容(content)”项的值通常类似于“Example.com”或“$1”。如果您引用不存在的替换字符串,则会得到一个空字符串。下表显示了 $_n_ 字符串如何对应于由替换参数指定的字符串。

substitutions parameter(替代参数) Value of $1 Value of $2 Value of $3
userName value of userName "" ""
["Cira", "Kathy"] "Cira" "Kathy" ""

“示例(example)”项(可选,但强烈推荐)通过向最终用户展示内容的显示方式来帮助翻译人员。例如,一个美元金额的占位符应该有一个像“$23.45”这样的例子。

以下摘自示例部分的片段显示了一个“占位符”项目,其中包含两个名为“our_site”和“user”的占位符。 “our_site”占位符没有“示例”项,因为它的值在“内容”字段中很明显。

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

By.一粒技术服务

results matching ""

    No results matching ""