
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress如何翻译插件和主题
WP集市
2025-08-31
【WordPress教程】
387人已围观
-
搞WordPress翻译这事儿吧,本质上就是让主题或插件里的英文句子能自动切换成中文(或者其他语言)。WordPress自己有一套国际化机制,靠的是gettext这套标准。比如你总会在代码里看到类似
__('Hello World', 'my-plugin')
这样的写法,这就是在标记一个需要翻译的字符串。 -
具体操作分三步走:首先,在代码里用特定函数包裹要翻译的文本。比如:
echo esc_html__( 'This is a translatable text.', 'my-theme' );
或者用在属性里:
$value = esc_attr_x( 'Sort by', 'product order', 'my-plugin' );
这些函数像个钩子,告诉系统:喂,这里要准备翻译了!
-
然后你得生成一个POT模板文件。这文件就是个字典模板,收集所有待翻译的原始字符串。可以用Poedit这类工具扫描代码生成,也可以用WP-CLI命令行搞定:
wp i18n make-pot /path/to/your/plugin /output/path/plugin.pot
生成的文件里是一堆msgid和空白的msgstr,等着被填上翻译。
-
接着创建对应语言的PO文件,比如zh_CN.po,把翻译填进msgstr里。完成后编译成MO文件——这才是WordPress真正能加载的二进制翻译文件。可以用Poedit自动编译,或者Again用WP-CLI:
wp i18n make-mo /path/to/zh_CN.po /output/languages/
这时候把MO文件扔到插件的languages文件夹里,系统就会在对应语言环境下自动加载了。
-
但有时候翻译不生效?可能是文本域(text domain)没写对。比如插件slug是my-plugin,那所有翻译函数里的第二个参数都得是'my-plugin',并且load_plugin_textdomain()要在初始化时挂到hook上:
add_action( 'init', 'my_plugin_load_textdomain' ); function my_plugin_load_textdomain() { load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); }
路径写错的话,WordPress就找不着MO文件了。
-
现在有些插件也开始用JSON格式的翻译了,比如Gutenberg区块。原理差不多,但文件换成my-plugin-zh_CN.json,然后用wp-i18n的JavaScript函数来加载。不过核心逻辑没变:标记字符串→提取→翻译→加载。
-
最后提醒下,翻译过程中可能遇到复数形式处理。比如英文里单复数区分,中文可能不需要,但代码里得写清楚:
printf( _n( '%d item', '%d items', $count, 'my-plugin' ), $count );
系统会根据$count的数量选择正确的翻译版本——虽然中文里通常直接写“%d个项目”就行。
总之WordPress翻译就像给代码穿多语言外套,步骤机械但需要细心。搞错一个参数或者路径,外套就穿歪了。
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。
