
为了实现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函数实际使用的机器可读的二进制文件(不涉及OR文件),是文件的“编译”版本。转换通常通过命令行工具来完成,应用程序可能会使用多个大型逻辑可翻译模块及不同的文件。
以上信息来源于WordPress开发者资源库,有需要的朋友可以深入阅读和理解。对于初学者而言,可能会感觉有些复杂,总的来说,国际化是通过一系列函数将文本(字符串、变量、单复数等)标识为可翻译的形式,而本地化则是将这些标识的文本翻译为特定语言。开发者在创建主题或插件时需考虑国际化,而若想将其翻译成流利的中文,则只需掌握本地化的相关知识。
想了解如何实现WordPress的国际化以及使用Gettext函数的方式,请参考《如何国际化你的插件》一文。
本地化的实现方法
本文将详细介绍如何实现本地化。
例如,当你查看一个已经完成国际化的主题或插件的源代码时,你会发现许多类似于
__(‘Blog Options’, ‘my-plugin’);这样的代码。此函数的格式为:__(‘文本域’, ‘路径域’);其中,文本域指的是可以被翻译的内容,也就是前端所显示的文本,而路径域则定义了插件翻译的位置。
结合之前提到的.pot作为模板,.po为可编辑的翻译文件,而.mo为编译后的翻译文件,简单来说,当WordPress遇到__(‘Blog Options’, ‘my-plugin’);这样的语句时,它会在众多的.mo文件中通过my-plugin进行匹配,如果匹配的mo文件中包含了Blog Options的翻译条目,那么就会将Blog Options替换为翻译后的文本并展示在页面上。
这样一来,理解起来是不是就简单多了呢?接下来我们将探讨如何创建和编辑翻译文件。
深入解析PO翻译文件
在你下载了一个国际化的主题或插件后,通常会在其languages或lang文件夹中发现.pot文件或多个.po文件。尽管其他文件不那么重要,但.pot作为翻译模板文件是必不可少的。借助此文件,我们能够使用诸如Poedit等工具,创建相应语言的.po文件,之后再生成.mo文件,以供WordPress调用。
若未能找到.pot文件,接下来的内容将指导你如何自行创建该模板文件。
以下是一个.po文件的示例:
# 版权 (C) 2023
# 本文件根据GPLv2协议分发。
msgid ""
msgstr ""
"项目版本: Smush Pro 3.14.0n"
"报告消息ID和错误: https://wpmudev.comn"
"模板创建日期: 2023-07-21 12:47+0800n"
"PO修订日期: 2023-08-15 15:14+0800n"
"最后翻译者: cnuu <admin@cnuu.net>n"
"语言团队: n"
"语言: zh_CNn"
"MIME版本: 1.0n"
"内容类型: text/plain; charset=UTF-8n"
"内容传输编码: 8bitn"
"复数形式: nplurals=1; plural=0;n"
"生成工具: Poedit 3.3.2n"
"关联域名: 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文件的结构和功能:
- “项目版本: Smush Pro 3.14.0n”: 该行指出了项目的版本信息。
- “报告消息ID和错误: https://wpmudev.comn”: 提供了一个报告问题的链接。
- “模板创建日期: 2023-07-21 12:47+0800n”: 显示了此模板文件的创建时间。
- “PO修订日期: 2023-08-15 15:14+0800n”: 表示上次对模板的修改时间。
- “最后翻译者: cnuu <admin@cnuu.net>n”: 记录了最后一位翻译者的姓名和邮箱。
- “语言团队: n”: 该行用于标示负责翻译的语言团队。
- “语言: zh_CNn”: 明确指示了此模板的语言为简体中文。
- “MIME版本: 1.0n”: 指定了MIME的版本。
- “内容类型: text/plain; charset=UTF-8n”: 描述了文件的内容类型和字符编码。
- “内容传输编码: 8bitn”: 指定了内容的编码方式。
- “复数形式: nplurals=1; plural=0;n”: 这个字段定义了复数形式的规则,表明该语言只有一种复数形式。
- “生成工具: Poedit 3.3.2n”: 显示了生成此模板的工具及其版本信息。
- “关联域名: wp-smushitn”: 说明了该模板所关联的插件名称。
接下来的内容包含了被双引号包围的字符串,这些字符串分别是消息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文件进行翻译,而JS文件输出的内容则需要生成相应的JSON文件才能实现翻译。
生成JSON翻译文件的过程可以借助WP-CLI来完成。
如何安装WP-CLI
WP-CLI是WordPress的命令行工具,旨在为管理员提供一个全面的替代方案;无论在WordPress管理中想执行何种操作,都应有相应的WP-CLI命令。
推荐的安装方法是下载Phar构建(类似于Java的JAR文件),将其标记为可执行文件,并放置在系统的PATH中。
在进行WP-CLI的安装之前,务必确保环境符合最低要求:
- 类UNIX环境(如OS X、Linux、FreeBSD、Cygwin);Windows环境支持有限
- PHP版本需为5.6或更高
- WordPress版本需为3.7或更高。旧版本可能存在功能限制
确认满足以上要求后,接下来可以下载wp-cli.phar文件:wget或curl
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
安装WP-CLI于Windows操作系统
首先,您需要安装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。
更新WP-CLI
您可以通过使用 (doc) 或重复前述步骤来进行WP-CLI的更新。命令为:wp cli update
若WP-CLI由root或其他系统用户拥有,则需执行:sudo wp cli update
生成JSON翻译文件
wp i18n make-json <po-file-name>.po --no-purge
在此命令中,<po-file-name>.po指的是您已经编辑完成的PO文件。
执行此命令后,将生成多个类似于plugin-name-zh_CN-[md5].json的文件。
请注意,md5值不可更改,生成的JSON文件需放置在相应的目录下,以实现对JavaScript输出文本内容的翻译。
利用WP-CLI生成POT翻译模板
- 请使用以下命令来创建POT文件:
wp i18n make-pot <pot-file-name>.pot <plugin-or-theme-directory>
在这条命令中,你需要将<pot-file-name>替换成想要生成的POT文件名称,例如myplugin。同时,将<plugin-or-theme-directory>替换为目标插件或主题的目录路径,以便提取翻译字符串。
2. 当你执行该命令时,WP-CLI会自动遍历你指定插件或主题目录中的翻译字符串,并将其提取到你所指定的POT文件中。
3. 最终,你将会获得一个名为<pot-file-name>.pot的文件,里面包含了你WordPress插件或主题的翻译字符串。该文件可以通过任意文本编辑器进行查看和编辑。
有关wp-cli的安装与使用,您可以访问https://wp-cli.org/以获取更深入的知识和学习资源。
本文由作者@avenjan撰写,旨在分享他对WordPress本地化翻译的见解和总结。这些内容主要面向希望学习相关知识和技能的朋友。尽管部分信息可能存在不准确之处,但希望能为有需求的读者提供一些帮助与指导。如有任何疑问或意见,欢迎在评论区交流,感谢您的关注!
本文标题:深入探索:轻松实现WordPress主题与插件的本地化翻译技巧
网址:https://www.2090ai.com/2025/09/12/plugins/61961.html
本站所有文章由wordpress极光ai post插件通过chatgpt写作修改后发布,并不代表本站的观点;如果无意间侵犯了你的权益,请联系我们进行删除处理。
如需转载,请务必注明文章来源和链接,谢谢您的支持与鼓励!




