什么是本地化?

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

本地化文件

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

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

PO(可移植对象)文件

每位翻译者都会使用 POT 文件并将其中的 msgstr 部分翻译成自己的语言。结果是一个与 POT 格式相同的 PO 文件,但包含翻译和一些特定的标题。每种语言都有一个 PO 文件。

MO(机器对象)文件

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

生成 POT 文件

POT 文件是您需要交给翻译者以便他们进行工作的文件。POT 和 PO 文件可以轻松互换重命名以更改文件类型而不会出现问题。

最好与插件一起提供 POT 文件,这样翻译者就不必专门询问您了。

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

WP-CLI

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

Poedit

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

Grunt 任务

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

翻译 PO 文件

将翻译后的文件保存为 my-plugin-{locale}.mo。区域设置是语言代码和/或国家代码。例如,德语的区域设置为 de_DE。从上面的代码示例中,文本域为 'my-plugin',因此德语 MO 和 PO 文件应命名为 my-plugin-de_DE.mo 和 my-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 函数的源代码。其专业版还具有一键扫描 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 的博客作者要在你的语言版本中安装 WordPress,他们是否理解这些术语的含义?像 pingback、trackback 和 feed 这样的词汇是例外;它们通常是难以翻译的术语,许多翻译者选择保留英文原文。

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

如果你感到困惑或需要指导,可以尝试阅读其他流行软件工具的翻译内容,以了解常用术语、如何处理正式程度等。当然,WordPress 有其独特的语气和风格,因此在阅读其他本地化版本时请予以注意,但你可以自由查找 UI 术语等内容,以保持与你语言中其他软件的一致性。

使用本地化

将本地化文件放置在语言文件夹中,要么在插件的 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
  • 当可用时,点击“更新翻译”
  • 当可用时,下载核心翻译文件

资源