Loco translate один файл не соответствует известному набору строк

Обновлено: 03.07.2024

Всем привет! Хочу поделиться с вами практикой локализации WordPress, шаблонов и плагинов. Речь пойдёт о частичном или полном переводе текста на сайте с помощью плагина Loco Translate.

  • Способы локализации
  • Плагин Loco Translate
  • Themes
  • Plugins
  • Создаём шаблон
  • Пропускаем создание шаблона
  • POT/PO/MO
  • WordPress
  • Подведём итоги

Способы локализации

Важно знать, что по умолчанию в шаблоне и плагине устанавливается тот язык, который используется в WordPress. Разумеется при условии наличия в плагинах и темах соответствующего языкового пакета. Если такого пакета нет, то в дело вступает Loco Translate.
На практике я использую четыре способа локализации того или иного элемента WordPress:

  • локализация с помощью плагина Loco Translate
  • поиск и скачивание готового файла локализации PO/MO
  • редактирование файлов PO/MO с помощью программы Poedit
  • редактирование исходного кода

Два последних варианта мы рассмотрим в отдельной статье. А сейчас поговорим о плагине Loco Translate.

Плагин Loco Translate

Как и всегда мы начнём с установки плагина:

loco translate

После установки в административной панели появится пункт меню «Переводчик Loco»:

loco translate menu

Наведя курсор мыши на него выпадает контекстное меню:

loco translate menu punkt

Нас интересуют пункты:

Themes

Рассмотрим «Themes», для этого кликните по этому пункту. После этого откроется страница со списком установленных тем:

список тем

У меня тема одна (twenty seventeen), и чтобы приступить к процессу корректировки перевода необходимо кликнуть мышью по названию темы. Далее, загрузится страница Loco Translate со списком готовых локализаций. В моём случае предустановлен лишь русский язык. Теперь наведите курсор мыши в область с названием языка и кликните по «Edit»:

themes twenty seventeen edit

Если честно, то для меня остаётся загадкой, как разработчики умудрились перевести плагин не полностью. Ведь если подумать, то главной функцией Loco Translate является локализация WordPress и всех его элементов. Просто абсурд господа. Но при сильном желании и частой локализации, можно самостоятельно дополнить перевод плагина Loco Translate.

Итак, продолжаем. После клика по «Edit» перед вами загрузится интерфейс локализации Loco Translate:

twenty seventeen loco translate

Обратите внимание, что в шаблоне присутствует 72 строки:

72 строки

В качестве примера, в колонке «Source text», кликните по строке «Categories»:

loco translate categories

Далее, немного ниже, в горизонтальной поле «EN Source text» появился английском вариант слова:

source text

А в поле «Русский translation» — его перевод на русском языке. В этом же поле можно отредактировать перевод:

russian translation

Например, вы можете с помощью Loco Translate изменить перевод «Рубрики» на более логичное название — «Категории». После всех изменений необходимо сохраниться, кликнув по «Save»:

loco translate save

По такой аналогии переводится и корректируется всё — от плагина до движка WordPress. Но мы рассмотрели самый лёгкий сценарий, когда файл-локализации уже есть.

Plugins

Двигаемся дальше, переходим к пункту «Plugins», плагина Loco Translate. Теперь рассмотрим вариант полного отсутствия перевода. Для этого я нашёл плагин без перевода на русский язык — «Autoptimize»:


Далее, я удалил файлы: исходный, с переводом и бинарный. И теперь его нужно создать. Для этого, находясь во вкладке «Plugins» Loco Translate, кликните по вашему англоязычному плагину. Теперь нажмите на «New language»:

new language

Теперь перед нами два пути: создать шаблон или пропустить этот шаг.

Создаём шаблон

Далее, Loco Translate предложит вам создать шаблон:

template missing

В основном шаблон создаётся лишь в том случае, если нужно отредактировать исходный файл перевода. Как правило, этот файл является источником перевода на другие языки. Исходные фразы и слова вы уже могли видеть в таблице «Source text»:

source text deprecated

Все данные в таблице «Source text» являются содержанием POT-файла. А файл с расширением POT — это шаблон, который содержит только оригинальный английский текст. Без создания шаблона отредактировать фразы и слова, задуманные разработчиками, с помощью плагина Loco Translate не представляется возможным. И если вам всё-таки нужно сформировать файл шаблона, то кликните по «Create template»:

template missing

После этого снова кликните по «Create template»:

new template file

После этого Loco Translate сформирует POT-файл, а далее вернёт вас на исходную страницу:

loco translate edit template

На этом этапе файл шаблона создан. Обычно его можно найти в папке шаблона, в подкаталогах «localization» и «languages»:

localization plagins

Сам путь можно найти через редактирование шаблона. Для этого, при условии, что шаблон создан, необходимо кликнуть по «Edit template»:

loco translate edit template info

И перейти во вкладку «File info»:

pot file info

Пропускаем создание шаблона

Без явной необходимости этап создания шаблона можно пропустить и сразу кликнуть по «Skip template»:

skip template

Затем загрузится страница с настройками:

new language loco translate

Вам необходимо лишь выбрать из списка «Choose a language» нужный язык. Я выбрал «Русский»:

