Правильный перевод темы WordPress с помощью POT-файла

Перевод темы/плагина WordPress'aМногие блогеры почему то предлагают переводить тему WordPress путем непосредственного редактирования ее файлов. Я считаю этот способ не правильным, поскольку после обновления темы — придется переводить заново. Кроме того, если понадобится перевести тему на несколько языков, придется создать несколько файлов с разным текстовым содержимым. Нужно идти другим путем.

Сегодня мы рассмотрим перевод темы, путем создания *.po и *.mo файлов из существующего POT-файла. Аналогичным способом можно перевести и плагин. Заинтересованных прошу под кат.

Для начала скачаем какую-нибудь тему. Учтите, она должна быть «готова к переводу». Что это значит? Текст в теме должен выводиться с помощью специальных функций, которые мы рассмотрим в следующей статье. А пока просто будем искать тему, которая имеет метку «translation-ready». Мне попалась под руку PageLines версии 1.0.6. Вот ссылка. Скачиваем, распаковываем архив.

Теперь нам понадобится программа Poedit. Ее можно скачать с официального сайта. Устанавливаем программу и запускаем. Если вы плохо знакомы с английским, поменяйте настройки интерфейса программы на русский. Теперь зайдем в директорию с темой. Там есть папка languages. В ней находится файл с расширением *.pot. Он нам и нужен. В программе Poedit выберем в меню Файл -> Создать каталог из POT-файла. После выбора самого файла откроется окно настроек. Заполните его аналогично следующему скриншоту:

Настройки создания каталога Poedit

Поле «формат множественного числа» можно не указывать. А можно указать такой же как и в стандартных темах WordPress’a, то есть nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2. Этот формат определяет преобразование слов и словосочетаний в нужную форму в соответствии языку. Жмем ОК и программа предложит куда сохранить файл *.po. В той же папке после сохранения она будет создавать файл *.mo с тем же именем. Для того, что бы WordPress его подхватил, нужно дать ему имя ru_RU.po. Сохраняем файл в папке languages нашей темы. Теперь Poedit загрузил фразы, и можно приступить к переводу:

Главное окно программы Poedit

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

Примечание: не удаляйте из перевода служебную информацию! Например, в фразах могут встречаться переменные. Будьте внимательны!

После окончания перевода вам нужно сохраниться, что бы автоматически создался файл ru_RU.mo. Теперь осталось залить тему на хостинг. Если у вас по каким либо причина перевод не отображается, убедитесь, что в конфигурационном файле WordPress’a указана русская локаль и что вы корректно дали имена файлам *.po и *.mo.

В следующей статье я расскажу больше о *.po и *.mo файлах и покажу как перевести плагин WordPress’a если у него нету POT-файла.

Комментарии 33

  • У меня ru_RU.po и ru_RU.mo в плагине не подхватываюся. Что делать?

    • А плагин точно поддерживает перевод?

    • Проверьте что в файле wp-config.php в основной папке сайте
      есть функция

      define(‘WPLANG’, ‘ru_RU’);

      ru_RU в данном случае — это имя файла языкового, если другое меняйте либо в wp-config.php либо имя файла .po и .mo

  • Помогите кто может — я сайт перевел через poedit — но часть сайта осталась все равно на англ языке — че делать ?

    Другой шаблон переводил — все норм

    • Скорее всего проблема в самом шаблоне. Видимо местами для вывода текста, не используются мульти-языковые функции.

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

  • спасибо. разобрался — помогло! а то в коде ковыряться уже, порядком, поднадоело.

  • Спасибо за статью! Очень познавательно. Помогла в настройках языковых файлов для темы.

  • Спасибо, то, что нужно =)

  • Чушь.
    Плохо описал
    Лучше сделай гайд

  • норм перевёл себе темку)

  • Дякую, допомогло!

    А як перенести щоб працювало на платформі wordpress.com ?

    Наприклад для сайту http://avsu.wordpress.com ?

  • Автор рассказал о том, как самому локализировать тему и многим эта статья сильно поможет. Но есть люди, которые не хотят на это тратить свое время и разбираться во всех тонкостях этого не минутного процесса. Если вы относите себя к этой второй группе, то тогда предлагаю свои услуги по русификации тем для WordPress.

  • Сколько стоит перевод темы?

  • Спасибо!!!! Очень помог а я думал что поедит не читает такой формат. Все получилось, благодарю да совет.

  • а слабо подсказать как обновить перевод темы? то бишь при установке я всё сделал как написано, но после обновления темы в шаблоне появились новые фразы, соответственно, в ru_RU.po стало не хватать переведённых фраз. как их добавить? или может как-то можно сварганить новый ru_RU на основе нового pot и старого ru_RU?

  • сам спросил, сам отвечу. тупил ибо в текущей на данный момент версии Poedit, а именно 1.6.5, не работает Память Переводов, по-крайней мере у меня. скачал версию 1.4.3 и всё стало норм, в Настройках нужно выбрать язык базы, сгенерировать Память Переводов с помощью .po файлов, которые уже имеются и запустить «Перевод с помощью ПП» в нужном файле.

  • Спасибо за статью. Долго крутил шаблон и .po и .mo, но все равно пришлось внутри ковыряться. Шаблон не был предрасположен к переводу:)

  • Выручили, спасибо)

  • Русифицирую тему, плагин БЕСПЛАТНО. Моя страница вк. Жду Вас 🙂

  • А даст ли это мультиязычность? Я например хочу 3 вариант темы сделать, анг русский и турецкий. как сделать так чтобы была мультиязычность?

    • Это более сложный момент, чем тот, что описан в статье. Ищите в интернете как реализовать мультиязычность в WordPress.

  • Спасибо, все предельно кратко и понятно!

  • А почему вы рекомендуете это делать именно POT файлом, а не плагином? В чем основная разница?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *