创建可翻译WordPress主题和插件:开发人员指南

去年我们在翻译WordPress的不同方面的一系列中,它专注于国际化现有主题或插件.

在今天的帖子中,我们将延长并补充那些系列的主题和插件开发人员的信息,即如何本地化主题或插件或已准备好转换.

我们将在创建新产品时查看您需要做的事情,以确保用户可以轻松地将它们转换为自己的语言.由于29%的WordPress.com网站以外语使用,并且在WordPress社区内的国际化上被置于国际化方面,这比以往任何时候都更重要,以确保您的主题和插件转换就绪.

所以让我们详细介绍进程,以确保我们在创建主题和插件时使用正确的功能和方法.

在本文中,我们将介绍:

  • 文本域
  • 翻译标记字符串
    • __()
    • _e()
    • _n()
    • 使用sprintf()函数
    • _x()_ex()_nx()
    • 转义属性
    • 挖洞翻译
  • 翻译javascript
  • 加载文本域
  • 翻译文件

文本域

您需要做的第一件事是定义文本域.

什么是文本域?文本域是标记属于一起翻译的方式.它使语言文件更便携,模块化和可读.

命名文本域是一个简单的事情,因为你的插件/主题的命名决定了它是什么.文本域应与主题或插件的SLUI匹配,这通常是它包含在的文件夹的名称.

即将到来的二十五个主题 name 当然是二十十五. slug -这是文件夹的名称-是"二十五".由于文本域必须与slug相同,因此文本域也是"twentyfulfifteen".

您需要显示文本域的第一个地方是主题或插件的初始注释块.这用于定义插件的基本属性,如作者名称,插件名称,主题标记等.确保添加"文本域"属性.这是它的 style.css 文件中的二十五十点的评论块.

加载GIST F3A3426F38FCCB8E190DB00BD35BA2A

标记字符串,用于翻译

大多数开发人员知道要转换字符串,应将它们包装在 __() 功能中以返回它们或 _e() 函数来回应它们.实际上有11个功能您可以用于翻译完美,但在大多数情况下,您真的将使用上面的两个.

让我们看一下我们的所有选项以及它们所在的所有选项:

__()

这是最基本的翻译功能之一.与许多兄弟姐妹一样,它需要两个参数:要翻译的字符串和文本域.

加载GIST 38520494733332CEF68827CFCEC47B9E67

当您想要将简单的字符串标记为转换时使用,并将值返回在其他地方使用.这通常是函数中的情况-想到注册帖子类型.在下面的Codex的示例中,您可以看到阵列的所有成员都标记为翻译:

加载GIST 0E48A7845E20DB9D310F2A26C99B5F8C

_e()

这与上面的函数几乎相同,除了它回应值.当您翻译在HTML内容目录中时,可以使用它:

加载GIST 68DDACD1F60A825295B4570E2AFB7148

_n()

在将带有条件复数的字符串翻译中使用时使用此功能.这意味着如果字符串将使用复数或奇异形式,则不提前知道,因为它取决于某些参数的瞬时值.一个很好的例子是评论数.

例如,如果评论计数是一个,则需要使用单一形式:"一个评论".如果评论计数为0或多于一个,则会使用复数:"许多评论".这可以在一次使用 _n() 函数来完成.

需要四个参数:单数形式,复数形式,要检查的数量和文本域:

加载GIST B9DD17CA47E6FE866CE77DB9DD6AC024

使用sprintf()函数

sprintf() 是一种本机PHP函数,用于根据一些参数输出格式化的字符串.它与经常使用变量的一些更复杂的翻译一起使用.这是它看起来的看起来如何:

加载GIST DF266A46FF7375E65B1B227DE33CC9AA

两个最常见的占位符是字符串的 %s 为整数的字符串和 %d .如果您使用这些占位符,则需要将其他附加参数传递给 sprintf 作为您使用的占位符的数量.它也可以将占位符索引首先使用第二个占位符.对于此功能的高级使用,请查看PHP文档.

要使我们的翻译示例更好,要考虑0值,我们可以使用 _n() sprintf() .

加载GIST 53697387BAE65A2D2EB62E0CA7594BEA
在该示例中,使用 $comment_count 变量可能有点令人困惑.当在 _n() 函数中使用时,我们正在确定基于其值,奇异或多个版本使用的哪个版本.当稍后在行中使用时,作为 sprintf() 的第二个参数,我们使用其值作为 %s 的替代品.

_x()_ex()_nx()

