Помощь Локализации и языки на разных субдоменах РЕШЕНО

madmaximus85

Постоялец
Регистрация
30 Июл 2012
Сообщения
96
Реакции
54
Есть сайт на трех языках, сборка 1.5.6, все три языка разбросаны по разным субдоменам со своими локализациями
site.com русский
uk.site.com украинский
en.site.com английский

проблема в том что при переходе между сайтами сохраняются настройки основного домена, т.е. при переходе с русской на английскую версию остается русский язык и его нужно принудительно переключать (тоже и с валютами по-умолчанию для данного сайта).
Хотя в настройках магазина в админке локализации заданы верно (т.е. для каждого сайта прописаны свои языки фронтенда). Причем если сразу зайти с другого браузера на en.site.com то открывается верная локализация, а вот если попытаться перейти с site.com по ссылке на en.site.com то язык не меняется.

Данная проблема была и на других версиях, сейчас решил все-таки побороть, чувствую что копать надо скорее в сессиях и кукисах
 
офтоп:
uk - United Kingdom а не украина....
ua - украина
 
Проблема в сессиях. Если просто - попробуй оставить только по одному соответствующему языку (по-умолчанию) в каждом магазине, остальные поудаляй. Сведи все заказы в магаз с родным языком (через мультимагазин).
 
Проблема в сессиях. Если просто - попробуй оставить только по одному соответствующему языку (по-умолчанию) в каждом магазине, остальные поудаляй. Сведи все заказы в магаз с родным языком (через мультимагазин).

Это и так понятно что в сессиях. Движок стоит один, база одна, в настройках каждого магазина соответственно выпадающие меню для всех предустановленных языков и удалить можно только в локализациях, что вообще не решит проблему. Зачем мне сводить заказы? Проблема в том что клиент переходя по ссылке сохраняет настройки сессии и остается с русским языком на домене где должен стоять английский
 
самое простое решение переключить ajax скриптом

в скрипте проверяем домен и язык, если домен сменился и язык не дефолтный для него, то лучше предложить переключить, можно и принудительно конечно.
 
самое простое решение переключить ajax скриптом

в скрипте проверяем домен и язык, если домен сменился и язык не дефолтный для него, то лучше предложить переключить, можно и принудительно конечно.

Спасибо, наверное так и сделаю, причем принудительно поскольку каждый домен задумывался только со своим языком. Для переключения языков -используются ссылки на другие домены, где также будет принудительное переключение.

Начал искать пути передачи данных о языке в xml и тут натолкнулся на решение проблемы

BINGO index.php

вот механизм проверки языков в OC
Сначала смотрит сессии, затем куки и лишь потом смотрит на дефолтный для домена язык!

Код:
if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) {
    $code = $session->data['language'];
} elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) {
    $code = $request->cookie['language'];
} elseif ($detect) {
    $code = $detect;
} else {
    $code = $config->get('config_language');
}

Закомментировал первую часть кода. Решение проблемы найдено
Код:
if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) {
    /*$code = $session->data['language'];
} elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) {
    $code = $request->cookie['language'];
} elseif ($detect) {
    $code = $detect;
} else {*/
    $code = $config->get('config_language');
}
 
Последнее редактирование:
Назад
Сверху