/

本地化

Quarkdown 开箱即用地支持字符串本地化

第一步是通过 .doclang {locale} 设置文档语言。请在调用其他文档元数据函数(如 .docname.docauthor 等)的同时调用此函数。

locale 的值可以是不区分大小写的英文完整名称(如 EnglishItalianFrench (Canada)),也可以是 IETF BCP 47 语言标签(如 enitfr-CA)。

内置本地化

Quarkdown 的内置库暴露了本地化表,用于本地化诸如引用类型编号 标题,以及目录 标题等元素。

注意:目前受支持的区域为 中文、English、French、German、Italian、Japanese、Polish、Portuguese、Russian、Ukrainian

欢迎贡献以支持新的区域:

创建你自己的本地化字符串

示例 1

设想一个函数 .theorem,它会在内容之前显示 Theorem.。你可以像下面这样定义它:

.function {theorem}
    **Theorem.**

.theorem This is my theorem

Theorem. This is my theorem

这对于你自己的英文文档来说工作良好,但如果你正在制作一个供所有人使用的库呢?你就需要支持多种语言。这正是本地化表派上用场的地方。

.localization {name} 函数定义了一个与唯一名称关联的新的本地化表。它的主体参数接受一个特定的 Markdown 列表,在 Quarkdown 中这被称为字典

这个本地化字典为你打算支持的每个区域暴露键值对。区域名称遵循与 .doclang 相同的规则,即既可以是完整名称,也可以是标签。只要设置了 .doclang,你就可以通过 .localize {table:key} 来访问本地化字符串,在此例中即 .localize {mylib:theorem}

示例 2

之前的函数现在会变成这样:

.localization name:{mylib}
    - English
      - theorem: Theorem
    - Italian
      - theorem: Teorema

.function {theorem}
    **.localize {mylib:theorem}.**

.theorem This is my theorem

Theorem. This is my theorem

扩展内置本地化表

如果你的区域尚未被 Quarkdown 支持,且你无法为项目做出贡献,仍然可以为你的文档扩展内置本地化表。

在调用 .localization {name} 时,附加一个 merge:{yes} 参数,会使给定名称的本地化表与新的用户自定义表合并。任何冲突的条目都会被新的条目覆盖。

例如,类型化盒子 默认具有本地化的标题,例如 warning 类型盒子会显示 Warning。如果文档区域不受支持,标题就会缺失。要使用加拿大法语的盒子标题来扩展内置本地化,可采用以下方式:

.localization {std} merge:{yes}
    - fr-CA
      - warning: Avertissement
      - error: Erreur
      ...

此后,假设 .doclang 中设置的是加拿大法语,新的条目就会对 .box 函数可用。

内置表名与条目列于本页的内置本地化

CJK 区域

当文档语言被设置为 CJK 区域(中文、日文、韩文)时: