Переделанный мной вариант
PHP код:
preg_match('/^\w{2}/',$_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
switch (strtolower($matches[0])){
case "ru": $accept_lang="ru";break;
case "de": $accept_lang="de";break;
case "en": case "uk": case "us": $accept_lang="en";break;
default: $accept_lang="de";break;
}
if (isset($_REQUEST["lang"])) $_SESSION["lang"] = $_REQUEST["lang"];
elseif(!isset($_SESSION["lang"])||($_SESSION["lang"]=='')) $_SESSION["lang"] = $accept_lang;
$lang=$_SESSION["lang"];
if ($lang!='ru'&&$lang!='de'&&$lang!='en') $lang=$accept_lang;
$_SESSION["lang"] = $lang;
затем просто
HTML код:
<a href="?lang=de">Немецкий</a>
<a href="?lang=ru">Русский</a>
<a href="?lang=en">Английский</a>
Таким образом, язык сначала определяется и ставится на старте. Затем записывается в сессию и остается в ней до конца, или пока пользователь сам не переключит язык.
Если пользователь думает, что он самый умный и пытается выставить что то типа "?lang=bb" , то включается язык браузера.
Новый язык записывается в сессию.
Но можно например записывать и в куки...