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

Во время работы над modx-test.com (который потом вырос в https://modhost.pro) придумал и реализовал прикольную мультиязычность.
Никаких копирований файлов, поддоменов и прочих заморочек. 1 простой плагин, который делает всю работу.
Нам нужно 2 контекста, по умолчанию в основном контексте ставим русский язык. В настройках контекстов указаны следующие параметры:
web- cultureKey - ru
  • site_start - 1
  • error_page - 1
en- cultureKey - en
  • site_start - 3
  • error_page - 3
В системных настройках отключаем проверку дупликатов url во всех контекстах. Url соответствующих страниц должны быть одинаковыми - так гораздо проще. Иначе, надо будет наворачивать сниппет, выдающий ссылку на другую языковую версию.
А вот и сам плагин, реагирует на событие OnHandleRequest:
<?php
if ($modx->event->name != "OnHandleRequest" || $modx->context->key == 'mgr') {return;}

if (isset($_GET['lang']) && $_GET['lang'] != $_SESSION['lang']) {
    if ($_GET['lang'] == 'en') {
        $_SESSION['lang'] = 'en';
    }
    else {
        $_SESSION['lang'] = 'ru';
    }
}

if ($_SESSION['lang'] == 'en') {
    $modx->switchContext('en');
}
То есть, при указании параметра ?lang=en или ?lang=ru любой ссылке - контекст сайта переключается, а вместе с ним и язык - и это запоминается в сессию, то есть ссылка больше не нужна.
Прощай геморрой с настройками!
Бонус в виде сниппета для вывода ссылки на переключение:
<?php
$link = $modx->makeUrl($modx->resource->id, '', '', 'full');

if ($modx->getOption('cultureKey') == 'en') {
    return "<a href=\"$link?lang=ru\">Русский</a>";
}
else {
    return "<a href=\"$link?lang=en\">English</a>";
}
Поисковики такой сайт индексируют нормально - ведь на каждой странице есть ссылка на другую языковую версию, и урл отличается. То есть в индексе страницы с разным ?lang=(en|ru) и с разным содержимым.