Переводим (русифицируем) плагин для 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, что у нас есть файлы перевода. Типично это выполняется так:

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

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

Написать комментарий

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

Образец № 7. Заголовок уровня 3.

Август 2, 2015 г.

Для продолжения, стоит ознакомиться с экпериментом. Задачей данного образца, является демонстрация поведения ранжирования статьи при усилении ключа тегом h3. Хорошо структурированные документы более удобны для восприятия, потому тематические подзаголовки ...

Читать

General error 1366 incorrect string value...

Март 22, 2017 г.

Сегодня зачищал PDOException: SQLSTATE: General error: 1366. Происходила ошибка при записи в базу UTF строк, содержащих неизвестные базе данных UTF символы. По логам было ясно, что и куда пытается сохранить программа. Путей решения маячило целых два: ...

Читать

 

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

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



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

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

  1. Adward:

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

  2. Юрий:

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

  3. summ3r:

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