WordPress翻译

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一页 | 首页 | WordPress中文论坛 | WordPress主机 | CMS程序 | 论坛程序 | ECShop | ShopNC | PowerEasy

翻译WordPress前,请先查看WordPress in Your Language(及文中所列网站中)中是否已经有了你要翻译的WordPress语言版本。当然也有可能某个人(或者某个团队)已经在将WordPress翻译成你准备翻译的语言版本,但是还没有完成。我们可以订阅 wp-polyglots mailing list邮件列表,介绍自己然后询问是否有人在你和做同样的工作。这里还列出了一些为WordPress本地化服务的团队,可以从中查看是否有人和我们进行同样的本地化工作。

本地化要求[ ]

如果没有发现自己需要翻译的WordPress语言版本,或者其他人对该版本的翻译还没有完成,这时如果希望将WordPress翻译成自己所用的语言,需要符合以下要求:

  • 精通两门语言——书面英语以及此次翻译的目标语言。如果不够精通,不仅翻译过程会很艰难,翻译后的内容也不容易被使用目标语言的人接受。
  • 熟悉PHP,因为有时需要通读WordPress代码,找出最恰当的语言来翻译其内容。
  • 熟悉人类语言的构成:名词、动词、冠词等,以及不同此类的各种形式,能够识别英语中不同词类的变体。

语种 一个语种,是相应语言与其区域性方言的综合。通常语种与国家相对应,如葡萄牙语(葡萄牙)和葡萄牙语(巴西)。

我们可以将WordPress翻译成任何语种,甚至包括加拿大英语、澳大利亚英语等其它地区的英语,可以修改WordPress中的内容使之符合加拿大、澳大利亚的拼写习惯和俗语。 WordPress的默认语言是美国英语。

本地化技术[ ]

WordPress开发人员将GNU gettext作为WordPress的本地化架构。Gettext是一个被广泛用于软件模块化翻译的成熟架构,实际上也是开源项目/免费软件王国中的本地化标准。 Gettext使用信息级翻译技术——即显示给用户的每条“信息”都会被独立翻译,无论是一个段落还是单词。在WordPress中,WordPress PHP文件通过两个PHP函数(__()与_e())生成、翻译并运用这类显示给用户的“信息”。当信息作为参数被传递给其它函数时,会用到函数__();而将信息直接写向页面时,会用到_e()函数。具体请看:

__($message) 查找对$message的翻译的本地化模块,并将翻译结果传递给PHP的return语句。如果没有找到对$message的翻译,该函数返回$message。

_e($message) 查找对$message的翻译的本地化模块,并将翻译结果传递给PHP的echo语句。如果没有找到对$message的翻译,该函数回显$message。

注意:本地化一个主题或插件时,应使用“Text Domain”工具。具体信息请分别查看主题开发插件开发

Gettext架构在WordPress大部分范围内畅通无阻。但在WordPress中有些地方无法使用gettext——阅读 Files For Direct Translation了解如何翻译这些地方的内容。

gettext文件

gettext翻译架构中的文件可分为三种类型。这些文件都是翻译工具在翻译过程中会用到/生成的文件:

POT(可移植对象模板)文件

本地化进程的第一步,就是用一个程序搜索WordPress源代码,找出被传递给__()或_e()的所有信息。被找出的信息列表被存放在已编排格式的模板文件(POT文件)中,该文件构成所有翻译内容的雏形。独立的POT文件也可用于主题/插件,前提条件是主题/插件开发人员将所有内容圈在__()函数或_e()函数中。

PO(可移植对象)文件

本地化进程的第二步,翻译者将POT文件中所有信息翻译成目标语言,并将英语原文和翻译后的信息保存在同一个PO文件中。

MO(机器对象)文件

本地化进程最后一个步骤,为PO文件执行一个程序,使其成为一个经过优化的、供机器识别的二元文件(MO文件)。将翻译结果编译成机器可读代码后,用本地化的程序检索翻译内容就更方便迅速了。

翻译工具[ ]

翻译时可以根据自己的喜好借助各种翻译工具。

  • Launchpad :[Ubuntu]] Linux系统中有一个网站,用户可以在网站中直接翻译信息而不必查看任何PO文件或POT文件,然后将翻译结果直接导出到MO文件。

注意:很多翻译者发现Rosetta是一个不错的起点,而一到校对翻译结果阶段,很多人还是会选择手动编辑PO文件,或者使用poEdit、KBabel等程序。这是因为Rosetta UI不具备校正和编辑时必要的查找等功能。

  • Pootle:一个基于网络的开源翻译系统。Pootle的服务器寄存在Locamotion.org上,服务器上有激活的WordPress翻译版本。
  • poEdit :用于Windows、Mac OS X与]]UNIX]]/Linux系统的开源程序,提供一个便于使用的GUI以编辑PO并生成MO文件。
  • KBabel :适用于Linux系统中KED窗口管理器的开源PO编辑程序。
  • GNU Gettext :官方Gettext工具包中包括各种用于创建POT文件、处理PO文件以及生成MO文件的命令行工具。还包括一个命令shell。

用Launchpad翻译WordPress[ ]

独立页面instructions for translating WordPress with Launchpad中有详细说明。

用Pootle翻译WordPress[ ]

  1. 在Pootle服务器注册一个账号,发送一份邮件给管理员,要求增加我们的目标语言版本的WordPress
  2. 开始翻译前,请登录Pootle。未登录用户有时能够浏览内容、提交意见,但翻译是登录用户的独有权利,不登录无法翻译。
  3. 访问目标语言的WordPress页面。例如Afrikaan语的页面是pootle.locamotion.org/af/wordpress/(不要忘了结尾斜线)。
  4. 点击“Show Editing Functions(显示编辑功能)”
  5. 点击“Quick Translate(快速翻译)”以编辑未翻译的与语义含糊的内容,或点击“Translate All(翻译全部)”以编辑所有内容。

