5

我已经完成了我的插件,现在想为我的用户提供多语言功能。我对此进行了研究,但很难实施。

我看过WordPress 翻译,但需要基本步骤来遵循和翻译我的插件。

我做了这些

  1. 下载了 POEdit。
  2. 在插件目录中创建了“french.po”文件
  3. 遵守“french.po”->“french.mo”

需要做

  1. 如何在 po 文件中定义msgidmsgstr ?
  2. 如何在插件中加载 po/mo 文件?
  3. 如何通过 po/mo 文件替换标签/文本?
  4. 如何使用__e()&___()替换插件页面中的“msgstr”?
4

2 回答 2

14

使用名为Codestyling Localization的插件,您无需使用 POEdit。

我将向您展示一个使用“localizationsample”作为文本域的示例。在这种情况下,语言文件位于 /lang/ 目录中。它们不需要是您实际插件中的那些名称;它们只是例子。

脚步

  1. 在插件注释标题中添加这些行,以便 Codestyleing Localization 识别。

    文本域:localizationsample
    域路径:/lang

  2. lang在您的插件目录中创建一个名为的目录。

  3. 安装并激活Codestyleing 本地化插件。

  4. 转到Tools->Localization

  5. 找到你的插件并点击Add New Language

  6. 在单选按钮中选择要本地化的语言(国家/地区),然后按Create po-file此时确保在 lang 文件夹中创建了一个 .po 文件。

  7. Rescan->scan now这是推荐的,因为在我的系统中不这样做,插件总是显示错误,说“并非所有项目都使用相同的文本域”。

  8. Edit这将为您带来另一个页面,其中列出了可翻译的消息。这些消息是传递给函数__()_e()插件代码的消息。

  9. 单击Edit旁边的表格,Copy您将看到一个对话框,为每条消息输入您的翻译。完成翻译。

  10. generate mo-file此时,您应该会看到在lang文件夹中创建了一个 .mo 文件。

  11. 更改您指定的语言环境wp-config.php以反映翻译。默认是define('WPLANG', '');

示例插件

/*  
    Plugin Name: Sample Localization
    Description: Demonstrates how to localize your plugin.
    Text Domain: localizationsample
    Domain Path: /lang
*/

// Localization
add_action('init', 'localizationsample_init');
function localizationsample_init() {
    $path = dirname(plugin_basename( __FILE__ )) . '/lang/';
    $loaded = load_plugin_textdomain( 'localizationsample', false, $path);
    if ($_GET['page'] == basename(__FILE__) && !$loaded) {          
        echo '<div class="error">Sample Localization: ' . __('Could not load the localization file: ' . $path, 'localizationsample') . '</div>';
        return;
    } 
} 

// Add Admin Menu 
add_action('admin_menu','localizationsample_menu');
function localizationsample_menu() { 
    add_options_page(
        'Localization Demo',            // admin page title
        'Localization Demo',            // menu item name
        'manage_options',               // access privilege
        basename(__FILE__),                         // page slug for the option page
        'localization_demo_adminpanel'  // call-back function name
    );
}
function localization_demo_adminpanel() {

    echo '<div class="wrap"><div id="icon-themes" class="icon32"></div>';
    echo '<h2>' . __('Hi there!', 'localizationsample') . '</h2>'; 
    echo '<p>';
    _e('Hello world!', 'localizationsample');
    echo '</p>';
    echo '</div>'; // end of wrap
}
于 2012-09-28T15:18:03.713 回答
5

(此示例是对 DEUTCH 的翻译。您可以将习惯更改为您想要的名称。)

在每个插件头中,都有一个唯一的名称。(例如:

/*
Plugin Name: my-pluginname
.......
*/

然后,在该插件的文件夹中,创建一个文件夹“语言”;

然后,在您的插件 .php 文件(在顶部的某处)中,插入初始化代码:

class load_language 
{
    public function __construct()
    {
    add_action('init', array($this, 'load_my_transl'));
    }

     public function load_my_transl()
    {
        load_plugin_textdomain('my-pluginname', FALSE, dirname(plugin_basename(__FILE__)).'/languages/');
    }
}

$zzzz = new load_language;

然后打开任何文本编辑器,然后像这段代码一样插入(注意,我们只添加两个示例消息,“hello”和“bye”,因此,您可以使用类似的行添加任意数量的消息)。

# English translations for PACKAGE package.
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: my-pluginname 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-06 13:46-0400\n"
"PO-Revision-Date: 2013-03-21 11:20+0400\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"X-Poedit-SourceCharset: iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"


#: mypluginindex.php:87 (it is just a line of a note, to remind where our code appears)
msgid "mymessage1"
msgstr "Hello"

#: mypluginindex.php:88
msgid "mymessage2"
msgstr "Bye"

然后将此文件保存为“my-pluginname-en_US.po”(注意,.po 是文件的扩展名,因此请检查您的文本编辑器程序是否未保存到“my-pluginname-en_US.po.TXT”)。

然后下载POEDIT软件,打开这个文件。然后编辑“翻译”字段,然后另存为“my-pluginname-de_DE”会生成两个文件(如果poEdit没有自动生成第二个.mo文件,只需转到文件->首选项->编辑器并检查显示“保存时自动编译 .mo 文件”的框),

然后将这两个文件放入“语言”文件夹中。

在此之后,打开 wp-config.php 并找到以下代码:

define ('WPLANG, '');

并更改为

define ('WPLANG, 'de_DE');

就这样。加载 wordperss 时,它将读取您的插件语言文件,前缀为 -de_DE。

所以,在插件的 .php 文件中,而不是:

echo "Something string";

你应该使用:

echo __("mymessage1", 'my-pluginname');



完成的。现在你应该测试你的插件。
psused 链接: https://codex.wordpress.org/I18n_for_WordPress_Developers
http://codex.wordpress.org/Translating_WordPress
https://codex.wordpress.org/Writing_a_Plugin
http://codex.wordpress.org/Installing_WordPress_in_Your_Language

于 2013-03-27T13:33:18.830 回答