什么是本地化?

本地化描述了将软件翻译并使其字符串适应特定地区的进程。本地化的缩写为 l10n(因为 l 和 n 之间有 10 个字母。)

软件本地化包含两个步骤。第一步是开发人员提供一个机制和方法,以便最终将程序及其界面翻译成适合全球用户当地偏好和语言的形式。这个过程称为 国际化 (i18n)。WordPress 开发人员已经完成了这一步,因此在理论上,WordPress 可以用任何语言使用。

第二步是实际的 本地化 (l10n),即使用软件开发人员规定的框架,将页面上的文本和其他设置翻译成另一种语言和文化的过程。WordPress 已经被本地化为多种语言(有关更多信息,请参阅 多语言团队 列表)。

翻译 WordPress、插件和主题

如果您想帮助翻译 WordPress,或翻译托管在 WordPress.org 主题和插件目录中的任何主题或插件,请访问 翻译 WordPress。

在那里您将了解所有翻译团队,并学习关于 translate.wordpress.org 的信息,您可以在那里与全球数千名翻译人员协作在线进行翻译工作。

翻译主题和插件

如果您想翻译未托管在 WordPress.org 上的插件和主题,或者出于任何原因想要离线直接翻译主题或插件的文件,您可以通过创建和编辑本地化文件来实现。

本地化文件

为了翻译您的插件/主题,您需要三种类型的本地化文件:

  • POT 文件:包含您所有原始字符串的模板文件
  • PO 文件:可编辑文件,包含一种语言的翻译(每种语言一个文件)
  • MO 文件:PO 文件的编译版本,实际上由应用程序使用

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

此文件包含您插件/主题中的原始字符串(英文)。以下是一个 POT 文件条目的示例:

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

PO(便携式对象)文件

每位翻译人员都会获取 POT 文件,并将其 msgstr 部分翻译成自己的语言。结果是一个 PO 文件,其格式与 POT 相同,但包含翻译和一些特定的头部信息。每种语言有一个 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 命令。

打开命令行并运行如下命令:

wp i18n make-pot path/to/your-plugin-directory

Poedit

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

internationalization-localization-03

Grunt 任务

甚至还有一些 Grunt 任务可用于创建 POT 文件。grunt-wp-i18n 和 grunt-pot
要设置它,您需要安装 node.js。这是一个简单的安装过程。然后,您需要在希望使用 Grunt 的目录中 安装 grunt。这是通过 命令行 完成的。您可以在插件根目录下放置一个 Grunt.js 和 package.json 示例。然后可以通过命令行中的简单命令运行 Grunt 任务。

翻译 PO 文件

有多种方式可以翻译 PO 文件。

最简单的方法是在翻译时使用 Poedit。这是一个支持所有主要操作系统的开源工具。免费版的 Poedit 默认版本支持手动扫描所有带有 Gettext 函数的源代码。其专业版还具备一键扫描 WordPress 插件和主题的功能。

您也可以使用文本编辑器输入翻译。在文本编辑器中,字符串看起来像这样。

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

您可以在引号之间输入翻译。对于德语翻译,最终结果看起来像这样。

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

第三种选择是使用在线翻译服务。基本思路是您上传 POT 文件,然后您可以允许用户或翻译人员翻译您的插件。这使您可以跟踪更改,始终拥有最新的翻译,并减少重复翻译的情况。

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

翻译后的文件应保存为 my-plugin-{locale}.mo。区域设置(locale)是您定义在文件 wp-config.php 中常量 WPLANG 的语言代码和/或国家代码。例如,德语的区域设置为 de_DE。根据上面的代码示例,文本域是 'my-plugin',因此德语 MO 和 PO 文件应命名为 my-plugin-de_DE.mo 和 my-plugin-de_DE.po。有关语言和区域代码的更多信息,请参阅 用您的语言安装 WordPress。

生成 MO 文件

命令行

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

Unix 操作系统

msgfmt -o filename.mo filename.po

Windows 操作系统

msgfmt -o filename.mo filename.po

一次转换多个 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 术语等,以保持与你语言中其他软件的一致性。

使用本地化文件

将本地化文件放入语言文件夹中,即在插件的 languages 文件夹中,或者自 WordPress 3.7 起,放在通常位于 wp-content 下的插件 languages 文件夹中。完整路径应为 wp-content/languages/plugins/my-plugin-fr_FR.mo。

自 WordPress 4.0 起,你可以在“常规设置”中更改语言。如果你看不到任何选项或想切换到的语言,请执行以下步骤:

  • 在 wp-config.php 内定义 WPLANG 为你选择的语言。例如,如果你想使用法语,则应添加:
    define ('WPLANG', 'fr_FR');
  • 访问 wp-admin/options-general.php 或进入“设置” -> “常规”
  • 在“站点语言”下拉菜单中选择你的语言
  • 访问 wp-admin/update-core.php
  • 点击“更新翻译”(如可用)
  • 下载核心翻译文件(如可用)

资源