
要在WordPress主题和插件中实现本地化翻译,首先必须理解国际化和本地化的概念,以及WordPress是如何进行这两者的操作的。
本文将讨论以下内容:
国际化的定义
如何为插件进行国际化
本地化的定义
本地化文件的概述
如何实施本地化
PO翻译文件的解析
在WordPress中翻译JavaScript内容的方法
WP-CLI的安装方法
如何在Windows上安装wp-cli
WP-CLI的更新
如何用WP-CLI生成JSON翻译文件
WP-CLI生成POT翻译模板的步骤
国际化的定义
国际化是为软件(在这里指WordPress)提供多语言支持的过程。这个过程通常被缩写为 i18n,其中数字18表示首尾字母之间的字符数量。
为您的插件和主题设置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开发者资源库,若您有兴趣,可以深入研究和理解其中的内容。对于刚入门的朋友来说,这些概念可能较为复杂。简单而言,国际化是通过一系列函数将文本(如字符串、变量以及单复数形式)标记为可翻译的格式,而本地化则是将这些标记过的文本翻译成特定语言。主题或插件的开发者在设计时必须考虑国际化的因素,如果想要将主题或软件翻译成优美的中文,了解本地化的过程即可。
关于如何在WordPress中实现国际化以及Gettext函数的具体使用,您可以查阅《如何国际化你的插件》这篇文章。
本地化的实现方法
接下来,我们将重点讲解本地化的实现过程。
举例来说,当您查看一个已经完成国际化的主题或插件的源代码时,您应该会发现许多类似于
__ (‘Blog Options’, ‘my-plugin’);的代码。这个函数的格式为:__(‘文本域’, ‘路径域’);其中,文本域表示可以被翻译的内容,将在前端显示,而路径域则定义了插件翻译的位置。
如前所述,.pot文件作为模板,.po文件是可编辑的翻译文件,.mo文件则是编译后的翻译版本。简单来说,当WordPress遇到__ (‘Blog Options’, ‘my-plugin’);这一语句时,它会在众多的.mo文件中查找与my-plugin相匹配的文件。如果该文件中包含了Blog Options的翻译记录,WordPress就会将其替换为翻译后的文本,并将其展示在页面上。
这样讲解后,您是否觉得更易理解呢?接下来,我们将探讨如何创建和编辑翻译文件。
下载一个已经国际化的主题或插件后,您应该能在languages或lang目录中找到相应的.pot文件或多个.po文件。只要找到.pot模板文件即可,这个文件是创建翻译的基础。有了这个模板,您便可以使用Poedit等软件生成对应语言的.po文件进行编辑,并生成.mo文件供WordPress使用。
解析po翻译文件
如果您没有.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文件的内容,旨在实现国际化。接下来是每一行的解释:
- “Project-Id-Version: Smush Pro 3.14.0n”:定义项目的版本号。
- “Report-Msgid-Bugs-To: https://wpmudev.comn”:提供报告消息ID和错误的链接。
- “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”:指示MIME版本。
- “Content-Type: text/plain; charset=UTF-8n”:表明内容类型及字符编码,这里采用纯文本和UTF-8。
深入了解WordPress翻译机制及其应用
- “Content-Transfer-Encoding: 8bitn”: 这表示内容的传输编码方式为8位编码。
- “Plural-Forms: nplurals=1; plural=0;n”: 该条目定义了复数形式的规则,表明此语言仅有一种复数形式。
- “X-Generator: Poedit 3.3.2n”: 这里列出了生成该模板所用工具的名称及版本信息。
- “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()等是很重要的。如果路径域与翻译文件不一致,你也可以选择修改路径域或创建一个对应的翻译文件。
还有一种可能性,即该段文字是通过JS文件输出的。
如何在WordPress中翻译JavaScript内容
自WordPress 5.0起,引入了wp-i18n JavaScript包,提供了添加可翻译字符串所需的功能,类似PHP中的操作。原文链接
简单来说,通常情况下,由PHP文件输出的文本内容可以通过mo文件进行翻译,而JS文件输出的文本内容则需要生成相应的JSON文件以供翻译使用。
要生成JSON翻译文件,可以使用WP-CLI工具。
如何安装WP-CLI
WP-CLI是WordPress的命令行工具,其设计初衷是为WordPress的管理员提供一个全面的替代方案。无论在WordPress管理过程中需要执行何种操作,都应该存在相应的WP-CLI命令。
推荐的安装WP-CLI方式是下载Phar构建文件(类似于Java的JAR文件),将其设为可执行,并放置在系统的PATH目录中。
在进行WP-CLI的安装之前,请确认您的系统环境符合最低要求:
- 类Unix环境(如OS X、Linux、FreeBSD、Cygwin);在Windows环境下支持有限
- 需要PHP版本5.6或更高
- WordPress版本需为3.7或更高版本。较旧版本可能会有功能限制
在确认满足要求后,您可以使用或下载wp-cli.phar文件:wgetcurl
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
接下来,要检查Phar文件是否正常,可以执行以下命令:
php wp-cli.phar --info
若要通过命令行使用WP-CLI,首先需将文件设为可执行,并移动到PATH的某个位置。例如:wp
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
如果WP-CLI成功安装,运行时会显示如下信息:wp –info
$ 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可执行文件所在的路径加入系统环境变量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
利用WP-CLI生成JSON翻译文件
wp i18n make-json .po --no-purge
在这里,.po指的是已经完成编辑的po文件。
执行该命令将会产生几个文件,名称格式为plugin-name-zh_CN-[md5].json。
值得注意的是,md5值不可更改,生成的json文件需放入相应目录,以便实现对js中输出文本的翻译。
利用WP-CLI生成POT翻译模板
- 执行以下命令以生成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/11/21/plugins/67346.html
本站所有文章由wordpress极光ai post插件通过chatgpt写作修改后发布,并不代表本站的观点;如果无意间侵犯了你的权益,请联系我们进行删除处理。
如需转载,请务必注明文章来源和链接,谢谢您的支持与鼓励!










