钥匙要点
国际化(I18N)是开发插件以容易翻译成其他语言的过程,而本地化(L10N)是将国际化插件转换为新语言的随后过程。
答案很简单; WordPress以许多不同的语言在世界范围内使用。当插件被国际化时,它们会吸引来自世界其他地区的较大受众,他们显然会通过使用自己的语言使用插件来受益。
>现在我们已经熟悉了插件国际化和本地化的概念,让我们开始研究准备翻译的插件的过程。
>进行插件可翻译的第一步是在插件标题中包含翻译标题。
翻译标题是文本域和域路径。
>
>文本域必须匹配插件的slug。例如,如果您的插件是一个称为sample-plugin.php的单个文件,或者它包含在称为sample-plugin的文件夹中,则应为sample-plugin。>文本域上的注释 文本域名必须使用破折号而不是下划线。
>还记得我说过文本域必须与插件slug匹配吗?毕竟这可能不是真的。我对我的一个插件进行了快速实验,而不是插件的插件,我使用了一个唯一的文本,并且没有任何问题。域路径是文件夹WordPress将搜索.mo Translation Files。
默认情况下,WordPress搜索要使用的翻译文件的插件目录。将翻译文件放在插件的根文件夹中可能会使您的插件结构混乱。> 例如,如果您想将翻译文件保存在文件夹中,例如; /语言,您需要使用域路径标头通知WordPress。
下面是WordPress插件的典型标题。>加载文本域
>现在,我们将使用load_plugin_textdomain()函数告诉WordPress如果使用用户的语言,请加载翻译文件。
>
以下是函数概要。
第一个参数$域应该是文本域; $ abs_rel_path已被弃用,应设置为false;最后,$ plugin_rel_path是翻译文件的相对路径。
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>如果翻译mo文件在插件自己的目录中,则使用如下:
>您不仅要调用load_plugin_textdomain函数,还应在插件中以插件_loaded这样的操作在插件中调用:
><span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
>深入研究插件i18n
>现在设置了文本域和域路径标头,是时候学习如何国际化插件了。
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>该教程的这一段将分为以下:
请注意:字符串ESPW-Plugin将在本教程中用作文本域。
要在插件中翻译一个字符串,请将原始字符串包装在__()函数调用中如下:
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>
如果您想将字符串与浏览器相呼应,而不是Echo语言构造,请使用_e函数:
<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
作为PHP和WordPress开发人员,我认为您知道什么是占位符。您可以快速浏览Sprintf和printf()PHP文档以获取更多信息。
如果您在字符串中使用变量,例如下面的示例,则应使用占位符。
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
正确的方法是使用printf()函数如下:
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>
浏览WordPress插件存储库中某些插件的代码,我确实看到了这样的内容:
><span>function load_plugin_textdomain() { </span> <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); </span><span>} </span> <span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>
<span>$text = __( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
尽管现在可以翻译字符串,但php变量$ city也可以翻译。
这是一个不好的做法,因为翻译器可能会错误地将变量或将恶意代码更改为插件代码库,这最终将导致插件故障。sprintf函数与printf相似,因为他们使用占位符格式字符串,而printf输出格式的字符串,sprintf返回字符串。
>示例:以下代码将格式的字符串分配给变量$ text。3。 html翻译
<span>_e( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>在可翻译字符串中包括HTML取决于上下文。
4。处理复数
>当可以使用_n()函数国际化的项目数量时,该字符串会更改。
<span>echo 'Your city is $city.'</span>>
<span>printf( </span> <span>__( 'Your city is %s.', 'espw-plugin' ), </span> <span>$city </span><span>);</span>此函数接受4个参数,即:
单数 - 字符串的单数形式
>复数 - 字符串的复数形式
>易于同化,将用所述的每个函数组件剖析功能代码。
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>
第一个参数传递给_n函数是当评论数是单数时要显示的文本。
第二个是当评论数大于一个时显示的文本。占位符%s将包含number_format_i18n(get_comments_number())的值。
第三个参数get_comments_number()被认为是返回注释计数的函数。如果它返回1,则第一个参数一个注释将由printf输出,否则第二个参数%s如果大于1。
请注意:占位符%s被Number_format_i18n返回的整数(get_comments_number()),这是传递给printf函数的第二个参数。>最后,第四个参数是翻译
文本域。
>。>函数number_format_i18n()根据语言环境将注释计数转换为格式。有关更多信息,请参见文档。
>类似于number_format_i18n()是基于时间戳的局部格式的日期。 仍在_n()函数上,下面是该函数如何工作的另一个演示。
>如果变量$ count返回1,我们将显示一条垃圾邮件消息的文本;但是,如果它大于1,我们将删除%d垃圾邮件消息,占位符%d被$ count的整数替换。>
5。通过上下文歧义
>有时在几种情况下使用一个术语,尽管它是英语中的一个和相同的单词,它必须以其他语言的方式翻译不同。>
例如,单词帖子可以用作动词,例如“单击此处以发布您的评论”和名词“编辑此帖子”。<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>>
在这种情况下,应使用_x或_ex函数。
>在两种情况下,使用此方法都使用此方法,我们将获得原始版本的字符串注释,但是翻译人员将在不同的上下文中看到两个评论字符串。
>当通过poedit等翻译工具(例如poedit)解析函数_x()的字符串时,上下文参数为翻译器提供了在上下文上使用字符串/文本的提示。 在德语中,作为一个名词的帖子是beitrag,而动词为词。> 下面的
是Poedit的屏幕截图,将字符串柱翻译为德语,并带有上下文平方。
_x()检索翻译的字符串,_ex()显示它。
><span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>6。逃避翻译字符串
列表中的 是用于逃脱翻译文本的函数 - esc_html(),ESC_HTML_E(),ESC_HTML_X(),ESC_ATTR(),ESC_ATTR_E()和ESC_ATTR_E()和ESC_ATTR_X()。您可以在WordPress codex中获取有关这些功能的更多信息。 >我不需要解释其中的每一个,但是他们所做的基本上是逃脱可翻译的文本。 >
>
>
是哪些步骤可以使WordPress插件转换准备?插件翻译就绪涉及多个步骤。首先,您需要通过包装__()或_e()函数中的所有文本字符串来国际化插件。接下来,您需要创建一个.pot(Portable对象模板)文件,该文件包含插件中的所有可翻译字符串。该文件用作创建.po(Portable Object)和.mo(Machine Object)文件的模板,该模板包含翻译字符串。 >将您的WordPress插件转换为不同的语言,您需要为每种语言创建.po和.mo文件。这些文件包含翻译的字符串,并根据ISO-639语言代码命名(例如,英语en_us,fr_fr,法语)。您可以使用poedit或loco等工具来创建和管理这些翻译文件。 >如何测试我的WordPress插件以进行翻译准备?可以通过更改WordPress设置中的语言并检查插件的文本字符串是否正确翻译来测试您的WordPress插件是否准备转换。您还可以使用WordPress I18N Checker插件之类的工具,该工具会检查您的插件中的常见i18n错误。 您可以为WordPress插件翻译贡献通过WordPress Polyglots团队。他们负责将WordPress定位为不同的语言。您可以加入团队并开始将插件和主题转换为母语。 进行WordPress主题翻译准备涉及与插件类似的过程。您需要通过将所有文本字符串包装在__()或_e()函数中来国际化主题。然后,您需要创建一个.pot文件并将其用作为每种语言创建.po和.mo文件的模板。总结
WordPress的目标之一是使世界各地的用户轻松发布内容。作为插件开发人员,您可以在国际化插件时帮助进一步简化用户的发布流程。>使WordPress插件准备就绪?
>使WordPress插件转换准备就绪对于吸引全球受众至关重要的重要性是什么。并非所有WordPress用户都是说英语的人。通过国际化您的插件,您可以将讲不同语言的用户访问,从而增加用户群。它还可以增强用户体验,因为用户可以用母语与您的插件进行交互,从而使其更友好。使插件的文本字符串可翻译成其他语言。这是通过将这些文本字符串包裹在一个特殊功能中,可以翻译它们来实现。 WordPress为此目的使用gnu getText本地化框架,该框架提供了一组用于翻译文本的工具。
>如何将WordPress插件转换为不同的语言?
我可以使用哪些工具用于WordPress I18N?
>我如何为WordPress插件翻译贡献?
> .pot,.po和.mo文件在WordPress I18N?
以上是WordPress I18N:准备您的插件翻译的详细内容。更多信息请关注PHP中文网其他相关文章!