https://developer.wordpress.org/cli/commands/i18n/make-mo/
编写wordpress plugin需要多个语言版本供用户查看,可以利用wordpress内置的多证言机制编写插件,从而使插件支持多语言的目的
1. 插件入口文件设定:
/**
* Plugin Name: my plugin
* Plugin URI: PLUGIN SITE HERE
* Description: PLUGIN DESCRIPTION HERE
* Author: YOUR NAME HERE
* Author URI: YOUR SITE HERE
* Text Domain: my-plugin
* Domain Path: /languages
* Version: 0.1.0
*
* @package Myplugin
*/
主要是下面2行指定了多语言
* Text Domain: my-plugin 文本域,与其他插件区别
* Domain Path: /languages 域路径,固定在这里即可
顺便说一下,上面的格式直接用wordpress cli生成插件脚手架的时候已经帮你写好
安装Wordpress CLI命令行工具(Linux/iwndows)$ wp scaffold plugin sample-plugin --allow-root --skip-tests
2.其他语言的.po档(依照语言命名)
档案名称:my-plugin-[locale].po
若此档要套用至繁体中文, 则档案名称命名为:my-plugin-zh_TW.po
my-plugin-zh_TW.po 的内容例子
msgid "apple"
msgstr "苹果"
msgid "car"
msgstr "小车"
语言名称 | 代码 |
---|---|
Chinese (China) | zh_CN |
Chinese (Hong Kong) | zh_HK |
Chinese (Taiwan) | zh_TW |
更多的在语言代码 https://wpastra.com/docs/complete-list-wordpress-locale-codes/
3.将编写好的.po档转成.mo档 (php只认.mo文件,所以po文件更改后要记得转.mo文件才会生效)
cd /var/www/html/wp-content/plugins/my-plugin/languages
# 调用cli 命令,生成 mo 文件
sudo -u www-data wp i18n make-mo my-plugin-zh_TW.po
4.插件主文件代码需要加个Action
/*
* Load plugin textdomain.
*/
function plugin_load_textdomain() {
load_plugin_textdomain( 'my-plugin', false, basename( dirname( __FILE__ ) ) .'/languages/' );
}
add_action( 'init', 'plugin_load_textdomain' );
5.代码调用翻译函数
_e('car', 'my-plugin');
printf(__('your car is %s.', 'my-plugin'),$carName);