如果你希望你的主题能被全球用户使用,国际化是必须做的工作。WordPress 拥有完善的国际化工具链,让主题可以轻松适配任何语言。本文介绍从代码标记到翻译文件生成的完整流程。

主题代码中的文本标记

所有用户可见的文本都必须使用翻译函数进行标记。__ 函数用于返回翻译后的文本,_e 函数直接输出翻译后的文本。对于有单复数变化的文本,使用 _n 函数。对于需要附加上下文信息的文本,使用 _x 和 _ex 函数。

所有翻译函数都需要传入文本域参数。文本域是主题的唯一标识符,必须与 style.css 中声明的文本域一致。

POT 文件的生成

POT 文件是所有待翻译字符串的模板文件。使用 WP-CLI 的 wp i18n make-pot 命令可以从主题源代码中提取所有翻译函数中的字符串,生成 POT 文件。

生成的 POT 文件应该放在主题的 /languages/ 目录中,并命名为 文本域.pot

PO 和 MO 文件的制作

PO 文件是基于 POT 文件进行翻译的源文件。使用 POEdit 或 Loco Translate 等工具打开 POT 文件,为每种目标语言创建对应的 PO 文件。在 PO 文件中,翻译者将源文本逐条翻译为目标语言。

完成翻译后,PO 文件会被编译为 MO 文件。MO 文件是二进制格式,WordPress 实际加载的是 MO 文件。

语言包的加载

在主题的 functions.php 中使用 load_theme_textdomain 函数加载翻译文件。WordPress 会按照特定的优先级顺序查找翻译文件,包括 WordPress 语言目录和主题的语言目录。

主题语言包的更新维护

当主题添加新文本或修改现有文本时,需要重新生成 POT 文件,并通知翻译者更新 PO 文件。对于使用 WordPress 官方翻译平台的主题,更新会自动同步。