问题描述
我想翻译 this 插件。
该插件已经被翻译成其他语言,它具有添加新语言的.pot
文件 (据我所知) 。
如何为我的新语言创建.po
和.mo
文件,并使其可访问以供插件使用?我试图在 wp-config.php
文件中定义俄语,方法是插入下面的定义:
define ('WPLANG', 'ru_RU');
最佳解决方案
编辑
还有其他的,但这是最常用的:Poedit,一个 cross-platform gettext 目录 (.po 文件) 编辑器。
格式
-
.mo
代表机器对象 – 编译出来的 WordPress 使用的.po
文件 -
.po
代表便携式对象 – 具有翻译字符串的可编辑文本文件 – 基于主.pot
文件,使用从 POT 文件更新 PoEdit 功能 – 一些人将其分发为主文件,但应仅用于翻译 -
.pot
代表便携式对象模板 – 可编辑的文本文件,用于从 WordPress 本身和主题和插件中获取所有可翻译的字符串,使用从源更新 PoEdit 功能
步骤
- 复制.pot 文件并重命名为
plugin-basename-lang_COUNTRY.po
- 引用插件案例的示例:
subscribe-reloaded-pt_BR.po
– pt_BR 表示葡萄牙语巴西,但许多语言没有国家/地区变化… – 您必须用自己的语言填写 - 必须将
wp-config.php
文件中的WPLANG
设置为您的语言,例如pt_BR
- 每次保存
.po
文件时,PoEdit 会自动生成一个.mo
文件,这是 WordPress 使用的文件,基本上只需要上传
Observations
- 如果你做一个完整的或一个体面的部分翻译,提交到插件的作者,所以他可以把它包括在存储库和你的 get credited 为它
- 不要忘记备份您的翻译,因为如果您升级插件,您的文件将丢失
- @ user17078 插件建议是相当不错的,但我从来没有用过
- 我离开了这个答案的写作一段时间,@Pippin 在临时回答,但正在出版… 🙂
次佳解决方案
你可以试试这个 codestyling-localization plugin: 。你可以使用这个翻译你的插件和主题。
第三种解决方案
(以下是 DEUTSCH 的翻译实例,将您的用户更改为所需的习惯。)
在每个插件头中,都有一个独特的名称。 (例如:
/*
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.0n"
"Report-Msgid-Bugs-To: n"
"POT-Creation-Date: 2012-08-06 13:46-0400n"
"PO-Revision-Date: 2013-03-21 11:20+0400n"
"Last-Translator: Automatically generatedn"
"Language-Team: nonen"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=utf-8n"
"X-Poedit-SourceCharset: iso-8859-1n"
"Content-Transfer-Encoding: 8bitn"
"Plural-Forms: nplurals=2; plural=(n != 1);n"
"X-Generator: Poedit 1.5.4n"
#: 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 软件,并打开此文件。然后编辑”translation” 字段,然后保存为”my-pluginname-de_DE” 将会生成两个文件 (如果 poEdit 不自动生成第二个.mo 文件,只需转到文件 – > 首选项 – > 编辑器,然后选中 「自动」 编译.mo 文件保存 「),
然后将这两个文件放入”languages” 文件夹。
之后,打开 wp-config.php,找到这段代码:
define ('WPLANG, '');
并改为
define ('WPLANG, 'de_DE');
就这样。当 WordPress 加载时,它会读取您的插件语言文件,前缀为-de_DE 。
所以,在插件的.php 文件中,而不是:
echo "Something string";
你应该使用:
echo __("mymessage1", 'my-pluginname');
成品。现在你应该测试你的插件。
附:已使用的链接:
- codex.wordpress.org/I18n_for_WordPress_Developers
- codex.wordpress.org/Translating_WordPress
- codex.wordpress.org/Writing_a_Plugin
- codex.wordpress.org/Installing_WordPress_in_Your_Language
第四种方案
您将需要使用 POEdit 。这是一个用于创建.po / .mo 文件的免费应用程序。
我在整个主题 here 上写了一个漂亮的 in-depth 教程。您可以跳到步骤 3 – 创建文本域的翻译文件。
第五种方案
我也建议 ttp://poeditor.com/。它是一个 web-based 翻译工具,非常适合.po,.mo,.pot 和其他类型的文件。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。