

对于不了解的人来说,WordPress 是全球近 43%网站的核心。此外,该内容管理系统(CMS)可在205 个不同的地区使用。由于该平台是一个全球性实体,因此本地化非常重要。WordPress i18n 流程是其中的关键。
i18n 的 "提升 "在于,它是一种为翻译准备主题和插件代码的方法。这样,您就可以将准确的翻译应用于其他语言,与其他文化和地区保持一致,并从中获益。
在这篇文章中,我们将更详细地讨论 WordPress i18n,并向您展示如何应用它。虽然您需要具备一定的编码知识,但我们也会详细讨论步骤,以及 WordPress i18n 是什么(做什么)。
作为过去时代的产物,"leet speak "在网络开发圈子中依然存在。虽然你不会经常看到 "l33t "和 "n00b",但你会看到很多数字地名:例如,在讨论可访问性的地方,你会看到 a11y。
事实上,i18n 是另一个数字名称。它代表 "国际化",由第一个和最后一个字母以及一个数字组成,表示中间还有多少个字母。您还会发现本地化也有自己的数字地名:l10n。还有其他数字地名,如 globalization (g11n)、Europeanization (e13n) 等。
在这里,我们将具体讨论国际化问题。万维网联盟(W3C)的官方简介指出,这是指设计和开发能够为不同文化、地域和语言的用户提供简单的本地化服务。
需要注意的是,国际化只是翻译流程的第一步。之后,您将使用合适的翻译解决方案进行本地化。
就 i18n 过程本身而言,WordPress 开发人员在将其交给翻译之前会采取一系列步骤。简而言之,本地化流程如下:
译员将使用 .pot 文件进行本地化,因此它是整个程序的重要组成部分。
对于不了解的人来说,POT文件是使用GNU gettext工具生成的文件的一个示例。这是 20 世纪 80 年代的技术和软件,对今天的 i18n 工作者仍有巨大价值。
要执行 WordPress i18n 并不需要确切了解它是什么,但从一般意义上了解它的作用和生成的内容是很有用的。将 gettext 视为帮助 WordPress 生成多语言信息的框架。
你经常会看到许多与 gettext 相关的文件:
考虑到这些,您几乎可以开始 i18n 进程了。首先,最好为您的 WordPress 网站做好准备工作。
与任何与 WordPress 核心文件有关的项目一样,您需要在开始之前确保您的安装是 "干净的"。您还需要确保可以回滚所做的任何更改,以防最坏的情况发生而需要恢复。
因此,在 i18n 流程之前,有两个几乎是不容商量的 "前置步骤":
对于后者,我们建议您更新要保留的插件,删除多余的插件。
同样,我们将在 WordPress 核心文件中进行操作,因此你需要了解这些文件的工作原理和内容。我们将在教程中讨论的一些概念不一定有解释,但步骤本身会有解释。
完成所有这些要点后,您就可以开始 i18n 流程了。
在接下来的几节中,我们将向您展示如何使用主题和插件进行 WordPress i18n。虽然每个部分可能都会有代码繁杂和技术性较强的地方,但我们会尽可能详尽地解释一切,并链接到您可能需要的任何其他资源。
我们将从如何国际化主题开始。
第一步是更新主题的标题,使其包含文本域名和域名路径。简而言之,就是
要做到这一点,只需在主题的头文件中添加几个字即可:
/*
主题名称:My Custom Theme
Author:Weglot Translate
Text Domain: my-theme
Domain Path:/languages/
*/
接下来,您需要使用 "操作 "和 "函数 "加载文本域:
add_action( 'after_setup_theme', 'my_theme_setup' );
function my_theme_setup() {
load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
}
这套代码需要放在主题的 functions.php 文件中,而不是网站的文件中。完成这些后,您就可以开始执行 "字符串审计 "了。这就需要用翻译函数封装主题中的所有文本字符串。有两个函数您会经常用到:
这些函数需要两个参数:文本字符串和文本域。例如
__()
$welcome= __( 'Hello! Welcome to the dashboard!', 'my-theme' );
_e( 'Hello again!', 'my-theme' );
虽然各种翻译功能的来龙去脉不在本文的讨论范围之内,但《WordPress 主题开发人员手册》中几乎包含了完成这项工作所需的所有信息。
此时,您可以创建一个POT文件。有很多解决方案可以做到这一点,但WordPress 推荐使用 Poedit- 一种免费的开源解决方案。
下载并安装Poedit 后,在工具栏中点击 "文件">"新建":

接下来,创建一个新目录。您可以单击主屏幕中的 "从来源提取"链接:

然后,在 "翻译属性"选项卡上填写项目名称、语言团队和主要语言:

如果文件是新的,则应将其保存在此处(文件名应与主题的标题相同)。接下来,选择 "来源路径"选项卡,找到电脑上的/languages/文件夹:

