WordPress 工程化与高阶实践

WordPress插件国际化完整指南:从__()到wp_set_script_translations

WordPress插件国际化完整指南:从__()到wp_set_script_translations

WordPress插件国际化完整指南:从__()到wp_set_script_translations

插件国际化(i18n)经常被推迟到”发布前最后一周”才处理。但此时代码中的字符串已经散落在数百个文件中,逐个包裹翻译函数的成本远超预期。正确的做法是从第一行代码开始就为i18n做好准备。

PHP侧:不止__()和_e()

大多数人只用__()和_e(),但真正需要掌握的还有:_n()(单复数,中文虽无复数但英文和其他语言必须处理);_x()(带上下文,同一个”Post”在不同位置可能翻译为”文章”或”发布”);esc_html__()(翻译+转义,防止翻译字符串中的XSS);sprintf(__())组合(变量插入,务必用占位符而非字符串拼接)。关键纪律:永远不要在翻译函数内使用变量或拼接字符串,否则翻译工具的字符串提取器无法识别。

JavaScript侧的变革

Gutenberg时代,大量插件逻辑在JavaScript中。wp_set_script_translations配合@wordpress/i18n包的__()函数,实现了JS代码的国际化。翻译文件(.json)通过wp i18n make-json从.po文件自动生成。一个易忽略的细节:wp_set_script_translations的第三个参数是翻译文件的路径,很多人在插件更新后忘记更新这个路径导致翻译加载失败。

翻译工作流自动化

手动维护.po/.mo文件是不可持续的。推荐:代码中用标准翻译函数 → wp i18n make-pot自动提取.pot模板 → translate.wordpress.org或Crowdin做协作翻译 → CI中自动拉取翻译文件并打包进release。这整套流程的初始搭建需要2-3小时,但之后每个版本的翻译更新只需5分钟。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注