Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Многоязычный сайт (редирект) (https://javascript.ru/forum/misc/17383-mnogoyazychnyjj-sajjt-redirekt.html)

Himmler 17.05.2011 12:40

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

Есть необходимость перенаправлять пользователя в часть сайта с его языком. по средствам 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,..
И что-то до меня не как не доходит, что в нем надо изменить, для получение желаемого результата :help: :cray:

Может кто то, уже делал подобное?

Starkua 17.05.2011 15:16

20-я строчка, отвечает за нужный функционал.

Himmler 17.05.2011 16:19

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


Часовой пояс GMT +3, время: 04:04.