让插件本地化
插件结构
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