关于翻译WordPress插件所需的一切


虽然有很多关于翻译WordPress的文章,但很少有人进入其在日常工作和管理的具体细节.
在代码中更改某些内容时会发生什么?添加新字符串时会发生什么?更新插件到新版本时会发生什么?
这些是我将在本文中回答的问题类型.我将逐步向您展示如何为新插件和更新完成此操作,因此您将能够将任何插件转换为任何语言.
让我们开始!
- 创建插件
- 在国际化插件中加入
- 实施翻译
- 创建翻译
- 维护翻译
- 接受翻译
- 高级翻译
- 逃脱翻译
- noop翻译
- 翻译javascript

创建插件
当然,您需要采取的第一步是创建一个插件.如果您已经拥有一个,伟大的,如果不是,请遵循我们的详细入门插件开发指南.如果您需要快速示例插件,让我们一起创建一个.
我们正在做的只是向标题添加一些励志文本.认为Hello Dolly插件用明确的,激励文本,而不是歌词.
首先,在插件目录中创建一个文件夹并将其命名为wp-admin-motivation
.然后,在该文件夹中创建一个名为wp-admin-motivation.php
的文件夹中的文件.在该文件中粘贴的代码在下面.
加载GIST 306DD5458CCF4FE47CD463E53AA79261
第一个功能get_motivation_text()
包含一系列动机字符串.阵列被播放,第一个返回.这有效地是一个随机化器,该函数的结果将是来自阵列的随机挑选的项目.
然后我们将show_motivation_text()
挂钩挂钩到admin_notices
钩子.该函数获取随机动机文本,并在具有wp-admin-motivation
ID的段落内将其回应.在此阶段,我们的文本将是可见的,但允许在屏幕选项/帮助选项卡附近使用一些CSS定位.
Hello Dolly插件通过简单地在标题中输出它来添加CSS.这不是真正的做事方式,所以让才能延长样式表.这是通过将motivation_assets()
函数挂钩到admin_enqueue_scripts
并在那里延长样式表来完成的.
样式表讲述文本并照顾RTL(右到左)问题.
加载GIST 3B619AEA4FCC27FB66F1252CADF651C7
完成所有这些,唯一的问题是它只用英语工作.如果您想要使用另一种语言,您需要创建完全相同的插件,将字符串替换为目标语言.这似乎是一种浪费,必须有-而且事实上有更好的方法.
国际化插件
在国际化插件的基本上意味着让它准备好转换.这涉及在稍后使用的特殊功能中包装可翻译字符串,以加载正确的翻译.
有许多国际化函数,但对于我们的简单插件,我们只需看一下,然后在理解示例后,后来稍后会谈论其他人.
我们使用的功能是__()
.此函数需要两个参数:要翻译的文本和文本域,它看起来像是这样的:
加载GIST C087A09255551F70AD47F142A50BB15.
如果存在,函数返回标记字符串的转换.如果没有,则返回原始字符串.
它使用当前语言来确定所需的翻译.您可以在"设置"部分中的WordPress中切换语言,无论选择哪些设置都会应用于所有翻译.
文本域是最终丢失的拼图.文本域是一个组成属于一起的翻译的方式.您正在运行的主题将有自己的文本域,所以所有的插件也是如此.这使得它们之间很容易区分.
请注意,对于插件,文本域应为插件文件夹的名称.在我们的示例中,这意味着文本域应为wp-admin-motivation
.要国际化我们的插件我们需要做的就是在__()
功能中包装我们的字符串.
加载GIST 580E7346CC11221B4D33740FA8B330
实现翻译
我们现在已经标记了翻译准备字符串,但视线中的任何地方都没有翻译.我们需要讲述WordPress我们的插件的翻译所在.该标准是我们插件中的lang
目录.现在创建它并在主插件文件中使用以下代码来让WordPress了解在哪里寻找翻译.
加载GIST 8AA9E6109F23A0B500E130A07BDCAE33
函数在此处是键,必须从挂钩到plugins_loaded
的函数内调用它.第一个参数是我们已经谈过的文本域,第二个已被弃用,第三个是语言文件夹的位置.
我们的翻译文件将名为[plugin-name]-[locale].mo
.我会告诉你如何在稍后制作这些,因为现在请记住您将在此处放置文件.在我们的示例中,德国文件将被命名为wp-admin-motivation-de_DE.mo
.如果您不知道它,您可以查找WordPress Locale.
在这个阶段,如果我们有语言文件,一切都会正常工作,所以最后一步是创建翻译.
创建翻译
有多种方式可以创建翻译,但最终结果始终相同.您将最终使用两个文件,a po
文件和mo
文件.po
文件是人类可读的翻译文件.您可以在任何文本编辑器中打开它并编辑它.mo
文件是一个po
文件,它已被转换为机器readbale格式.这尺寸小得多,但当然完全不可读.
以下是未转换的PO文件的示例.正如您所看到的,顶部有一些关于翻译,翻译和项目的基本信息,然后是可翻译字符串列表及其待翻译.
加载GIST A3B5C97892EE8D2E4BADAF1BAFE337BC
可通过以下方式推广可翻译的比特:
加载GIST 699B1041C90AF1D308EDBA38C68EE512.
由于字符串的位置直到线编号,您可能认为这将有点难以创建和维护.这就是为什么我们有自定义工具来帮助我们!在存储库中有插件后,管理工具允许您生成.po文件,但您也可以使用令人敬畏和免费的Poedit创建一个.

