Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2011, 12:40
Интересующийся
Отправить личное сообщение для Himmler Посмотреть профиль Найти все сообщения от Himmler
 
Регистрация: 02.12.2009
Сообщений: 10

Многоязычный сайт (редирект)
Доброго времени суток.

Есть необходимость перенаправлять пользователя в часть сайта с его языком. по средствам js.
Нашел приемлемы скрипт, который прекрасно с этим справляется:
var myLngHost = 'site1.ru'; //сюда водим адрес сайта без www.
var myDefSubDomain = ''; // www or empty - тут если сайт работает как [url]www.site1.ru[/url] то пишем www, иначе пусто.
var myLngDef = 'ru'; //определяем какой сайт грузить если язык браузера например японский, т.е. язык по умолчанию для неописаного домена.
var myLngArray = {
	'ru': myDefSubDomain,
	'by': myDefSubDomain,
	'ua': myDefSubDomain,
	'de': 'de',
	'fr': 'fr',
	'es': 'es',
	'en': 'en'
}; // настройки куда что редиректить, в данном случае русский/беларусский/украинский на основной сайт редиректит. 'de':'de','fr':'fr','es':'es' - это если есть еще какие то поддомены
var myLngSite = myGetCookie('myLngSite');
if (!myLngSite && location.pathname == '/') {
	myCheckLng();
}
function myCheckLng() {
	var myLngBrowser = (navigator && navigator.language) ? navigator.language.replace(/(\w{2})(.*)/, '$1') : myLngDef;
	var myLngSubDomain = myLngArray[myLngBrowser] || myLngArray[myLngDef];
	var myLngNeedDomain = (myLngSubDomain ? myLngSubDomain + '.': '') + myLngHost;
	mySetCookie('myLngSite', 'init', 30);
	if (location.hostname != myLngNeedDomain) {
		window.location = 'http://' + myLngNeedDomain;
	}
 
}
function mySetCookie(name, value, expdays) {
	var today = new Date();
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expdays);
 
	document.cookie = name + "=" + escape(value) + (expdays ? "; expires=" + exdate.toUTCString() : "") + ";path=/;domain=" + location.hostname;
}
function myGetCookie(name) {
	var prefix = name + "="
	var cookieStartIndex = document.cookie.indexOf(prefix)
	if (cookieStartIndex == -1) return null
	var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
	if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length
	return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}



Только вот он перенаправляет на субдомен, т.е. ru.site.ru, en.site.ru,.. и т.д.
А мне нужно в раздел сайта - site.ru/ru, site.ru/en,..
И что-то до меня не как не доходит, что в нем надо изменить, для получение желаемого результата

Может кто то, уже делал подобное?
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2011, 15:16
Аватар для Starkua
Аспирант
Отправить личное сообщение для Starkua Посмотреть профиль Найти все сообщения от Starkua
 
Регистрация: 10.02.2010
Сообщений: 52

20-я строчка, отвечает за нужный функционал.
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2011, 16:19
Интересующийся
Отправить личное сообщение для Himmler Посмотреть профиль Найти все сообщения от Himmler
 
Регистрация: 02.12.2009
Сообщений: 10

Это я понял Только я понять не могу, как именно ее изменить.
По идее должно быть так:
var myLngNeedDomain = myLngHost + ('/' + myLngSubDomain ? myLngSubDomain);
На так скрипт просто перестает работать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если сайт не отвечает то не грузить JS wlad2 Общие вопросы Javascript 13 13.11.2010 12:17
Оцените сайт, плиз mannn Ваши сайты и скрипты 54 18.08.2010 21:41
30(1|2) редирект от сервера. Или как лучше сделать редирект при верной отсылке форма. pizzZ AJAX и COMET 2 18.02.2010 09:06
Я в тупике .show .hide (Как сделать многоязычный сайт) Евгений Общие вопросы Javascript 14 18.12.2008 14:36
Наконец-то сайт открыт Илья Кантор Сайт Javascript.ru 9 06.08.2008 02:27