wordpress language

После этого кликните по «Start translating»:

start translating

Далее, вас перебросит на с перечнем готовых переводов:

список language

Как видно на скриншоте выше переведено 0%. Теперь осталось лишь перевести на русский язык, кликнув по «Edit»:

russian edit language

POT/PO/MO

Внесу немного ясности:

  1. Исходный файл (слова и фразы только на английском) имеет расширение POT (Portable Object Template).
  2. Файл-перевод с английского на другой язык — PO (Portable Object).
  3. Бинарный файл (сконвектированный) для работы со скриптом — MO (Machine Object).

WordPress

На пункт меню WordPress, плагина Loco Translate, распространяется та же аналогия, что и на шаблоны и плагины. В этом пункте находится доступ к редактированию сразу четырёх файлов перевода:

файлы перевода

  • Development (перевод текстовой части пользовательской и администраторской части сайта)
  • Administration (перевод текстовой части панели управления)
  • Network Admin (перевод администраторского интерфейса в режиме мультисайта)
  • Continents & Cities (перевод названий всех стран мира)

Подведём итоги

В принципе, плагин Loco Translate прекрасно справляется с переводом, но иногда, сталкиваться с трудностями, которые можно преодолеть только через корректировку POT/PO файла.
Что ещё хотелось бы добавить — не забывайте о фильтре характеристик при выборе темы. Я уже рассказывал как им пользоваться в уроке «Установка темы на WordPress через админку».
На этой ноте хочу закончить статью. Надеюсь я доходчиво рассказал о локализации с помощью плагина Loco Translate. Если возникнут вопросы, то задавайте их в комментариях.

Большинство продуктов WordPress создано на английском языке. Редко какие темы и плагины полностью переведённы на русский, и ещё реже на какой-либо другой язык. И некоторые пользователи не понимают, как грамотно организовать перевод.

Как пользоваться Loco Translate

Итак, для начала скачайте плагин по ссылке ниже, установите на свой сайт и активируйте его.

Loco Translate

Перевод плагина в Loco Translate

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

Добавление языка в WordPress

Перевод нужно делать так:

Перевести на русский WordPress

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

Теперь вы знаете, как пользоваться Loco Translate. У этого плагина есть ещё множество настроек и опций, как общих, так и индивидуально для каждого языка и продукта. Но я не стану их рассматривать здесь. Всё необходимое для перевода я уже рассказал. Кому будет интересно, тот сможет посмотреть сем. Тем более, что Loco Translate сам переведён на русский, так что, в нём всё понятно.

Прододжаем эпопею с добавлением мультиязычности в Wordpress. В этой статье переводим надписи и элементы шаблонов Pods с помощью плагина Loco и пары хаков.

В предыдущей статье мы рассмотрели плагин WPGlobus, для переводов текстов сайта. Однако, WPGlobus не всегда удобен, поскольку расчитан на перевод содержимого сайта. Для перевода различных надписей, служебной информации и прочего, Wordpress предлагает встроенную поддержку системы переводов (i18n) на основе gettext.

Очевидно, вести эти файлы не очень удобно, даже при использовании специального ПО, поскольку это подразумевает изменение PO/MO файлов после каждого изменения файлов темы, а также это неудобно конечному пользователю — Wordpress в первую очередь делался для людей не искушённых в программировании, поэтому было бы вполне логично ожидать, что подобная система может и должна работать без участия программиста.

Решение проблемы изменения файлов переводов берёт на себя замечательный плагин Loco Translate. Loco позволяет генерировать шаблоны переводов (POT файлы) и создавать/модифицировать переводы для тем, плагинов и даже самого Wordpress.

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

Соответственно, в каталоге languages вашей темы будут храниться файлы с переводами. Тут не важно, есть–ли у вас готовые po/mo файлы или нет, Loco либо создаст новые, либо подхватит существующие файлы.

Для удобства использования переводов (а для использования в Pods Template это будет необходимостью), рекомендую создать shortcut для функции перевода:

Теперь можно установить плагин Loco Translate — описывать установку нет смысла (в wp все плагины устанавливаются одинаково), однако давайте посмотрим на интерфейс Loco:

Здесь нас интересует раздел Active themes, выбираем тему и видим примерно следующее:

Следующий шаг — создание/изменение POT файла. Переходим в Create/Edit template и кликаем по кнопке Sync, чтобы Loco подобрал шаблонные строки из стандартных функций перевода сам (__, _e), после чего добавляем все свои дополнительные шаблонные строки в файл и сохраняем шаблон (Save).

После того, как шаблон был успешно сохранён, самое время позаботиться о переводах шаблонных строк. Для этого добавляем нужные языки (New language) и переходим в режим редактирования (Edit):

Сперва необходимо синхронизировать файл переводов с шаблоном — кнопка Sync, после чего можно начать забивать переводы в поле translation (используя сочетание ctrl+enter автоматически выбирается следующая непереведённая строка).

После перевода всех нужных строк сохраняем переводы кнопкой Save.

ОК, причём тут Pods.