下载并启动Poedit,单击 new 然后新目录.在弹出窗口的窗口中填写您的详细信息.您不需要担心现在的字符和复数表格,只是基本细节.
切换到源路径,让我们讨论基本路径和路径.标记为路径的大盒子告诉Poedit在哪里搜索与基础路径相关的可翻译字符串.
我们将把我们的翻译放在我们的插件的子目录中.这意味着我们有两个选项:
- 将基本路径设置为
../
(父目录),并将路径部分中的路径设置为.
(当前目录) - 将基本路径设置为
.
当前目录,并在路径部分中设置路径为../
在第一个例子中,我们告诉Poedit,我们的代码实际上驻留在语言文件夹的父目录中.它应该转到父目录,然后随后搜索该目录(因此在路径部分中使用.
).
在第二个例子中,我们说我们的当前目录是此语言文件所在的.但是,我们需要检查的文件是我们上方的一个目录,这就是我们在路径部分中使用../
的原因.
无论哪种方式都会很好,我认为第一个版本是语义上更正确的,虽然我倾向于直到现在地使用第二个版本.
下一步是设置我们在"源关键字"部分中使用的关键字.在这里,我们定义了我们使用的翻译函数的名称.在我们的情况下,我们只需要添加一个- __
.比在此,您可以在此处添加至少2-3个功能,请参阅高级翻译.
当您单击通过时,Poedit将扫描文件并吐回任何可翻译的字符串.它将将它们组织成一个列表,您可以单击通过,在最底页中写入翻译.