为了能在locamotion.org上翻译WordPress,wordpress.pot文件被分散成多个小逻辑单元,其中包括readme.html文件,还包括一个包含所有内容的文件,用户可将该文件按正常步骤手动添加到PHP文件中。 这里这里有对WordPress翻译的相关介绍。

将翻译结果整合到wordpress.pot 正常情况下,翻译人员可用Pootle服务器随时下载自己翻译的软件的PO文件,并将下载的文件提交到自己的翻译项目中。但由于在pootle.locamotion.org上,原始源代码被分散成多个小单元,翻译人员不得不手动整合翻译结果和wordpress.pot文件,之后再将结果提交到WordPress。

  1. 下载官方WordPress POT file
  2. 下载WordPress Continent POT file (可选操作)
  3. 在本地机器上下载并安装 Translate Toolkit
  4. 从Pootle服务器上下载经过翻译的或部分翻译的PO文件。可以逐个下载,也可以以ZIP文件形式一次性下载(参见网站上的选项)。一般情况下下载经过翻译的PO文件无需登录Pootle。
  5. 首先将PO文件整合到0翻译记忆中(整合后,之后的操作中只需要处理一个文件),在命令行中执行以下命令:po2tmx -l xx -i pofiles -o xx.tmx,其中xx即你的目标语言代码。以上操作生成一个名为xx.tmx的TMX翻译记忆文件。
  6. 接下来根据翻译记忆文件预翻译WordPress POT文件。可执行以下命令进行预翻译:pot2po --tm=xx.tmx -i wordpress.pot -o wordpress_xx.po。该命令为目标语言生成一个PO文件,文件名为wordpress_xx.po。
  7. 最后,在命令行中使用pocount wordpress_xx.po来计算PO文件的字数/字符数,查看有多少内容已经被翻译,多少内容还没有翻译或意义不明。

如果所有PO文件都被100%翻译了,最终的wordpress_xx.po文件也会被100%翻译。如果PO文件中有字符串没有被翻译,pot2po命令可能会造成wordpress_xx.po文件中的翻译语句含意模糊(这未必是坏事)。

用poEdit翻译WordPress[ ]

  1. 下载并安装poEdit
  2. 下载官方WordPress POT file
  3. 在poEdit中打开官方WordPress POT文件
  4. 标注有①的文本框是POT文件中的原始信息(英文)。在标注有②的文本框中添加对①的翻译,在标注有③和④的文本框中添加对该信息的注释。与翻译团队合作时,可以通过这种方式分享自己对PO文件内容的看法。
  5. 文件——另存为....中将翻译结果保存为PO文件。
  6. 翻译完毕后,再次在文件——另存为....中将翻译结果保存为PO文件。
  7. 也可以点击文件——优先级,然后在编辑框中点击保存时自动编译.mo文件

用KBabel翻译WordPress[ ]

本部分内容不完整。

  1. 下载官方WordPress POT file
  2. 在KBabel中打开文件

用Gettext工具翻译WordPress[ ]

  1. 下载官方WordPress POT file
  2. 在常用的文本编辑器中打开文件
  3. 升级页头信息
  4. 翻译信息
  5. 以.po为扩展名保存文件
  6. msgfmt -o filename.mo filename.po

PO文件页头信息

PO文件的开始部分即页头信息。页头给出了待翻译的软件信息和软件版本号、翻译者名称以及文件创建日期。页头信息中有一部分内容是所有WordPress翻译通用的,无需更改:

# LANGUAGE (LOCALE) translation for WordPress.
# Copyright (C) YEAR WordPress contributors.
# This file is distributed under the same license as the WordPress package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr "" 
"Project-Id-Version: WordPress VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-02-27 17:11-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

用相应内容代替其中的大写字母代码。

信息格式

文件剩余部分的格式为:

#: wp-comments-post.php:13
msgid "Sorry, comments are closed for this item."
msgstr ""
#: wp-comments-post.php:29
msgid "Sorry, you must be logged in to post a comment."
msgstr ""
#: wp-comments-post.php:35
msgid "Error: please fill the required fields (name, email)."
msgstr ""

每段信息的第一行都描述了该信息在WordPress代码中的起始行数。在上面这个例子中,这三段信息的起始行分别是wp-comment-post.php文件的第13、29、35行。有时我们要自己在WordPress代码中查找一些信息,找到所需信息后,记下它们在核心代码中的位置和相应行数。有时在不同位置上会出现相同内容的信息;这种情况下,我们需要分别列出这些信息的所在位置和行数。

信息的第二行,msgid,即源语言信息。这就是WordPress传递给__()函数和_e()函数的字符串,同时也是需要翻译的信息。

信息的最后一行,msgstr,是空白字符,我们将要在这里填入自己的翻译。

下面是以上信息被翻译后的样式,以汉语为例:

#: wp-comments-post.php:13
msgid "Sorry, comments are closed for this item."
msgstr "对不起,该文章的评论功能已被关闭。"
#: wp-comments-post.php:29
msgid "Sorry, you must be logged in to post a comment."
msgstr "对不起,请登录后再发表评论。" 
#: wp-comments-post.php:35
msgid "Error: please fill the required fields (name, email)."
msgstr "错误:请填写必要字段(名称、电子邮箱地址)。"

注意:关于如何在翻译中使用HTML字符实体,请参考下文的字符编码和HTML字符实体。

WordPress待翻译信息类型[ ]

相关条目[ ]