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