掌握WordPress主题与插件本地化翻译的终极指南

作品声明:个人观点、仅供参考

要实现WordPress主题和插件的本地化翻译,首先需要理解国际化与本地化的概念,以及WordPress如何实现这两者。

本文将讨论以下主题:

国际化的定义
插件的国际化方法
本地化的概念
本地化文件的介绍
本地化的具体实现
PO翻译文件的解析
在WordPress中翻译JavaScript内容的方法
WP-CLI的安装
在Windows上安装WP-CLI的步骤
更新WP-CLI的方式
使用WP-CLI生成JSON翻译文件
使用WP-CLI生成POT翻译模板

国际化是什么?

国际化是为软件(在此案例中为WordPress)提供多语言支持的过程,这一过程通常简称为i18n,其中数字18表示首字母i和尾字母n之间的字母数量。

为插件和主题提供i18n支持,可以让其覆盖更广泛的用户群体,甚至无需额外的语言翻译。当您将软件上传至WordPress.org时,所有的JS和PHP文件会自动被解析,任何检测到的可翻译字符串都会被加入到translate.wordpress.org,便于社区进行翻译,确保WordPress插件和主题能够以多种语言提供服务。

对于PHP,WordPress有一个成熟的流程,请参见如何国际化您的插件。WordPress 5.0的发布也引入了类似的JavaScript代码翻译流程。

如何对插件进行国际化

若要使字符串在应用中可翻译,需要将原始字符串包裹在一组特定函数的调用中,这些函数统称为“gettext”。

本地化是什么?

