Menu
Home / Записи / Formit и мультиязычность
Formit и мультиязычность

26.06.2018

Formit и мультиязычность

Modx часто используют для создания мультиязычных проектов, благодаря удобной и относительно простой интеграции этой мультиязычности через административную панель. Соответственно, так как сегодня практически в любом сайте используются формы, а значит и сниппет formit, регулярно встает вопрос о мультиязычности этого компонента. И если саму форму и чанк письма каждый разработчик формирует самостоятельно, то вывод сообщений об ошибках при прохождении процедуры валидации формы — это встроенная и готовая уже функция сниппета «из коробки». Но как быть, если у нас есть форма Fromit на русской версии сайта и на английской? По умолчанию formit использует для вывода ошибок основной язык сайта, указанный в настройках самой системы. И если необходимо вывести ошибки на другом языке, то придется немного поднастроить вывод сниппета. В большинстве случаев нам придется внести два небольших изменения:

1.

Вам придется использовать контексты Modx для формирования языковых версий вашего сайта. Допустим, основной язык у вас будет русским и основным контекстом будет стандартный контекст Web. Для англоязычной версии вы создаете отдельный контекст, в котором, помимо необходимых для нормальной работы контектса настроек обязательно указываете параметр «cultureKey». Для этого идем в настройки нужного нам контекста и добавляем новую настройку.

Ключ нужно выбрать из списка ключей —«cultureKey»
название —«CulturalKey»
значение —«en» (либо тот язык, который вы планируете использовать)

2.

В выводе сниппета для русскоязычной (дефолтной) версии мы ничего не меняем, а вот в выводе на втором языке (английском в нашем примере) нужно добавить определение CulturalKey. То есть к выводу FormIt? … добавляем &cultureKey=`en`


В версии Formit «из коробки» доступны следующие языковые версии: cs, de, en, es, fr, it, nl, pl, ru, sv

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