Документация
- Залить файлы на сервер.
- Добавить в файл .htaccess, который находится в корневой директории сайта, строку
php_value auto_prepend_file "[full_path]/protected/sli.php"
Где [full_path] - полный путь к директории с модулем.
Если весь сайт работает через один контроллер, можно подключить модуль через include "[full_path]/protected/sli.php";
Внимание! Директива auto_prepend_file подключит переводчик ко всем php файлам. Для того, чтобы исключить перевод, например админ части сайта, пропишите в .htaccess файле в директории с модулем, который не нужно переводить, строку php_value auto_prepend_file none, либо пропишите в настройках системы адреса, которые нужно игнорировать. - Если Ваш сайт не работает через 1 контроллер. Пропишите в файле htaccess реврайты, для того, что бы страница с языковой версии вела на оригинальную.
К примеру:
RewriteEngine on
RewriteRule ^(?:(?:ua|en)/)?(.*)$ $1 [L]
Где ua|en - языковые версии, добавленные в SLI. - Выставить права 0777 на папку protected/data и на все внутренние директории.
- Открыть файл protected/config/config.php и прописать данные коннекта к БД MySQL.
- Зайти в админку по адресу htt://адресСайта/sli/index.php
- Ввести свой Email и пароль.
- Войти под указанными данными.
- Заходим в админку, переходим на страницу с добавлением языков.
- Нажимаем кнопку добавить. Заполняем поля. Алиас - это краткое название для языка (обычно ua, en, ru, cn и тд.), которое будет отображатся в адресной строке при выборе языка.
- Нажимаем кнопку сохранить.
- Переходим на вкладку параметры. Выбираем язык оригинала. Это, собственно, язык, на котором создан сайт и который будет использоваться для автоматического перевода.
- Кэширование использует Memcache, который должен быть установлен на Вашем сервере. Если расширение отсутствует, игнорируем данную возможность ускорить работу переводчика, либо устанавливаем расширение.
- Показывать время отработки программы. Эта настройка отобразит время, за которое система парсит и переводит страницу, на которой Вы находитесь.
- Просканировать сайт.
- Перевести данные.
Описание полей:
- Игнорировать адреса - адреса, которые не будут попадать на перевод. Каждый адрес добавляется с новой строки. Чтобы использовать регулярное выражение, строка должна начинаться на #
Пример:
- Проигнорировать все адреса, которые начинаются на /admin.php (используем регулярное выражение) -
- Проигнорировать только адрес search.php
- Разрешенные адреса - адреса, на которые будет отдаватся контент с переводом. Если добавлен хотя бы один адрес, все остальные будут иметь статус игнорируемых!
Каждый адрес с новой строки.
Используется только в случае перевода сайта постранично. Если Вы не имеете возможности перевести весь сайт и перевели только его часть, добавляете адреса переведенных страниц в список.
Когда Вы полностью закончите перевод, очистите список. - Игнорировать страницы с текстом - если на странице будет найдена одна из перечисленных фраз, страница будет иметь статус игнорируемой. Контент не попадет на перевод и не будет заменен на переведенный. Обычно используется для страниц с ошибками.
Пример:
Будут проигнорированы страницы с фразой PHP error либо syntax error - Игнорировать теги - название тегов, контент которых не должен попасть на перевод. Через запятую.
Пример:
Данные из указанных тегов не попадут на перевод. - Переводить значение атрибутов - название атрибутов, значения которых должно попасть на перевод. Через запятую.
Например:
Контент указанных тегов попадет в админку на перевод.
Сканер - это модуль, с помощью которого Вы можете просканировать свой сайт на наличие данных на перевод.
Сканирование "по URL". Для того, чтобы просканировать весь сайт, в поле "адрес" ставим "/". Таким образом мы начнем сканировать весь сайт с главной страницы. Сканер пройдется по всем страницам и сохранит (исходя из настроек парсера) данные, которые необходимо перевести.
Сканирование "Sitemap". В поле "адрес" прописываем путь к файлу sitemap.xml, и парсер пройдется по всем ссылкам файла.
Сканировать весь сайт имеет смысл только при первом подключении системы. Все данные заносятся в базу автоматически при первом посещении страницы.
Переменные - модуль сайта, который позволяет создавать жесткие замены контента для каждого используемого языка.
Например, у нас на сайте есть картинка с русским текстом, и мы хотим, чтобы в английской версии отображалась другая картинка с английским текстом. Для этого в данном разделе создаем переменную.
В поле "оригинал" пишем адрес картинки "/ru-pic.png". В поле "английский" пишем адрес к картинке для английской версии сайта "/en-pic.png". Теперь при смене языка на английский все вхождения "/ru-pic.png" будут заменены на "/en-pic.png".
Таким образом мы можем заменять JavaScript, изменять текст, который не попадает на перевод обычным образом, и заменять статику.
Если у Вас на сайте имеются блоки, которые часто обновляются (например, комментарии), и Вы не хотите, чтобы данные появлялись в списке на перевод, добавьте в начале контента (который не нужно переводить) <!--SLI::ignore-->
и в конце <!--SLI::endIgnore-->
Например:
<!--SLI::ignore-->
Контент, который не будет переведен
<!--SLI::endIgnore-->
Или
<?php SLIApi::ignoreStart();?>
Контент
<?php SLIApi::ignoreEnd();?>
Вывод языков на сайте
Для того, чтобы получить массив с используемыми языками, воспользуйтесь функцией
SLIApi::getLanguagesChangeList()
Пример использования:
<ul class="language">
<?php foreach(SLIApi::getLanguagesChangeList() as $val) {?>
<li<?php echo $val['selected'] ? ' class="selected"': '';?>><a % href="<?php echo $val['href'];?>"><img src="/sli/static/img/flags/<?php echo $val['alias'];?>.png" alt="<?php echo $val['title'];?>" title="<?php echo $val['title'];?>"></a></li>
<?php }?>
</ul>
Обратите внимание на знак процента "<a %". Он нужен для того, чтобы парсер понимал, что данную ссылку не нужно локализировать.
Для добавления выбора языка Вы можете воспользоваться приведенным выше примером.
- Сделайте все, кроме 3 пункта, шаги из раздела установка.
- Откройте файл .htaccess в корневой директории сайта
- Замените строку
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
На
RewriteRule ^(?:ua/)?(.*)$ index.php?q=$1 [L,QSA]
Где ua - язык, добавленный в настройках SLI - Что бы админка MODx не попала на перевод - добавьте в manager/.htaccess строку
php_value auto_prepend_file none
Это может просиходить по нескольким причинам:
- Возможно вы не подключили переводчик к CMS либо на хостинге не работают .htaccess. Проверить это можно включив в настройках SLI опцию "Показывать время отработки программы". Если после включения в самом низу сайта не будет выводится время выполнения SLI - значит скрипт не подключен.
- Кодировка сайта отличная от UTF-8. Для решения данной проблемы откройте файл sli/protected/core/SLITranslate.php , найдите строку
public static function autoInit($content) {
и после открывающей фигурной скобки вставьте$content = iconv("windows-1251", "UTF-8", $content);
где windows-1251 ваша текущая кодировка сайта. И перед строкойreturn $content;
вставляем$content = iconv("UTF-8", "windows-1251", $content);
то есть декодируем строку обратно.