Интернационализация
Последнее обновление Oct 20th, 2026 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn moreЧто такое лексиконы¶
Лексиконы хранят переведённые строки MODX. Лексикон — это набор пар ключ => значение, по одному набору на язык, и каждый язык разбит на темы.
Как выбирается язык¶
Настройка cultureKey решает, какой язык загружается. MODX берёт значение из первого источника, где оно есть:
- параметр
cultureKeyзапроса; cultureKeyсессии;- контекстная настройка
cultureKey, если запрос идёт в контексте, где она задана; - системная настройка
cultureKey.
У системной настройки значение по умолчанию en. Некорректный код языка заменяется значением по умолчанию: код фильтруется шаблоном [A-Za-z0-9_-]+, поэтому de, de_DE и pt-br — допустимые значения.
Настройка locale хранит полную локаль системы, например de_DE.UTF8. Она применяется через setlocale() и задаёт форматы дат, времени и чисел.
Язык менеджера¶
У менеджера свой язык, и это не системная настройка: значение лежит в сессии под ключом manager_language.
- Пункт Toggle language в меню Admin меняет его. Для пункта нужно право
language. - Страница входа выбирает язык, если в сессии его нет: берёт
manager_languageиз запроса, затем из сессии, затем из заголовкаAccept-Languageбраузера, иначе используетen.
Доступные языки — это каталоги в core/lexicon/, а доступные темы — файлы *.inc.php в каталоге языка.
Лексиконы¶
Темы лексиконов должны быть загружены перед использованием.
Использование лексиконов в шаблонах¶
[[%key? &topic=`topicname` &namespace=`namespace_name` &language=`en`]]
У тега три свойства:
| Свойство | По умолчанию | Что делает |
|---|---|---|
topic |
default |
Тема лексикона. |
namespace |
core |
Пространство имён, которому принадлежит лексикон. |
language |
настройка cultureKey |
Язык значений. |
Каждое свойство тега доступно и внутри значения как плейсхолдер: [[+свойство]] заменяется значением этого свойства.
Если ключа или темы нет в выбранном языке, используется английское значение. Если ключа нет вовсе, тег выводит сам ключ — так опечатка в имени становится видна на странице.
Использование лексиконов в PHP¶
$modx->lexicon->load('namespace_name:topicname');
echo $modx->lexicon('key');
load() принимает тему, пространство имён и язык:
| Форма | Что загружается |
|---|---|
topic |
Тема, взятая из всех пространств имён. |
namespace:topic |
Тема одного пространства имён. |
language:namespace:topic |
Тема одного пространства имён на указанном языке. |
Без языка используется текущий: настройка cultureKey, а в менеджере — язык менеджера.
Переопределение одной записи¶
Одну строку можно переопределить в менеджере, в разделе Admin → Lexicon Management. Дважды щёлкните по значению записи и впишите новое, а кнопкой Create добавьте строку, которой в ядре нет вообще.
Такая запись хранится в базе данных, имеет приоритет над файлом темы и переживает обновление MODX. Revert Lexicon Entry убирает переопределение одной записи, а Revert Entries — переопределения целой темы и языка.
Остальное — на странице Добавление отсутствующего перевода.
События¶
| Событие | Когда срабатывает |
|---|---|
OnInitCulture |
После того, как заданы язык и локаль, до использования лексиконов. |
Создание многоязычного сайта¶
Обычно применяют два подхода:
- Контекст на язык. Настройте контекст для каждого языка и направляйте посетителя в нужный контекст по (суб)домену или подпапке. Используйте gateway-плагин, virtual host или дополнение вроде ContextRouter или Babel. Babel связывает переводы между контекстами. Лексиконы тоже работают в шаблонах разных контекстов: создайте нужные контекстные настройки
cultureKeyиlocale. - Единый контекст на все языки. Управляйте всеми языками из одного контекста. Для этого нужно дополнение, например Lingua.
Смотрите также¶
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn more










