Как реализовать переключение языков без контекстов

Здравствуйте!

Есть статьи с переводами на английский язык, которые должны открываться по ссылкам вида:
site.com/ru/article
site.com/en/article

Используется только контекст web, переводы заполняются в кастомной вкладке ресурса и хранятся в отдельной таблице.

Подскажите, как можно реализовать переключение языковой версии при условии, что нет контекста и нужно использовать директории ru|en?

Сразу скажу, чем не устраивает контекст + babel и т.д.:
это долго и неудобно при добавлении большого количества статей, много «лишних» переключений, копирований и т.д., кратно быстрее и удобнее при создании ресурса быстро скопипастить во вкладку все поля с переводами.

Заранее спасибо за ваши идеи и предложения.
Илья
22 сентября 2022, 00:34
modx.pro
538
0

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

Kirill A. Rusanov
22 сентября 2022, 08:17
0
Кажется, вы начали писать что-то подобное localizator. Он бесплатный – читайте доки, смотрите код.
    Илья
    22 сентября 2022, 14:04
    0
    Точно, в localizator такое было реализовано!
    Илья
    22 сентября 2022, 14:29
    0
    В localizator реализовано через setOption.
    Если идти тем же путем, то можно взять за основу способ Василия Наумкина Переключение контекстов мультиязычного сайта, но
    работать только с контекстом web и вместо переключения контекста переопределить значения для текущего контекста (web).

    //выбираем только контекст web
    $q = $modx->newQuery('modContextSetting', array('context_key' => 'web'))

    //разбираем запрос в массив
    $requestToArray = explode('/',$request);

    //если в запросе en директория
    if($requestToArray[0] == 'en'){
    $modx->setOption('site_url', 'http://site.ru/en/');
    $modx->setOption('cultureKey','en');
    $modx->setOption('http_host','site.ru');
    $modx->setOption('base_url','/en/');
    $base_url = 'en';
    }
    //если директория ru
    if($requestToArray[0] == 'ru'){
    $modx->setOption('site_url', 'http://site.ru/ru/');
    $modx->setOption('cultureKey','ru');
    $modx->setOption('http_host','site.ru');
    $modx->setOption('base_url','/ru/');
    $base_url = 'ru';
    }

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