钥匙要点
国际化(I18N)是开发插件以容易翻译成其他语言的过程,而本地化(L10N)是将国际化插件转换为新语言的随后过程。
>“准备WordPress插件”翻译对于吸引全球受众,增强用户体验并通过使使用不同语言的用户可以访问用户群至关重要。
>- 准备翻译的插件的过程涉及设置翻译标题(文本域和域路径),加载文本域以及国际化各种元素,例如字符串,占位符,占位符,html,html,plurals,proceponts,context and context and casting translation strings。 >
- > WordPress I18N使用GNU getText本地化框架,该框架提供了翻译文本的工具。这涉及将所有文本字符串包装在__()或_e()函数中,并创建.pot(Portable Object Template)文件,该文件包含插件中的所有可翻译字符串。
- 国际化和本地化之间的差异 多年来,开发人员倾向于误解这些术语的含义 - 国际化和本地化。
- 国际化是开发插件的过程,因此可以轻松地翻译成其他语言。
- >本地化描述了将国际化插件转换为新语言的后续过程。
为什么国际化?
答案很简单; WordPress以许多不同的语言在世界范围内使用。当插件被国际化时,它们会吸引来自世界其他地区的较大受众,他们显然会通过使用自己的语言使用插件来受益。
- >
作为开发人员,您可能没有时间提供插件的本地版本,因为您不会说其他语言。但是,当您国际化插件时,您会为他人打开大门,以创建本地化而不一定要修改源代码。
-
插件国际化
>现在我们已经熟悉了插件国际化和本地化的概念,让我们开始研究准备翻译的插件的过程。
>>设置翻译头
进行插件可翻译的第一步是在插件标题中包含翻译标题。
翻译标题是文本域和域路径。
>文本域用于表示属于插件的所有文本。 这是一个唯一的标识符,可确保WordPress可以区分所有加载的翻译。这增加了可移植性,并且使用已经存在的WordPress工具可以更好地发挥作用。> >
>文本域必须匹配插件的slug。例如,如果您的插件是一个称为sample-plugin.php的单个文件,或者它包含在称为sample-plugin的文件夹中,则应为sample-plugin。>文本域上的注释 文本域名必须使用破折号而不是下划线。
>还记得我说过文本域必须与插件slug匹配吗?毕竟这可能不是真的。我对我的一个插件进行了快速实验,而不是插件的插件,我使用了一个唯一的文本,并且没有任何问题。道德:确保文本域是唯一的,以免与其他插件相冲突。
>域路径是文件夹WordPress将搜索.mo Translation Files。
默认情况下,WordPress搜索要使用的翻译文件的插件目录。将翻译文件放在插件的根文件夹中可能会使您的插件结构混乱。> 例如,如果您想将翻译文件保存在文件夹中,例如; /语言,您需要使用域路径标头通知WordPress。
下面是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></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>
该教程的这一段将分为以下:- >字符串翻译
- 使用占位符
- html翻译
- 与复数打交道 通过上下文
- 逃脱翻译字符串
<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></span>
<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
如果您在字符串中使用变量,例如下面的示例,则应使用占位符。
><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取决于上下文。> 一个示例是一个链接(与周围的文本分开):
另一个示例是段落中的链接(未与周围的文本分开):> <span>echo 'Your city is $city.'</span>
><span>printf( </span> <span>__( 'Your city is %s.', 'espw-plugin' ), </span> <span>$city </span><span>);</span>
此函数接受4个参数,即:>
单数 - 字符串的单数形式
>复数 - 字符串的复数形式
- 计数 - 将确定是否应返回单数或复数形式的对象数量
- >文本域 - 插件文本域
- >让我们来了解一些示例,以理解_n()函数的工作方式。
- 在英语中,您有“一个评论”和“两个评论”。在其他语言中,您可以具有多种复数形式。 下面的代码演示了如何使用_n()函数来处理此类情况。
- >
<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></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函数。
>它类似于__()和_e(),但是它有一个额外的参数 - $上下文。
在两种情况下,使用此方法都使用此方法,我们将获得原始版本的字符串注释,但是翻译人员将在不同的上下文中看到两个评论字符串。
>当通过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的目标之一是使世界各地的用户轻松发布内容。作为插件开发人员,您可以在国际化插件时帮助进一步简化用户的发布流程。>
>本教程的第一部分本质上是关于您需要了解的有关插件I18N的所有内容。>
我希望您从本教程中学到了新知识。>
>快乐编码!>使WordPress插件准备就绪?
>使WordPress插件转换准备就绪对于吸引全球受众至关重要的重要性是什么。并非所有WordPress用户都是说英语的人。通过国际化您的插件,您可以将讲不同语言的用户访问,从而增加用户群。它还可以增强用户体验,因为用户可以用母语与您的插件进行交互,从而使其更友好。使插件的文本字符串可翻译成其他语言。这是通过将这些文本字符串包裹在一个特殊功能中,可以翻译它们来实现。 WordPress为此目的使用gnu getText本地化框架,该框架提供了一组用于翻译文本的工具。
是哪些步骤可以使WordPress插件转换准备?插件翻译就绪涉及多个步骤。首先,您需要通过包装__()或_e()函数中的所有文本字符串来国际化插件。接下来,您需要创建一个.pot(Portable对象模板)文件,该文件包含插件中的所有可翻译字符串。该文件用作创建.po(Portable Object)和.mo(Machine Object)文件的模板,该模板包含翻译字符串。
__()和_e()函数之间有什么区别WordPress I18N?__()和_e()函数都在WordPress I18N中使用,以使文本字符串可翻译。它们之间的主要区别是__()返回翻译的字符串,而_e()回声或直接输出翻译的字符串。因此,当要将翻译的字符串存储在变量中时,您将使用__(),当要向用户显示翻译字符串时_e()。>如何将WordPress插件转换为不同的语言?
>将您的WordPress插件转换为不同的语言,您需要为每种语言创建.po和.mo文件。这些文件包含翻译的字符串,并根据ISO-639语言代码命名(例如,英语en_us,fr_fr,法语)。您可以使用poedit或loco等工具来创建和管理这些翻译文件。
我可以使用哪些工具用于WordPress I18N?
> >如何测试我的WordPress插件以进行翻译准备?可以通过更改WordPress设置中的语言并检查插件的文本字符串是否正确翻译来测试您的WordPress插件是否准备转换。您还可以使用WordPress I18N Checker插件之类的工具,该工具会检查您的插件中的常见i18n错误。
>我如何为WordPress插件翻译贡献?
您可以为WordPress插件翻译贡献通过WordPress Polyglots团队。他们负责将WordPress定位为不同的语言。您可以加入团队并开始将插件和主题转换为母语。
> .pot,.po和.mo文件在WordPress I18N?
进行WordPress主题翻译准备涉及与插件类似的过程。您需要通过将所有文本字符串包装在__()或_e()函数中来国际化主题。然后,您需要创建一个.pot文件并将其用作为每种语言创建.po和.mo文件的模板。
以上是WordPress I18N:准备您的插件翻译的详细内容。更多信息请关注PHP中文网其他相关文章!

