Ответить Новая тема Новый опрос 
 Как реализовать автоматический переход
witan
Новичок
Сообщений: 5
Регистрация: 25-08-2015


04-09-2015 23:56
Как реализовать автоматический переход на RU или EN вариант сайта (прям с титульной страницы, титульная страница на RU или EN варианте) в зависимости от того с каким родным (предпочитаемым) языком зашёл на сайт покупатель, с какой зоны интернета.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


05-09-2015 01:38
Цитата:( witan @ 05-09-2015 00:56 Смотреть сообщение )
Как реализовать автоматический переход на RU или EN вариант сайта (прям с титульной страницы, титульная страница на RU или EN варианте) в зависимости от того с каким родным (предпочитаемым) языком зашёл на сайт покупатель

Это уже реализовано.
Браузер пользователя передаёт HTTP_ACCEPT_LANGUAGE (используемый в браузере язык) и если в ИМ найден перевод с данным кодом покупателя перебросит на него.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
witan
Новичок
Сообщений: 5
Регистрация: 25-08-2015


05-09-2015 01:54
Проверяли из Европы сайт
Скрытое содержимое:
просмотр разрешен группе "Пользователи".
показывается по-русски
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


05-09-2015 12:26
Цитата:( witan @ 05-09-2015 02:54 Смотреть сообщение )
Проверяли из Европы

:confus: Бред.

Описание:
При первом посещении сайта (если кука еще не создана) браузер передаёт строку HTTP_ACCEPT_LANGUAGE (предпочитаемые языки - локаль).
Из этой строки PrestaShop выбирает первую запись и проверяет наличие перевода для этого языка, иначе отображает язык используемый по умолчанию.

Не важно где территориально находится пользователь!


PrestaShop берет первую запись, остальные не проверяет, можно немного переписать метод setCookieLanguage добавив подобный код:
Код:
$list  = Tools::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if (preg_match_all('/,([a-z]{2,8});/i', $list, $list))
{
    if(sizeof($list[1]))
    {
        foreach($list[1] as $lang)
        {
            if (Validate::isLanguageCode($lang))
            {
                $lang = Language::getLanguage(Language::getIdByIso($lang));
                if(isset($lang) && isset($lang['id_lang']))
                {
                    $lang = new Language($lang['id_lang']);
                    if (Validate::isLoadedObject($lang) && $lang->active && $lang->isAssociatedToShop())
                    {
                        Context::getContext()->language = $lang;
                        $cookie->id_lang = (int)$lang->id;
                        break;
                    }
                }
            }
        }
    }
}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос