Mailinglisten-Archive |
> Andreas Filz schrieb:
>
> Hi leutz,
>
> frage vorweg, macht es sinn eine laenderabhaengige weiterleitung
> anhand der ip zu setzen (deutsch oder englisch)? bzw. wie "sicher"
> waere dies, das es "richtig" funktioniert?
>
> wuerde es reichen nur die deutschen ranges abzugleichen, oder waere es
> sinnvoller den hostname ausgeben zu lassen und sich spaeter auf das
> .de zu beziehen?
>
> oder gibt es vielleicht noch eine bessere loesung dafuer?
Moin,moin Andreas
da gibts bestimmt bessere Lösungen fuer. Mich wuerde es schon wundern
wie du von der IP Adresse auf die Sprache schliessen willst. Mal
angenommen du bekommst ueber die Ip den Hostnamen heraus und koenntest
auch eingrenzen zu welcher Domain er gehoert und von da auf die Sprache
schliessen. Das sagt dir noch immer nicht welcher Sprache der Anwender
maechtig ist der da an seinem Client sitzt.
Mal den Ernstfall betrachtet, stell dir vor die zigtausend
auslaendischen IT Kraefte sind nun alle da und surfen hinter deutschen
Firewalls(stichwort NAT) durchs Netz. Du erkennst das Dilemmer.
Ein Ansatz waere darauf zu vertrauen das die Anwender ihren Client
richtig konfigurieren und die bevorzugte Sprachversion einstellen.
Zumind. die grossen beiden im Browser geschaefft sehen dies vor. Als PHP
Programierer kann dir dann die Variable 'HTTP_ACCEPT_LANGUAGE' zur
Verfuegung stehen. Zusaetzlich musst du dem Anwender immer die Chance
geben die Sprachversion auf deine HTML Seite manuell auswaehlen
zuduerfen z.B mit Flaggensysmbolen.
Die solltest du entsprechend Auswerten.
Als 'schlechtes' Beispiel kann dienen:
function lang_detect($lang_poss, $lang_choice = "")
{
// Funktion zum Zuordnen der HTTP_ACCEPT_LANGUAGE Variable zu
// gueltigen Doukumenten in verschiedenen Sprachversion
//
// Funtionsaufruf z.B lang_detect("de,en,fr,it", it)
// 1. Als erster Wert z.B "fr,po,ru" muss ein String uebergeben werden
// der die moeglichen Sprachversionen enthaelt. Der erste
// Laendercode ist gleichtzeitig der Defaultwert falls keine
// Uebereinstimmung gefunden werden kann.
// 2. Als zweiter optionaler Wert kann ein weiterer Sprachcode angegeben
werden,
// der die Werte aus HTTP_ACCEPT_LANGUAGE ignoriert und somit versucht
den
// angegebenen Wert expliziert auszuwaehlen, sofern dieser im ersten
// Parameter vorkommt
//
//
// Returnwert ist der 2stellige ISO639 Laendercode
global $HTTP_ACCEPT_LANGUAGE;
$lang_possible = explode(",", $lang_poss);
$lang_request = explode(",", "$HTTP_ACCEPT_LANGUAGE");
if ($lang_choice !="")
{
if(strpos("$lang_poss","$lang_choice") > 0)
{
return "$lang_choice";
}
}
while(list($key_request, $val_request) = each($lang_request))
{
substr("$val_request",0,2);
reset($lang_possible);
while(list($key_possible, $val_possible) = each($lang_possible))
{
substr("$val_possible",0,2);
if(substr("$val_request",0 ,2) == substr("$val_possible", 0 ,2))
{
return "$val_possible";
}
}
}
return "$lang_possible[0]";
}
Gruss
Joerg Behrens
ps: schau dir mal den Apachen mit 'MultiViews' an
--
Key fingerprint = 92 7D E0 A6 CF AE EC 32 14 28 EF 0D 57 2A 88 5B
----------------------------------------------------------------------
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
php::bar PHP Wiki - Listenarchive