WordPress中文开发手册

WordPress主题开发 — 本地化

什么是本地化?

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

本地化文件

POT (Portable Object Template) files

该文件包含主题中的原始字符串(英文)。 这是一个POT文件的例子:

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

第一行是一个注释,通常是字符串的文件和行号。 msgid行是原始字符串,并且msgstr部分是翻译所在的位置。

PO (Portable Object) files

每个翻译器都使用POT文件,并以自己的语言翻译msgstr部分。 结果是与POT格式相同的PO文件,但具有翻译和语言特定的标题。 每种语言有一个po文件。

MO (Machine Object) files

从每个翻译的PO文件建立一个MO文件。 这些是gettext函数实际使用的机器可读的二进制文件(它们不关心.POT或.PO文件),是PO文件的“编译”版本。 将po转换为mo文件有几种不同的方法。

生成 POT 文件

POT文件是您需要交给翻译人员的文件,以便他们可以做他们的工作。 POT和PO文件可以轻松地重新命名,以便更改文件类型,而不会有任何问题。 提供POT文件以及您的主题是个好主意,因此翻译人员不必专门询问您。 有几种方法可以为主题生成POT文件:

WordPress i18n tools

您需要从SVN中检出WordPress Trunk目录(请参阅使用Subversion了解SVN)。 您需要检出整个中继线,因为wordpress-i18n工具使用WordPress核心的代码生成POT。 您需要在您的服务器/计算机上安装gettext(GNU国际化实用程序)软件包和PHP才能运行以下命令。

打开命令行并将目录更改为语言文件夹。

cd theme-name/languages

您可以在命令行中运行makepot.php脚本,如下所示:

php path/to/makepot.php wp-theme path/to/your-theme-directory

完成之后,您应该在当前目录中看到POT文件。

Poedit

您也可以在本地使用Poedit进行翻译。 这是所有主要操作系统的开源工具。 免费的Poedit默认版本支持使用Gettext函数手动扫描所有源代码。 它的专业版也具有一键扫描WordPress主题。 生成po文件后,您可以将文件重命名为POT。 如果生成了一个mo,那么您可以删除该文件,因为它不需要。 专业版允许您一键创建po文件。 如果您没有专业版本,您可以轻松获取空白POT,并将其用作POT文件的基础。 将空白POT放入语言文件夹后,您可以单击Poedit中的“更新”,使用字符串更新POT文件。

Poedit-Pro

Grunt Tasks

甚至有一些拙劣的任务可以用来创建POT。 grunt-wp-i18n&grunt-pot
要设置它,您需要安装node.js. 这是一个简单的安装。 然后,您需要在要使用grunt的目录中安装grunt。这通过命令行完成。 可以放在主题根目录中的Grunt.js和package.json的例子。 您可以在命令行中使用简单的命令来执行grunt任务。

WordPress Plugins

您可以在WordPress安装上使用Loco Translate。 注意:此插件可能与所有主题不兼容。 你的里程会有所不同。

Translate PO file

翻译PO文件有多种方法。

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

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

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

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

您也可以在翻译时使用Poedit。

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

François-XavierBénard正在运行WP-Translations,这是一个“翻译与开发人员会面”的社区。它运行在Transifex上,您可以提交作为开发人员翻译的项目,或翻译用于您的语言的现有插件和主题。 这是伟大的,因为那里有现有的翻译。

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

  • Transifex
  • WebTranslateIt
  • Poeditor
  • Google Translator Toolkit
  • GlotPress
  • Lingohub

您甚至可以使用WordPress插件进行翻译。

Loco翻译
被翻译的文件将被保存为主题语言文件夹中的{locale} .mo。 语言环境是您在文件wp-config.php中的常量WPLANG中定义的语言代码和/或国家/地区代码。 例如,德语的语言环境是de_DE。 从上面的代码示例,文本域是'my-theme',因此德语MO和PO文件应该命名为de_DE.mo和de_DE.po。 有关语言和国家/地区代码的更多信息,请参阅使用语言安装WordPress。

Generate MO file

Command line

程序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-theme/languages & C:/cygwin/bin/bash -c /cygdrive/c/path/to/script/directory/potomo.sh

Poedit

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

Poedit Prefences MO

Grunt task

有grunt-po2mo将转换所有的文件。

好的翻译提示

不要翻译,有机地翻译

双语或多语言你无疑知道你所说的语言有不同的结构,节奏,色调和变化。 翻译的消息不需要像英语一样的结构:采取所提出的想法,并提出一种以自然的方式表达目标语言的消息。 创建相同消息和等效消息之间的区别是:不要复制,替换。 即使在消息中有更多的结构性项目,如果您觉得对目标受众更合乎逻辑或更适合您,您就有创造性的许可来适应和改变。

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

每个消息具有不同的正式或非正式级别。 您的目标语言中每个消息使用的正式或非正式级别都是您自己(或与您的团队)进行比较,但是WordPress消息(特别是信息性消息)往往会有礼貌的非正式 英语口音 尝试在您的文化背景下完成目标语言中的等效项目。

不要使用俚语或受众特定的术语

在博客中可以预期一些术语,但不要使用只有“在”人群中获得的口语化。 如果未经开发的博主以您的语言安装WordPress,他们会知道这个术语是什么意思吗? 像pingback,trackback和feed这样的字是这个规则的例外; 它们是通常很难翻译的术语,许多翻译选择以英文留下。

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

如果您遇到困难或需要方向,请尝试阅读其他流行的软件工具的翻译,以了解常用的术语,如何解决方法等等。当然,WordPress有自己的语气和感觉,所以保持 在阅读其他本地化时,请记住,但是请随意挖掘UI术语等来保持与您的语言的其他软件的一致性。

使用本地化

将本地化文件放在语言文件夹中,主题语言文件夹中或主页语言文件夹中通常在wp-content下的WordPress 3.7。 完整的路径将是wp-content / languages / themes / my-theme-fr_FR.mo。

从WordPress 4.0开始,您可以在“常规设置”中更改语言。 如果您没有看到任何选项或要切换到的语言,请执行以下步骤:

将wp-config.php内的WPLANG定义为您选择的语言。 例如,如果你想使用法语,你会有:

define ('WPLANG', 'fr_FR');
  • 转到wp-admin / options-general.php或“设置” - >“常规”
  • 在“网站语言”下拉列表中选择您的语言
  • 转到wp-admin / update-core.php
  • 点击“更新翻译”,如果可用
  • 核心翻译文件(如有)可以下载

资源

  • Creating .pot file for your theme or plugin
  • How To Internationalize WordPress Plugins
  • Translating Your Theme
  • Blank WordPress Pot
  • Improved i18n WordPress tools
  • How to update translations quickly
  • Workflow between GitHub/Transifex
  • Gist: Complete Localization Grunt task
  • WordPress.tv tags: i18n, internationalization and translation