每个国际化扩展程序或应用至少有一个名为 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
文件中的各个字段。如需详细了解
消息文件 - 例如,当语言区域未定义所有消息时会出现什么情况,请参见
国际化。
name
抱歉,没有名为“name”的字段。此字段的名称与消息的名称相同
名称名称__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.getMessage 的 substitutions 参数指定的字符串)您还可以参考 直接在消息中替换字符串。例如,以下消息指代 传入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
。
每个占位符都有一个名称,即“内容”以及可选的“example”内容。占位符的名称 不区分大小写,且包含与消息名称相同的字符。
“内容”商品的值是一个字符串,可引用指定的替换字符串
使用 i18n.getMessage 方法的 substitutions 参数。“内容”值项目是
通常为“Example.com”或“$1”。如果您引用的替换字符串
存在,则得到一个空字符串。下表显示了 $_n_
字符串与字符串的对应关系
由 substitutions 参数指定。
substitutions 参数 | 价值 $1 | 价值 $2 | 价值 $3 |
---|---|---|---|
userName | userName 的值 | "" | "" |
["Cira", "Kathy"] | "Cira" | "Kathy" | "" |
“示例”item(可选,但强烈建议使用)通过向译者展示
。例如,美元金额的占位符应该有如下示例:
"$23.45"
。
以下代码段摘自示例部分,显示了“placeholders”一项 包含两个名为“our_site”的占位符和“user”字段。“our_site”占位符没有“example” 项,因为从“content”级别可以明显看出其价值字段。
"placeholders": {
"our_site": {
"content": "Example.com",
},
"user": {
"content": "$1",
"example": "Cira"
}
}