本地化是对国际化插件进行翻译的后续过程,通常简称为(因为l和n之间有10个字母。l10n

本地化文件

POT(可移植对象模板)文件

该文件包含插件中的原始字符串(英文)。

PO(可移植对象)文件

翻译人员将获取该文件,并将各部分翻译为他们的语言。最终生成的文件格式与源文件相同,但包含翻译和一些特定的头信息。每种语言都有对应的文件。POTmsgstrPOPOTPO

MO(机器对象)文件

每个翻译文件会生成一个机器可读的二进制文件,这些文件是gettext函数实际使用的编译版本(不关心源文件),转换过程通常通过命令行工具完成。一般情况下,应用程序可能会使用多个大型逻辑模块和不同的文件。

以上信息来源于WordPress开发者资源库,感兴趣的朋友可以深入学习与理解。对于初学者来说,可能有些难以掌握,总体而言,国际化是通过一系列函数将文本(字符串、变量、单复数等)标记为可翻译形式,而本地化则是将这些标记过的文本翻译成特定语言。国际化是主题或插件开发者需要关注的方面,而想要将主题和软件翻译成优美的中文,只需掌握本地化的相关知识即可。

关于如何实现WordPress的国际化以及gettext函数的使用方法,可参考《如何国际化您的插件》。

本地化的实现方法

本文将重点讨论如何实施本地化。

举个例子,当您打开一个已经完成国际化的主题或插件的源代码时,您会发现许多类似于

__(‘Blog Options’, ‘my-plugin’);这样的代码。其函数格式为:__(‘文本域’, “路径域”);其中,文本域指的是可被翻译的文本,也就是前端显示的内容,而路径域则定义了插件翻译的存放位置。

结合之前提到的.pot作为模板,.po为可编辑的翻译文件,.mo为编译后的翻译文件。简单来说,当WordPress遇到__(‘Blog Options’, ‘my-plugin’);这样的语句时,会在多个.mo文件中通过my-plugin进行匹配,若匹配到的mo文件中包含Blog Options的翻译条目时,就会将其替换为翻译后的文本并展示在页面上。

这样是不是更容易理解了呢?接下来我们将看看如何创建和编辑翻译文件。

深入解析PO翻译文件

在你下载了一个具有国际化特性的主题或插件后,通常可以在其目录中找到名为languages或lang的文件夹,里面往往会有一个.pot文件或者多个.po文件。我们关注的主要是.pot文件,它是翻译的模板文件。借助Poedit等工具,你可以基于这个模板文件创建相应语言的.po文件,随后进行编辑并生成用于WordPress的.mo文件。

如果找不到.pot文件,接下来会介绍如何制作一个.pot模板文件的方法。

以下是一个.po文件的示例:

# 版权所有 (C) 2023 
# 此文件根据GPLv2许可证分发。
msgid ""
msgstr ""
"Project-Id-Version: Smush Pro 3.14.0n"
"Report-Msgid-Bugs-To: https://wpmudev.comn"
"POT-Creation-Date: 2023-07-21 12:47+0800n"
"PO-Revision-Date: 2023-08-15 15:14+0800n"
"Last-Translator: cnuu n"
"Language-Team: n"
"Language: zh_CNn"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=UTF-8n"
"Content-Transfer-Encoding: 8bitn"
"Plural-Forms: nplurals=1; plural=0;n"
"X-Generator: Poedit 3.3.2n"
"X-Domain: wp-smushitn"

#. 插件名称
#: app/class-admin.php:285 app/class-admin.php:324
#: app/pages/class-dashboard.php:110 app/pages/class-dashboard.php:353
#: app/views/directory/meta-box.php:43 core/modules/bulk/class-mail.php:65
msgid "Smush Pro"
msgstr "Smush 专业版" 

上面的代码是一个.pot文件的内容,用于国际化。以下是每一行的详细解释:

  1. “Project-Id-Version: Smush Pro 3.14.0n”: 表示项目的版本号。
  2. “Report-Msgid-Bugs-To: https://wpmudev.comn”: 提供报告消息ID和错误的链接。
  3. “POT-Creation-Date: 2023-07-21 12:47+0800n”: 指明模板创建的日期与时间。
  4. “PO-Revision-Date: 2023-08-15 15:14+0800n”: 表示此模板最后修订的时间。
  5. “Last-Translator: cnuu n”: 显示最后翻译此模板的译者姓名及其邮箱。
  6. “Language-Team: n”: 指定负责该语言翻译团队的名称或标识。
  7. “Language: zh_CNn”: 表明此模板所用的语言版本,这里为简体中文。
  8. “MIME-Version: 1.0n”: 指定MIME版本。
  9. “Content-Type: text/plain; charset=UTF-8n”: 定义内容类型及字符集,这里为纯文本和UTF-8。
  10. “Content-Transfer-Encoding: 8bitn”: 指定内容的传输编码方式,此处为8位编码。
  11. “Plural-Forms: nplurals=1; plural=0;n”: 设定复数形式的规则,表示该语言仅有一种复数形式。
  12. “X-Generator: Poedit 3.3.2n”: 指明生成此模板的工具及其版本。
  13. “X-Domain: wp-smushitn”: 关联到此模板的域名或项目名称,这里是wp-smushit插件。

接下来是包围在双引号内的字符串,这些是消息ID(msgid)及其对应的翻译字符串(msgstr)。例如:

  • msgid “Smush Pro” 代表原始字符串是“Smush Pro”。
  • msgstr “Smush 专业版” 则表示翻译后的字符串是“Smush 专业版”。

此外,#: app/class-admin.php:285 app/class-admin.php:324等行标识了这些字符串在源代码中的具体位置,这对翻译人员非常重要,因为它们可以清楚地了解这些字符串的使用场景,从而进行更精准的翻译。

如果你掌握了这些内容,那么无需其他软件也能够手动创建.po文件。

关于文件的命名规则:

例如wp-plugin-name-zh_CN.po

显然,文件名应为中文,并用-连接单词,最后的zh_CN是根据ISO 639-1标准规定的语言代码,例如:

  • en_US(英语)
  • zh_CN(简体中文)
  • fr_FR(法语)
  • de_DE(德语)
  • es_ES(西班牙语)

完成编辑后生成的.mo文件应放在主题或插件目录下的languages文件夹内,或者放在wp-content/languages/相应目录,不同开发者的方法可能会有所不同,因此需要具体情况具体分析。

掌握了以上知识后,进行本地化翻译将变得简单易行。相信到此为止,你已经迫不及待想要尝试了,但请稍等,接下来的内容将为你提供一些在其他地方难以找到的实用经验。

处理翻译问题的有效方法

或许你曾遇到过这样的困扰:在翻译文件内已经添加了文本,且翻译效果也已生效,但仍有某些内容无法正常翻译。这种情况该如何处理呢?

此时,你需要定位到这段文字在源代码中的具体位置,以确认其是否已进行国际化定义。我们通常采用的定义方式是使用函数__(‘文本域’,”路径域”);,务必检查路径域是否与翻译文件一致。

如果未找到相关的函数定义,那么你需要手动对源代码进行修改,添加相应的函数。了解不同函数,如__()、_e()、_x()、_ex()、_n()、_nx()的使用方法及其区别是相当重要的。此外,如果发现路径域与翻译文件不匹配,可以选择修改路径域,或者为其创建一个对应的翻译文件。

还有一种可能性,即这段文字是由JavaScript文件输出的。

在WordPress中翻译JavaScript内容的指南

自WordPress 5.0版本起,wp-i18n JavaScript包被引入,它为文本字符串的翻译提供了必要的功能,这与PHP中的处理方式相似。

简单来说,通常情况下,PHP文件中输出的文本可以直接通过mo文件进行翻译,而JavaScript文件中输出的文本则需要生成相应的JSON文件才能实现翻译。

生成JSON翻译文件的一个有效途径是使用WP-CLI。

WP-CLI的安装步骤

WP-CLI是WordPress的命令行工具,旨在为WordPress管理员提供一种全面的替代方案,几乎所有在WordPress管理中需要执行的操作,都可以通过相应的WP-CLI命令实现。

推荐的安装方法是下载Phar构建(类似Java的JAR文件的存档),将其设置为可执行文件,并放置在系统的PATH路径中。

在开始安装WP-CLI之前,确保你的环境满足以下最低要求:

  • 类Unix环境(如OS X、Linux、FreeBSD、Cygwin);在Windows环境中的支持有限。
  • PHP版本为5.6或更高。
  • WordPress版本为3.7或更高。早于此版本的WordPress可能会导致功能降级。

确认满足要求后,可以通过以下方式之一下载wp-cli.phar文件:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

接下来,检查Phar文件以确认其是否正常工作:

php wp-cli.phar --info

若要在命令行中使用WP-CLI,需将文件设置为可执行,并移动到PATH中的某个位置。例如:

chmod +x wp-cli.phar

sudo mv wp-cli.phar /usr/local/bin/wp

如果WP-CLI成功安装,运行时应能看到如下信息:

$ wp --info

OS: Linux 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64

Shell: /usr/bin/zsh

PHP binary: /usr/bin/php8.1

PHP version: 8.1.0

php.ini used: /etc/php/8.1/cli/php.ini

MySQL binary: /usr/bin/mysql

在Windows上安装wp-cli的步骤

首先,你需要安装PHP,并将php.exe的路径加入系统的环境变量Path中。

接下来,下载wp-cli.phar并将其放置于一个指定的目录,例如我选择的目录是D:Toolswp-cli。

在D:Toolswp-cli目录下,创建一个名为wp.bat的文件。

在该文件中输入以下内容:

@ECHO OFF

php “D:/Tools/wp-cli/wp-cli.phar” %*

最后,确保在环境变量Path中添加D:Toolswp-cli的路径。

如何进行更新

你可以通过使用 (doc) 或重复安装步骤来更新WP-CLI。命令为:wp cli update

如果WP-CLI是由root或其他系统用户拥有,则需要运行以下命令: sudo wp cli update

生成JSON翻译文件的方式

wp i18n make-json .po --no-purge

在这个命令中,.po是你已经编辑好的PO文件名称。

执行此命令后,会生成多个类似于plugin-name-zh_CN-[md5].json的文件。

请注意,md5值是不可修改的。将生成的JSON文件放置到对应的目录中,就可以实现对JavaScript输出文本内容的翻译了。

如何通过WP-CLI生成POT翻译模板

  1. 请运行下列命令以创建POT文件:
wp i18n make-pot .pot 

在上述命令中,应替换为你希望生成的POT文件名,如myplugin。而则需更改为提取翻译字符串所对应的插件或主题目录路径。
2. 一旦执行命令,WP-CLI会自动扫描你指定的插件或主题目录,提取翻译字符串并保存至你所指定的POT文件中。
3. 此时,你将获得一个名为.pot的文件,里面包含了你的WordPress插件或主题中的翻译字符串。你可以通过任何文本编辑器打开该文件以进行查看和修改。

有关wp-cli的安装与使用,可以访问https://wp-cli.org/以获取更深入的了解和学习资料。

本文是作者@avenjan对WordPress本地化翻译的一些体会和总结,旨在分享给希望学习该领域知识的朋友。虽然部分内容可能不够准确或专业,但希望能为需要的朋友提供一些帮助和指导。如有任何疑问或意见,欢迎在评论区交流,非常感谢你的关注!

本文标题:掌握WordPress主题与插件本地化翻译的终极指南
网址:https://www.2090ai.com/2025/10/24/plugins/64281.html



本站所有文章由wordpress极光ai post插件通过chatgpt写作修改后发布,并不代表本站的观点;如果无意间侵犯了你的权益,请联系我们进行删除处理。
如需转载,请务必注明文章来源和链接,谢谢您的支持与鼓励!