创建可翻译的插件的最佳方法是什么?
它不必从一开始就进行翻译,但必须易于翻译,以便来自不同文化背景的开发人员都可以参与该插件的本地化过程。
创建可翻译的插件的最佳方法是什么?
它不必从一开始就进行翻译,但必须易于翻译,以便来自不同文化背景的开发人员都可以参与该插件的本地化过程。
Answers:
不要使用echo
或print()
产生文本输出,而是使用WordPress函数__()
和_e()
:
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
并且__()
将提供翻译-在当前的语言-作为第一个参数提供的文字。_e()
将输出文本,而__()
将其返回。
第二个参数是文本域,您将使用它来告诉WordPress作为第一个参数提供的文本属于此插件,您可以使用任何想要的名称,但我更喜欢使用与该插件相同的名称目录文件,我觉得它更直观。
与__()
和sprintf()
:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
定义
打开Poedit并使用以下设置创建一个新目录 (文件›新目录...):
.
..
,(我们会将语言文件存储在名为language的插件子目录中)__
和_e
将目录另存为,然后按更新按钮扫描插件文件中的可翻译文本。更新完成后,关闭该目录,除非您将新的可翻译字符串(即或)添加到插件中,否则无需更新该文件。/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
__()
_e()
现在让我们创建第一个翻译(我将使用fr_FR):
使用Podeit,创建一个从POT文件目录 (文件>从POT文件添加新目录...) :
将目录另存为。翻译部分或全部字符串,再次保存 .po文件,然后上传 .po和.mo文件。/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
请注意,每当您保存一个.po文件时,都会生成一个具有相同名称的.mo文件,.po文件的文件名至关重要,它由插件文本域(my-plugin)和语言区域设置( fr_FR),请始终为您的插件命名.po文件,例如:[textdomain]-[locale] .po,这是一些示例:
wpcf7-it_IT.po
wpcf7-pt_BR.po
wpcf7-ar.po
...是的!每当插件更新为新文本时,请更新 po文件,翻译新字符串并重新上传.po和.mo文件
在插件的某个位置,您必须告诉WordPress使用.mo文件,您可以通过在插件文件的开头使用以下代码来做到这一点:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
my-plugin
在load_plugin_textdomain
函数的第1和第3参数中用您的插件名称替换。
可能无法正常工作的一些原因:
_e('my text')
为_e('my text', 'my-plugin')
)Nabil的答案相当完整,但提供了一个简单的变体:
您的插件在WordPress.org插件存储库中
您愿意要求您的插件只能与WordPress 4.6或更高版本一起使用。
步骤如下:
在您插件的readme.txt文件中,添加
Requires at least: 4.6
。参见https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/
如果尚未将插件上传到WordPress插件存储库。参见https://wordpress.org/plugins/developers/add/。
查找插件的子域/文本域。为此,请转到WordPress插件存储库上的插件页面。该网址将类似于https://wordpress.org/plugins/your-plugin-slug/。URL的最后一部分“ your-plugin-slug”是您的插件的slug。这就是您用于翻译功能的文本域的方式。
在插件中使用WordPress的翻译功能(如__e(‘hello’, ‘my-plugin-domain’);
)。只要确保使用上一步中获得的正确的插件文本域即可。有关更多信息,请参见https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/。
如果执行上述步骤,WordPress将负责:
(从我的博客文章中回答:https : //cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/)