本页记录了 Markdown Here 如何在不同浏览器和平台上实现语言特定(本地化)翻译。它涵盖了翻译文件的组织、消息格式以及本地化内容管理流程。有关整体国际化架构的信息,请参阅i18n 架构。
Markdown Here 根据目标浏览器平台以两种不同的结构组织本地化文件。这种双重结构使扩展能够为基于 Chrome 的浏览器、Firefox 和 Thunderbird 提供适当的本地化方法支持。
对于 Chrome 和其他基于 Chromium 的浏览器,本地化文件存储在src/_locales目录中。每种受支持的语言都有其自己的子目录,以相应的语言代码命名(例如,ko 代表韩语,ja 代表日语)。
每个本地化目录中包含:
messages.json:包含 JSON 格式的 UI 字符串description.txt:包含用于商店列表的扩展描述来源:src/_locales/ko/messages.json1-355 src/_locales/ja/description.txt1-24
对于 Firefox 和 Thunderbird,本地化文件存储在src/firefox/chrome/locale目录中。每种语言也都有其自己的子目录,以语言代码命名。
Firefox/Thunderbird 的每个本地化目录中包含:
strings.properties:包含本地化字符串的键值对strings.dtd:包含用于 XUL 接口的 XML 样式实体声明来源:src/firefox/chrome/locale/ko/strings.properties1-95 src/firefox/chrome/locale/en/strings.dtd1-10 src/firefox/chrome/locale/ja/strings.dtd1-10
消息格式在基于 Chrome 的浏览器和 Firefox/Thunderbird 实现之间有所不同。本节详细介绍了每种格式中消息的结构。
在基于 Chrome 的浏览器中,消息以 JSON 格式存储,结构如下:
"message_id": {
"message": "Translated text",
"description": "Context for translators",
"inMozDTD": boolean (optional)
}
来自韩语 messages.json 的示例
"context_menu_item": {
"message": "마크다운 토글",
"description": "Text shown on the context menu.",
"inMozDTD": true
}
的inMozDTD标志表示此消息也在 Firefox/Thunderbird DTD 文件中使用。
来源:src/_locales/ko/messages.json11-15
strings.properties文件使用简单的键值对格式:
message_id=Translated text
来自韩语 strings.properties 的示例
context_menu_item=마크다운 토글
来源:src/firefox/chrome/locale/ko/strings.properties3
strings.dtd文件使用 XML 实体声明:
<!ENTITY message_id "Translated text">
来自英语 strings.dtd 的示例
<!ENTITY context_menu_item "Markdown Toggle">
来源:src/firefox/chrome/locale/en/strings.dtd2 src/firefox/chrome/locale/ja/strings.dtd1-10
下图说明了本地化消息是如何检索并显示给用户的:
浏览器向扩展提供本地化信息,然后扩展使用适当的 i18n 系统从正确的本地化文件中加载消息。此过程通过 i18n 实用函数从主代码中抽象出来。
某些消息包含必须在翻译过程中保留的 HTML 标记。例如:
"options_page__click_toggle": {
"message": "Right-click in the email and then click \"Markdown Toggle\". (Or click the <img src=\"images/icon16.png\"/> button on the toolbar.<span class=\"hotkey-display-wrapper\"> Or press <span class=\"hotkey-display\"><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>M</kbd></span></span>)",
"description": "A step in the basic usage instructions"
}
译者必须确保 HTML 标签保持正确平衡,并且属性得到保留。
来源:src/_locales/ko/messages.json86-88
某些消息使用占位符,这些占位符在运行时会被动态内容替换。例如,在 TeX 数学支持中:
"options_page__tex_math_customization_5_1": {
"message": "<code>{mathcode}</code>: The text between the <code>$$</code> symbols — i.e., the raw TeX formula; like <code>\\Delta</code>.",
"description": "Please do not translate {mathcode} and {urlmathcode}. Note: Double dollar signs ($$) are necessary to get a single dollar sign."
}
译者被指示不要翻译诸如{mathcode}和{urlmathcode}等占位符。
来源:src/_locales/ko/messages.json286-288
双美元符号($$)用于在应用程序中表示单个美元符号,如多条消息描述中所述。这对于 TeX 数学表达式尤其重要。
来源:src/_locales/ko/messages.json272-274
Markdown Here 当前支持以下语言:
| 语言代码 | 语言名称 | 文件位置 |
|---|---|---|
| en | 英语 | src/_locales/en/ |
| ko | 韩语 | src/_locales/ko/ |
| ja | 日语 | src/_locales/ja/ |
| de | 德语 | src/_locales/de/ |
| tr | 土耳其语 | src/_locales/tr/ |
| it | 意大利语 | src/_locales/it/ |
| pl | 波兰语 | src/_locales/pl/ |
每种语言的翻译完整度不同。主要源语言是英语,所有其他翻译均由此派生。
来源:src/_locales/ko/messages.json1-355 src/_locales/ja/description.txt1-24 src/_locales/tr/messages.json1-355 src/_locales/de/messages.json1-356 src/_locales/it/messages.json1-355 src/_locales/pl/messages.json1-355
添加或更新翻译的过程遵循以下通用工作流程:
如多个本地化文件中所述,Markdown Here 欢迎翻译贡献:
"options_page__contributing_2": {
"message": "Help make Markdown Here available in your language. <a href=\"https://github.com/adam-p/markdown-here/blob/master/CONTRIBUTING.md#translation\" target=\"_blank\">Translations are welcome.</a>"
}
来源:src/_locales/ko/messages.json93-95
测试本地化实现包括验证以下内容:
应在每个受支持的浏览器中使用每种受支持的语言测试扩展,以确保在所有平台上都能正常运行。
翻译后的文本长度通常与原文不同,这可能会影响 UI 布局。例如,“Markdown Toggle”等按钮在不同语言中可能会显著变长或变短。
虽然当前文件中未明确支持,但 RTL 语言需要对布局和文本方向进行特殊处理。
某些语言,特别是韩语和日语等东亚语言,可能需要特定的字符编码考量才能正确显示。
来源:src/_locales/ko/messages.json1-355 src/_locales/ja/description.txt1-24
Markdown Here 中的本地化实现采用双重结构来支持不同的浏览器环境。基于 Chrome 的浏览器使用存储在src/_locales中的 JSON 格式,而 Firefox 和 Thunderbird 则使用存储在src/firefox/chrome/locale中的 properties 和 DTD 文件。这种方法使扩展能够在尊重每个浏览器国际化系统技术要求的同时,在多种语言和平台之间提供一致的用户体验。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(a7dd5c)