Автор: Stasyuk Eugene 133 Метки: , 02.05.2022

Работая над созданием темы на WordPress мы довольно часто сталкиваемся с такими надписями как «загрузить еще, автор, метки» и т.д. Например как в моем блоге:

Пример записей

Хорошо когда сайт на одном языке. Тогда с ними то особо делать ничего и не нужно. Но что делать когда сайт мультиязычный.

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

На просторах интернета довольно много информации в которой фигурирует использование программы Poedit. Но есть куда более изящный способ. Для этого нам пригодится плагин Loco Translate. Данное дополнение крайне полезное в использовании — благодаря ему можно переводить не только записи тем, но и плагинов. Но конкретно сегодня поговорим про перевод темы.

За подсказку в данном вопросе отдельное спасибо Александру Мотцу. Он как раз таки и навел меня на этот способ.

Здесь я не буду сильно вдаваться в теорию. Сосредоточимся конкретно на процессе.

Этапы:

  1. В файлах с темой нужные нам записи помещаем в одну из этих функций _e(), __(); Разница между этими функциями лишь в том, что _e() сразу выводит текст на странице, а __() только его получает (поэтому для выода текста перевода нужно использовать echo).
    _e('Author', 'my-site');
    echo __('Author', 'my-site');

    Функции имеют два аргумента: Первый — текст, который будем переводить (обязательный). Второй: ID перевода. Область определения перевода, обозначается названием, которое затем станет идентификатором в PHP (необязательный).
    Функции

  2. Загружаем к себе на сайт плагин Loco Translate
  3. В админ-панеле в левом меню находим пункт Loco Translate, наводим на него мышкой и кликаем на пункт Темы.В меню
  4. Мы оказались на странице где выведены все загруженные темы которые нам доступны для использования на сайте. Выбираем нашу текущую тему. В данном случает это тема под названием «My»Темы
  5. Прежде чем переходить к следующему этапу, рекомендую в папке с темой создать директорию с названием languages. Здесь мы будем хранить все файлы которые связаны с переводом нашей темы.languages
  6. После пункта 4, если вы создаете тему с нуля, то скорее всего на открывшейся странице вас встретит вот такое сообщение — Не найдено переводов для «name». Поэтому следующим шагом кликаем на надпись выше «Создать шаблон».
    Нет-шаблона Таким образом плагин сканирует нашу тему и все надписи которые мы объявили в теме с использованием функций в пункте 1 выведет в файл в .pot формате — это будет шаблон для переводов без самого перевода.
  7. Далее мы создаем непосредственно перевод записей. Кликаем на надпись «Новый язык».Новый язык
  8. В данном окне настраиваем язык на который будем переводить и место куда будем сохранять файл перевода (В моем случае мы переводим тему на украинский язык и сохраняем файл в папку languages). Настройки языкаЗакончив с этим кликаем внизу на кнопку «Начать перевод». Результатом данного шага у нас будут два файла перевода в формате .po и .mo.
  9. Далее мы находим надписи которые мы будем переводить. В области со списком надписей находим нужную и кликаем по ней. У нас будут доступны два поля внизу: первое это то, как отображается надпись в теме, второе — то как эта надпись должна будет отображаться в переводе. Собственно во втором поле и вводим нужный нам перевод и сохраняем изменения. Все остальные надписи мы переводим таким же способом.
    перевод
  10. Последний штрих — это загрузить файл перевода темы (.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');

Другие статьи

FAQ question

FAQ

FAQ

Как убрать префикс «Категория, Метка …» с страниц архива? Поместить фильтр в файл functions.php в папке с нашей темой Как убрать scale изображений при загрузке в медиа? Поместить фильтр в файл functions.php в папке с нашей темой Как стилизовать скроллбар (css)? Почему на сайте WordPress на других языках не работает поиск? Возможно стоит обратить внимание […]

Всплывающее окно на сайте (попап, модальное окно) pop-up window

Всплывающее окно на сайте (попап, модальное окно)

Всплывающее окно на сайте (попап, модальное окно)

Когда я только осваивал азы разработки, всплывающее окно я делал вручную. Да, да — вместо того, чтобы найти какое-то готовое решение, я занимался этим неблагодарным делом 🤪. Мне казалось, что особо ничего сложного в этом нет. Но, только спустя какое-то время работы над данным вопросом, я начал осознавать, что сделать это не так уж и […]