Итак, в предыдущей статье мы проиллюстрировали, как установить 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, а также исходный архив latest.zip и файл index.html, который мы создавали в предыдущей статье под номером 8. Сделать это можно как с помощью Midnight Commander, так и с помощью последовательного выполнения двух команд:
rm -d wordpress
rm -f latest.zip index.html
Таким образом, первый шаг мы сделали и у нас в корне нашего сайта развёрнута структура дистрибутива WordPress.
Теперь, на втором шаге нужно немного повозиться с правами к файлам дистрибутива, ибо иначе либо система будет слишком уязвима, либо наоборот, прав будет не хватать. Сначала надо сделать владельцем всех файлов дистрибутива пользователя www-data и группу с тем же именем. Далее, в соответствии с трёхзвенной структурой прав UNIX-подобных систем нам нужно дать полные права владельцу и группе на все каталоги (папки, директории) дистрибутива, но лишить права записи в них всех остальных пользователей (код в нотации триады rwx: 775). Что касается файлов, то для пользователя и группы www-data нужно дать все права, кроме права выполнения, а для всех остальных только право чтения (код 664). Самый важный и уязвимый файл wp-config.php не должен содержать вообще никаких прав для посторонних (т.е. никто, кроме пользователей группы root и www-data, а также перечисленных в файле /etc/sudoers не должен иметь даже право читать его). Делается это следующей последовательностью команд:
chown -R www-data:www-data ./
sudo find . -type d -exec chmod 775 {} +
sudo find . -type f -exec chmod 664 {} +
sudo mv wp-config-sample.php wp-config.php
sudo chmod 660 wp-config.php
Пришло время заняться третьим шагом, после чего можно будет запускать установку системы через www-браузер. Шаг большой и сложный. Конечная цель – отредактировать файл wp-config.php в соответствие с нужными нам параметрами.
Если открыть этот файл, то можно увидеть, что в первую очередь надо задать ряд параметров базы данных сайта, ибо без этого установка не начнётся:
- адрес сервера, где находится база данных (у нас она тут же, поэтому оставляем localhost, но нужно понимать, и это объяснялось в статье по MySQL, что это не обязательно и можно указать любой ip-адрес, где находится ваша СУБД и соответствующий порт, если он отличается от 3306);
- имя базы данных;
- имя пользователя;
- пароль пользователя;
- кодировка базы данных;
- правила сопоставления (collation)
Для того, чтобы понять дальнейший материал вам лучше перечитать статью 6 о MySQL. Нашей локальной задачей будет создание базы данных site-1.sysadmin.bz (название может быть любое, но для избежания путаницы лучше называть базу данных и пользователя точно так же, как и сам сайт, для которого они предназначены), заведение специального пользователя базы данных (что крайне желательно, но не обязательно, так как можно использовать и созданного нами в статье 6 универсального пользователя), предоставление этому пользователю всех прав на созданную базу данных (если мы будем использовать не специального пользователя, то у него будет доступ ко многим базам данных, что ухудшает безопасность).
Итак, приступим к реализации нашего плана. Запускаем MySQL Workbench и соединяемся с СУБД. Выбираем среднюю вкладку “Schemas” в левом столбце, жмём на правую кнопку мыши, после чего выбираем левой кнопкой из контекстного меню пункт “Create Schema”:
В появившемся новом окне вводим имя базы данных, кодироку символов (Charset) и правила сопоставления (collation) оставляем по умолчанию, далее жмём на кнопку “Apply (Применить)”:
Результатом этих действий будет генерация простейшего sql-скрипта, который можно было бы написать самому. но нам здесь важно было показать, как это делается при помощи MySQL Workbench, ибо далее будут действия, приводящие к скриптам посложней. В данном случае в появившемся новом окне нам остаётся согласиться с выполнением скрипта:
После этого создастся схема база данных с заданным нами именем site1-sysadmin.bz. Далее нам лучше тут же ответить себе на вопрос о кодировке и сопоставлении. Для этого нажимаем на кнопку со второй пиктограммой напротив имени нашей схемы базы данных:
и видим в соответствующем поле, что по умолчанию у нас база данных создалась с кодировкой utf8mb4, а правило сопоставления символов в ней имеет код utf8mb4_0900_ai_ci. Эту информацию можно было бы получить и при помощи sql-запроса:
Полученную информацию мы будем вводить в соответсвующее место файла wp-config.php. Напомним, что для того, чтобы приступить к этому нам осталось ещё получить имя пользователя базы данных и его пароль, а для этого надо его создать, к чему и приступим. Переходим на вкладку “Administration” в левом столбце MySQL Workbench и выбираем меню “Users and Privileges”, где нажимаем кнопку “Add Account”:
Здесь в поле “Login name” заменяем “newuser” на “site-1.sysadmin.bz”, в поле “Authentication Type” оставляем “Standard” (ещё раз отметим, что это очень важно для WordPress), в поле “Limit to Hosts Matching” – localhost, а в полях Password и “Confirm Password” вводим одинаковый достаточно сложный пароль. Остаётся нажать кнопку “Apply” и пользователь создастся.
Далее нам останется дать права нашему новому пользователю на базу данных. Делается это следующим образом. Выбираем вкладку “Schema Privileges”, далее жмём копку “Add Entry”, выбираем переключа́тель “Selected Schema”, и в ниспадающем меню находим имя нашей базы:
Нам остаётся нажать на кнопку “OK”, стать курсоров на добавленную базу данных и нажать внизу справа на кнопку “Select All” (при этом выделятся все права, кроме GRANT OPTION, что нам и надо):
Всё, нажимаем на “Apply” и переходим к редактированию файла wp-config.php, для чего закрываем MySQL WorkBench (если мы всё сделали верно, то он нам больше не понадобится), открываем наш Midnight Commander, подводим курсор к файлу и нажимаем F4:
Здесь заменяем все параметры ровно так, как указано на нашем снимке с экрана и сохраняем файл (в случае редактора GNU nano жмём комбинацию клавиш {Ctrl,O} и выходим из редакторв комбинацией {Ctrl, X}). На этом всё. и если вы не совершили ни одной ошибки, то установка WordPress произойдёт без единого предупреждения практически в режиме “silent setup”.
Запуск установки осуществляется с web-браузера открыванием сайта по ссылке http://site-1.sysadmin.bz (так как мы удалили файл index.html, то отрабатывать теперь будет index.php).
Поля следующего экрана заполняем в соответствии с нашими договорённостями, задаём сложный логин и пароль администратору системы и нажимаеми на кнопку “Установить WordPress”:
Всё, если ваша виртуальная машина не слишком медленная, то через несколько секунд (в любом случае не больше чем через минуту) вы получите такой завершающий процедуру установки CMS WordPress экран:
Остаётся нажать на кнопку и войти в административную консоль вашего сайта на WordPress для того, чтобы начать его настраивать и заполнять, но об этом уже в следующих статьях:
[:ru]Итак, мы в предыдущей статье мы проиллюстрировали, как установить WordPress и, казалось бы, на этом нужно завершать тему, однако установить WordPress – это только пол дела. Для того, чтобы им можно было нормально пользоваться, нужно решить ещё ряд задач, одной из которых и посвящается эта статья.
WordPress, как вы уже скорее всего поняли, если читали предыдущие статьи, состоит из нескольких обязательных (неотъемлемых) частей (внутренних модулей) и дополнительной в виде внешних plugin-модулей. Так вот, из этих модулей только ядро является продуктом собственно компании WordPress. И оно мультиязычно, то есть, как мы видели в предыдущей статье, при установке можно выбрать нужный язык (в нашем случае русский) и CMS будет вроде как работать на выбранном языке, однако, на самом деле это далеко не так. Дело в том, что вторая основная компонента системы – тема, разрабатывается уже другими компаниями и, как правило, тема, которая подходит к вашему проекту, не будет содержать нужного языка, а зачастую вообще является одноязычной. К этому добавляются аналогичные проблемы с plugin-модулями.
Займёмся решением поставленной задачи. Возможны два варианта:
- ваша тема не полностью русифицирована
- ваша тема совсем не русифицирована
Для начала имеет смысл установить очень хороший плагин под названием Loco 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 фраз и всё будет нормально.
Что касается мультиязычности, то теперь, после установки плагина у вас появляется возможность писать каждую страницу на стольких языках, на скольких пожелаете, так как и в меню “Страницы” и в меню “Записи” Панели Управления автоматически добавились флаги выбранных при настройке плагина языков. При этом для того, чтобы пользователь смог произвольно выбирать язык в главное меню сайта нужно будет поместить селектор. Благо, что теперь это можно легко сделать, так как в меню Панели Управления “Внешний вид” → “Меню” появился новый пункт “Языки”:
На этом мы пожалуй и закончим эту довольно непростую тему.