Как известно, Pods сам по себе очень крут и могуч, однако у Pods framework есть ещё и охрененно удобная штука под названием Pods Templates. По сути, это небольшой шаблонный движок завязанный на сущности Pods. Эти шаблоны можно использовать в шорткодах или виджетах Pods, что позволяет почти полностью избавиться от необходимости редактировать код вне админки.

Но у шаблонного движка есть один недостаток, а именно — отсутствие поддержки Wordpress i18n функций для статичного текста.

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

Но не стоит унывать! В Wordpress встроена очень мощная система хуков, поэтому мы вполне можем создать свои magic tags для шаблонов Pods!

Я уже создал feature request в официальном репозитории, и вроде как нашёл поддержку пользователей, однако, у изначального подхода имеются некоторые проблемы с безопасностью, как указал @jamesgol, поэтому в первоначальный вариант я добавил обязательный фильтр pods_template_echo_tag_allowed_functions, контроллирующий разрешённые к исполнению функции.

Этот код добавляет в Pods Templates поддержку дополнительного тега со следующей сигнатурой:

Внимание, плагин Loco Translate не отвечает за то, как настроены темы. Шаги, описанные ниже, являются примером того, как нужно использовать плагин Loco Translate применительно к правильно настроенной теме. Мы не гарантируем, что эти шаги подойдут для любой ситуации. Однако не будем рассказывать обо всех нюансах перевода в этом руководстве для новичков.

1. Выберите тему

В нашем примере мы собираемся выполнить перевод темы Omega, созданной на основе открытого кода. Мы выбрали тему Omega, потому что она правильно настроена и знаем, что предлагаемый нами вариант подходит для работы с Loco Translate.

2. Проверьте возможность переключения языков

Плагин Loco Translate не отвечает за настройку нужного языка движка WordPress. Однако мы поговорим об этом, так как считаем этот шаг важным. Если вы знаете, как настроить язык в WordPress и уже сделали это, можете пропустить этот шаг.

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

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

3. Настройте папки

Перед тем как приступить к переводу, убедитесь в том, что на вашем сайте существует следующая папка и что веб-сервер может производить запись в нее (запись в папку разрешена!):

Плагин Loco Translate также позволяет сохранять переводы внутри родной папки темы, однако эта опция предусмотрена только для разработчиков тем. Файлы внутри папки темы удаляются при обновлениях WordPress, поэтому ничего там не сохраняйте, если вы не понимаете, что делаете.

Если вы не знакомы с тем, как менять настройки доступов к файлам и папкам, изучите руководство по доступу к файловой системе. В случае возникновения сомнений проконсультируйтесь с хостинг-провайдером или системным администратором.

4. Убедитесь в наличии файла .POT

Если ваша тема не содержит файла-шаблона, плагин Loco Translate предупредит вас об этом. В нашем случае мы точно знаем, что шаблон существует, так как тема Omega правильно локализована. Чтобы убедиться, проверьте наличие файла в следующей папке:

Нам пока достаточно знать, что шаблон существует. Шаблон не нужно перезаписывать, если вы, конечно, не разработчик темы.

5. Найдите тему на панели перевода

Если вы все еще не установили и не запустили плагин Loco Translate, сделайте это сейчас. Данное руководство предполагает, что вы знаете, как устанавливать и активировать плагины WordPress.

Если вы используете функцию автоматического обновления, то увидите, что WordPress уже установил языковые файлы для темы Omega. Все эти файлы с переводами создавались сообществом переводчиков (на рисунке выше они помечены словом «System» в столбце «Folder»). Однако они нам не понадобятся, так как мы собираемся создавать собственный перевод темы.

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

6. Добавьте новый язык

7. Переведите несколько строк

В окне редактора вы увидите строки, которые тема определила на основе файла-шаблона. Непереведенные строки отображаются жирным синим шрифтом. В начале все они будут непереведенными.

Интерфейс редактора довольно прост и интуитивно понятен. Выберите строку на английском в самом верху и введите ваш перевод в нижнем окне. Не обязательно использовать кнопки редактора. Нам просто нужно ввести и сохранить перевод.

8. Проверьте наличие файла

Если вы все сделали правильно, на вашем сервере с темой Omega появится файл с греческим переводом. Загляните в папку, которую вы настроили ранее. У вас должны появиться два файла:

Убедитесь в их существовании для собственного спокойствия. Заодно узнаете, как работает плагин. Файл .PO является удобочитаемым исходным файлом. Файл .MO – это файл в двоичном формате, который WordPress загрузит по требованию темы Omega.

Плагин Loco Translate справился со своей задачей. Он скомпилировал .MO файл и сохранил его на диск с правильным именем. За все, что будет происходить далее, отвечает WordPress и тема.

9. Ознакомьтесь с результатом перевода

Наш вновь созданный файл .MO будет загружен в тему Omega (и только тему Omega) при выборе греческого языка в настройках. Давайте посмотрим, как это работает.

  • если вы еще не настроили нужный вам язык, сделайте это сейчас;
  • если вы еще не активировали тему, сделайте это сейчас.

Отлично! У нас все получилось. Наше руководство подошло к концу.

Если вы не можете найти текст для перевода в теме

Читайте также: