Переводим (русифицируем) плагин для wordpress

Допустим вы написали плагин для wordpress. Что дальше? Можно ли как то расширить аудиторию пользователей, чтобы стяжать ещё большую славу :)? Ответ, конечно же, — да, можно. Иначе этой статьи  бы не было. Расскажу, как сделать и подключить файлы переводов для некого абстрактного плагина.

Сначала разберемся как же устроена «многоязычность» в wordpress. Достаточно поковырять любой многоязычный проект и будут ясны составляющие этого коктейля, а именно:

  • Использование специальных функций движка:

где $text — строка подлежащая переводу, а $domain — это префикс файла-словаря, откуда следует брать перевод. Весьма разумная задумка с префиксом файла, позволяет получать уникальный перевод одной и той же фразы в контексте данного модуля.

  • Наличие специальных языковых файлов с переводами и расширениями .po и .mo. Файл PO — это по сути файл-проект, для системы он не нужен, а нужен он тем, кто тоже хочет по-переводить ваш плагин на свой язык. Тогда они берут его за основу для своего языка. Вообще, по правилам хорошего тона, следует выкладывать ещё файл с расширением .pot, но об этом чуть чуть позже. Файл .mo, как раз содержит скомпилированные для сайта переводы и загружается системой, если мы скажем, где его можно взять.
  • Системе нужно сказать, что у нас есть файлы переводов, и указать где они лежат, но сделать это нужно до того, как сами фразы будут пытаться переводиться — т.е. на стадии инициализации.

Пойдем прямо по пунктам.

С функциями __($text, $domain) и _e($text, $domain), думаю, все понятно. Разве что, пока не ясно, где мы задаём значение $domain. Узнаем это позже.

Второй пункт — нужно подготовить словари. Где взять редактор и как вообще готовить эти словари. Такой редактор есть, называется PoEdit, в вот домашняя страничка PoEdit. Скачайте его от туда. Редактор позволит создать как новый файл .po, так и нужный нам .mo. Можно также сделать .po вручную, т.к. это обычный текстовый файл. Наиболее простой способ — взять какой то готовый .po (.pot) файл, поменять значения в шапке на подходящие вашему проекту и добавить после шапки строки с вашими ключевыми константами, переводом которых вы озадачены. Давайте взглянем на такой пример:

После шапки (в которой принципиальное значение, наверное, имеет только указание на кодировку) идут однотипные пары значений — msgid и msgstr. Сначала в msgid вы указываете что переводить, а потом в msgstr — на что переводить. Файл, в котором указаны только значения msgid (как в нашем примере) — записывается с расширением .pot — им будет удобно пользоваться другим разработчикам-локализаторам, которые захотят перевести ваш плагин на свой, к примеру, родной язык.

Копия .pot записывается с расширением .po и открывается PoEdit. Там мы видим довольно простую картину — два окошечка, в одном надо выбирать фразы, а во втором вводить переводы этих фраз. Все довольно просто, думаю, вы разберетесь. Перед выходом из программы,  сохранитесь. Автоматически будет сгенерирован файл .mo.

У нас практически все готово. Осталось правильно назвать наши файлы и куда то их сложить. Имена языковых файлов состоят из двух частей: [domain]-[xx_XX].mo, [domain]-[xx_XX].po и файл [domain].pot. Вместо [domain] рекомендую использовать имя вашего плагина. [xx_XX] — это язык локализации. Он, к примеру, устанавливается в файле wp-config.php. Для русского языка выглядит как «ru_RU».

Куда сложить файлы. Рекомендую (это не обязательно) сделать для них отдельную папку внутри папки вашего плагина, например «languages».

Тогда нам останется выполнить последний шаг. А именно, сообщить wordpress, что у нас есть файлы перевода. Типично это выполняется так:

Теперь посмотрим пример кода (до и после), где мы выполняем вывод текстовой константы:

Если остались ещё вопросы — пишите.

Мало букафф? Читайте есчо !

Тонкости настройки в .gitignore

Июль 17, 2017 г.

Настройки в файле .gitignore позволяют исключить из списка файлов сканируемых GIT, все то что отслеживать не надо. Обычно это так называемые юзер-файлы, изображения, архивы, документация и т.п. В данной статье рассмотрим типовой случай настоек в .gitignore. ...

Читать

А что такое SERIAL и чем он отличается от INT?

Июль 7, 2025 г.

В SQL, когда вы создаёте поле для идентификатора (id), ключа в таблице, часто используется либо INT, либо SERIAL. Они похожи, но не совсем одно и то же. INT — просто числовой тип данных. Если вы хотите, чтобы значения увеличивались автоматически ...

Читать

Добавляем в редактор Wordpress дополнительные поля загрузки картинок

Август 2, 2019 г.

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

Читать

Удаление неиспользуемых файлов в Drupal

Октябрь 17, 2024 г.

Особенно полезно, когда вы использовали проект как шаблон для другого сайта и надо почистить данные. Друпал хоть и показывает статистику использования файлов, но удалять файлы не позволяет из реестра /admin/content/files. Напишем небольшой скрипт, ...

Читать
 

Комментарии к «Переводим (русифицируем) плагин для wordpress»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Переводим (русифицируем) плагин для wordpress”

  1. Adward:

    Не получается по Вашей схеме русифицировать плагин eSop :(

  2. Юрий:

    Ой спасибо! Перевел FancyBox и подключил, до этого какие то продвинутые способы подключения насмотрелся, а так как в функциях несилен, то неполучалось, а по вашему способу, в легкую!

  3. summ3r:

    Если Вы заинтересованы в инструменте, который обеспечивает быстрый и эффективный перевод тем и плагинов WordPress, я рекомендую Вам использовать этот инструмент на базе web: http://poeditor.com/ Особенностью данного инструмента является наличие плагина, который Вы можете использовать для интеграции его API в Ваш WordPress. Это позволяет Вам сэкономить значительное время на процессе организации файлов.