DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录.
  • DmozDir.org
DMOZ目录快速登录入口-免费收录各类优秀网站的中文网站目录.由人工编辑,并提供网站分类目录检索及地区分类目录检索,是站长免费推广网站的有力平台!

WordPress的国际化:让你的插件翻译就绪

  • WordPress的国际化:让你的插件翻译就绪

  • 已被浏览: 55 次2020年10月12日    来源:  DMOZ中文网站分类目录
  • 在这篇文章中我们将介绍国际化和国际化的WordPress插件以及如何可以将您的插件很容易翻译成其他语言的过程。

    在一前一后,我介绍的WordPress国际化的基本面(缩写为<代码> I18N );如何安装WordPress和如何的本地化版本的现有的WordPress网站可以很容易地转换为本地化版本。

    在这篇文章中,我将引导您完成国际化的WordPress插件的过程。该过程并不困难,一旦知识获取,你可以有你的WordPress插件轻松地翻译成其他语言。

    差异国际化与本土化

    多年来,开发商往往会误解这些术语的含义 - <代码>国际和<代码>本地化

    国际化是发展你的插件,因此它可以很容易地被翻译成其他语言的过程。

    本地化翻译说明国际化插件,一种新的语言的后续处理。

    这是值得注意的是<代码>国际通常缩写为<代码> I18N (因为有所述的 "i" 和18个之间的字母 "n" 个)和本地化缩写为<代码> L10N (因为有“L”和“N”之间10个字母)。

    为什么要国际化?

    答案很简单; WordPress是在许多不同的语言中使用的所有在世界各地。当插件被国际化,他们吸引来自世界其他地区的谁显然会在自己的语言中使用的插件中获益更多的观众。

    作为开发人员,你可能没有时间提供插件的本地化版本,因为你不说其他语言。但是,当您国际化插件,您敞开大门为别人而不必修改源代码创建本地化。

    国际化插件

    现在,我们所熟悉的插件国际化和本地化的概念,让我们潜入制作插件准备翻译的过程。

    集转换头

    第一步采取制作一个插件翻译是包括插件头之间的转换头。

    翻译标头是在文本域和<代码>域路径

    文本域用来表示属于一个插件的所有文本。

    它是一个唯一的标识符,其可确保WordPress的可装载的所有翻译之间进行区分。这增加了便携性和戏剧与现有的WordPress的工具更好。

    文本域必须插件的蛞蝓匹配。例如,如果你的插件是称为单文件<代码>样品plugin.php 或它被包含在称为<代码>样品插件文件夹中的文本域应<代码>样品-plugin

    在文本域A注

    文本域名必须使用破折号,而不是下划线。

    还记得我说过的文本域必须与插件塞匹配吗?这也许不是终究真。我进行了快速的实验与我的插件之一,而不是插件蛞蝓,我采用了独特的文本,它的工作没有任何问题。

    道德:确保在文本域是唯一的,以便它不与其它插件的冲突。

    域路径是文件夹的WordPress将搜索<代码>的.mo 的翻译文件。

    默认情况下,WordPress的搜索翻译文件使用的插件目录。具有插件的根文件夹中的翻译文件可能打乱你的插件结构。

    如果您想保留翻译文件的文件夹中,例如: <代码> /语言的,你需要使用域路径的头,告知WordPress的了。

    下面是一个WordPress插件包括翻译的一个典型的头。

    <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”> <?PHP的

    / *

    插件名称:在文本控件启用简码和PHP

    插件URI:http://w3guy.com/shortcode-php-support-wordpress-text-widget/

    说明:启用简码的支持,并在WordPress的文本组件执行PHP

    作者:Agbonghama柯林斯

    版本:1.2

    作者URI:http://w3guy.com

    文本域:espw-插件

    域路径:/语言/

    * /

    加载文本域

    现在,我们将使用load_plugin_textdomain()函数来告诉WordPress的,如果它存在用户的语言加载一个翻译文件。

    下面是功能简介。

    <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”> <?PHP的load_plugin_textdomain($域,$ abs_rel_path,$ plugin_rel_path)?>

    第一个参数的 $域应该是文本域;在 $ abs_rel_path 已弃用,应被设置为<代码>假;最后,<代码> $ plugin_rel_path 是翻译文件的相对路径。

    如果翻译MO文件是在插件本身的目录,使用方法如下:

    <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”> load_plugin_textdomain( "espw-插件",假,目录名(plugin_basename(__FILE__)));

    如果翻译MO文件是在插件的语言子目录。使用如下: <代码类=“ 语言PHP”> load_plugin_textdomain( "espw-插件",假,目录名(plugin_basename(__FILE__))“/语言/”);

    你不只是调用<代码> load_plugin_textdomain 函数,应该在你的插件被称为早在 plugins_loaded 这样的动作:

    <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”>功能load_plugin_textdomain(){

    load_plugin_textdomain( "espw-插件",FALSE,基本名(目录名(__FILE__)) "/语言/");

    }

    ADD_ACTION( "plugins_loaded", "load_plugin_textdomain");

    深入了解插件的I18n

    现在,文本域和域路径头设置,它的时间来学习如何国际化一个插件。

    本教程的这部分将被分为以下几种:

      字符串翻译

      使用占位符

      HTML翻译

      与复数处理

      消歧上下文

      逃离翻译字符串

      请注意:该字符串的 espw-插件将用作本教程的文本域。

      1.字符串翻译

      为了使一个字符串翻译到插件,包原始字符串在<代码> __()函数调用如下:

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”> $文本= __( "你好,SitePoint读者!", "espw-插件"); < / PRE>

      如果你想字符串呼应,而不是在浏览器,回声的语言结构,使用 _e 函数:

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言的PHP”> _ E( "!你好,SitePoint读者", "espw-插件");

      2.使用占位符

      PHP和WordPress开发,我想你知道是什么<代码>占位符的是。您可以通过进一步的信息,sprintf和printf()的PHP文件快速浏览。

      如果您使用的变量字符串,如下面的例子,你应该使用占位符。

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”>回波 "你的城市是$城市。"

      正确的方法是使用<代码> printf()的功能如下:

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”>的printf(

      __( "你的城市为%s", "espw-插件"),

      $城市

      );

      经历了一些插件的代码在WordPress插件库托管,我看到这样的事情:

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”>回波__( "你的城市是$城市", "espw-插件");

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言的PHP”> _ E( "你的城市是$城市", "espw-插件");

      虽然字符串现在是翻译时,PHP变量的 $城市也成为翻译。

      这是一个不好的做法,因为翻译可能错误地改变变量或恶意代码注入到插件代码库,而这将最终把这个插件故障。

      的sprintf 功能类似于在的printf 的,因为它们使用占位符而<代码>的printf 输出格式的字符串,在的sprintf 返回字符串。

      实施例:下面的代码分配一个格式化字符串变量<代码> $文本

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”> $文本= sprintf的(__( "你的城市为%s", "espw-插件"),$城市);

      3. HTML翻译

      在翻译的字符串包括HTML取决于上下文。

      一个例子是(从周围文本分开)的链接:

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP ”>

      另一个例子是在一个段(而不是从周围文本分开)的链接:

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”> <?PHP的

      $ URL = "http://example.com";

      $链接=的sprintf(__( "看看这个链接到我的网站与WordPress做。", "espw-插件"),$网址);

      回声$链接;

      ?>

      4.处理与复数

      一个字符串,它发生变化时可以使用 _n()函数进行国际项目的变动数。

      该函数接受4个参数,分别是:

      奇 - 字符串的单数形式

      复数 - 字符串的复数形式

      计数 - 对象的数量,这将决定是否是单数还是应返回的复数形式

      文本域 - 插件文本域

      让我们来看看一些例子来理解如何在 _n()函数的作品。

      在英语中则<代码> “一个意见”和<代码> “两个意见”。在其他语言中可以有多个复数形式。

      下面的代码说明了如何使用 _n()函数来处理这种情形。

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”>的printf(_n(

      “一个意见”,

      "%s的意见",

      get_comments_number()

      "espw-插件"

      number_format_i18n(get_comments_number())

      );

      代码解释上面的代码包括这三种功能 - <代码>的printf ,<代码> _n number_format_i18n

      为了容易同化,功能码将与各功能部件被解剖说明。

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言的PHP”> _ N(

      “一个意见”,

      "%s的意见",

      get_comments_number()

      "espw-插件"

      传递到<代码> _n 的第一个参数的功能是当的评论的数量是单数要显示的文本。

      第二个是当评论数大于一显示的文本。

      占位符<代码>%S 将包含<代码> number_format_i18n(get_comments_number())将要简短解释的值。

      第三个参数<代码> get_comments_number()被假定为一个函数,返回的注释计数。

      如果它返回<代码> 1 ,第一个参数的一个评论得到由<代码>的printf 否则,第二个参数的%的评论输出是返回,如果它比<代码> 1 更大。

      请注意:占位符<代码>%S 得到由通过<代码> number_format_i18n(get_comments_number())返回的整数,它是取代传递到<代码>的第二个参数的printf 功能。

      最后,第四个参数是翻译文本域。

      功能<代码> number_format_i18n()转换基于所述区域设置的注释计数格式。更多信息请参见该文档。

      类似于<代码> number_format_i18n()是date_i18n检索的日期在本地化的格式,基于时间戳。

      仍然在<代码> _n()函数,下面是如何函数作品的另一个示范。

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言PHP”>的printf(_n( "我们删除一个垃圾邮件消息。", "我们删除%d的垃圾邮件。",$计数, "我的文本域"),$计数);

      如果变量<代码> $计数返回<代码> 1 ,文本<代码>我们删除一个垃圾邮件消息将被显示;但如果它是大于<代码> 1 ,<代码>我们删除%d垃圾邮件将与占位符<代码>%d 通过的整数值置换显示<代码> $计数

      5.消歧上下文

      有时候,一个词,在若干情况下使用,虽然它是一个与英语同一个词它必须在其他语言不同的方式转换。

      例如字<码>发布可以在<代码>既用作动词“点击这里发表您的评论” ,然后作为一个名词<代码>“编辑这篇文章”

      在这种情况下应该使用的_x或_ex功能。

      它类似于<代码> __() _E(),但它有一个额外的参数 - <代码> $上下文

      <预的tabindex = “0” 类= “语言PHP ”> <代码类=“ 语言的PHP”> _ X( "后", "名词", "espw-插件");

      _x( "后", "动词", "espw-插件");

      在这两种情况下使用这种方法,我们将得到字符串<代码>注释的原始版本,但翻译将看到两个<代码>注释的字符串翻译,每个在不同的上下文。

      当字符串由平移通过功能<代码> _x()被解析由翻译工具如poEdit的,上下文参数提供一个提示来对使用了串/文本上下文中的翻译器。

      在德国,邮政作为名词是<代码>端砚而作为动词是verbuchen。

      下面是poEdit的翻译的字符串<代码>发布德国与上下文的屏幕截图平方括号。

      而<代码> _x()提取翻译字符串,<代码> _ex()显示它。

      6.逃逸翻译字符串

      Poedit Translating to German

      WordPress的有验证和数据消毒多项功能。

      在这些名单是逃避翻译文本功能 - esc_html(),esc_html_e(),esc_html_x(),esc_attr(),esc_attr_e()和esc_attr_x()。你可以在每一个在WordPress的法典这些功能的更多信息。

      我不需要解释每一个这些,但他们所做的事情基本上是逃避翻译的文本。

      包起来

      其中一个的WordPress的目标是很容易让世界各地的用户发布的内容。作为一个插件开发者,您可以在国际化您的插件有助于进一步缓解了用户的出版过程。

      本教程的第一部分,基本上是所有你需要知道的插件国际化。

      结论部分将是如何使一个插件翻译准备以及学习如何将插件定位于一种新的语言步行通过。

      我希望你已经学到了一些东西从本教程新。

      编码愉快!


      以上信息来源于网络,如有侵权,请联系站长删除。

      TAG:国际化平台 WordPress插件 准备 翻译

    1. 上一篇:7个提示登陆你的第一个客户是一位自由开发
    2. 与“WordPress的国际化:让你的插件翻译就绪”相关的资讯
    3. 研究人员通过3-D印刷的紫外线固化牺牲模具制作定制和可穿戴传感器
    4. 离岸风力行业准备骑行经济高潮
    5. Automakers Prep在Biden下进行更强大的里程标准
    6. 俄罗斯航天漫画为新模块准备了国际空间站
    7. 如何准备远程求职