Сегодня столкнулся с тем, что нужно было сделать английскую и русскую версии для сайта на UMI.CMS. Добавить языковые версии (Модули → Конфигурация → Языки) и выбрать язык по умолчанию для домена (Модули → Конфигурация → Домены) не составило проблемы, то дальше возникли некоторые трудности.
Отсутствует шаблон
Первой из них оказалось отсутствие шаблона для английской версии. Этот вопрос решается просто:
1. Переключаемся на английскую версию (справа вверху язык в админке)
2. Открываем модуль «Структура» и идем в его «Настройки»
3. Прописываем путь к шаблону и его имя.
Ошибка XSLT-шаблонизатора
Дизайн английской версии никак не отличался от русской, поэтому я добавил тот же самый шаблон и тут полезла огромная куча ошибок. Ошибки заключались в том, что файл с языковыми константами для английского языка система не могла найти. Такая ошибка может возникнуть, если вы делаете сайт на основе стандартного xslt-шаблона.
Решается просто:
В папке с шаблоном находится папка i18n, в ней файл constants.ru.dtd, он дублируется и переименовывается в constants.en.dtd. После этого всё работает.
Если вы использовали стандартный xslt-шаблон в качестве основного и стандартное размещение шаблонов (не новое, когда каждый со всеми файлами в своей папке), то файл лежит в /xsltTpls/i18n/constants.en.dtd
Создание структуры
Языковые версии сайта устроены так, что представляют собой два разных сайта с разной структурой. Но, как правило, основная структура сайта не изменяется в зависимости от языка.
Поэтому у меня сразу возник вопрос, можно ли скопировать структуру русской версии в английскую в UMI?
К сожалению, стандартными средствами переносить страницы из одной версии сайта в другую оказалось нельзя и пришлось написать маленький скриптик, который её копирует.
Скачать его можно тут.
Сразу предупреждаю, что скрипт простой и копируют только первые два уровня структуры. Код я не комментировал, он и так предельно понятен, его легко сделать рекурсивным и сократить число обращений к базе в случае необходимости.
Пользоваться так:
1. Заливаем файл в корень сайта
2. Вводим в браузере http://yoursite.ru/copystructure.php?from=1&to=2, где 1 - id языка сайта из которого копируем, а 2 - id языка сайта, в который копируем. ВНИМАНИЕ! Перед копирование скрипт очистит структуру, в которую будет копировать, от всех элементов.
Удачного копирования.
Отсутствует шаблон
Первой из них оказалось отсутствие шаблона для английской версии. Этот вопрос решается просто:
1. Переключаемся на английскую версию (справа вверху язык в админке)
2. Открываем модуль «Структура» и идем в его «Настройки»
3. Прописываем путь к шаблону и его имя.
Ошибка XSLT-шаблонизатора
Дизайн английской версии никак не отличался от русской, поэтому я добавил тот же самый шаблон и тут полезла огромная куча ошибок. Ошибки заключались в том, что файл с языковыми константами для английского языка система не могла найти. Такая ошибка может возникнуть, если вы делаете сайт на основе стандартного xslt-шаблона.
Решается просто:
В папке с шаблоном находится папка i18n, в ней файл constants.ru.dtd, он дублируется и переименовывается в constants.en.dtd. После этого всё работает.
Если вы использовали стандартный xslt-шаблон в качестве основного и стандартное размещение шаблонов (не новое, когда каждый со всеми файлами в своей папке), то файл лежит в /xsltTpls/i18n/constants.en.dtd
Создание структуры
Языковые версии сайта устроены так, что представляют собой два разных сайта с разной структурой. Но, как правило, основная структура сайта не изменяется в зависимости от языка.
Поэтому у меня сразу возник вопрос, можно ли скопировать структуру русской версии в английскую в UMI?
К сожалению, стандартными средствами переносить страницы из одной версии сайта в другую оказалось нельзя и пришлось написать маленький скриптик, который её копирует.
Скачать его можно тут.
Сразу предупреждаю, что скрипт простой и копируют только первые два уровня структуры. Код я не комментировал, он и так предельно понятен, его легко сделать рекурсивным и сократить число обращений к базе в случае необходимости.
Пользоваться так:
1. Заливаем файл в корень сайта
2. Вводим в браузере http://yoursite.ru/copystructure.php?from=1&to=2, где 1 - id языка сайта из которого копируем, а 2 - id языка сайта, в который копируем. ВНИМАНИЕ! Перед копирование скрипт очистит структуру, в которую будет копировать, от всех элементов.
Удачного копирования.
Комментариев нет:
Отправить комментарий