Работая над созданием темы на WordPress мы довольно часто сталкиваемся с такими надписями как «загрузить еще, автор, метки» и т.д. Например как в моем блоге:
Хорошо когда сайт на одном языке. Тогда с ними то особо делать ничего и не нужно. Но что делать когда сайт мультиязычный.
Если заказчику в перспективе нет необходимости в будущем менять их названия, тогда и смысла выводить для редактирования в админку их тоже нет.
На просторах интернета довольно много информации в которой фигурирует использование программы Poedit. Но есть куда более изящный способ. Для этого нам пригодится плагин Loco Translate. Данное дополнение крайне полезное в использовании — благодаря ему можно переводить не только записи тем, но и плагинов. Но конкретно сегодня поговорим про перевод темы.
За подсказку в данном вопросе отдельное спасибо Александру Мотцу. Он как раз таки и навел меня на этот способ.
Здесь я не буду сильно вдаваться в теорию. Сосредоточимся конкретно на процессе.
Этапы:
- В файлах с темой нужные нам записи помещаем в одну из этих функций _e(), __(); Разница между этими функциями лишь в том, что _e() сразу выводит текст на странице, а __() только его получает (поэтому для выода текста перевода нужно использовать echo).
_e('Author', 'my-site'); echo __('Author', 'my-site');
Функции имеют два аргумента: Первый — текст, который будем переводить (обязательный). Второй: ID перевода. Область определения перевода, обозначается названием, которое затем станет идентификатором в PHP (необязательный).
- Загружаем к себе на сайт плагин Loco Translate
- В админ-панеле в левом меню находим пункт Loco Translate, наводим на него мышкой и кликаем на пункт Темы.
- Мы оказались на странице где выведены все загруженные темы которые нам доступны для использования на сайте. Выбираем нашу текущую тему. В данном случает это тема под названием «My»
- Прежде чем переходить к следующему этапу, рекомендую в папке с темой создать директорию с названием languages. Здесь мы будем хранить все файлы которые связаны с переводом нашей темы.
- После пункта 4, если вы создаете тему с нуля, то скорее всего на открывшейся странице вас встретит вот такое сообщение — Не найдено переводов для «name». Поэтому следующим шагом кликаем на надпись выше «Создать шаблон».
Таким образом плагин сканирует нашу тему и все надписи которые мы объявили в теме с использованием функций в пункте 1 выведет в файл в .pot формате — это будет шаблон для переводов без самого перевода. - Далее мы создаем непосредственно перевод записей. Кликаем на надпись «Новый язык».
- В данном окне настраиваем язык на который будем переводить и место куда будем сохранять файл перевода (В моем случае мы переводим тему на украинский язык и сохраняем файл в папку languages). Закончив с этим кликаем внизу на кнопку «Начать перевод». Результатом данного шага у нас будут два файла перевода в формате .po и .mo.
- Далее мы находим надписи которые мы будем переводить. В области со списком надписей находим нужную и кликаем по ней. У нас будут доступны два поля внизу: первое это то, как отображается надпись в теме, второе — то как эта надпись должна будет отображаться в переводе. Собственно во втором поле и вводим нужный нам перевод и сохраняем изменения. Все остальные надписи мы переводим таким же способом.
- Последний штрих — это загрузить файл перевода темы (.mo). Делаем мы это с помощью функции load_theme_textdomain() которая будет использоваться в хуке after_setup_theme. Данный код помещаем в файл темы functions.php:
function my_theme_setup() { load_theme_textdomain('my-site', get_template_directory() . '/languages'); } add_action('after_setup_theme', 'my_theme_setup');