Перевод тем WordPress на примере Fluida

Итак свежий WordPress установлен (в моем случае это версия 4.5.3), понравившаяся тема сайта (мне понравилась Fluida) тоже установлена и блог готов, но…

На сайте и в админке появились фразы на английском языке. Тема явно не локализована. Сразу встает вопрос о переводе всех кнопок и ссылок (если конечно тема еще не локализована до нас или не разработана русскоговорящим программистом).




Естественно погуглив пару минут (больше как всегда лень) первая пара страниц выдачи поиска привела к выбору:

  • использовать программу poedit
  • воспользоваться плагином Loco Translate

Сначала так как я новичок мне конечно захотелось установить плагин, чтобы рулить всем процессом из админки, да и устанавливать программу на компьютер, чтобы перевести тему показалось слишком заумным мероприятием (опыт использования других CMS и web-приложений подсказывал, что где-то просто есть текстовый файл с сопоставлением английских фраз с русскими).

Но не все оказалось так просто…

Итак ошибки перевода при использовании плагина:

  • не переводится ссылка Continue Reading – читать далее, используется внизу каждой записи
  • не переводится слово Comment в поле ввода нового комментария
  • и т.д.

В коде темы при беглом осмотре выявлено следующее: не верно отображаются фразы перевод которых сделан с помощью функции _x(), тогда как с функцией __() все нормально и русский текст виден.

Если кому интересно пример кода можно увидеть в Внешний вид – Редактор – файл “comments.php”

Описание специфики работы функция вы найдете в поиске без труда. Лишь вкратце скажу, что _x() использует контекст

Синтаксис и вызов:

например

понятно первый параметр – это текст который нужно перевести, второй – это контекст, чтобы выполнить перевод одной и той же фразы в нескольких местах по разному, а третий это в нашем случае имя темы. Таким образом функция позволяет вставлять в код один и тот же текст, который можно перевести по-разному в зависимости от контекста.

например

тут с параметрами все проще и все аналогично описанию  функции _x().

Если приводить пример из вышеуказанного файла “comments.php”, то:
__( ‘Name*’, ‘fluida’ ) – работает корректно,
_x( ‘Comment’, ‘noun’, ‘fluida’ ) – не отображает перевод.

Почему-то исходный файл fluida.pot содержал ошибки и не описывал контекст, например:

хотя должно быть вот так:

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

 

При этом надо также не забывать, что не все тексты темы переводятся при помощи стандартного механизма перевода. Некоторые фразы указаны в настройках или программном коде темы, так как они используются программно несколько иначе чем обычный текст. Например для темы Fluida это текст “Continue reading“.

10 Comments

    1. sudo mc

      Перевести или убрать совсем? Если вы хотите изменить заголовок “Архивы”, то зайдите в виджеты (меню внешний вид – виджеты), найдите там виджет архивных категорий и укажите для него заголовок

  1. Дмитрий

    Просто я использую Qtranslate, и надо ввести несколько вариантов перевода темы, сохранял и так fluida-ru_RU.po, и так ru_RU.po. но ничего не меняеться.

    1. sudo mc

      Вообще по-умолчанию ru_RU.po
      У меня так (но в Loco Translate)
      Проверьте что в папке /wp-content/languages есть файл ru_RU.po и что он обновляется после ваших изменений перевода через плагин Qtranslate (хотя бы что меняется дата изменения файла)

    1. sudo mc

      Конечно же не жало. Просто времени нет и мой перевод не полный, а только на уровне используемых в интерфейсе фраз. Очень многое, особенно из админки, у меня не переведено. Если закончу перевод до конца, то обязательно поделюсь.

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

Ваш e-mail не будет опубликован.