Hallo, ich hab mal wieder was das nicht klappt.
es geht um die auswertung die hier rauskommt:
$lng=($lng=$_SERVER['HTTP_ACCEPT_LANGUAGE'])?$lng:"?";
das ergebnis speichere ich in einer Datei und das sieht dann so da drin aus:
de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
cs
en-us
en,*;q=0.5
cs,en-us;q=0.7,en;q=0.3
de
sl,en-gb;q=0.7,en;q=0.3
et
das sind 8 beispiele.
Das letzte Beispiel ist ganz schlimm, da steht das der client aus Ethiopien kommt, sollte aber aus "et"=>"Estnisch" kommen.
Nur weil da der 2te teil fehlt wird country durch language ersetzt:-(
Ich sehe das so:
Country/Language
cs,en-us -> client kommt aus tschechien, seine browsersprache englisch
sl,en-gb;q=0.7,en;q=0.3 -> client kommt aus slowenien, browsersprache englisch
et -> der kommt aus estland, liefert aber keine browsersprache :-(
Ich habe jetzt den string auf 5 zeichen gekürzt, der durcheinender dahinter ist nicht sooo wichtig denke ich mal.
also sieht meine textzeile jetzt so aus:
de-de
cs,en
sl,en
et
Wie kann man das vernünftig zerlegen, also schauen ob ein - oder ein , vorhanden ist, -> dann ist links das land und rechts die sprache
wenn es kürzer ist sowas wie "et", dann soll das die sprache sein, land gibts keins.
So hab ichs gemacht, will aber nicht richtig tun:
$al=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$check=strpos($al,"-"); # Prüfen ob ein "-"-Zeichen vorhanden ist (z.B. de-ch)
if($check==true)
{$zt=explode("-",$al);
$lang=$zt[0]; # Linker Teil
# Vom rechten Teil nur die ersten 2 Stellen, falls der rechte Teil existiert
if(!empty($zt[1]) and strlen($zt[1]<3)){$country=strtolower(substr($zt[1],0,2));}
else{$country=strtolower($zt[0]);}
}
else
{$lang=$al; $country=$al;}
$arrLang=arrLang(); # $arrLang=array("af"=>"Afrikaans", "sq"=>"Albanisch", "ar"=>"Arabisch", "hy"=>"Armenisch",...
$arrCountry=arrCountry() #$ arrCountry=array("ad"=>"Andorra", "ae"=>"Arabische Emirate", "af"=>"Afghanistan",...
es geht um die auswertung die hier rauskommt:
$lng=($lng=$_SERVER['HTTP_ACCEPT_LANGUAGE'])?$lng:"?";
das ergebnis speichere ich in einer Datei und das sieht dann so da drin aus:
de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
cs
en-us
en,*;q=0.5
cs,en-us;q=0.7,en;q=0.3
de
sl,en-gb;q=0.7,en;q=0.3
et
das sind 8 beispiele.
Das letzte Beispiel ist ganz schlimm, da steht das der client aus Ethiopien kommt, sollte aber aus "et"=>"Estnisch" kommen.
Nur weil da der 2te teil fehlt wird country durch language ersetzt:-(
Ich sehe das so:
Country/Language
cs,en-us -> client kommt aus tschechien, seine browsersprache englisch
sl,en-gb;q=0.7,en;q=0.3 -> client kommt aus slowenien, browsersprache englisch
et -> der kommt aus estland, liefert aber keine browsersprache :-(
Ich habe jetzt den string auf 5 zeichen gekürzt, der durcheinender dahinter ist nicht sooo wichtig denke ich mal.
also sieht meine textzeile jetzt so aus:
de-de
cs,en
sl,en
et
Wie kann man das vernünftig zerlegen, also schauen ob ein - oder ein , vorhanden ist, -> dann ist links das land und rechts die sprache
wenn es kürzer ist sowas wie "et", dann soll das die sprache sein, land gibts keins.
So hab ichs gemacht, will aber nicht richtig tun:
$al=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$check=strpos($al,"-"); # Prüfen ob ein "-"-Zeichen vorhanden ist (z.B. de-ch)
if($check==true)
{$zt=explode("-",$al);
$lang=$zt[0]; # Linker Teil
# Vom rechten Teil nur die ersten 2 Stellen, falls der rechte Teil existiert
if(!empty($zt[1]) and strlen($zt[1]<3)){$country=strtolower(substr($zt[1],0,2));}
else{$country=strtolower($zt[0]);}
}
else
{$lang=$al; $country=$al;}
$arrLang=arrLang(); # $arrLang=array("af"=>"Afrikaans", "sq"=>"Albanisch", "ar"=>"Arabisch", "hy"=>"Armenisch",...
$arrCountry=arrCountry() #$ arrCountry=array("ad"=>"Andorra", "ae"=>"Arabische Emirate", "af"=>"Afghanistan",...
Kommentar