在WordPress插件中,如何国际化(i18n)和本地化(l10n)文本?

2024-12-09 804 0

在WordPress插件中进行国际化(i18n)和本地化(l10n)通常涉及以下步骤:

1. 准备文本域

首先,为你的插件定义一个文本域(text domain)。这个文本域是插件的唯一标识符,用于加载翻译文件。

在你的插件主文件(通常是插件根目录下的 PHP 文件)中,添加以下代码:

function myplugin_load_textdomain() {
    load_plugin_textdomain( 'my-plugin-textdomain', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'myplugin_load_textdomain' );

在这里,my-plugin-textdomain 是你的插件文本域,dirname( plugin_basename( __FILE__ ) ) . '/languages/' 是你的翻译文件所在的目录。

2. 添加翻译字符串

在你的插件代码中,使用 __()_e()esc_attr__()esc_attr_e()esc_html__()esc_html_e() 等函数来包裹需要翻译的字符串。

例如:

echo __('This is a translatable string.', 'my-plugin-textdomain');

或者,如果你需要输出 HTML 属性:

echo esc_attr__('This is a translatable string for an attribute.', 'my-plugin-textdomain');

3. 创建翻译文件

在插件目录下创建一个名为 languages 的文件夹,并在其中创建翻译文件。翻译文件的命名格式通常是 textdomain-locale.mo,其中 textdomain 是你的插件文本域,locale 是目标语言和地区代码(例如 en_US)。

例如,如果你要为美国英语创建翻译文件,文件名应该是 my-plugin-textdomain-en_US.mo

你可以使用 Poedit 或其他翻译工具来创建 .po.mo 文件。

4. 添加翻译

使用 Poedit 或类似工具打开 .po 文件,添加你的翻译字符串和相应的翻译。

5. 上传翻译文件

将生成的 .mo 文件上传到插件 languages 目录下。

6. 使用翻译

WordPress 将自动加载相应的翻译文件,并将你的字符串翻译成用户的语言设置。

示例

以下是一个简单的插件代码示例,演示了如何使用国际化函数:

<?php
/*
Plugin Name: My Internationalized Plugin
Text Domain: my-plugin-textdomain
*/

function myplugin_load_textdomain() {
    load_plugin_textdomain( 'my-plugin-textdomain', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'myplugin_load_textdomain' );

function myplugin_display_message() {
    echo '<div class="notice">' . esc_html__( 'Hello, this is a translatable message!', 'my-plugin-textdomain' ) . '</div>';
}
add_action( 'admin_notices', 'myplugin_display_message' );

确保你已经创建了翻译文件,并且已经将其放置在正确的位置。这样,当插件被激活并且用户的语言设置与翻译文件匹配时,用户将看到本地化的消息。

相关文章

如何在WordPress插件中使用ajax?
如何通过WordPress函数创建自定义菜单?
在WordPress主题开发中,如何使用WP_Customize_Manager来自定义主题选项?
如何使用WordPress的filter钩子修改输出内容?
如何使用WordPress的action钩子添加自定义JavaScript?
在WordPress插件中,如何使用自定义表单和nonce字段来增强安全性?