本地化消息格式
每个国际化的扩展或应用程序至少有一个名为 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.一粒技术服务