你可以使用
Language subtag lookup page
上的查找工具查询语言子标签。请注意,你需要搜索语言的英语名称。
每个 i18n 系统都需要你提供想支持的各语言区域的已翻译字符串。在 WebExtensions 中,这些字符串放在一个名为
_locales
的目录中,
_locales
目录则位于扩展的根目录。每个语言区域都有一个名叫
messages.json
的文件,其中包含相应的字符串(在 WebExtension 中称作“消息”),这个文件放在
_locales
的子目录下,子目录以对应语言区域的语言子标签来命名。
注意,如果子标签包含一个基本语言和一个区域变种,那么语言与变种之间通常会以连字号隔开,例如 "en-US"。但作为
_locales
的子目录,
它必须采用下划线来分隔
,如 "en_US"。
因此
在我们这个示例应用
中,我们有如下几个目录:"en"(英语)、"de"(德语)、"nl"(荷兰语)以及 "ja"(日语)。每个目录都包含一个
messages.json
文件。
现在我们来看其中一个文件(
_locales/en/messages.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://developer.mozilla.org"
这个文件是一个标准的 JSON — 其中每个成员都是一个带有名称的对象,里面包含一个 message
(消息)和一个 description
(描述)。这些项目都是字符串。$URL$
是一个占位符,在 WebExtension 调用 notificationContent
成员时将被一个子字符串替换。你将在接下来的从 JavaScript 检索消息字符串章节中了解如何使用。
备注: 你可以在 Locale-Specific Message reference (en-US) 里找到更多有关 messages.json
文件中内容的信息。