Как установить решение
  1. Залить файлы на сервер.
  2. Добавить в файл .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, либо пропишите в настройках системы адреса, которые нужно игнорировать.
  3. Если Ваш сайт не работает через 1 контроллер. Пропишите в файле htaccess реврайты, для того, что бы страница с языковой версии вела на оригинальную.
    К примеру:
    RewriteEngine on
    RewriteRule ^(?:(?:ua|en)/)?(.*)$ $1 [L]
    Где ua|en - языковые версии, добавленные в SLI.
  4. Выставить права 0777 на папку protected/data и на все внутренние директории.
  5. Открыть файл protected/config/config.php и прописать данные коннекта к БД MySQL.
  6. Зайти в админку по адресу htt://адресСайта/sli/index.php
  7. Ввести свой Email и пароль.
  8. Войти под указанными данными.
Начало работы
  1. Заходим в админку, переходим на страницу с добавлением языков.
  2. Нажимаем кнопку добавить. Заполняем поля. Алиас - это краткое название для языка (обычно ua, en, ru, cn и тд.), которое будет отображатся в адресной строке при выборе языка.
  3. Нажимаем кнопку сохранить.
  4. Переходим на вкладку параметры. Выбираем язык оригинала. Это, собственно, язык, на котором создан сайт и который будет использоваться для автоматического перевода.
  5. Кэширование использует Memcache, который должен быть установлен на Вашем сервере. Если расширение отсутствует, игнорируем данную возможность ускорить работу переводчика, либо устанавливаем расширение.
  6. Показывать время отработки программы. Эта настройка отобразит время, за которое система парсит и переводит страницу, на которой Вы находитесь. 
  7. Просканировать сайт.
  8. Перевести данные.
Настройка парсера

Описание полей:

  • Игнорировать адреса - адреса, которые не будут попадать на перевод. Каждый адрес добавляется с новой строки. Чтобы использовать регулярное выражение, строка должна начинаться на #
    Пример:
    - Проигнорировать все адреса, которые начинаются на /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 %". Он нужен для того, чтобы парсер понимал, что данную ссылку не нужно локализировать.
Для добавления выбора языка Вы можете воспользоваться приведенным выше примером.

Настройка под MODx CMS
  • Сделайте все, кроме 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
Не добавляются переводы в админку

Это может просиходить по нескольким причинам:

  1. Возможно вы не подключили переводчик к CMS либо на хостинге не работают .htaccess. Проверить это можно включив в настройках SLI опцию "Показывать время отработки программы". Если после включения в самом низу сайта не будет выводится время выполнения SLI - значит скрипт не подключен.
  2. Кодировка сайта отличная от 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);
    
    то есть декодируем строку обратно.