使用.po .mo文件翻译插件


34

我想翻译这个插件。

该插件已被翻译成其他语言,并且具有.pot用于添加新语言的文件(据我从描述中了解)。

如何为我的新语言创建.po.mo归档文件,并使其可访问以便被插件使用?我尝试wp-config.php通过在下面的定义中插入文件来定义俄语:

define ('WPLANG', 'ru_RU');

Answers:


43

编辑

还有其他一些,但这是最常用的:Poedit,一个跨平台的gettext目录(.po文件)编辑器。

格式

  • .mo代表Machine Object- 由WordPress使用
    .po文件的编译导出
  • .po代表可移植对象
    (Portable Object)-具有翻译字符串的可编辑文本文件
    -基于主.pot文件,使用从POT文件中的更新 PoEdit功能
    -有些人将其作为主文件分发,但应仅用于翻译
  • .pot代表可移植对象模板
    -可编辑文本文件,用于使用WordPress 来源更新和 PoEdit功能从WordPress本身以及主题和插件中获取所有可翻译字符串

步骤

  • 复制.pot文件并将其重命名为 plugin-basename-lang_COUNTRY.po
  • 例如,用于引用插件情况: - pt_BR表示意味着葡萄牙巴西,但是很多语言都没有一个国家的变化...... -你必须填写与你自己的语言subscribe-reloaded-pt_BR.po

  • WPLANGwp-config.php文件中必须设置为你的语言,例如,pt_BR
  • 每次保存.po文件时,PoEdit都会自动生成一个.mo文件,这是WordPress使用的文件,基本上是您唯一需要上传的文件

观察结果

  • 如果您进行了完全或不错的部分翻译,请将其提交给插件作者,以便他可以将其包括在存储库中,您因此而获得好评
  • 别忘了备份翻译,因为如果升级插件,您的文件将丢失
  • @ user17078插件建议非常好,但是我从没用过

1
新的mo / po文件应生效多长时间?
Nemo 2015年

8

您可以尝试使用以下代码样式本地化插件:。您可以使用此翻译您的插件和主题。


1
这是我见过的最好的翻译插件。这个插件可以随时拥有poedit,最好的部分是它免费且用户友好。这个答案应该至少被投票通过。
Gogol 2014年

1
不复存在。
克里斯·考克斯

1
这看起来是一个不错的选择:wordpress.org/plugins/say-what
jetlej 2015年

@jetlej有趣,虽然似乎不适用于我的po文件:/
Nemo

8

(以下是翻译为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.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');

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

因此,在插件的.php文件中,而不是:

echo "Something string";

您应该使用:

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



完了 现在您应该测试您的插件。

ps使用链接:


我尝试了以我的主题。在header.php中,我有echo __("thanks-for-visiting", 'transparent');。在theme \ languages \ transparent-en_US.po中,我有msgid "thanks-for-visiting" msgstr "Hello! Thank you for visiting. Take a look around and subscribe to the "。这将在前端输出“感谢访问”。
2014年

5

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

我在这里针对整个主题写了一篇非常深入的教程。您可以跳到步骤3-为文本域创建翻译文件。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.