Что такое Babel?
Babel – это дополнение для MODx Revolution, которое призвано помочь в управлении Вашими мультиязычными веб-сайтами с использованием различных контекстов. Babel поддерживает даже управление несколькими мультиязычными веб-сайтами в одном образце MODx с помощью так называемых контекстных групп.
▶ Babel сохраняет ссылки между переведенными ресурсами. В менеджере Вы можете использовать Babel Box, чтобы легко переключаться между различными языковыми версиями Ваших ресурсов. Переведенные версии Babel могут создаваться автоматически или задаваться вручную.
Кроме того, Babel может использоваться для синхронизации определенных шаблонных переменных (template variables, TV) переведенных ресурсов, которые должны быть аналогичными в любом контексте (языке).
История
Babel разработал Якоб Класс (Jakob Class) на основе идей Sylvain Aerni, впервые приложение было выпущено 16 декабря 2010 года.
Установка
Подготовка
Создайте контекст под каждый из языков и задайте настройки cultureKey и site_url в соответствии со своими потребностями.
Убедитесь, что переключения контекстов происходят корректно.
Скачивание
Babel можно скачать с помощью менеджера в MODx Revolution через Package Management, или через MODx Extras Repository/
Установка
Установите Babel с помощью пакет-менеджера и задайте системные настройки Babel, используя форму, которая отображается во время установки:
<code><strong>Context</strong><strong>Keys</strong> (babel.contextKeys): список контекстных клавиш через запятую, которые применяются для связки мультиязычных ресурсов.<br />
В расширенной конфигурации Вы можете определить несколько групп контекстных клавиш с помощью точки с запятой (;) в качестве разделителя. Это пригодится для администрирования нескольких многоязычных сайтов в одном образце MODx.
Пример:
ёsite1: en, de, fr. c контекстами web, site1de, site1fr<
site2: en, de. с контекстами site2en, site2de
Вы выбираете babel.contextKeys для " web,site1de,site1fr;site2en,site2de".
• Имя Babel TV (babel.babelTvName): Имя шаблонной переменной (TV), в которой Babel будет хранить ссылки между мультиязычными ресурсами. Эту TV будет поддерживать Babel. Пожалуйста, не изменяйте TV в ручном режиме, иначе Ваши ссылки между переведенными версиями могут быть утрачены.
• ID шаблонных переменных должны быть синхронизированы (babel. syncTvs): разделенный запятыми список идентификаторов шаблонных переменных (TV), которые Babel должен синхронизировать.
Как пользоваться
При открытии ресурса для редактирования Babel Box будет отображаться в верхней части формы ресурса. Там же находятся ссылки в виде кнопок для каждого из языков (контекстов), заданных в настройках системы babel.contextKeys.
Три различных цвета, в которых могут отображаться кнопки, означают:
• Черный: язык ресурса, отображающегося в данный момент.
• Зеленый: язык, для которого определена переведенная версия ресурса.
• Светло-серый: язык, для которого переведенная версия пока не была создана или определена.
Нажимая на (зеленые) кнопки языков, Вы можете легко переключаться между различными языковыми версиями Ваших ресурсов.
Если перевод не определен для данного языка (серая кнопка), наведите курсор мыши на языковую кнопку – появляется окно, в котором можно задать Babel создать перевод текущего ресурса, или вставить ссылку перевода на существующий ресурс вручную, для чего требуется ввести ID переведенного ресурса.
Кликая на "Create Translation", Вы задаете Babel создать новый ресурс в контексте языка и скопировать все содержимое текущего ресурса для вновь созданного. Далее Вы можете перевести вест контент, TV и опубликовать переведенный ресурс.
Если Вы хотите удалить ссылку на переведенную версию, просто наведите курсор мыши на зеленую кнопку языка: появляется окно с опцией "Unlink translation" для ее удаления.
Сниппеты
В настоящее время два сниппета доступны для Babel: BabelLinks и BabelTranslation.
Изменение настроек Babel после установки
Вы можете изменить настройки Babel после установки. Например, если Вы хотите определить новую TV, которая должна быть синхронизирована, или добавить новый контекст. Для этого перейдите в System/Settings в менеджере MODx и выберите местоположение babel. Теперь Вы можете редактировать все параметры Babel:
BabelLinks
BabelLinks – это snippet, который отображает ссылки на другие языки (контексты) для конечного пользователя.
Доступные параметры
Имя |
Описание |
По умолчанию |
resourceId |
(опция) ID ресурса, в котором должны отображаться ссылки на переводы. |
ID текущего ресурса |
tpl |
(опция) Чанк для отображения языка ссылки. |
babelLink |
activeCls |
(опция) имя класса CSS для языка, активного в данный момент. |
active |
showUnpublished |
(опция) закладка, где отображаются неопубликованные переводы. |
0 |
BabelLink Chunk
Если параметр &tpl не установлен, по умолчанию Chunk будет использоваться со следующим кодом:
<li><a href="" class="">babel.language_</a></li>
Используя собственный блок для отображения языковых ссылок, Вы можете использовать следующие идентификаторы (placeholders):
Имя | Описание |
url | Url связанного перевода (или url сайта определенного языка, если нет доступного переведенного ресурса) |
cultureKey | Culture key перевода (e.g en, de, fr oder es). Можно использовать словарь babel для отображения названия языка: babel.language_ |
active | Если активная ссылка указывает на текущий активный язык (контекст), этот плейсхолдер устанавливается на активное имя CSS-класса, указанное в параметре & activeCls (по умолчанию =active). В противном случае идентификатор пуст. |
id | ID переведенного ресурса. Если нет доступного перевода, идентификатор пуст. |
Пример
[[BabelLinks]]
BabelTranslation
Snippet BabelTranslation возвращают ID переведенных ресурсов в данном контексте.
Доступные параметры
Имя | Описание | По умолчанию |
resourceId | (опция) ID ресурса, на основе которого должен быть определен переведенный ресурс. | ID текущего ресурса |
contextKey | Ключ контекста, в котором переведенный ресурс должен быть определен. | |
showUnpublished | (опция) Флажок, для просмотра неопубликованных переводов | 0 |
Пример
Чтобы вернуть ID переведенного ресурса, который находится в "de" контексте текущего ресурса.