如何翻译任何语言的WordPress插件?

时间:2012-09-28 10:47:51

标签: wordpress language-translation

我已经完成了我的插件,现在想为我的用户提供多语言功能。我很懊恼,但实施起来很难。

我已经看过WordPress translation但需要基本步骤来关注和翻译我的插件。

我已经完成了这些

  1. 已下载POEdit。
  2. created' french.po'插件目录中的文件
  3. 遵守' french.po' - > ' french.mo'
  4. 需要做

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

2 个答案:

答案 0 :(得分:14)

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

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

<强>步骤

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

    Text Domain:localizationsample
    域路径:/ lang

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

  3. 安装并激活Codestyling Localization插件。

  4. 转到Tools - &gt; Localization

  5. 找到您的插件,然后点击Add New Language

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

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

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

  9. 点击Edit旁边的表格中的Copy,然后您会看到一个对话框,为每封邮件输入翻译。完成翻译。

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

  11. 更改wp-config.php中指定的区域设置以反映翻译。默认值为define('WPLANG', '');

  12. 示例插件

    /*  
        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
    }
    

答案 1 :(得分:5)

(这个例子是对DEUTCH的翻译。你可以将海关更改为你想要的名字。)

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

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

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

然后,进入你的插件.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文件,只需转到文件 - &gt;首选项 - &gt;编辑器并选中“保存时自动编译.mo文件”框,

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

之后,打开wp-config.php并找到这段代码:

define ('WPLANG, '');

并改为

define ('WPLANG, 'de_DE');
这就是全部。 当wordperss被加载时,它将读取你的插件语言文件,前缀为-de_DE。

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

echo "Something string";

你应该使用:

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



成品。现在你应该测试你的插件 p.s.used链接:     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