• Как самостоятельно перевести плагины для WordPress?

    Если вы задумали завести блог, то с выбором отлично русифицированной темы для WordPress у вас проблемы не возникнет. Их в Интернете превеликое множество! А вот плагины — это проблема. Иногда блогу (и вам, естественно) нужны опросы, формы заказа, голосования за статьи и другие надстройки. Иногда — значительно реже — эти плагины можно найти с русификатором, как правило — плагины писаны на английском. Но! Русифицированные плагины пестрят орфографическими ошибками, что режет глаз, и не всегда переведены полностью, что отвлекает от работы на размышления о назначении кнопки.

    Пошуршав по сайтам, блогам и иже с ними, я нашла доступную моему литературному мозгу технологию русификации плагинов, и с удовольствием ею с вами делюсь.

    Правильная русификация плагинов WordPress

    Автор текста и технологии Геннадий Ка

    Когда заглядываешь в код переведенного кем-нибудь плагина или темы оформления, то частенько сталкиваешься с таким вот явлением — все сообщения переведены «в лоб» прямо в PHP-коде самого плагина. И сразу возникает вопрос. А зачем?

    Конечно, бывают ситуации когда плагин состоит только из одного файла или программер был не очень валифицированный, ничего не слышал о GetText, поэтому при написании кода не пользовался тэгами вышеуказанной системы. Здесь перевод «в лоб» наиболее оправдан.

    Но, если плагин состоит из нескольких файлов кода, а программист заранее позаботился о том, чтобы можно было его творение быстро и без особых заморочек заставить говорить на другом языке и использовал при кодировке плагина с GetText, то нафига рыться в коде десятков php-файлов меняя тексты сообщений там, если можно сделать все аккуратно и с меньшими трудозатратами.

    Начинаем процесс.

    Сначала загляните в текст php-файлов плагина, который решили перевести и поищите нет ли в коде следующих тэгов: _e или __?

    Примером подобных строк могут быть следующие:

    …

    Если эти тэги присутствуют в коде, то нам очень повезло, процесс перевода будет очень легок и удобен. В общем-то настоящий пост именно об этом случае.

    Как Вы уже, наверное, поняли, именно эти тэги и используются системой GetText, которая была создана для того, чтобы было легко локализовывать софт.

    Нужно предварительно сказать, что GetText работает следующим образом, она в процессе работы ищет в папке плагина файлы с расширением .po и .mo. Это и есть файлы перевода на нужный язык. Если находит, то начинает использовать их для вывода сообщений, если не находит, то выводит на экран сообщения, которые прописаны внутри кода плагина.

    Так вот, чтобы перевести плагин, нам нужно получить файлы .po и .mo.

    Для начала нам необходимо найти и извлечь все требующие перевода строки из php-кода плагина. Кроме того, желательно поместить все найденные строки в файл .po, который затем и нужно будет переводить. Поможет нам в этом деле утилита xgettext.exe которую можно легко найти в сети.

    Будем считать, что она найдена и готова к первому запуску на Вашем компе.

    Если в плагине всего один файл, то строка запуска этой утилиты будет выглядеть следующим образом:

    xgettext nameplugin.php

    Где, xgettext- название запускаемой программы, а через пробел — название файла, с которым производятся манипуляции.

    Результатом работы этой утилиты будет файл: messages.po, который будет содержать список строк, которые нужно перевести на русский язык.

    Но если файлов в плагине много, то действовать будем несколько по иному.

    Напишем в «Блокноте» небольшой bat-файл, который будет содержать в себе следующий примерный текст:

    xgettext –keyword=__ –keyword=_e –default-domain=namedomainplugin –language=php –output= nameplugin.po 1.php 2.php 3.php 4.php

    Давайте подробно рассмотрим команды этого bat-файла:

    –keyword=__ –keyword=_e — описывают те тэги, строки с которыми нужно искать

    –default-domain=namedomainplugin — название папки где находятся файлы плагина

    –language=php — указывает на каком языке программирования написан плагин, в нашем случае это PHP, так как WordPress написан именно на нем.

    –output=nameplugin.po — определяет название выходного .po файла (nameplugin.po)

    Далее через пробелы — перечисляются названия всех файлов плагина

    Это не все опции с которыми можно запускать утилиту. Остальные вспомогательные и вы можете ознакомиться с ними, запустив xgettext с опцией –help для вывода подсказки. Один минус — эта подсказка тоже англоязычная.

    Итак, файл .po создан, что дальше?

    Приступаем к собственно переводу.

    Полученный в результате предыдущих действий файл представляет собой обыкновенный текстовый файл, содержащий в себе все строки, нуждающиеся в переводе.

    Он выглядит примерно так:
    # SOME DESCRIPTIVE TITLE.

    # Copyright (C) YEAR THE PACKAGE’S COPYRIGHT HOLDER

    # FIRST AUTHOR , YEAR.

    #

    #, fuzzy

    msgid “”

    msgstr “”

    “Project-Id-Version: PACKAGE VERSION\n”

    “POT-Creation-Date: 2007-03-03 02:56-0800\n”

    “PO-Revision-Date: 2007-11-19 11:39+0300\n”

    “Last-Translator: Вася Пупкин \n”

    “Language-Team: Russian < VPupkin@yandex.ru >\n”

    “MIME-Version: 1.0\n”

    “Content-Type: text/plain; charset= utf-8\n”

    “Content-Transfer-Encoding: 8bit\n”

    #: prueba.php:12

    msgid “Hello world”

    msgstr “”

    #: prueba.php:12 prueba.php:13

    msgid “This is a test ”

    msgstr “”

    #: prueba.php:13

    msgid “This is a test”

    msgstr “”

    Сначала вверху идет блок служебных строк. Некоторые служебные строки требуют внесения значений. Наиболее важные из них следующие:

    “Last-Translator: Вася Пупкин \n”

    “Language-Team: Russian < VPupkin@yandex.ru >\n”

    “Content-Type: text/plain; charset= utf-8\n”

    Last-Translator: — вводите имя и email переводчика, т.е. свои,
    Language-Team: — тут Russian — язык перевода и опять email,
    Content-Type: — тут вводите text/plain; charset= utf-8.
    Кодировка, UTF-8 — стандартная для WordPress. Ну вот, все важные заголавки заполнены. Далее идут собственно строки требующие перевода, например:

    msgid “Hello world”,
    а ниже нее
    msgstr “”

    строка в которую между кавычками нужно поместить перевод фразы.

    Переводим все сообщения до конца и вот у нас полностью готов файл .po — двигаемся дальше.

    GetText не работает с .po файлом. Чтобы информация из него стала доступной плагину, этот файл нужно скомпилировать. Этим занимается еще одна утилита, которую нужно скачать из сети на Ваш компьютер. Эта утилита — msgfmt.exe.

    Запускаем ее со следующими (я думаю понятными) параметрами

    msgfmt file.po file.mo

    В результате ее работы появляется второй файл с расширением .mo.

    Вот, собственно, и все. Перевод готов.

    Обязательная хитрость.

    Чтобы переведенный плагин говорил на русском языке структура названия .po и .mo файлов должна быть следующая:

    nameplugin-ru_RU.po
    и
    nameplugin-ru_RU.mo.

    Префикс -ru_RU должен присутствовать обязательно, иначе плагин так и не заговорит по-русски.

    Закачайте готовые файлы .mo и .po в папку с вашим переводимым на русский язык плагином. Обязательно удостоверьтесь, что в файле настроек блога WordPress wp-config.php в строке

    define (’WPLANG’, ‘ru_RU’);

    стоит именно ru_RU. Если все рекомендации соблюдены, то Ваш плагин теперь будет общаться с Вами на русском языке.

    А.С.

    Метки:

    Постоянная ссылка на статью: Как самостоятельно перевести плагины для WordPress?

  • Комментариев: 8

    WP_Modern_Notepad
    • AcallGen Пишет:

      Спасибо вам за сайт, очень полезный ресурс, мне очень нравится

    • Александ Пишет:

      У меня вопрос следующего характера . Откуда контент ? Потому что у меня точно такой же и я его покупал у биржи ссылок. Ответ напишите сюда же зайду через день будем разбираться.

    • А.С. Пишет:

      Там ссылка есть на источник — в начале поста.

    • Павел Пишет:

      Да все понятно, Спасибочки за пост.

    • Krion Пишет:

      Автор, сейчас делаю плагин для вп, необходима мультиязычность. Создал при помощи поедитора в папке плагина файл ru_RU.po, вроде все зделал как в твоей статье написанно, но перевода на русский не просходит, подскажи пожалуйста в чем может быть причина?
      Заранее спасибо!

    • Виктор Пишет:

      Интересно.Есть желание посмотрите мой блог на похожие темы.
      wp-designer.ru

    • Tapioka Пишет:

      Добрый день, скажите занимаетесь ли Вы переводом плагинов под заказ? Если да то сколько будет стоить перевод job manager ?
      Спасибо!

    • А.С. Пишет:

      Нет, не занимаюсь :) В целях экономии времени использую готовые переводы.

    Оставьте комментарий

    Замечание: Комментарии модерируются и будут опубликованы после проверки.

Статьи