
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress插件主题翻译
WP集市
2025-09-09
【WordPress教程】
577人已围观
-
咱们先唠唠WordPress插件和主题翻译这事儿咋整。你肯定遇到过那种情况:装了个国外大佬写的主题或者插件,界面全是英文,用户体验直接打骨折对吧?其实啊,WordPress早就帮我们准备好了i18n(国际化)方案,用gettext这套工具链就能把代码里的字符串变成可翻译的形态。
-
先看基础原理。WordPress翻译机制核心是三个函数:__()用于直接返回翻译文本,_e()用于输出翻译文本,_x()则带上下文标识符。比如你在插件代码里写了:
$greeting = __("Hello World", "my-plugin"); echo esc_html($greeting);
这时候WordPress就会在"my-plugin"这个文本域里寻找"Hello World"对应的翻译。
-
准备工作你得先做个POT文件( Portable Object Template)。不用手动搞,用WP-CLI执行:
wp i18n make-pot /path/to/your-plugin languages/my-plugin.pot
这个命令会扫描所有PHP文件提取可翻译字符串。注意看生成的POT文件里会有这样的结构:
msgid "Hello World" msgstr ""
-
现在来点骚操作。假设要给法语做翻译,把POT文件复制为fr_FR.po,然后填翻译内容:
msgid "Hello World" msgstr "Bonjour le monde"
完事儿用poedit工具编译成.mo二进制文件,扔到插件的languages文件夹里。这时候法语用户看到的就不是"Hello World"而是"Bonjour le monde"了。
-
有个坑得特别注意:文本域(text domain)必须和插件slug保持一致。比如你的插件文件夹叫"super-widget",加载翻译时得这么写:
load_plugin_textdomain( 'super-widget', false, dirname(plugin_basename(__FILE__)) . '/languages' );
不然WordPress找不着翻译文件,这事儿我踩过三次坑。
-
更高级的玩法是动态翻译。比如根据用户时区显示不同问候语:
$time = current_time('H'); if ($time < 12) { $message = _x('Good morning', 'time_greeting', 'my-plugin'); } else { $message = _x('Good afternoon', 'time_greeting', 'my-plugin'); }
用_x()函数可以让相同原文根据上下文不同显示不同翻译,在po文件里会生成两个独立条目。
-
偶尔会遇到翻译缺失的诡异情况。这时候可以临时加个调试代码:
add_filter('gettext', function($translation, $text, $domain) { if ($domain === 'my-plugin' && empty($translation)) { error_log("Untranslated text: {$text}"); } return $translation; }, 10, 3);
这样没翻译的字符串就会出现在debug日志里,方便查漏补缺。
-
现在说个黑科技:机器翻译自动化。用Python写个脚本自动处理po文件(需要安装polib库):
import polib from googletrans import Translator
po = polib.pofile('fr_FR.po') translator = Translator()
for entry in po.untranslated_entries(): translation = translator.translate(entry.msgid, dest='fr').text entry.msgstr = translation po.save()
当然机器翻译质量可能比较魔幻,建议还是人工校对下。
9. 最后提醒个细节:翻译字符串里如果包含PHP变量,得用printf方式处理:
```php
// 错误示范
echo __("Welcome back, $username", "my-plugin");
// 正确姿势
printf(
__("Welcome back, %s", "my-plugin"),
esc_html($username)
);
这样才能保证翻译时整句结构完整,而且不会出现XSS漏洞。
- 其实最省事的办法是直接上translate.wordpress.org平台。如果你把插件提交到官方仓库,社区志愿者会帮忙翻译成各种语言。只需要在readme里加段说明:
=== How to translate === You can contribute translations at: https://translate.wordpress.org/projects/wp-plugins/your-plugin-slug
这样就能躺着收获多语言支持了。
总之插件主题翻译就是个细活儿,刚开始可能觉得麻烦,但一旦配置好工作流,后续维护其实挺轻松的。关键是让世界各地用户都能用母语操作你的产品,这个体验提升绝对值回票价。
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。
上一篇:WordPress字体加载优化
下一篇:WordPress多站点数据同步

热门文章
