本指南将向您展示如何创建 WordPress 多语主题。 多语主题不仅仅是把所有文本放入 GetText 调用中,然后提供一个 .mo 文件。 将主题文本本地化只是其中一个重要步骤,但还要进行一些其他操作。

一个用于多语网站的主题需要显示可用的语言,允许用户选择以哪种语言查看网站,并能够以各种语言正确显示。

以下是我们需要做的:

  1. 为不同的语言提供本地化。
  2. 允许用户在不同语言之间进行切换。
  3. 按语言返回正确的内容。
  4. 告诉 WPML 哪些内容需要翻译。

使主题准备好进行翻译

为了让主题以不同语言显示,其文本在显示之前必须加以翻译。 WordPress 使用 GetText 实现此目的,您的主题也应当如此。

我们已经撰写了一篇关于 WordPress 主题本地化的文章。此文说明如何将主题文本放入 GetText 调用中,创建翻译(.mo 文件),然后将其应用到主题。

在不同语言之间进行切换

语言切换器向访客显示可用的语言并让他们选择。

语言切换器以不同的形式出现。 一些人喜欢带有语言名称的紧凑式下拉菜单。 一些人则喜欢显示国旗,还有些人喜欢显示水平或垂直的语言列表。

WPML 使实施语言切换器变得简单。 它内置下拉式语言切换器,该切换器也可作为小工具被包含。 该语言切换器可以显示国旗、语言名称及其翻译。 可从 WPML->语言菜单对其进行配置。

您也可以定制自己的语言切换器并将其插入主题中的不同位置。 手册中的定制语言切换器页面解释其创建方法并提供一般用途的示例。 给主题添加一个自定义的语言切换器可使其更美观优雅,使用户明确知道该主题是用于多语网站的。

获得正确语言的内容

许多主题包含页面、分类和标签的硬编码链接。

WPML 挂钩标准的 WordPress API 函数,并按语言筛选它们。

例如,当您调用:

$args = array( 'category' => 1 );
$myposts = get_posts( $args );

假设类别 「1」 是英语类别,西班牙语翻译是类别 「4」。当查看西班牙语页面并运行此代码时,WPML 将把过滤器中的类别号替换为 「4」。

为此,您的代码必须使用 WordPress API 调用,而不是手动查询数据库(这本身就是一种不好的做法)。

您可以在 WPML->语言中控制这个功能。查找自动调整 ID 的选项。

告诉 WPML 哪些内容需要翻译

WPML 可以读取语言配置文件。该文件会告诉它需要知道的关于主题的一切信息。

这包括您使用的管理文本、自定义字段和自定义类型。

一旦您创建了这个 XML 文件,WPML 将自动配置,允许用户运行多语种的网站而无需进行任何设置。