Автоматическое переключение контекстов Babel по языку браузера

День добрый!
Есть сайт на два языка: ru (основной)/ en (дополнительный)
Ключи контекстов именно такие: ru, en
Задача такова:
Если человек заходит с браузером с английским языком на любую страницу, то автоматически переводить его на её копию в английском контексте.
Если он переключает язык — не мешать, переходить на основную, русскую версию.
Если с русского языка заходит — ничего автоматически не перенаправлять.

Есть вот такой код:
Но работает как-то криво, если в русском браузере тыкаться внутри английской версии, то часто выдает 404 — uri подставляет из английской, а в контекст отправляет русский.
<?php
/* Запускаем плагин только на фронтенде и с включенными sef-url */
if ($modx->context->key == 'mgr' || !$modx->getOption('friendly_urls') || $modx->event->name != 'OnHandleRequest') {
    return;
}

/* Проверяем GET-параметр cultureKey */
if (!empty($_GET['cultureKey'])) {
    switch ($_GET['cultureKey']) {
        case 'en':
            $modx->switchContext('en');
            break;
        default:
            $modx->switchContext('web');
            break;
    }

    /* Очищаем GET-параметр, чтобы не появлялся в URL */
    unset($_GET['cultureKey']);
} else {
    /* Если cultureKey не указан, проверяем язык браузера */
    $browserLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

    if ($browserLang === 'en') {
        $modx->switchContext('en');
    }
    /* В остальных случаях оставляем текущий контекст (обычно web) */
}
Реально ли как-то довести до ума, чтоб всё работало по-человечески?
Заранее сердешная благодарность и чем могу, тем смогу
Серый
3 часа назад
modx.pro
7
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0