Seite 1 von 1
Default-Sprache des Browser feststellen (Bottle)
Verfasst: Sonntag 11. Juli 2010, 21:30
von noisefloor
Hallo,
wie kann ich am einfachsten bei einer Webanwednung (die mit Bottle gebaut ist) feststellen, welches die Default-Sprache des Browsers ist, der eine Seite abruft?
Gruß, noisefloor
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Montag 12. Juli 2010, 00:08
von Defnull
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Montag 12. Juli 2010, 16:43
von mitsuhiko
Geht wie gesagt mit dem Accept header. Parsen kannst du das zB mit "werkzeug.parse_accept_header". Hier ein Beispiel mit dem Request Objekt:
Code: Alles auswählen
>>> req = Request.from_values(environ_overrides={'HTTP_ACCEPT_LANGUAGE':'de-DE,de;q=0.7,en;q=0.5'})
>>> req.accept_languages
LanguageAccept([('de-DE', 1), ('de', 0.7), ('en', 0.5)])
>>> req.accept_languages.best_match(['en', 'de', 'fr'])
'de'
>>> 'de_DE' in req.accept_languages
True
>>> req.accept_languages.best
'de-DE'
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Montag 12. Juli 2010, 18:01
von noisefloor
Hallo,
thx.
Mir ist nur gerade nicht klar, ob und wie ich mit Python & Bottle Bordmitteln an den Accept-Header komme... :K
Gruß, noisefloor
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Montag 12. Juli 2010, 18:28
von Defnull
Folgendes sollte in den meisten Fällen klappen, auch wenn es natürlich nur ein stark vereinfachter Parser ist.
Code: Alles auswählen
bottle.request.header.get("Accept-Language",'').split(',')[0].strip()
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Montag 12. Juli 2010, 18:34
von mitsuhiko
noisefloor hat geschrieben:Mir ist nur gerade nicht klar, ob und wie ich mit Python & Bottle Bordmitteln an den Accept-Header komme... :K
In geparster version gar nicht. Werkzeug als dep ins Projekt aufnehmen, oder Code dort klauen.
Defnull hat geschrieben:Folgendes sollte in den meisten Fällen klappen, auch wenn es natürlich nur ein stark vereinfachter Parser ist.
Code: Alles auswählen
bottle.request.header.get("Accept-Language",'').split(',')[0].strip()
Der erste Eintrag muss nicht der hoechstbewerteste sein. Ist er auch in einigen Browsern nicht.
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Montag 12. Juli 2010, 19:12
von noisefloor
Hallo,
ok, werde ich mal probieren. Letztendlich geht es bei dem was ich vorhabe auch nur darum zu sehen, ob Deutsch default ist.
@mitsuhiko:
oder Code dort klauen.
Ich klaue nur Code, den ich auch voll verstehe. Und um deine Python-Skills zu erreichen brauche ich noch... na, sagen wir mal 1-2 Wochen.
Gruß, noisefloor
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Dienstag 13. Juli 2010, 13:17
von mitsuhiko
Es gibt sowas wie "Deutsch als Default" nicht. Du kannst nur sagen welche Sprachen du verstehst und zu wie viel Prozent du die haben willst. Von daher musst du das Dingt richtig parsen. Werkzeug macht das wie gesagt fertig, brauchst du selber nicht implementieren, kannst du einfach verwenden.

Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Dienstag 13. Juli 2010, 19:40
von noisefloor
Hallo,
Es gibt sowas wie "Deutsch als Default" nicht. Du kannst nur sagen welche Sprachen du verstehst und zu wie viel Prozent du die haben willst.
Yup, stimmt. Wie schon weiter oben stand: Was an 1. Stelle steht muss ja nicht zwingend die höchste Priorität haben...
Wobei ich mich im letzten Posting falsch ausgedrückt habe: Ich möchte nur wissen, ob Deutsch in den "Accept-Languages" ist. Das kann man ja ganz einfach feststellen.
Ggf. kommen bei meiner Applikation später mal Tests auf Französisch, Russisch und Chinesisch dazu... Dann werde ich auch den Parser von Werkzeug wohlwollend berücksichtigen.
Gruß, noisefloor
Re: Default-Sprache des Browser feststellen (Bottle)
Verfasst: Dienstag 13. Juli 2010, 20:53
von mitsuhiko
noisefloor hat geschrieben:Wobei ich mich im letzten Posting falsch ausgedrückt habe: Ich möchte nur wissen, ob Deutsch in den "Accept-Languages" ist. Das kann man ja ganz einfach feststellen.
Ugh. Ganz schlechte Idee. Ich hab zB in meinem Browser Deutsch mit 0.1 drin und Englisch mit 1.0. Gibt sicher auch genug Schweizer, die Deutsch als 0.3 haben, Englisch als 0.7 und Franzoeisch als 1.0.
Also bitte richtig behandeln. Nach spec kann auch eine Sprache mit 0.0 drin sein.