问题描述

我想翻译 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');

 成品。现在你应该测试你的插件。

附:已使用的链接:

第四种方案

您将需要使用 POEdit 。这是一个用于创建.po / .mo 文件的免费应用程序。

我在整个主题 here 上写了一个漂亮的 in-depth 教程。您可以跳到步骤 3 – 创建文本域的翻译文件。

第五种方案

我也建议 ttp://poeditor.com/。它是一个 web-based 翻译工具,非常适合.po,.mo,.pot 和其他类型的文件。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。