当前位置: 首页>>技术教程>>正文


如何使WordPress插件翻译准备好?

webfans 技术教程 , , , 去评论

问题描述

创建翻译准备好的插件的最佳方式是什么?

它不一定要从一开始翻译,但必须易于翻译,以便来自不同文化背景的开发人员可以参与插件的本地化过程。

最佳解决办法

1.铭记本地化

不要使用echoprint()来生成文本输出,而是使用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,作为第一个参数提供的文本属于这个插件,你可以使用任何你想要的名字,但我更喜欢使用与我用于插件相同的名字目录文件,我觉得它更直观。

如何输出动态文本,如:“Hello< username>”?

使用__()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;

2.准备.pot /.po /.mo文件

定义

  • .pot文件:由插件开发人员随时处理,它用作创建新翻译的起点,WordPress不使用它。

  • .po文件:是您或其他人开始的翻译文件,也许已完成,但WordPress不会使用它。

  • A.mo文件:每当您保存.po文件时由Poedit自动创建,您只需创建或更新.po文件即可上传或re-upload文件。 WordPress从.mo文件获取翻译。

打开Poedit并使用以下设置创建新目录(文件>新建Catallog …):

  • 项目信息:使用您的(或您的团队)信息,语言和国家应该匹配您的插件默认语言

  • 路径:

    • 基本路径:.

    • 路径:移除所有&添加..,(我们将语言文件存储在一个名为languages的插件子目录中)

  • 关键字:删除所有&添加___e

将目录保存为/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot,然后按更新按钮扫描插件文件以获得可翻译的文本。当更新结束时关闭该目录,除非将新的可转换字符串(即封闭在__()_e()中)添加到您的插件,否则不需要更新该文件。

现在让我们创建第一个翻译(我将使用fr_FR):

使用Podeit,从POT文件(文件> POT文件中的新目录…)创建目录:

  • 项目信息:使用您的(或您的团队)信息,更改语言和国家,我将使用法语和法语

  • 路径:不要改变

  • 关键字:不要chage

将目录另存为/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po。翻译部分或全部字符串,再次保存.po文件,同时上传.po和.mo文件。

请注意,无论何时保存.po文件,都会生成一个名为.mo的.mo文件,该文件的文件名至关重要,它由插件文本域(my-plugin)和语言区域设置(fr_FR)组成, ,总是将你的.po文件命名为这样的插件:[textdomain] – [locale] .po,这里有一些例子:

  • 意大利/意大利:wpcf7-it_IT.po

  • 葡萄牙/巴西:wpcf7-pt_BR.po

  • 阿拉伯语:wpcf7-ar.po …是!

每当插件更新为新文本,更新po文件,翻译新字符串并重新上传.po和.mo文件

3.指示插件加载当前语言的翻译文本

您的插件中的某处必须告诉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函数的第一个和第三个参数中的插件名称。

4.测试并排除故障

有些原因可能无法正常工作:

  • 字符串不会导入到.pot或.po文件中

    • ‘错误的目录设置(路径或关键字或两者)

  • 文字没有在WordPress网站上翻译

    • →.mo文件丢失或文件名错误

    • →未使用文本域(将_e('my text')替换为_e('my text', 'my-plugin'))

    • →文本域未加载(使用上面的示例使用正确的参数,WP不会警告你错误)

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/1412.html,转载请务必附带本地址声明。