本地化支持
Asciidoctor 不仅限于处理英文内容。Asciidoctor 可以处理完整的 UTF-8 字符集。这意味着您可以用任何语言编写文档,以 UTF-8 编码保存文件,并且 Asciidoctor 会正确转换文本。
此外,您还可以自定义内置标签(例如,“Appendix”)以匹配您编写的语言。这个过程称为本地化(l10n)。Asciidoctor 生成的输出中使用的内置标签默认为英文。这些标签可以通过更改 相应属性 的值来修改。
有一些注意事项需要了解
-
目前,官方的 HTML 和 PDF 转换器仅完全支持从左到右(以及从上到下)的阅读。正在考虑支持从右到左(RTL)的阅读。有关详细信息,请参阅 issue #1601。在此期间,您可以利用 DocBook 工具链来实现从右到左的支持。
-
存储日期和时间的属性(例如,
docdatetime)始终格式化为2019-01-04 19:26:06 -0600。 -
应用程序消息(即日志消息)始终是英文。
-
Asciidoctor 不支持 AsciiDoc.py 使用的语言配置文件。但是,Asciidoctor 提供了 翻译文件,可用于类似目的。
翻译内置标签
转换为 DocBook 时,您可以依赖 DocBook 工具链来翻译(大多数)内置标签。要激活此功能,请将 lang 属性设置为有效的国家/地区代码(默认为英文的 en)。例如:
$ asciidoctor -a lang=es -b docbook article.adoc
支持的语言列表以及 DocBook 的其他语言注意事项,请参阅 DocBook XSL: The Complete Guide。
lang 属性*不会*在直接转换为 HTML 或 PDF 时启用内置标签的自动翻译。它只是一个提示,用于配置 DocBook 工具链。如果您不使用 DocBook 工具链进行发布,则必须自己翻译每个内置标签。一种方法是在文档头中设置以下属性,或通过 API 或 CLI 传递属性:
| 属性 | 默认英文值 | 注释 |
|---|---|---|
|
附录 |
|
|
附录 |
引用附录时使用。 |
|
注意 |
|
|
章 |
仅当 |
|
章 |
引用章节时使用。 |
|
示例 |
|
|
图 |
|
|
重要 |
|
|
最后更新 |
|
|
未设置 |
默认情况下,列表块没有标题。指定 |
|
名称 |
仅当 |
|
笔记 |
|
|
部分 |
|
|
部分 |
引用部分时使用。 |
|
未设置 |
仅当 |
|
章节 |
引用节时使用。 |
|
表格 |
|
|
提示 |
|
|
Table of Contents |
|
|
未命名 |
|
|
Version |
|
|
警告 |
如果您计划支持多种语言,您会希望在 条件预处理器指令 中为每种语言定义属性。例如:
ifeval::["{lang}" == "de"]
:caution-caption: Achtung
...
endif::[]
当然,您可能希望这已经有人为您做好了。确实如此!
您可以在 Asciidoctor 存储库中找到一个 AsciiDoc 文件,其中提供了这些属性对大多数主要语言的翻译。到目前为止,内置标签已被翻译成以下语言:阿拉伯语、白俄罗斯语、保加利亚语、加泰罗尼亚语、捷克语、丹麦语、荷兰语、德语、西班牙语、波斯语(Farsi)、芬兰语、法语、匈牙利语、印度尼西亚语、意大利语、日语、韩语、挪威语(Bokmål)、挪威语(Nynorsk)、波兰语、葡萄牙语、巴西葡萄牙语、罗马尼亚语、俄语、塞尔维亚语(西里尔文)、塞尔维亚语(拉丁文)、瑞典语、土耳其语、乌克兰语、越南语、简体中文和繁体中文。翻译是使用 AsciiDoc 属性条目在条件预处理器块中定义的,就像上面建议的那样。
要使用此文件根据 lang 属性的值自动翻译内置标签(就像 DocBook 工具链所做的那样),请按照以下步骤操作:
-
从 Asciidoctor 存储库下载 AsciiDoc 文件 attributes.adoc。
-
将该文件放在文档的相对 locale 文件夹中。
-
在 AsciiDoc 文档的头部添加以下行:
include::locale/attributes.adoc[] -
使用
lang属性设置语言。此属性必须在 include 指令被处理之前设置。例如:-a lang=es
现在,内置标签将根据 lang 属性的值自动翻译。
关于如何使语言支持更加简化的讨论正在进行中(issue #1129)。欢迎提供意见。
翻译
Asciidoctor(或 DocBook)目前不支持开箱即用的内容翻译。有一个集成 gettext 的提案(讨论),欢迎提出建议。