WordPress本地化

让插件本地化

插件结构

rqq-review-limit/
├── rqq-review-limit.php
├── languages/
│ └── rqq-review-limit.pot

主插件文件示例

<?php
/**
 * Plugin Name: RQQ Review Limit
 * Plugin URI:  https://example.com
 * Description: Limit WooCommerce product reviews per order and display remaining reviews via AJAX. Supports translations.
 * Version:     1.0.0
 * Author:      RQQ
 * Author URI:  https://example.com
 * Text Domain: rqq-review-limit
 * Domain Path: /languages
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

// 加载插件翻译文件
function rqq_review_limit_load_textdomain() {
    load_plugin_textdomain( 'rqq-review-limit', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
add_action( 'plugins_loaded', 'rqq_review_limit_load_textdomain' );

//要翻译的位置使用:
sprintf(
    /* translators: %d = number of remaining reviews */
    __('You can still leave %d more review(s) for this product.', 'zk_enhance'),
        $remaining
    )

__('Please log in to leave a review.', 'rqq-review-limit')

.po/.mo文件命名示例

$domain-语言代码.po

$domain-语言代码.mo

.po 文件示例

msgid "You can still leave %d more review(s) for this product."
msgstr "您还可以对该商品发表评论 %d 次。"

msgid "You have already reviewed all your orders for this product."
msgstr "您已评价过所有订单,无法继续评论。"

msgid → 原始英文字符串(和 PHP 里的 __() 保持一致)

msgstr → 目标语言翻译

编译成 .mo 文件后,WordPress 或 WPML / Loco Translate 会自动加载

生成mo文件

习惯了Linux和vim,安装软件和网页版在线转换服务都不如敲命令转换来得直接。幸运的是,GNU getext 是Linux系统自带的核心文本工具之一,提供 msgfmt 命令将.po文件翻译成.mo文件:

msgfmt -o xxxx.mo xxxx.po

GNU getext 包还提供 msgunfmt 命令将.mo文件转换成.po文件:

msgunfmt -o xxxx.po xxxx.mo

主题本地化

add_action('after_setup_theme', 'my_theme_setup');

function my_theme_setup(){

    load_theme_textdomain('rqq', get_template_directory() . '/languages');

}

语言翻译相关函数

load_textdomain
load_plugin_textdomain
load_theme_textdomain

Scroll to Top