wordpress开发插件如何支持多语言?

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 域路径,固定在这里即可

各参数详细说明可参考 https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#top

顺便说一下,上面的格式直接用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);

更多详细可参考这里 https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#top

发表评论