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»:
Наведя курсор мыши на него выпадает контекстное меню:
Нас интересуют пункты:
Themes
Рассмотрим «Themes», для этого кликните по этому пункту. После этого откроется страница со списком установленных тем:
У меня тема одна (twenty seventeen), и чтобы приступить к процессу корректировки перевода необходимо кликнуть мышью по названию темы. Далее, загрузится страница Loco Translate со списком готовых локализаций. В моём случае предустановлен лишь русский язык. Теперь наведите курсор мыши в область с названием языка и кликните по «Edit»:
Если честно, то для меня остаётся загадкой, как разработчики умудрились перевести плагин не полностью. Ведь если подумать, то главной функцией Loco Translate является локализация WordPress и всех его элементов. Просто абсурд господа. Но при сильном желании и частой локализации, можно самостоятельно дополнить перевод плагина Loco Translate.
Итак, продолжаем. После клика по «Edit» перед вами загрузится интерфейс локализации Loco Translate:
Обратите внимание, что в шаблоне присутствует 72 строки:
В качестве примера, в колонке «Source text», кликните по строке «Categories»:
Далее, немного ниже, в горизонтальной поле «EN Source text» появился английском вариант слова:
А в поле «Русский translation» — его перевод на русском языке. В этом же поле можно отредактировать перевод:
Например, вы можете с помощью Loco Translate изменить перевод «Рубрики» на более логичное название — «Категории». После всех изменений необходимо сохраниться, кликнув по «Save»:
По такой аналогии переводится и корректируется всё — от плагина до движка WordPress. Но мы рассмотрели самый лёгкий сценарий, когда файл-локализации уже есть.
Plugins
Двигаемся дальше, переходим к пункту «Plugins», плагина Loco Translate. Теперь рассмотрим вариант полного отсутствия перевода. Для этого я нашёл плагин без перевода на русский язык — «Autoptimize»:
Далее, я удалил файлы: исходный, с переводом и бинарный. И теперь его нужно создать. Для этого, находясь во вкладке «Plugins» Loco Translate, кликните по вашему англоязычному плагину. Теперь нажмите на «New language»:
Теперь перед нами два пути: создать шаблон или пропустить этот шаг.
Создаём шаблон
Далее, Loco Translate предложит вам создать шаблон:
В основном шаблон создаётся лишь в том случае, если нужно отредактировать исходный файл перевода. Как правило, этот файл является источником перевода на другие языки. Исходные фразы и слова вы уже могли видеть в таблице «Source text»:
Все данные в таблице «Source text» являются содержанием POT-файла. А файл с расширением POT — это шаблон, который содержит только оригинальный английский текст. Без создания шаблона отредактировать фразы и слова, задуманные разработчиками, с помощью плагина Loco Translate не представляется возможным. И если вам всё-таки нужно сформировать файл шаблона, то кликните по «Create template»:
После этого снова кликните по «Create template»:
После этого Loco Translate сформирует POT-файл, а далее вернёт вас на исходную страницу:
На этом этапе файл шаблона создан. Обычно его можно найти в папке шаблона, в подкаталогах «localization» и «languages»:
Сам путь можно найти через редактирование шаблона. Для этого, при условии, что шаблон создан, необходимо кликнуть по «Edit template»:
И перейти во вкладку «File info»:
Пропускаем создание шаблона
Без явной необходимости этап создания шаблона можно пропустить и сразу кликнуть по «Skip template»:
Затем загрузится страница с настройками:
Вам необходимо лишь выбрать из списка «Choose a language» нужный язык. Я выбрал «Русский»:
После этого кликните по «Start translating»:
Далее, вас перебросит на с перечнем готовых переводов:
Как видно на скриншоте выше переведено 0%. Теперь осталось лишь перевести на русский язык, кликнув по «Edit»:
POT/PO/MO
Внесу немного ясности:
- Исходный файл (слова и фразы только на английском) имеет расширение POT (Portable Object Template).
- Файл-перевод с английского на другой язык — PO (Portable Object).
- Бинарный файл (сконвектированный) для работы со скриптом — 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 сам переведён на русский, так что, в нём всё понятно.
Прододжаем эпопею с добавлением мультиязычности в 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) при выборе греческого языка в настройках. Давайте посмотрим, как это работает.
- если вы еще не настроили нужный вам язык, сделайте это сейчас;
- если вы еще не активировали тему, сделайте это сейчас.
Отлично! У нас все получилось. Наше руководство подошло к концу.
Если вы не можете найти текст для перевода в теме
Читайте также: