Итак, в предыдущей статье мы проиллюстрировали, как установить WordPress и, казалось бы, на этом нужно завершать тему, однако установить WordPress — это только пол дела. Для того, чтобы им можно было нормально пользоваться, нужно решить ещё ряд задач, одной из которых и посвящается эта статья.
WordPress, как вы уже скорее всего поняли, если читали предыдущие статьи, состоит из нескольких обязательных (неотъемлемых) частей (внутренних модулей) и дополнительной в виде внешних plugin-модулей. Так вот, из этих модулей только ядро является продуктом собственно компании WordPress. И оно мультиязычно, то есть, как мы видели в предыдущей статье, при установке можно выбрать нужный язык (в нашем случае русский) и CMS будет вроде как работать на выбранном языке, однако, на самом деле это далеко не так. Дело в том, что вторая основная компонента системы — тема, разрабатывается уже другими компаниями и, как правило, тема, которая подходит к вашему проекту, не будет содержать нужного языка, а зачастую вообще является одноязычной. К этому добавляются аналогичные проблемы с plugin-модулями.
И ещё один момент — если уж у нас всегда есть нормально работающая система на английском языке, то почему бы не внедрить модуль который бы не заменял английские страницы, а делал бы их дубли на русском языке, так чтобы при желании с вашим сайтом могли бы работать, как англоязычные пользователи, так и русскоязычные. Таким образом можно было бы даже сделать многоязычный сайт подобно тем, что мы постоянно видим на просторах Интернета.
Займёмся решением поставленной задачи. Возможны два варианта:
- ваша тема не полностью русифицирована
- ваша тема совсем не русифицирована
В первом случае имеет смысл установить очень хороший плагин под названием Loca Translate. Для этого заходим в меню «Плагины» Панели Управления сайтом по адресу http://site-1.sysadmin.bz/wp-admin/plugins.php:
Видим, что по умолчанию в процессе установки WordPress были также установлены два плагина «Akismet Anti-Spam» и «Hello Dolly». И тот и другой нам не нужны, поэтому спокойно удаляем их, последовательно нажимая на красные надписи-кнопки «Удалить» и подтверждая намерения. Далее нажимаем на верхнюю кнопку «Добавить новый», в появившемся новом окне в поле поиска справа вводим «Loco», видим, что система нашла плагин «Loco Translate» и жмём кнопку «Установить»:
Перед установкой всегда стоит обращать внимание на совместимость плагина с вашей версией WordPress. Лучше всего, если будет написано, что он совместим, но не тестировался, не означает, но не совместим, поэтому пробуем. Нужно понимать, что даже если плагин вызовет критические проблемы в системе и ваш сайт не запустится, то проблему всегда можно решить путём удаления подкаталога с плагином в каталоге /var/www/site-1.sysadmin.bz/wp-content/plugins/.
После установки активируем плагин и видим, что в консоли появилось новое меню:
Если зайти в подменю WordPress этого меню то можно увидеть информацию об уровне перевода частей ядра:
Как и говорилось выше, она 100% процентная. Что касается тем, то темы, устанавливаемые по умолчанию, тоже как правило переведены полностью. Плагин у нас в данный момент только один Loco Transate (остальные мы удалили) и было бы странно, если бы плагин, предназначенный для перевода, сам не был бы полностью переведён. Так что в данном состоянии наша система полностью русифицирована. Однако, стоит нам установить другую тему, как проблемы не заставят себя ждать.
Предположим, что наш первый сайт будет для бухгалтерской компании. Тогда нам нужно установить подходящую тему. Для этого в Панели Управления (Администрирования) сайтом выбираем пункт меню «Внешний вид -> Темы» и жмём на кнопку «Добавить»:
В появившемся окне справа в поле поиска вводим слово «accounting» для фильтрации списка тем, находим, например, тему «Business Accounting», устанавливаем и активируем её. Если теперь войти в меню «Loco Translate → Темы → Business Accounting», то можно увидеть надпись » Не найдено переводов для «Business Accounting».
Факт, что тема не русифицирована, можно было бы установить и по другому. Обратите внимание на то, что в папке /var/www/site-1.sysadmin.bz/wp-content/languages/themes/ нет файла с именем business-accounting-ru_RU.mo:
Каталог /var/www/site-1.sysadmin.bz/wp-content/languages/themes/ является общесистемным. Помимо этого, перевод темы может содержаться в подкаталоге languages самой темы: /var/www/site-1.sysadmin.bz/wp-content/themes/business-accounting/languages/. Но его и там нет, а присутствует там только файл business-accounting.pot, являющийся основным файлом темы, содержащим только английский язык. Таким образом, нам совершенно точно нужно будет с нуля создавать перевод темы. чем и займёмся.
Однако, перед этим зададимся вопросом, а зачем, собственно, говоря, нам это нужно? Если я буду публиковать все записи и все страницы только на русском, то ведь отсутствие русификации внешне никак не проявится. А вот и нет, ещё как проявится:
На вышеприведённом снимке с экрана видно, после установки не русифицированной темы элементы на английском языке появились, как на самом сайте, так и в Панели Управления сайтом. Таким образом, мы многими способами показали, что тема Business Accounting требует русификации.
Приступим к выполнению нашего плана. Снова заходим в меню «Loco Translate → Темы → Business Accounting» Панели Управления WordPress и нажимаем на кнопку «Новый язык»:
Далее нам нужно будет осуществить выбор языка и местоположения файла перевода темы WordPress после чего нажимаем на кнопку «Начать перевод»:
В результате в полном соответствие с нашим выбором в соответствующем каталоге появятся два новых файла:
Файл с расширением .po является текстовым, может трактоваться как исходный код перевода и редактироваться как с помощью средств самого плагин-модуля Loco Translate, так и с помощью специального редактора Poedit. Вообще говоря, при желании этот файл можно редактировать любым текстовым редактором, просто это будет менее удобно. Самой системой он не используется. Ей нужен файл с расширением .mo, представляющий собой как бы объектный (машинный) код соответствующего файла с расширением .po, а для того, чтобы преобразовать исходный код в объектный нужен плагин Loco Translate либо редактор Poedit или его аналог. Файл с расширением .po не появляется сам собой, а генерируется на основании шаблона, который, как уже указывалось выше, записывается в каталог /var/www/site-1.sysadmin.bz/wp-content/themes/business-accounting/languages/ сразу после установки темы. И тут всё было бы хорошо, если бы версия шаблона соответствовала версии темы, и он содержал бы все элементы, которые нужно переводить. Однако, к сожалению, на практике это далеко не так, и нам придётся не только делать перевод, но и добавлять фразы, которые нужно будет переводить!
Займёмся реальным переводом нашей темы и продемонстрируем все необходимые действия. Для этого в очередной раз войдём в меню «Loco Translate → Темы → Business Accounting» Панели Управления WordPress, где нажмём кнопку «Редактировать»:
Редактор интуитивно понятный и работа с ним не вызывает вопросов, кроме одного. Что-то явно мало фраз на английском языке, которые нужно перевести. Фактически там содержатся только пункты одного подменю «General Settings» меню Theme Settings, которое появилось без перевода после установки нашей темы (выше приводился соответствующий снимок с экрана):
Ну что же, давайте для начала проверим, дала ли наша работа какой-либо эффект, для чего сохраним наш перевод и посмотрим на результат. Уже явно лучше, но далеко до завершения:
Остаётся научиться добавлять в редактор дополнительные строки для перевода, которые в силу тех или иных причин отсутсвовали в шаблоне. Надо сказать, что данная ситуация является скорее правилом, чем исключением и если вы видите, что та или иная фраза на сайте и (или) в ПУ осталась на английском, то её скорее всего нужно добавить в исходный шаблон темы.
Приступим к этому. Для этого в который уже раз заходим в меню «Loco Translate → Темы → Business Accounting» Панели Управления WordPress, но теперь выбираем пункт «Правка шаблона» и жмём на кнопку «Добавить»:
Здесь стоит обратить внимание на предупреждения и знать, что не рекомендуется изменять существующие фразы, а только добавлять новые. Кроме того, всегда нужно иметь ввиду, что при обновлении темы файл с расширением .pot может быть перезаписан, и поэтому ваша работа по изменению шаблона может пропасть, если вы не сохраните его где-нибудь в другом месте.
Также обратите внимание на то, что вообще говоря, помимо точной фразы можно указать её контекст, то есть перевод для одной и той же фразы в зависимости от контекста может быть разным.
Конкретно в применении к нашей задаче набор необходимых фраз берём из всех подменю меню «Theme Settings» ПУ WordPress, включая саму фразу, именующую меню. Также находим на самом сайте англоязычные фразы «Posts» «Read More» и другие. Добавляем их все в шаблон и сохраняем его.
Нужно сказать, что ручное добавление фраз для перевода в шаблон может быть довольно утомительным, так как вы всякий раз будете постепенно обнаруживать, что забыли внести ту или иную фразу. Однако, добавляя фразы вручную, вы, с другой стороны, не будете делать лишней работы по переводу, так конкретно на вашем сайте те или иные фразы могут не использоваться.
Вместе с тем, обратите внимание на то, что на последнем снимке с экрана есть кнопка «Синхронизация». Она воистину волшебная и позволяет автоматически обновить шаблон в полном соответствие с используемой версией темы. Нажав на неё, мы моментально получим не 13 строк для перевода, как было, а целых 132 строки:
Сохраняем наш новый файл шаблона при помощи кнопки «Сохранить».
Далее важным моментом является синхронизация файла с расширением .po с новым файлом с расширением .pot, для чего снова заходим в меню «Loco Translate → Темы → Business Accounting» Панели Управления WordPress, выбираем перевод, нажимаем «Редактировать», а там уже кнопку «Синхронизация».
После этого видим, что нам осталось перевести ещё целых 119 строк, занимаемся этим. Для обычного программиста данная работа будет легким практическим занятием по английскому языку и вполне может подойти в качестве отдыха от основной работы.
Если же вы не владеете английским языком, то можете приобрести ключ API (например, Lecto Traslation API) для Loco translate или Poedit Pro. В этом случае у вас автоматически будут появляться подсказки к переводам и вы сможете выбирать наиболее подходящий по смыслу вариант.
Как только закончите перевод нажимайте на кнопку «Сохранить» и наслаждайтесь полностью русифицированной темой.
Аналогично поступают и с плагинами и самим ядром WordPress, если они требуют перевода. Нужно будет просто выбрать соответствующий подпункт меню «Loca Translate» Панели Управления WordPress.
Настала пора заняться вопросом мультиязычности. Поясним проблему — если уж у нас всегда есть нормально работающая система на английском языке, то почему бы не внедрить модуль, который бы не заменял английские страницы, а делал бы их дубли на русском языке, так чтобы при желании с вашим сайтом могли бы работать, как англоязычные пользователи, так и русскоязычные. Таким образом можно было бы даже сделать не просто двуязычный, а многоязычный сайт подобно тем, что мы постоянно видим на просторах Интернета. При этом желательно сделать так, чтобы переключение (выбор) языка мог произвести любой пользователь на сайте, а в идеале система сама с помощью геолокации понимала бы язык пришедшего на сайт пользователя и автоматически сменила бы его.
Эту задачу решает неплохой плагин-модуль под названием WP Multilang. Установим его:
Далее его нужно будет настроить:
Приступаем к этому. Проставляем необходимые птички (checkboxes), выбираем значения полей и нажимаем на нижнюю синюю кнопку «Сохранить изменения»:
Вроде бы всё, однако вас должно смутить то, что опять появился английский текст в меню. Дело в том, что очевидно перевод плагина не соответствует его версии. Для начала проверим сколько слов в переводе и сколько в шаблоне. Идём в меню «Loco Translate → Плагины → WP Multilang» и нажимаем кнопку «Правка шаблона»:
Теперь смотрим, сколько исходных строк в переводе. Для этого возвращаемся в меню «Loco Translate → Плагины → WP Multilang». наводим на наш перевод «Русский» и нажимаем на всплываюшую кнопку «Редактировать»:
Итак, мы видим коллизию, в шаблоне 97 строк, а в переводе всего 45 и они все переведены, поэтому система и говорит, что перевод 100%-ный, хотя это далеко не так. Исправить ситуацию можно всё той же волшебной кнопкой «Синхронизация» в переводе:
Вот теперь понятно, почему у нас был в меню английский текст — ведь не переведено аж 52 строки. И среди них должны быть по идее те строки, которые у нас высвечивались в меню настройки плагина WP Multilang: «Browser Redirect», «Use prefix» и «Delete translations». Проверим это. Для этого, внесём, например, вторую фразу в поле поиска. Результат не заставит себя ждать и покажет, что мы на верном пути:
Для того, чтобы закончить с русификацией нам остаётся осуществить перевод этих 52 фраз и всё будет нормально.
Что касается мультиязычности, то теперь, после установки плагина у вас появляется возможность писать каждую страницу на стольких языках, на скольких пожелаете, так как и в меню «Страницы» и в меню «Записи» Панели Управления автоматически добавились флаги выбранных при настройке плагина языков. При этом для того, чтобы пользователь смог произвольно выбирать язык в главное меню сайта нужно будет поместить селектор. Благо, что теперь это можно легко сделать, так как в меню Панели Управления «Внешний вид» → «Меню» появился новый пункт «Языки»:
На этом мы пожалуй и закончим эту довольно непростую тему.