揭秘WordPress主题与插件本地化翻译的实用指南

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

揭秘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”。

什么是本地化?

本地化是对国际化插件进行翻译的后续步骤。它的缩写为l10n,因为“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进行匹配。如果找到的mo文件里有Blog Options的翻译项,它就会把Blog Options替换成翻译后的文本并显示在页面上。

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

当你下载了一个已经国际化的主题或插件,通常会在languages或lang目录下找到一个.pot文件,或者多个.po文件。其他的文件不太重要,咱们只需要.pot的模板文件。有了这个翻译模板文件,就可以用Poedit等软件来创建对应语言的po文件,进行编辑并生成mo文件,供WordPress使用。

解析po翻译文件

如果没有.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和bug的链接。
  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。

轻松掌握 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管理员提供一整套命令,帮助他们更高效地管理网站。

如果你想安装WP-CLI,最推荐的方式就是下载Phar格式的文件(这和Java的JAR文件类似)。然后,你只需要把这个文件设置为可执行,并放到系统的PATH中。

不过,在安装之前,别忘了确认你的环境符合要求:

  • 你需要有类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,你得先把文件设为可执行,并移动到系统的某个路径下,比如:wp

chmod +x wp-cli.phar

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

如果安装顺利,当你运行以下命令时,应该能看到相关信息: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.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来进行更新。

用WP-CLI生成JSON翻译文件

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

这里的.po就是你已经搞定的po文件。

这个命令的执行会生成一些名为plugin-name-zh_CN-[md5].json的文件

其中的md5值是固定的,你只需要把生成的json文件放到相应的目录里,就能实现对js文本的翻译啦。

用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主题/插件本地化翻译 – 今日头条
声明:
文章来自网络收集后经过ai改写发布,如不小心侵犯了您的权益,请联系本站删除,给您带来困扰,深表歉意!

文章评论 (7)

  1. 读者小张 的头像
    读者小张2026-01-15 21:30

    文章详细介绍了WordPress的国际化和本地化,让我对如何支持多语言有了更清晰的理解。对开发者来说,这些信息非常实用,尤其是关于WP-CLI的部分,值得深入学习。

  2. 热心网友14 的头像
    热心网友142026-01-15 21:40

    对国际化和本地化的解释很清晰,特别是对开发者来说,掌握这些知识能更好地服务多语言用户。

  3. 热心网友13 的头像
    热心网友132026-01-15 21:50

    深入浅出的讲解了国际化和本地化的概念,对于想要开发多语言主题和插件的朋友们,真的是很有帮助。特别是WP-CLI的使用,节省了很多时间。

  4. 热心网友44 的头像
    热心网友442026-01-15 22:00

    对于想深入理解WordPress多语言支持的人,这篇文章提供了很好的概念和实用步骤,特别是关于PO和POT文件的处理,真的很有启发。

  5. 匿名 的头像
    匿名2026-01-15 22:10

    了解国际化和本地化的关键概念后,开发多语言插件和主题变得简单多了。文章里的步骤清晰明了,特别是关于WP-CLI的部分,真的很实用。

  6. 匿名 的头像
    匿名2026-01-15 22:20

    理解了国际化和本地化的流程后,开发多语言插件的信心更足了。特别是文中对PO和POT文件的讲解,让我对翻译管理有了新的认识。实用性很强。

  7. 用户A 的头像
    用户A2026-01-15 22:30

    掌握国际化和本地化的概念后,我发现开发多语言主题和插件并没有想象中那么复杂。尤其是对WP-CLI的使用讲解,非常实用,让我对翻译流程有了更深入的认识。

发表评论