"x"-燃烧的功能,以清除出现在类似翻译文本的混淆.例如,"post"单词用作动词,作为博客中的输入类型的名称.以不同的语言,他们可能会使用两个非常不同的单词.为了区分它们,我们使用 _x() 添加上下文并返回结果, _ex() 添加上下文并回显结果和 将上下文添加到复数翻译中.

加载GIST D0FA46625504CD16620954A12F71EE2E.

转义属性

有两组三种功能,可转义翻译字符串.一个设置负责在属性中使用的字符串,另一个集具负责逃避HTML.他们是:

  • esc_attr__()
  • esc_attr_e()
  • esc_attr_n()
  • esc_html__()
  • esc_html_e()
  • esc_html_n()

因为我们在他们应该非常自我解释之前看出所有这些类型的函数.这是一个快速的例子:

加载GIST 237322A1A9804062E0B833DFFD7DF96

挖出的翻译

这个函数没有很好地命名,在某些情况下只有很有用,这使得解释它非常困难. _n_noop() _nx_noop() 用于翻译的寄存器字符串,但它们不会立即转换它们.

英语非常简单,因为有一个单数和一个复数形式.用其他语言-如俄语-它不是那么简单.挖掘功能允许您将翻译与其用法分开注册.使用 translate_nooped_plural() 功能生成实际输出.Codex提供了这个工作原理的一个很好的例子:

加载GIST 958A351186E7C6DEF1BF58AC8748FE96

翻译javascript

javascript没有翻译函数,但使用ingenious wp_localize_script() 功能,我们可以在服务器端完成它.该想法是通过将其创建我们的字符串对象并将其传递给我们的脚本.如果有一个翻译文件,则字符串将在输出之前翻译.

加载GIST 5B1635BCBB097B3E68E39DE1BCD1D1E0

脚本首先熄灭然后本地化.本地化函数的第一个参数是我们本地化的脚本的名称.第二个是用于保存我们的字符串的唯一对象名称.下一个参数是我们将在我们的脚本中使用的键和值数组.最后,我们可以在JavaScript侧实现它:

加载GIST B51F60E7305A0DA4D275FFC4EC06AC5A

加载文本域

要启用我们的翻译字符串,我们需要提供一个翻译文件.每当WordPress看到翻译功能时,它会发现当前的语言的翻译文件并查找函数中指定的文本.如果无法找到文本,它就会返回.

我们需要告诉WordPress,其中举行了我们的插件/主题的翻译文件.这可以使用 load_plugin_textdomain() 函数来完成,需要将其挂钩到 plugins_loaded 动作中.

加载GIST E881BC43D51A489C090D50E547A38D36

在此阶段,一切都应该工作-您的HTML和JavaScript应该很容易地翻译.为了帮助我们的用户,我们真的应该生成一个pot文件,这是翻译模板文件.

翻译文件

您将在翻译过程中看到三种文件类型.第一个,.pot文件,是翻译模板文件.这些文件是人类可读的翻译文件,而.Mo文件,另一种类型的翻译文件,是机器可读的翻译文件.创建新语言文件时,它通常从POT文件开始.它是用语言环境复制和命名,例如zh_ch.po(zh_po是中国的语言代码,是中国的国家代码).然后使用Poedit等工具打开它,并且所有字符串都被翻译.保存时,Poedit会创建一个.mo版本.

在末尾Wordpress使用.mo版本,因为它具有高度浓缩的效率.这一切都很好,但我们如何创建初始.pot文件?

有相当多的方式,我建议你第一次去使用poedit.

安装打开的poedit并转到文件>新目录并填写详细信息.

Catalog Properties 一些填充的目录属性

切换到下一个选项卡(源路径)并设置路径.路径应相对于您的.pot文件的位置.如果您正在使用插件,并且目录文件将在 languages 中,您应该为源路径使用../.

在"源关键字"选项卡中,您需要SE要检查的功能.如果您只使用基本功能,可以简单地添加 __ _e, ,但如果添加所有内容,最好是.

source keywords 一些源关键字set

一旦单击"确定",您将能够为文件选择一个位置.Poedit实际上将创建.po和.mo文件.只需通过简单地复制空的.po文件并重命名它,可以创建一个pop文件.

概述

在我看来,国际化是一个必须.很容易这样做,没有任何借口,不能从你的网站中排除游客,他们不会说英语或读取英语.

在本文中,我们看一下翻译的基础知识,文本域是什么,我们可以使用的功能以及如何创建翻译文件.

1

发表回复