Autor Zpráva
Anonymní
Profil *
Ahoj,

nemate prosim nekdo skript (nebo odkaz na skript), ktery by si z http hlavicek zasilanych webbrowserem automaticky zjistil preferovany jazyk a podle toho automaticky zvolil jazykovou mutaci? Proste neco, co dela google - kdyz mam jako preferovany jazyk cs, podstrci ceskou, kdyz en, anglickou ...

Diky moc.
jonge
Profil
Zkus se podívat na $_SERVER['HTTP_ACCEPT_LANGUAGE'];
nightfish
Profil
$jazyky = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if (isSet($jazyky[0])) {
switch ($jazyky[0]) {
case "cs": presmerujNaCeskouVerzi(); break;
case "en":
case "en-us":
presmerujNaAnglickouVerzi(); break;
default:
presmerujNaNejakouVychoziVerzi();
}
}
ernesto
Profil *
to neřeš zádným skriptem, vypiš si ty http hlavičky - a v nich najdeš nebo nenajdeš podle čeho to rozstřelíš
gaminn
Profil *
Použití

$jazyky = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']);

a následná manipulace s $jazyky[0] nemusí být přesná, pokud má uživatel více preferovaných jazyků (ten první nemusí být ten, který má být primárně užíván, dokonce by mohla nastat taková věc, že na prvním místě bude jazyk, který uživatel nechce za žádných okolností).

Takováhle maličkost:

$str = "en;q=0.5, fr;q=0.0, nl;q=1.0, tr;q=0.0";

preg_match_all("/([a-z]{2});q=(\d\.\d)/", $str, $s);
$jazyky = array_combine($s[1], $s[2]);
arsort($jazyky);
print_r($jazyky);

by to měla spravit.
Anonymní
Profil *
gaminn: Perfektni, to je presne ono, diky moc!
Anonymní
Profil *
gaminn:
V tom tvem prikladu nevidim nikde promennou $s. A jakou funkci zde ma napevno definovana promenna $str?

Diky
gaminn
Profil *
Anonymní
Hodnota se do proměnné $s dostává uvnitř funkce preg_match_all (proměnná je předána dovnitř funkce pouze jako reference).

Záměnu $str na řetězec s http hlavičkou posílanou klientovým počítačem snad zvládneš ne?
Toto téma je uzamčeno. Odpověď nelze zaslat.