目录
>“准备WordPress插件”翻译对于吸引全球受众,增强用户体验并通过使使用不同语言的用户可以访问用户群至关重要。
插件国际化
>设置翻译头
道德:确保文本域是唯一的,以免与其他插件相冲突。
它类似于__()和_e(),但是它有一个额外的参数 - $上下文。
总结
>使WordPress插件准备就绪?
>使WordPress插件转换准备就绪对于吸引全球受众至关重要的重要性是什么。并非所有WordPress用户都是说英语的人。通过国际化您的插件,您可以将讲不同语言的用户访问,从而增加用户群。它还可以增强用户体验,因为用户可以用母语与您的插件进行交互,从而使其更友好。使插件的文本字符串可翻译成其他语言。这是通过将这些文本字符串包裹在一个特殊功能中,可以翻译它们来实现。 WordPress为此目的使用gnu getText本地化框架,该框架提供了一组用于翻译文本的工具。
>如何将WordPress插件转换为不同的语言?
>我如何为WordPress插件翻译贡献?
首页 CMS教程 &#&按 WordPress I18N:准备您的插件翻译

WordPress I18N:准备您的插件翻译

Feb 19, 2025 pm 12:37 PM

WordPress I18N:准备您的插件翻译

在上一篇文章中,我涵盖了WordPress国际化的基本原理(缩写为I18N);如何安装WordPress的本地化版本以及如何轻松将现有WordPress站点转换为本地化版本。 在本文中,我将引导您完成WordPress插件的国际化过程。该过程并不困难,一旦获取知识,您就可以将WordPress插件轻松翻译成其他语言。

钥匙要点

国际化(I18N)是开发插件以容易翻译成其他语言的过程,而本地化(L10N)是将国际化插件转换为新语言的随后过程。

>“准备WordPress插件”翻译对于吸引全球受众,增强用户体验并通过使使用不同语言的用户可以访问用户群至关重要。

>
    准备翻译的插件的过程涉及设置翻译标题(文本域和域路径),加载文本域以及国际化各种元素,例如字符串,占位符,占位符,html,html,plurals,proceponts,context and context and casting translation strings。 >
  • > WordPress I18N使用GNU getText本地化框架,该框架提供了翻译文本的工具。这涉及将所有文本字符串包装在__()或_e()函数中,并创建.pot(Portable Object Template)文件,该文件包含插件中的所有可翻译字符串。
  • 国际化和本地化之间的差异
  • 多年来,开发人员倾向于误解这些术语的含义 - 国际化和本地化。
  • 国际化是开发插件的过程,因此可以轻松地翻译成其他语言。>
  • >本地化描述了将国际化插件转换为新语言的后续过程。
>值得注意的是,国际化通常被缩写为I18N(因为“ i”和“ n'之间有18个字母),并且本地化被缩写为L10N(因为“ L”和“ L'和之间有10个字母) 'n'。)

为什么国际化?

答案很简单; WordPress以许多不同的语言在世界范围内使用。当插件被国际化时,它们会吸引来自世界其他地区的较大受众,他们显然会通过使用自己的语言使用插件来受益。
    > 作为开发人员,您可能没有时间提供插件的本地版本,因为您不会说其他语言。但是,当您国际化插件时,您会为他人打开大门,以创建本地化而不一定要修改源代码。
  • 插件国际化

    >现在我们已经熟悉了插件国际化和本地化的概念,让我们开始研究准备翻译的插件的过程。

    >

    >设置翻译头

    进行插件可翻译的第一步是在插件标题中包含翻译标题。

    翻译标题是文本域和域路径。>

    >文本域用于表示属于插件的所有文本。 这是一个唯一的标识符,可确保WordPress可以区分所有加载的翻译。这增加了可移植性,并且使用已经存在的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文件在插件自己的目录中,则使用如下:>

    如果翻译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>
    登录后复制
    登录后复制
    登录后复制
    该教程的这一段将分为以下:
    1. >字符串翻译
    2. 使用占位符
    3. html翻译
    4. 与复数打交道
    5. 通过上下文
    6. 逃脱翻译字符串

    请注意:字符串ESPW-Plugin将在本教程中用作文本域。

    1。字符串翻译

    要在插件中翻译一个字符串,请将原始字符串包装在__()函数调用中如下:
    <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>
    登录后复制
    登录后复制
    登录后复制

    2。使用占位符

    作为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个参数,即:

    >

    单数 - 字符串的单数形式

    >

    复数 - 字符串的复数形式

      计数 - 将确定是否应返回单数或复数形式的对象数量
    • >文本域 - 插件文本域
    • >让我们来了解一些示例,以理解_n()函数的工作方式。
    • 在英语中,您有“一个评论”和“两个评论”。在其他语言中,您可以具有多种复数形式。
    • 下面的代码演示了如何使用_n()函数来处理此类情况。
    • >
    代码说明上面的代码由这三个函数组成-printf,_n和number_format_i18n。

    >易于同化,将用所述的每个函数组件剖析功能代码。
    <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函数。

    >

    它类似于__()和_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 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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何开始WordPress博客:初学者的分步指南 如何开始WordPress博客:初学者的分步指南 Apr 17, 2025 am 08:25 AM

博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

对于初学者来说,WordPress容易吗? 对于初学者来说,WordPress容易吗? Apr 03, 2025 am 12:02 AM

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

如何在父分类的存档页面上显示子分类 如何在父分类的存档页面上显示子分类 Apr 19, 2025 pm 11:54 PM

您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

如何在 WordPress 中获取登录用户信息以获得个性化结果 如何在 WordPress 中获取登录用户信息以获得个性化结果 Apr 19, 2025 pm 11:57 PM

最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

wordpress文章列表怎么调 wordpress文章列表怎么调 Apr 20, 2025 am 10:48 AM

有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

如何在 WordPress 中按帖子过期日期对帖子进行排序 如何在 WordPress 中按帖子过期日期对帖子进行排序 Apr 19, 2025 pm 11:48 PM

过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

如何在 WordPress 中显示查询数量和页面加载时间 如何在 WordPress 中显示查询数量和页面加载时间 Apr 19, 2025 pm 11:51 PM

我们的一位用户询问其他网站如何在页脚中显示查询数量和页面加载时间。您经常会在网站的页脚中看到这一点,它可能会显示类似以下内容:“1.248秒内64个查询”。在本文中,我们将向您展示如何在WordPress中显示查询数量和页面加载时间。只需将以下代码粘贴到主题文件中您喜欢的任何位置(例如footer.php)。queriesin

我可以在3天内学习WordPress吗? 我可以在3天内学习WordPress吗? Apr 09, 2025 am 12:16 AM

能在三天内学会WordPress。1.掌握基础知识,如主题、插件等。2.理解核心功能,包括安装和工作原理。3.通过示例学习基本和高级用法。4.了解调试技巧和性能优化建议。

See all articles