WordPress模板插件定制

您现在的位置是:首页 > WordPress教程WordPress教程

WordPress如何翻译插件和主题

查看 WP集市 的更多文章WP集市 2025-08-31 【WordPress教程】 387人已围观

  1. 搞WordPress翻译这事儿吧,本质上就是让主题或插件里的英文句子能自动切换成中文(或者其他语言)。WordPress自己有一套国际化机制,靠的是gettext这套标准。比如你总会在代码里看到类似__('Hello World', 'my-plugin')这样的写法,这就是在标记一个需要翻译的字符串。

  2. 具体操作分三步走:首先,在代码里用特定函数包裹要翻译的文本。比如:

    echo esc_html__( 'This is a translatable text.', 'my-theme' );

    或者用在属性里:

    $value = esc_attr_x( 'Sort by', 'product order', 'my-plugin' );

    这些函数像个钩子,告诉系统:喂,这里要准备翻译了!

  3. 然后你得生成一个POT模板文件。这文件就是个字典模板,收集所有待翻译的原始字符串。可以用Poedit这类工具扫描代码生成,也可以用WP-CLI命令行搞定:

    wp i18n make-pot /path/to/your/plugin /output/path/plugin.pot

    生成的文件里是一堆msgid和空白的msgstr,等着被填上翻译。

  4. 接着创建对应语言的PO文件,比如zh_CN.po,把翻译填进msgstr里。完成后编译成MO文件——这才是WordPress真正能加载的二进制翻译文件。可以用Poedit自动编译,或者Again用WP-CLI:

    wp i18n make-mo /path/to/zh_CN.po /output/languages/

    这时候把MO文件扔到插件的languages文件夹里,系统就会在对应语言环境下自动加载了。

  5. 但有时候翻译不生效?可能是文本域(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文件了。

  6. 现在有些插件也开始用JSON格式的翻译了,比如Gutenberg区块。原理差不多,但文件换成my-plugin-zh_CN.json,然后用wp-i18n的JavaScript函数来加载。不过核心逻辑没变:标记字符串→提取→翻译→加载。

  7. 最后提醒下,翻译过程中可能遇到复数形式处理。比如英文里单复数区分,中文可能不需要,但代码里得写清楚:

    printf( _n( '%d item', '%d items', $count, 'my-plugin' ), $count );

    系统会根据$count的数量选择正确的翻译版本——虽然中文里通常直接写“%d个项目”就行。

总之WordPress翻译就像给代码穿多语言外套,步骤机械但需要细心。搞错一个参数或者路径,外套就穿歪了。

Tags:

WordPress模板插件定制

WP集市

V管理员
文章 280 篇 | 评论 0 次
最新文章