本教程演示了使用面向对象的编程(OOP)原理构建WordPress插件,利用Dribbble API。 让我们在保留原始含义和结构的同时完善文本以清晰和简洁。 object-ori

将PHP数据传递给JavaScript的最佳实践:WP_LOCALIZE_SCRIPT和WP_ADD_INLINE_SCRIPT的比较 在PHP文件中将数据存储在静态字符串中是建议的练习。 如果在您的JavaScript代码中需要此数据,请合并

本指南演示了如何使用WordPress PDF插件在WordPress帖子和页面中嵌入和保护PDF文件。 PDFS为从目录到演示文稿提供了一种用户友好的,普遍访问的格式。 此方法ENS

WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

人们选择使用WordPress是因为其强大和灵活性。1)WordPress是一个开源的CMS,易用性和可扩展性强,适合各种网站需求。2)它有丰富的主题和插件,生态系统庞大,社区支持强大。3)WordPress的工作原理基于主题、插件和核心功能,使用PHP和MySQL处理数据,支持性能优化。

WordPress核心版本是免费的,但使用过程中可能产生其他费用。1.域名和托管服务需要付费。2.高级主题和插件可能需要付费。3.专业服务和高级功能可能需要付费。

WordPress本身免费,但使用需额外费用:1.WordPress.com提供从免费到付费的套餐,价格从每月几美元到几十美元不等;2.WordPress.org需购买域名(每年10-20美元)和托管服务(每月5-50美元);3.插件和主题多数免费,付费的价格在几十到几百美元之间;通过选择合适的托管服务、合理使用插件和主题、定期维护和优化,可以有效控制和优化WordPress的成本。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中