Перевод плагина с помощью файлов .po и .mo

2 июл. 2012 г., 22:20:10
Просмотры: 117K
Голосов: 39

Я хочу перевести этот плагин.

Плагин уже переведен на другие языки и имеет файлы .pot для добавления новых языков (насколько я понял из описания).

Как мне создать файлы .po и .mo для моего нового языка и сделать их доступными для использования плагином? Я попытался определить русский язык в моем файле wp-config.php, вставив следующее определение:

define ('WPLANG', 'ru_RU');
0
Все ответы на вопрос 5
1
50

Редактор

Существуют другие варианты, но чаще всего используется: Poedit — кроссплатформенный редактор gettext-каталогов (файлов .po).

Форматы

  • .mo означает Machine Object (Машинный Объект)
    -- скомпилированный экспорт файла .po, который используется WordPress
  • .po означает Portable Object (Переносимый Объект)
    -- редактируемый текстовый файл с переводимыми строками
    -- основан на основном файле .pot, используя функцию PoEdit Обновить из POT-файла
    -- некоторые распространяют его как основной файл, но он должен использоваться только для переводов
  • .pot означает Portable Object Template (Шаблон Переносимого Объекта)
    -- редактируемый текстовый файл, используемый для извлечения всех переводимых строк из WordPress, тем и плагинов с помощью функции PoEdit Обновить из исходников

Процедура

  • Дублируйте файл .pot и переименуйте его в plugin-basename-lang_COUNTRY.po
  • Пример для упомянутого плагина: subscribe-reloaded-pt_BR.po
    -- pt_BR означает португальский (Бразилия), но многие языки не имеют вариаций по странам...
    -- вам нужно указать свой собственный язык
  • Параметр WPLANG в файле wp-config.php должен быть установлен в соответствии с вашим языком, например, pt_BR
  • Каждый раз при сохранении файла .po, PoEdit автоматически генерирует файл .mo, который используется WordPress и, по сути, единственный, который нужно загружать

Замечания

  • Если вы выполнили полный или значительный частичный перевод, отправьте его автору плагина, чтобы он мог включить его в Репозиторий, и вы получите признание за это
  • Не забудьте сделать резервную копию вашего перевода, потому что при обновлении плагина ваш файл будет утерян
  • Предложение плагина от @user17078 довольно интересное, но я сам им мало пользовался
3 июл. 2012 г. 01:02:36
Комментарии

Сколько времени должно пройти, чтобы новый mo/po файл начал действовать?

Nemo Nemo
14 дек. 2015 г. 02:30:18
1

В каждом плагине в заголовке указано уникальное имя. (например:

/*
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 (это просто строка-напоминание, где появляется наш код)
msgid "mymessage1"
msgstr "Привет" 

#: mypluginindex.php:88
msgid "mymessage2" 
msgstr "Пока"

Сохраните этот файл как "my-pluginname-ru_RU.po" (обратите внимание, что .po - это расширение файла, убедитесь, что ваш текстовый редактор не сохранил его как "my-pluginname-ru_RU.po.TXT").

Затем скачайте программу POEDIT, откройте этот файл, отредактируйте поле "translation" и сохраните как "my-pluginname-ru_RU". Будет сгенерировано два файла (Если poEdit не генерирует второй .mo файл автоматически, перейдите в Файл -> Настройки -> Редактор и отметьте галочку "Автоматически компилировать .mo файл при сохранении").

Поместите эти два файла в папку "languages".

После этого откройте wp-config.php и найдите строку:

define ('WPLANG', '');

и измените на:

define ('WPLANG', 'ru_RU');

Вот и все. При загрузке WordPress будет читать языковой файл вашего плагина с префиксом -ru_RU.

Поэтому в .php файле плагина вместо:

echo "Какой-то текст";

используйте:

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



Готово. Теперь можете протестировать ваш плагин.

P.S. Использованные ссылки:

25 окт. 2013 г. 02:37:36
Комментарии

Я попробовал это со своей темой. В header.php у меня есть echo __("thanks-for-visiting", 'transparent');. В theme\languages\transparent-en_US.po у меня msgid "thanks-for-visiting" msgstr "Привет! Спасибо, что зашли. Посмотрите вокруг и подпишитесь на ". На фронтенде это выводит "thanks-for-visiting".

Steve Steve
10 мар. 2014 г. 08:09:07
4

Вы можете попробовать этот плагин codestyling-localization. С его помощью можно переводить ваши плагины и темы.

2 июл. 2012 г. 23:20:42
Комментарии

Это лучший плагин для перевода, который я когда-либо видел. Этот плагин легко может заменить poedit, и самое приятное — он бесплатный и удобный. Этот ответ определенно заслуживает голосов.

Gogol Gogol
2 окт. 2014 г. 12:37:10

Больше не существует.

Chris Cox Chris Cox
3 июн. 2015 г. 14:27:03

Похоже, это хорошая альтернатива: https://wordpress.org/plugins/say-what/

jetlej jetlej
10 июн. 2015 г. 21:36:29

@jetlej интересно, но в моем po-файле это, кажется, не работает :/

Nemo Nemo
14 дек. 2015 г. 02:29:49
0

Вам понадобится использовать POEdit. Это бесплатное приложение для создания файлов .po/.mo.

Я написал довольно подробное руководство по всей теме здесь. Вы можете перейти сразу к Шагу 3 - Создание файла перевода для текстового домена.

3 июл. 2012 г. 00:29:23
2

Также рекомендую http://poeditor.com/. Это веб-инструмент для перевода, который отлично работает с файлами .po, .mo, .pot и другими подобными форматами.

29 янв. 2013 г. 13:56:33
Комментарии

Посетитель предложил правку, указав на новый плагин для этого сервиса: http://wordpress.org/extend/plugins/poeditor/

brasofilo brasofilo
17 мая 2013 г. 10:33:15

poeditor.com больше не существует...

Cypher Cypher
27 апр. 2020 г. 20:15:47