最后的 "来源关键字"选项卡将列出您在主题中使用的翻译功能:

您需要在这里添加这些关键词,不过要找到合适的关键词可能比较困难。首先,您可以使用以下列表:
__
_e
_x
_ex
_n
_nx
_n_noop
_nx_noop
translate_nooped_plural
number_format_i18n
date_i18n
esc_html__
esc_html__
esc_html_x
esc_attr__
esc_attr_e
esc_attr_x
点击确认后,保存更改并查看新文件:您将在电脑上看到MO和PO文件。如果复制了PO文件,就可以添加POT扩展名,然后就可以进行本地化了。
您的初始任务与主题类似:首先,更新插件标题中的文本域和域路径字段:
/*
插件名称:My Custom Plugin
Plugin URI:weglot
Description:展示翻译和 i18n 的自定义插件。
作者:Weglot TranslateWeglot Translate
Version: 1.0
Author URI:weglot
Text Domain: my-plugin
Domain Path:/languages/
*/
我们建议为域路径创建一个 /languages/ 文件夹,并将其设置为域路径。从这里,您可以为插件加载文本域,但这次您可以在代码中添加以下函数,而不是通过 functions.php:
load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path );
不过,这只能让 WordPress 知道有一个翻译文件可用。要加载翻译文件,您需要将该函数封装在一个动作中:
add_action( 'plugins_loaded', 'plugin_load_td' );function plugin_load_td() {
load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
字符串审核的大部分内容与主题 i18n 类似。最后一步是使用与之前相同的流程生成 POT 文件;生成的文件最终将存放在当前工作目录下
现在,您应该明白 WordPress i18n 有多么神奇了。如果您开发了主题或插件,并想让它们随时可以进行翻译,那么它就是最好的选择。然而,就像所有伟大的东西一样,它也有一些缺点。
例如,如果插件包含用户生成的内容,这将不会成为 i18n 翻译的一部分。
i18n 程序将为您编码的静态元素(如按钮文本)启用翻译。但是,如果用户想为某个字段输入特定短语、创建唯一标签以及其他 "客户端 "元素,您就无法对其进行说明。事实上,您可以做到这一点,但这是一项复杂的任务,超出了本篇文章的范围。
此外,如果您不是开发人员,i18n 无法帮助您翻译网站。为此,您需要一个插件,您可能想跳到下一节了解合适的选项。
值得注意的是,虽然翻译插件可以在很多方面提供帮助,但一个网站平均需要 五个插件才能完全实现多语种。相比之下,像 Weglot 这样的解决方案可以快速运行,检测网站的所有可翻译部分,而且几乎兼容所有主题和插件。无论这些主题和插件是否已做好翻译准备。
更重要的是,Weglot 使用前台 HTML 页面中的主题、插件和主要内容元素,并使这些元素具有可翻译性。因此,不需要 .pot 和 .po 文件,也不需要使用 gettext 方法。
从技术角度讲,我们现在要讨论的是内容的本地化--直接翻译过程。
一个好的翻译策略并不容易。它是一项艰巨的工作,需要大量的规划,以确保您的内容以正确的方式传播到不同的文化、地区和语言。这不仅仅是指内容正文中的翻译文本。您还需要考虑以下所有因素:
若您使用电子商务平台,此处同样存在诸多考量因素。例如,您需要确保结账页面上的每个元素都提供完整翻译——尤其是货币和税费字段:

此外,发货信息也是需要完整、高质量翻译的一个关键方面。无论使用哪种语言,您都要让客户没有任何借口点击购买按钮。

Weglot为您完成了大量繁重的工作。它是您在 WordPress i18n 工作中的重要盟友,因为它会检测您网站中可以翻译的各个方面。在此基础上,它会为您进行第一层机器翻译:

这也许足以满足您的需求,但Weglot 还能帮您更进一步。您可以引入专业翻译、编辑现有翻译等。这就为您提供了对网站进行全面本地化所需的所有灵活性。
WordPress 几乎遍布世界各地。因此,国际化的主题和插件有助于将它们翻译成其他语言。对于使用 WordPress 平台的开发人员来说,WordPress i18n 是至关重要的一环。
如果您能将主题国际化,帮助用户在不修改源代码的情况下创建翻译,那您就成功了。不过,应用 i18n 概念并不意味着您的主题或插件已经翻译好了。
要完成这一步,您需要借助 Weglot这样的解决方案。它与许多不同的平台和技术兼容,与 WordPress 的配合也非常出色。完成工作流程中的 i18n 部分后,您就可以使用Weglot 生成几乎任何语言的准确且易于实施的翻译。
Weglot 提供为期 10 天的免费试用,用户无需承担购买义务。