我已经完成了我的插件,现在想为我的用户提供多语言功能。我很懊恼,但实施起来很难。
我已经看过WordPress translation但需要基本步骤来关注和翻译我的插件。
我已经完成了这些
需要做
__e()
& ___()
替换' msgstr'在插件页面?答案 0 :(得分:14)
使用名为Codestyling Localization的插件,您无需使用POEdit。
我将向您展示使用“localizationsample”作为文本域的示例。在这种情况下,语言文件位于/ lang /目录中。它们不需要是实际插件中的那些名称;它们只是例子。
<强>步骤强>
在插件注释标题中添加这些行,以便Codestyling Localization识别。
Text Domain:localizationsample
域路径:/ lang
在插件目录中创建名为lang
的目录。
安装并激活Codestyling Localization插件。
转到Tools
- &gt; Localization
找到您的插件,然后点击Add New Language
在单选按钮中选择要本地化的语言(国家/地区),然后按Create po-file
此时,请确保在lang文件夹中创建.po文件。
按Rescan
- &gt; scan now
这是推荐的,因为在我的系统中没有这样做,插件总是显示错误,说“并非所有项目都使用相同的文本域”。
按Edit
这将为您显示另一个列出可翻译消息的页面。这些消息是传递给插件代码中的函数__()
和_e()
的消息。
点击Edit
旁边的表格中的Copy
,然后您会看到一个对话框,为每封邮件输入翻译。完成翻译。
按generate mo-file
此时,您应该会在lang
文件夹中看到正在创建的.mo文件。
更改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
}
答案 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