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
Default-Sprache des Browser feststellen (Bottle)
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Über den Accept-Language header [1]. Das parsen[2] ist auch gar nicht so schwer.
[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
[2] http://www.xml.com/pub/a/2005/06/08/restful.html
[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
[2] http://www.xml.com/pub/a/2005/06/08/restful.html
Bottle: Micro Web Framework + Development Blog
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
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'
TUFKAB – the user formerly known as blackbird
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
thx.
Mir ist nur gerade nicht klar, ob und wie ich mit Python & Bottle Bordmitteln an den Accept-Header komme... :K
Gruß, noisefloor
thx.
Mir ist nur gerade nicht klar, ob und wie ich mit Python & Bottle Bordmitteln an den Accept-Header komme... :K
Gruß, noisefloor
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
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()
Bottle: Micro Web Framework + Development Blog
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
In geparster version gar nicht. Werkzeug als dep ins Projekt aufnehmen, oder Code dort klauen.noisefloor hat geschrieben:Mir ist nur gerade nicht klar, ob und wie ich mit Python & Bottle Bordmitteln an den Accept-Header komme... :K
Der erste Eintrag muss nicht der hoechstbewerteste sein. Ist er auch in einigen Browsern nicht.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()
TUFKAB – the user formerly known as blackbird
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ok, werde ich mal probieren. Letztendlich geht es bei dem was ich vorhabe auch nur darum zu sehen, ob Deutsch default ist.
@mitsuhiko:
Gruß, noisefloor
ok, werde ich mal probieren. Letztendlich geht es bei dem was ich vorhabe auch nur darum zu sehen, ob Deutsch default ist.
@mitsuhiko:
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.oder Code dort klauen.

Gruß, noisefloor
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
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. 

TUFKAB – the user formerly known as blackbird
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
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
Yup, stimmt. Wie schon weiter oben stand: Was an 1. Stelle steht muss ja nicht zwingend die höchste Priorität haben...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.
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
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
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.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.
Also bitte richtig behandeln. Nach spec kann auch eine Sprache mit 0.0 drin sein.
TUFKAB – the user formerly known as blackbird