Мультиязычность MODX Revo

Настройка мультиязычности MODX на сайте

  • мультиязычность на MODX Revo

Каждый, наверняка, хоть раз задумывался  о реализации мультиязычного сайта. И прекрасно осознавал, что разработка мультиязычности не такое простое и очевидное дело как кажется, а имеет множество нюансов и тонкостей.

Вчера наткнулся в интернете на интересное решение мультиязычности.

SLI (Site Language Injection) — скрипт на php для создания мультиязычности на сайте.

Автор - Богдан Рыхаль (GANJAR)предлагает свое решение насущной проблемы мультиязчности сайта, и даже можно сказать универсальный способ ее решения.

И, конечно же, мне сразу захотелось прикрутить это прикольное решение к MODX Revolution.

Не будем создавать никаких дополнительных таблиц с переводами, не будем создавать лишних контекстов - все будет очень просто!

Создание мультиязычного сайта займет у нас не более 5ти минут.

Всю установку мультиязычности на MODX я опишу кратко тезисами, что необходимо:

  • зайдем на сайт создателя, скачаем пакет SLI 
  • распаковываем SLI в корень сайта
  • прописываем настройки в конфиге SLI - config.php
  • добавляем в .htacces
php_value auto_prepend_file "[path]/protected/sli.php"
пример: php_value auto_prepend_file "/home/g/griga/public_html/sli/sli.php"
  • заходим в админку SLI по адресу sitename/sli/
  • добавляем необходимые языковые версии сайта и алиасы (сокращенное название для языка, отображается в адресной строке)
  • по желанию можете подключить Memcache (ускорим работу переводчика)
  • заходим в сканер сайта и выбираем сканировать по url или sitemap
  • затем можно выбрать в пункте Перевод - перевод текста , либо осуществить перевод через yandex-переводы
  • да , чуть не забыл... Необходимо в .htacces заменить строчку
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] на
RewriteRule ^(?:en/)?(.*)$ index.php?q=$1 [L,QSA]

где en язык, выбранный в настройках SLI
Мультиязычность на MODX настроена и работает!

для переключения языковых версий сайта можно создать сниппет, со следующим содержанием:

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 }

Пока тестирую, в дальнейшем дополню материал...


Комментарии