- Как устроен принцип перевода на WordPress.
- Готова ли тема WordPress, плагин к переводу?
- Перевод темы с помощью программы Poedit.
- Перевод темы WordPress плагином Loco Translate.
- Плагин Codestyling Localization.
Привет, дорогой читатель, сегодня мы научимся переводить плагины и темы WordPress, разберёмся с назначением файлов .po и .mo., с принципами технологии gettext. На самом деле в операции перевода нет ничего сложного. Если тема готова к переводу, то это дело занимает максимум полчаса, а когда наловчитесь и 10 минут будет хватать. Ну что ж приступим.
Как устроен принцип перевода на WordPress
В большинстве случаев заниматься поиском английских слов и их заменой на русские в исходных .php файлах совершенно не нужно. Почему, спросите вы, это ведь первое что приходит в голову? Все потому, что WordPress использует свободную технологию gettext (даже не технологию, а скорее библиотеку), в принципах которой написано — все программное обеспечение должно писаться на английском, а уже затем должен осуществляться перевод на любой другой язык в зависимости от потребностей пользователя.
Сам перевод будет находиться в отдельных файлах со специальным расширениями (.mo, .po). Теперь подробнее о возможных расширениях:
- .mo - сокращение с английского Machine Object. Этот файл предназначен для чтения машинами и поэтому бинарный и специфичный для платформ.
- .po - тоже сокращение с английского Portable Object. Этот файл уже предназначен для людей и хорошо человеко-читаем и не специфичен для платформы.
- .pot - ещё одно сокращение с PO template. С названия расширения видна функция этого файла: шаблон / трафарет для файла .po, т. е. это заготовка для создания нового .po (перевода на новый язык).
Принцип взаимодействия между файлами представлен на картинке справа (foo.c обозначает первоначальный английски текст чего-либо).
Готова ли тема WordPress, плагин к переводу?
Это первый вопрос которым стоит задаться. К сожалению, ни все создатели тем и плагинов предусматривают перевод своей темы и как следствие не используют gettext. Заниматься внедрением gettext в этой статье мы не будем. Готовность темы или плагина могут подтвердить 2 вещи: наличие в архиве файлов с выше рассмотренными расширениями и наличие в описании специального тега "Translation Ready", темы, готовые к переводу, можно найти на официальном сайте по этому адресу, на данный момент таких тем свыше 2000.
Кстати, под надписью "Translations" можно найти ссылку перейдя по которой можно посмотреть состояние перевода и внести свою лепту в перевод темы (ссылка для выбранной темы). Для перевода выбираем любую тему и на скачавшем её на компьютер (выбранная тема).
Перевод темы WordPress с помощью программы Poedit
Poedit — бесплатная (+) кроссплатформенная программа для редактирования файлов gettext. Существует достаточно много и других программ, нацеленных на перевод по такой схеме:
- Gtranslator (GNOME)
- Lokalize (KDE)
- TM-database онлайн-перевод .po файлов + память переводов
- Pootle онлайн-перевод и управление переводами (интересует больше всех)
Ну и, конечно же, в крайней ситуации всегда можно использовать любой текстовый редактор. Сейчас мы поэтапно пройдём через процесс перевода темы WordPress программой Poedit:
- Устанавливаем саму программу , тем из архива с темой достаём папку "languages".
- Открываем программу Poedit → жмём на кнопку "новый перевод" → выбираем файл в папке "languages" с расширением .pot → вводим код нужного нам языка ru_RU, именно вводим а не выбираем русский язык!
- Теперь, перед нами откроет окошко для перевода, здесь нужно перевести исходный текст и ввести его в строку перевода и повторить для каждого элемента. У вас будет 10 автоматических бесплатных переводов, но гугл переводчик никто не отменял. Также сохраняйте знаки такого типа %1$s или %s. Прежде чем начать переводить, советую посмотреть как переведены другие темы и уже потом приступать к переводу.
- После перевода элементов нажимаем сохранить.
- Всовываем новые файлы ru_RU.po ru_RU.mo в архив с темой в папку "languages".
- Устанавливаем тему WordPress (внешний вид → добавить новую→загрузить тему→выбрать архив), смотри корректность перевода. При неудачном переводе можно отредактировать ru_RU.po этой же программой.
- Если перевод не отображается то смените локализацию самого движка на русскую в файле конфигураций. Измените константу WPLANG следующим образом:
define( 'WPLANG', 'ru_RU' );
А также вы можете помочь автору, передав ему свой перевод.
Перевод темы WordPress плагином Loco Translate
Существует способ перевода проще, без установки чего-либо себе на компьютер. Он заключается в использовании плагинов-переводчиков, которые организуют всю работу по переводу прямо в браузере. Именно к таким является Loco Translate.
Хочется отметить интуитивно понятный интерфейс, минимум настроек и сбалансированный дизайн, чем-то схожим с программой Poedit. Эти аспекты делают работу приятной и не напрягающей.
- Скачиваем плагин , устанавливаем, активируем.
- Наблюдаем появление новой кнопки в панели слева "Loco Translate" → тыкаем на нее.
- Попадаем на домашнюю страницу плагина. Тут видим название активной темы и кнопку просмотра всех тем. Нажимаем на нужную тему.
- Попадаем на другую страницу → жмем "New language"→ открывается новая страница на которой выбираем русский язык → и жмем "Start translating" (другие настройки можно не трогать).
- Попадаем на страницу, где собственно и начинается сам перевод темы. Рабочее пространство разделено на несколько частей: кнопки управления, исходный текст, перевод на русский, комментарии. При переводе сохраняйте все, на первый взгляд, непонятные знаки, к примеру, %1$s или %s. Прежде чем начать переводить, советую посмотреть как переведены другие темы и уже потом приступать к переводу.
- Как перевод окажется готовым, нажимаем кнопку "Save" и радуемся русским словам на главной странице сайта с: Если увидите недочеты в переводе, то плагин также поможет их исправить. После создания перевода "вашей мечты" можно деактивировать и удалить плагин.
P.S. В статье описана новая версия, которая еще сама не локализована, либо просто локализации не корректно работает. Если для вас это существенно, то понизить версию (а следовательно и сменить язык) можно в настройках плагина. Но я не рекомендую тем более все и так более чем понятно.
Плагин Codestyling Localization
Существует так же очень удобный плагин Codestyling Localization, который в свое время был достаточно популярен. Стоит заметить, что он уже достаточно давно не обновляться и плохо работает со множественными числами и некоторыми скриптами, но в целом все еще может вполне успешно работать. По этому рекомендую использовать другие плагины представленные статье.
- Скачиваем, устанавливаем и активируем сам плагин.
- Переходим в инструменты → локализация → находим нужную тему → нажимаем "Добавить новый язык".
- Из списка выбираем русский и тыкаем "создать po-файл"
- Нажимаем кнопку "сканировать",а затем кнопку "редактировать". В появившемся окне переводим все нужные компоненты и нажимаем кнопку "генерировать mo-файл" и проверяем успешность перевода.
- Если редактировать ничего не надо, то смело удаляем или просто деактивируем плагин для меньшей нагрузки на сервер.
На этой ноте я заканчиваю своё повествование и оставляю вас наедине с вашими мыслями с: Будут вопросы пишите в комментарии, ну и от благодарности не откажусь. Чао!
Огромное спасибо за полезную информацию
Вы можете объяснить как плагин работает, и почему он не находит переводы в файлах?
Как уже писал тема должна быть готова к переводу, т. е. в файлах темы должен быть скелет перевода (.pot) в отдельном фале. Если его нет то плагин попробует сам его создать.
Вы меня не совсем поняли.
Допустим, я настроил уже шаблон переводов, добавил языки и работаю.
Потом, в каком-нибудь файле, например, в functions.php, я добавил новую строку для перевода
Иду потом в шаблон перевода, нажимаю синхронизировать, потом иду в файлы с языками и там тоже нажимаю синхронизацию.
Просто когда я вам писал, строка у меня выглядела __( 'Our Services', 'bs-dental' ), без esc_html, и шаблон ее не находил.
Теперь уже все в порядке.
А в другой теме все было наоборот.
Понимаете теперь в чем вопрос?
Рад, что проблема решилась, если доберусь до причины сообщу.
Благодарю за статью! Выручил плагин Loco Translate.
Сам бы я точно не нашел бы где исправлять
Огромная благодарность!
Спасибо вам!!!
Огромное вам спасибо, помогли!