本地化

什么是本地化

本地化(Localization)描述了翻译国际化插件的后续过程。本地化通常缩写为l10n(因为l和n之间有10个字母。)

 

本地化文件

 

POT(便携式对象模板)文件

此文件包含插件中的原始字符串(英文)。

 

PO(便携对象)文件

每个翻译人员将获取POT文件,并将msgstr部分翻译成自己的语言。结果是一个PO文件,其格式与POT相同,但具有翻译和一些特定的header。每种语言有一个PO文件。

 

MO(机器对象)文件

从每个翻译后的PO文件生成MO文件。这些是gettext函数实际使用的机器可读的二进制文件(它们不关心.POT.PO文件),并且是PO文件的“编译”版本。转换是使用msgfmt命令行工具完成的。通常,一个应用程序可以使用多个大型逻辑可翻译模块和相应的不同MO文件。文本域(text domain)是每个模块的句柄,它有一个不同的MO文件。

 

生成POT文件

POT文件是您需要交给翻译人员的文件,以便他们能够完成工作。POTPO文件可以轻松地互换重命名,以更改文件类型,而不会出现问题。

Note:将POT文件与插件一起提供是一个好主意,这样翻译人员就不必专门询问您。

有几种方法可以为插件生成POT文件:

 

WP-CLI

安装WP-CLI,并根据文档使用wp i18n make-pot命令。

 

Poedit

翻译时,也可以在本地使用Poedit。这是所有主要操作系统的开源工具。免费Poedit默认版本支持使用Gettext函数手动扫描所有源代码。它的pro版本还具有对WordPress插件的一键扫描功能。生成PO文件后,可以将该文件重命名为POT。如果生成了MO,则可以删除该文件,因为它不需要。如果您没有pro版本,您可以轻松获得空白POT,并将其用作POT文件的基础。将空白POT放入languages文件夹后,可以单击Poedit中的“Update”以使用字符串更新POT文件。

 

Grunt任务

您甚至可以使用一些繁重的任务来创建POT,grunt-wp-i18n & grunt-pot。设置grunt的步骤超出了本文档的范围,但请注意这是可能的。这里是一个示例Grunt.js和package.json,您可以将其放置在插件的根目录中。

 

翻译PO文件

将翻译后的文件另存为my-plugin-{locale}.mo。locale是语言代码或国家代码。例如,德语的locale是de_DE。从上面的代码示例来看,文本域是“my-plugin”,因此德语MO和PO文件应命名为my-plugin-de_DE.momy-plugin-de_DE.po。有关语言和国家代码的更多信息,请参阅用您的语言安装WordPress。

翻译PO文件有多种方法。

 

手动

您可以使用文本编辑器输入译文。在文本编辑器中,它将如下所示。

#: plugin-name.php:123
msgid "Page Title"
msgstr ""

输入引号之间的翻译。对于德语翻译,它看起来是这样的。

#: plugin-name.php:123
msgid "Page Title"
msgstr "Seitentitel"

 

Poedit

翻译时也可以使用Poedit。免费Poedit默认版本支持使用Gettext函数手动扫描所有源代码。它的pro版本还具有对WordPress插件和主题的一键扫描功能。

 

在线服务

第三种选择是使用在线翻译服务。一般的想法是,你上传POT文件,然后你可以给用户或翻译人员权限来翻译你的插件。这允许您跟踪更改,始终具有最新的翻译,并减少二次翻译。

以下是可用于在线翻译PO文件的几个工具:

 

生成MO文件

 

命令行

msgfmt用于创建MO文件。msgfmt是Gettext包的一部分。否则可以使用命令行。典型的msgfmt命令如下所示:

Unix操作系统

msgfmt -o filename.mo filename.po

Windows操作系统

msgfmt -o filename.mo filename.po

如果你有很多PO要立即转换的文件,可以将其作为批处理运行。例如,使用bash命令:

Unix操作系统

# Find PO files, process each with msgfmt and rename the result to MO
for file in `find . -name "*.po"` ; do msgfmt -o ${file/.po/.mo} $file ; done

Windows操作系统
对于Windows,您首先需要安装Cygwin

创建一个名为potomo.sh的文件,并将以下内容放入其中:

#! /bin/sh
# Find PO files, process each with msgfmt and rename the result to MO
for file in `/usr/bin/find . -name '*.po'` ; do /usr/bin/msgfmt -o ${file/.po/.mo} $file ; done

可以在命令行中运行此命令。

cd C:/path/to/language/folder/my-plugin/languages & C:/cygwin/bin/bash -c /cygdrive/c/path/to/script/directory/potomo.sh

 

Poedit

msgfmt也集成在Poedit中,允许您使用它生成MO文件。首选项中有一个设置,您可以在其中启用或禁用它。

internationalization-localization-04

 

Grunt任务

使用grunt-po2mo将转换所有文件。

 

翻译技巧

 

不要逐字翻译,要有机地翻译

作为双语或多语者,你无疑知道你所说的语言有不同的结构、节奏、音调和屈折变化。翻译后的信息不需要与英语信息的结构相同:接受呈现的想法,并提出一条信息,以自然的方式为目标语言表达相同的内容。这就是创建一个相同的消息和一个相同消息之间的区别:不要复制,替换。即使消息中有更多的结构化项目,如果您觉得它对您的目标受众更符合逻辑或更好地适应,您也可以进行创造性的调整和更改。

 

尽量保持相同程度的正式(或非正式)

每条信息都有不同程度的正式或非正式。你必须自己(或与你的团队一起)弄清楚目标语言中每条消息的正式或非正式程度,但WordPress消息(尤其是信息性消息)在英语中往往具有礼貌的非正式语气。在你的文化背景下,试着在目标语言中实现对等。

 

不要使用俚语或受众专用术语

博客中可能会出现一些术语,但不要使用只有“内行”人群才会理解的俗语。如果没有经验的博主要用你的语言安装WordPress,他们会知道这个词的意思吗?像pingback、trackback和feed这样的词是这条规则的例外;这些术语通常很难翻译,许多翻译人员选择直接用英语。

 

阅读其他软件在您语言中的本地化

如果你陷入困境或需要指导,请尝试阅读其他流行软件工具的翻译,以了解常用的术语、如何处理形式等。当然,WordPress有自己的语调和感觉,因此在阅读其他本地化时请记住这一点,但是,请随意挖掘UI术语等,以保持与您语言中其他软件的一致性。

 

使用本地化

将本地化文件放在language文件夹中,要么放在插件languages文件夹中,或者从WordPress 3.7开始放在插件languages文件夹下,通常放在wp-content下。完整路径将为wp-content/languages/plugins/my-plugin-fr_FR.mo

您可以在“常规设置”中更改语言。如果您没有看到此选项,或者没有列出要切换到的语言,请手动执行此操作:

  • wp-config.php中的WPLANG定义为所选语言。例如,如果你想使用法语,你必须:
    define ('WPLANG', 'fr_FR');
  • 转到wp-admin/options-general.php或“设置” -> “常规”
  • 在“站点语言”下拉列表中选择您的语言
  • 转到wp-admin/update-core.php
  • 如果可用,请单击“更新翻译”
  • 核心翻译文件在可用时下载

 

资源