一旦您对翻译保存文件,它应该自动为您自动生成Mo文件.默认情况下,文件名将是default
您必须更改为上面讨论的一个:[plugin-name]-[locale].mo
.虽然理智的缘故,你的PO文件的名称是无关紧要的,我会命名它.
在我的例子中,我翻译成匈牙利语,所以我的文件名是wp-admin-motivation-hu_HU.mo
.一旦这个文件到位,插件将在匈牙利语中显示指定的文本,只要我的WordPress instalation设置为使用匈牙利语.
维护翻译
更新翻译不是它声音的痛苦.虽然Po文件是如此,但是当WordPress使用该文件时,不会考虑这些类型的位置.位置和行号是如果需要,可以将译者查找字符串.
只要您只是在不改变可翻译的字符串内容的情况下,您无需更新语言文件即可.我通常做的是创建一个pop文件,这是我每次更新插件本身时更新的唯一文件,即使字符串也不会改变.
pot文件就像po文件,但它们不包含任何实际翻译-它们是模板文件.只要更新此模板文件并包含每个字符串的正确行,即可轻松进行新的翻译.
如果 do 需要更新语言文件,您需要在Poedit中打开它,然后单击"更新"图标.Poedit将通知您更改和新字符串,然后您可以根据需要进入并编辑它们.
接受翻译
一个我看到困惑的地方(至少我首先被这个混淆)是翻译成插件.如果我下载插件如何添加自己的翻译?我认为这个过程是以某种方式自动化的,就像安装插件一样,但它不是.
如果有人喜欢插件,他们将它转换为自己的语言,使用插件中的pop文件,然后将结果发送给开发人员.然后,开发人员将其添加到LANG文件夹中,创建一个新版本并将其推向WordPress存储库.当用户收到更新时,如果在语言文件夹中,该插件将以他的语言发挥作用.
我在github上托管所有存储库,这使得开发人员非常容易使用拉请求向我发送这些文件.所有我需要做的就是按一个按钮并为WordPress存储库创建新版本.
高级翻译
现在知道如何使用返回值的__()
函数来翻译基本字符串.有
总共14个功能,您可以用来微调你的翻译,虽然你最重要的是他们的3-4.让我们从最常见的开始.
__()
这是我们查看的基本功能,它需要一个字符串并返回它的翻译是否存在.
_e()
这个函数与前一个完全相同的事情是完全相同的,而是返回它直接将结果返回它.
_n()
此功能允许您优雅地处理复数.它需要4个参数,单个形式,复数形式,基于哪一个或另一个的数字和文本域.这是一个快速的例子:
加载GIST 6AB26C239D3C865920E7D942DD47CFD7
_x()
此功能的目的是防止类似单词的冲突.如果插件使用"对"在几个人的意义上使用"对",并且在通过蓝牙配对设备的意义上,可能会出现碰撞.外语可能会很好地使用两者的不同词语._x()
允许您指示您的意图.
加载GIST CEAFB0114B6D84A1A3A2FD6C3404550B
_ex()
和_nx
这些与我们碰撞防止朋友从上面的碰撞相同,但第一次将结果直接回避,第二个允许您将复数添加到混合中.
转义翻译
有六个功能,允许我们在属性和HTML中逃避安全使用率的值.他们的名字非常描述,我相信你能猜出他们会做什么:
-
esc_attr__()
-
esc_attr_e()
-
esc_attr_x()
-
esc_html__()
-
esc_html_e()
-
esc_html_x()
noop翻译
这个是有点复杂的所以我会在理解_n_noop的情况下推荐你的好文章.Noop功能基本上寄存在POT文件中的多个字符串,但不要翻译它们.这样做的原因是预先知道该数字,这意味着我们需要添加另一个函数来抓住它们.
由于此,我们使用noop函数并稍后翻译实际值.您需要几个案例需要此功能,请查看上面的文章以获取更多信息.
在WordPress中发生这种情况的函数是:
-
_n_noop()
-
_nx_noop()
-
translate_nooped_plural()
翻译javascript
如果您有一些坐在您的JavaScript中,您可能会想知道该怎么办.WordPress通过wp_localize_script()
功能为您提供解决方案.此函数需要三个参数:要翻译的脚本的句柄,要在脚本和翻译数组中使用的对象名称.这是一个例子:
加载GIST 32DE5E770DEDE83A26244A80FD7069C9
一旦添加了您的翻译,可以在注册的JS文件中使用它们.您需要使用转换阵列的对象名称和键:
加载GIST FD0AC5ED4583B15BB8C8262920027B0E
结论
数百万人以他们自己的语言使用WordPress,为什么不帮助他们使用我们的产品?使我们的插件翻译准备好很容易,维护它也不是麻烦.
通过标记我们的字符串进行翻译和创建PO/MO文件,我们正在帮助每个人,并在过程中更好地制作产品.
顺便问一下,如果您想看到我们在本教程中建立的小示例插件,您可以在此处下载并将其旋转.
现在你知道,为什么找不到你喜欢的插件并帮助翻译它?
您用于翻译插件的资源?让我们在下面的评论中知道.
VPS1352主机测评网(www.vps1352.com)
本文链接:https://www.vps1352.com/11715.html