本地化支持

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 传递属性:

控制内置标签的属性
属性 默认英文值 注释

appendix-caption

附录

appendix-refsig

附录

引用附录时使用。

caution-caption

注意

chapter-signifier

仅当 doctypebook 时适用。

chapter-refsig

引用章节时使用。

example-caption

示例

figure-caption

important-caption

重要

last-update-label

最后更新

listing-caption

未设置

默认情况下,列表块没有标题。指定 listing-caption 以开启列表块的标题。

manname-title

名称

仅当 doctypemanpage 时适用。

note-caption

笔记

part-signifier

部分

part-refsig

部分

引用部分时使用。

preface-title

未设置

仅当 doctypebook 时适用。

section-refsig

章节

引用节时使用。

table-caption

表格

tip-caption

提示

toc-title

Table of Contents

untitled-label

未命名

version-label

Version

warning-caption

警告

如果您计划支持多种语言,您会希望在 条件预处理器指令 中为每种语言定义属性。例如:

ifeval::["{lang}" == "de"]
:caution-caption: Achtung
...
endif::[]

当然,您可能希望这已经有人为您做好了。确实如此!

您可以在 Asciidoctor 存储库中找到一个 AsciiDoc 文件,其中提供了这些属性对大多数主要语言的翻译。到目前为止,内置标签已被翻译成以下语言:阿拉伯语、白俄罗斯语、保加利亚语、加泰罗尼亚语、捷克语、丹麦语、荷兰语、德语、西班牙语、波斯语(Farsi)、芬兰语、法语、匈牙利语、印度尼西亚语、意大利语、日语、韩语、挪威语(Bokmål)、挪威语(Nynorsk)、波兰语、葡萄牙语、巴西葡萄牙语、罗马尼亚语、俄语、塞尔维亚语(西里尔文)、塞尔维亚语(拉丁文)、瑞典语、土耳其语、乌克兰语、越南语、简体中文和繁体中文。翻译是使用 AsciiDoc 属性条目在条件预处理器块中定义的,就像上面建议的那样。

要使用此文件根据 lang 属性的值自动翻译内置标签(就像 DocBook 工具链所做的那样),请按照以下步骤操作:

  1. 从 Asciidoctor 存储库下载 AsciiDoc 文件 attributes.adoc

  2. 将该文件放在文档的相对 locale 文件夹中。

  3. 在 AsciiDoc 文档的头部添加以下行:

    include::locale/attributes.adoc[]
  4. 使用 lang 属性设置语言。此属性必须在 include 指令被处理之前设置。例如:

    -a lang=es

现在,内置标签将根据 lang 属性的值自动翻译。

关于如何使语言支持更加简化的讨论正在进行中(issue #1129)。欢迎提供意见。

翻译

Asciidoctor(或 DocBook)目前不支持开箱即用的内容翻译。有一个集成 gettext 的提案(讨论),欢迎提出建议。