Opened 11 years ago

Closed 11 years ago

#558 closed enhancement (fixed)

Honour user's browser language preference

Reported by: spaetz Owned by:
Priority: major Milestone: 0.3.2
Component: programming Keywords:
Cc: Parent Tickets:

Description

A user accepting "klingon, de-de, de, it" will currently be served english web sites, as we try to serve the 1st choice and fall back to english if not available.

(WHY don't we have a klingon translation by the way???)

We need to fetch a list of available translations and match that up again the browsers accepted languages coming up with the best choice to use.

For this we can use 2 options: werkzeug.accepted_languages.best_match(['de', 'en']) which would be good, but probably is not sufficiently clever: initial test seems to show that preferred: "de-de, "en" available: "de", "en" would negotiate "en".

Alternatively there is "babel.negotiate" which seems to be cleverer and return "de" if preferred "de-de, en" and available "de, en".

Investigate and fix.

Change History (1)

comment:1 by spaetz, 11 years ago

Milestone: 0.3.2
Resolution: fixed
Status: newclosed

Fixed for now. (BTW, we never packaged translation files until today). There are still things to fix:
Like for example not caching a "JinjaEnv" per localization, but simply setting the translation in the JinjaEnv. (or at least we need to examine if this can be done in a thread safe manner). But for now this bug is fixed.

Note: See TracTickets for help on using tickets.