# 如何让您的 WordPress 插件支持翻译？

如果您是一位 **WordPress 插件开发者** ，希望将您的插件推广给全球用户，那么让插件支持翻译是至关重要的一步。支持翻译的插件可以让用户轻松将插件翻译为自己的母语，从而使其能够被更广泛的用户使用。在这篇博客中，我们将介绍 **如何让您的 WordPress 插件支持翻译** ，从而帮助您触达全球用户。

## 创建支持翻译插件的 4 个简单步骤

- 使用国际化函数

- 使用文本域（Text Domain）

- 创建翻译文件

- 将翻译文件包含到您的插件中

### 使用国际化函数：

这些函数可让您将插件中的文本字符串包装在翻译函数中，使其能够被翻译。在 WordPress 中，最常用的国际化函数包括：

- __() 和 _e()： 这些函数用于翻译 PHP 代码中的字符串。__() 函数返回翻译后的字符串，而 _e() 函数则直接输出翻译后的字符串。

- _x()： 该函数用于在特定上下文中翻译字符串。它接受一个额外的上下文参数，当同一个字符串在不同上下文中需要不同翻译时，这一功能非常有用。

- esc_html__()、esc_html_e()、esc_attr__() 和 esc_attr_e()： 这些函数分别用于翻译和转义 HTML 属性及 HTML 文本字符串。它们可确保翻译后的字符串经过正确的转义处理，从而防止安全漏洞。

### 使用文本域（Text Domain）：

文本域（Text Domain）是插件翻译的唯一标识符。它可以帮助 WordPress 确定应为您的插件加载哪些翻译。要为您的插件定义文本域，您需要在插件的主文件中使用 load_plugin_textdomain() 函数。示例如下：

`function my_plugin_load_textdomain()
{

load_plugin_textdomain( ‘my-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );

}

add_action( ‘plugins_loaded’, ‘my_plugin_load_textdomain’ );`

### 创建翻译文件：

翻译文件包含插件的所有翻译字符串。它们通常存储在插件目录中的一个独立文件夹内，该文件夹通常命名为“languages”。WordPress 对翻译文件采用特定的命名规则，其命名基于文本域（Text Domain）和目标语言。例如，如果您的插件文本域为“my-plugin”，并希望将其翻译为西班牙语，则翻译文件应命名为“my-plugin-es_ES.mo”（西班牙）或“my-plugin-es_MX.mo”（墨西哥）。

翻译文件由扩展名为“.po”的源文件编译生成，“.po”代表 Portable Object（可移植对象）。您可以使用 Poedit 等翻译编辑器创建“.po”文件，在其中定义原始字符串及其对应的翻译。创建好“.po”文件后，您需要使用类似 **[Automatic Translate Addon For Loco Translate](https://wordpress.org/plugins/automatic-translator-addon-for-loco-translate/)** 这样的插件，将其编译为“.mo”文件，“.mo”代表 Machine Object（机器对象）。

### 将翻译文件包含到您的插件中：

创建翻译文件后，您需要将其包含到您的插件中，以便 WordPress 在需要时能够加载它们。您可以将 '.mo' 文件放置到插件的 'languages' 文件夹中，并使用 load_plugin_textdomain() 函数指定该文件夹的路径。示例如下：

`function my_plugin_load_textdomain()
{

load_plugin_textdomain( ‘my-plugin’, false, dirname( plugin_basename( __FILE`

## 总结

总而言之，让您的 **WordPress 插件支持翻译** 是确保插件能够轻松翻译成多种语言、服务全球用户的重要一步。按照本文介绍的步骤，包括使用国际化函数、定义文本域（Text Domain）、创建翻译文件以及将这些文件包含到插件中，您就可以让插件支持翻译，并提升其对全球用户的可用性。

为您的插件提供翻译可以帮助您触达更广泛的用户群体，并让插件对非英语用户更加友好。这体现了您对包容性和可访问性的重视，也有助于提升插件的成功率和受欢迎程度。因此，如果您正在开发 WordPress 插件，请务必投入精力使其支持翻译，从而将您的插件推广到全球用户。