Как перевести плагин wordpress

Представляю вашему вниманию статью о том, как осуществить перевод плагинов wordpress на русский и не только.
Традиционно немного о предыдущих статьях.

В статьях как написать плагин для WordPress ( часть 1 ) и Как создать плагин для WordPress ( часть 2 ), я детально рассказывал о создании своего плагина.Но, логично если мы его создали, то вероятно нам захочется представить его не только русскоязычному населению, но и тем, кто живет за пределами 1/6 части суши.

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

 

«Ну-с, продолжим», —  как сказала мать сорока детей.

В плагине описанном в статье Как создать плагин ( часть 2 ), мы выводим сообщение посетителю, который незалогинился у нас на сайте ( страница запрещена к просмотру обычным посетителям ).

В коде есть такие строки

"<p>".__('Для просмотра этой страницы залогиньтесь!', 'my_restrict')."</p>

Что это означает?

Строка внутри функции __()  будет переведена на язык сайта, который стоит в пункте админ-меню «Настройки» опция «Site Language«.

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


add_action( 'plugins_loaded', 'true_load_plugin_textdomain' );

function true_load_plugin_textdomain() {
 load_plugin_textdomain( 'my_restrict', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}

это значит, что файлы с названием нашего текстового домена будут загружены из папки нашего плагина из подкаталога languages, который нужно создать заранее.

Теперь самое основное — нужно как-то реализовать перевод. Сам Вордпресс за вас этого не сделает. А кто?

Программа Poedit (скачать)!

После установки программы — запустим ее!

Выбрав в меню «File->New»

Как перевести плагин wordpress

Нам предлагается выбрать язык НА КОТОРЫЙ! будем переводить.

В моем случае это English(United States) — информация взята из админ-меню, пункт «Настройки».

ОЧЕНЬ ВАЖНО! То значение которое в скобках.

Перейдем в пункт меню «Catalog->Properties».

перевод плагина Poedit

Далее напишем имя нашего проекта, выберем кодировку UTF-8.

Нажмем «Save».

Программа по умолчанию поставит имя en.po,  вот здесь важно сохранить файл с именем в формате {наш текстовый домен}-{en_EN}.po.

В нашем случае имя будет my_restrict-en_US.po. Помните, что я говорил выше насчет «ОЧЕНЬ ВАЖНО! То значение которое в скобках«.

Если имя будет my_restrict-en_EN.po, то нихрена у вас не заработает!

Перейдем к следующей закладке. Source paths

Там где первый зеленый плюс, выберем файл, в котором у нас прописаны текстовые константы в таком формате

"<p>".__('Для просмотра этой страницы залогинтесь!', 'my_restrict')."</p>

в данном случае это наш plugin.php.

Далее посетим закладку Source keywords.


Выберем new item

перевод плагина source keywords

Добавим __().

Т.е. чтобы просканировалось все что в качестве аргументов этой функции.

И нажмем ОК.

Нажмем кнопку Update.

Появилось окно с нашими просканированными строками.

Poedit сканировать строки

Внизу для каждой строки напишем ее перевод в пункте Translation.

И снова нажмем Save.

Автоматически в папке с нашим языковым и понятным файлом my_restrict-en_US.po, который понимаем мы, если открыть его в текстовом редакторе, сгенерировался файл my_restrict-en_US.mo, который понимает WordPress.

И теперь у нас вместо русской строки «Для просмотра этой страницы залогинтесь!«, появилась английская версия «Please LogIn!«, которую мы написали в пункте Translation, напротив нашей строки. Ведь в моей версии WordPress на английском. У вас может быть на русском или украинском или на любом другом.

логин wordpress плагин

Таким образом можно делать перевод кнопок, сообщений вашего плагина на любой язык, создавая новые файлы формата {наш текстовый домен}-{язык_ЯЗЫК}.po.

Спасибо за внимание!

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

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