Имеется сайт с Magento на английском. Необходимо, чтобы для пользователей, которые используют русский язык, сайт переключался соответственно, на русскую версию.
От переключения по IP пришлось отказаться т.к. русский IP не означает, что пользователь говорит по-русски и наоборот, это раз, два - мне необходимо было свободно работать в обеих версиях сайта без постоянного переключения и три - особенность переключения языка в Magento.
Дано:
hitechdevice.net - собственно пациент,
ru.hitechdevice.net - русская версия,
/?___store=ru&___from_store=en - уже существующий механизм переключения языка вручную.
Итак, что получилось в итоге (Осторожно быдлокод!):
<script type="text/javascript">Как это работает.
var href = window.location.href;
var lang1 = navigator.language || navigator.systemLanguage;
var lang = lang1.toLowerCase();
lang = lang.substr(0,2);
var newpage = window.location.href;
if (href.indexOf("___store") == -1)
{
if (lang=="ru"){
if (href.indexOf("ru.") == -1) {
newpage = newpage + '?___store=ru';
window.location.replace ?window.location.replace(newpage) :window.location=newpage;
}
}
}
</script>
var href = window.location.href;Дважды берем адрес, по которому зашел пользователь, в переменные href и newpage, они нам пригодятся дальше.
var lang1 = navigator.language || navigator.systemLanguage;
var lang = lang1.toLowerCase();
lang = lang.substr(0,2);
var newpage = window.location.href;
В переменную lang1 записываем язык браузера пользователя (вида ru_RU, us_en и т.д.) вырезаем интересующую нас часть (последние 2 символа) и перегоняем их в строчные (на всякий случай).
if (href.indexOf("___store") == -1)Проверяем, нет ли в URL признаков переключения языка, на случай, если пользователь поменял язык вручную, и чтобы не было зацикливания.
if (lang=="ru"){Попался пользователь с русским языком? Смотрим, на какой версии сайта он находится. Если не на русской - направляем его на поддомен ru.
if (href.indexOf("ru.") == -1) {
newpage = newpage + '?___store=ru';
window.location.replace ?window.location.replace(newpage) :window.location=newpage;
Будьте внимательны! В зависимости от того, как у вас на сайте организована мультиязычность, последние строчки кода необходимо будет переделать под ваши нужды.
Вот, вроде бы и всё. Работу скрипта можно посмотреть на указанном выше сайте.
No comments:
Post a Comment