Gettext 过滤器简介

已发表: 2023-02-12

为您的 WordPress 网站找到满足您所有要求的插件或主题可能是一个挑战。 许多可能接近但仍需要调整或定制。 此外,作为开发人员,确保您的代码足够灵活以支持全球用户也很重要。

幸运的是,WordPress 核心的一些功能可以帮助您调整网站的某些元素。 这使您能够自定义按钮或标签文本,而不是放弃其他有用的插件,或者甚至准备您的网站进行翻译。

在本文中,我们将更好地理解 gettext 过滤器,包括它如何与您站点的翻译过程一起工作。 有很多内容要介绍,所以让我们开始吧!

目录
1.什么是Gettext?
2. Gettext和PHP翻译
2.1. 第 1 步:将文本字符串提取为 POT 文件
2.2. 第 2 步:创建可移植对象 (PO) 文件
2.3. 第 3 步:转换为机器对象 (MO) 文件
3. WordPress Gettext 过滤器什么时候有用?
4.使用 WP Engine 传播您的信息

什么是Gettext?

gettext 过滤器使您能够修改 WordPress 网站上的文本元素。 最好通过一个例子来理解。

假设您的评论表单有两个字段:“姓名”和“电子邮件”。 如果您希望他们阅读“名字”和“电子邮件地址”,您可以使用 gettext 过滤器来修改它们,而不必手动替换主题文件中每个术语的每个实例。

gettext 过滤器仅在您的站点已准备好进行翻译时才起作用。 因此,在我们深入探讨如何使用它来自定义文本之前,我们必须讨论如何使您的代码国际化。

在继续之前需要了解的一些术语包括:

  • 国际化 (i18n)。 这意味着您的 WordPress 代码已准备好翻译成其他语言。
  • 本地化 (l10n)。 您可以进行 i18n 编程并将 WordPress 安装本地化以在本地语言中使用的过程。
  • GNU gettext 库。 GNU 是一个免费的开源操作系统。 它的 gettext 库使您能够将文本包装在代码字符串中,然后可以将其提取出来进行翻译。
  • POT 文件:为了提取使用 gettext 函数创建的可翻译字符串,创建了可移植对象模板 (POT) 文件。
  • PO 文件:诸如 Poedit 之类的工具使用 POT 文件来创建可移植对象 (PO) 文件,其中包括已完成的翻译以及可翻译的字符串。
  • MO 文件:机器对象 (MO) 文件是从 PO 文件创建的。 它驻留在您的插件或主题目录中,如果您的网站需要翻译版本,则由您的服务器提供。

正如您将在下面的步骤中看到的,这些元素都在准备 WordPress 产品进行翻译时发挥作用。

用于翻译的 Gettext 和 PHP

下面,我们解释了国际化主题或插件的工作流程。 在尝试此类更改之前,建议您创建一个要使用的子主题。 这将保护您的网站免受任何潜在的灾难。

第 1 步:将文本字符串提取为 POT 文件

您要做的第一件事是检查您的主题或插件是否已包含 POT 文件。 如果没有,您需要自动生成它们,使用终端手动创建它们,或者使用我们之前提到的 WordPress 推荐的名为 Poedit 的应用程序:

Pro 版本提供了一个快速的 WordPress 功能,用于创建您需要的文件。 但是,您仍然可以使用免费应用程序通过额外点击几下来生成 POT 文件。

要开始使用,您需要下载并安装 Poedit,它将在您的桌面上运行。 完成后,导航到File > New 。 系统将提示您选择翻译语言:

然后您需要在继续之前保存您的新项目。 接下来,您可以选择更新现有的 POT 文件或从源中提取

如果需要,您也可以从一个空白的 POT 文件开始,然后在 Poedit 中更改您的文本字符串。 或者,您可以在 Glotpress 中搜索要使用的现有插件和主题文件。 但是,对于此示例,我们假设您需要使用其他选项。

单击从源中提取后,您将可以配置三个设置选项卡:

您将需要为文本字符串的来源设置路径。 您还可以排除某些路径。 然后,您需要配置翻译属性:

您可以在此处为项目命名并为复数和其他特定于语言的元素自定义设置。 最后,您可以使用Sources Keywords选项卡来完成 POT 文件的设置:

单击加号时,您将能够添加 gettext 关键字以完成翻译设置。 您还可以查看和搜索源文件中的文本字符串。

第 2 步:创建可移植对象 (PO) 文件

接下来,您需要针对要添​​加的每种语言将 POT 文件转换为 PO 文件。 如果您不翻译主题或插件,并且只打算使用 gettext 过滤器将英语替换为英语,请将两种语言(源语言和翻译语言)都设置为英语。

如果您在 Poedit 中导航到“目录” > “从 POT 文件更新” ,您可以选择要翻译的文件:

接下来,文件将经过一个提取过程,在此期间所有可翻译的字符串都将被带入 Poedit。 这将创建 PO 文件。 您需要为其命名以匹配该项目的其他文件。

然后,单击文本字符串列表底部的创建新翻译以开始进行更改:

要将文本从英文更改为英文,只需单击要更改的字符串,然后使用源文本下方的翻译窗口输入替换词:

对您想要在整个主题或插件中更改的任何文本完成此过程。 接下来,您将创建三个必要文件中的最后一个。

第 3 步:转换为机器对象 (MO) 文件

到目前为止,您一直在采取措施创建有关您的翻译的编程指令。 现在,您需要转换每个 PO 文件,以便服务器可以读取它并将所需的文本传送给访问者。

根据您执行 Poedit 工作流程的方式,可能已经在主题的Languages文件夹中创建了一个 MO 文件。 如果没有,请导航至文件>编译为 MO

现在您应该拥有执行 WordPress 中的 gettext 过滤器使之成为可能的功能所需的组件。

什么时候 WordPress Gettext 过滤器有用?

尽管我们上面描述的过程可以帮助您将网站翻译成多种语言,但这不是 gettext 过滤器的目的。 换句话说,您不想使用此挂钩将英文文本转换为西班牙文。

相反,这更像是一种设计功能,您可以使用它来修改通过插件或主题添加到您网站的默认文本,例如:

  • 标签定制
  • 按钮文本更改
  • 航向变更

此过程可用于自定义在您的网站文件中被视为可翻译的任何文本。 再举一个例子,如果您的主题有显示为“立即购买”的预设按钮,但您的网站需要它们显示为“订阅”,gettext 是可以使这种改变成为现实的过滤器。

请务必注意,过于频繁地使用 gettext 会对您网站的性能产生负面影响。 这是每次加载网站时都必须运行的附加代码,因此请谨慎使用它以避免页面速度下降。

使用 WP Engine 传播您的信息

决定是否使用插件或对您的网站创建手动代码更改可能具有挑战性。 这就是为什么拥有最好的开发人员资源是关键。 借助 WP Engine 的专业支持,您将拥有创建高度自定义网站所需的一切。

为您的下一个项目查看我们托管的专用 WordPress 托管计划。 我们已涵盖您的服务器维护,因此您可以轻松进行创新!