aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/app.py1
-rw-r--r--mediagoblin/mg_globals.py7
-rw-r--r--mediagoblin/tools/translate.py25
3 files changed, 15 insertions, 18 deletions
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index 3a2d00f0..de421aca 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -134,7 +134,6 @@ class MediaGoblinApp(object):
## Compatibility webob -> werkzeug
request.GET = request.args
- request.accept_language = request.accept_languages
request.accept = request.accept_mimetypes
## Routing / controller loading stuff
diff --git a/mediagoblin/mg_globals.py b/mediagoblin/mg_globals.py
index fffa1dda..356a944d 100644
--- a/mediagoblin/mg_globals.py
+++ b/mediagoblin/mg_globals.py
@@ -45,11 +45,8 @@ workbench_manager = None
# A thread-local scope
thread_scope = threading.local()
-# gettext
-thread_scope.translations = gettext.find(
- 'mediagoblin',
- pkg_resources.resource_filename(
- 'mediagoblin', 'translations'), ['en'])
+# gettext (this will be populated on demand with gettext.Translations)
+thread_scope.translations = None
# app and global config objects
app_config = None
diff --git a/mediagoblin/tools/translate.py b/mediagoblin/tools/translate.py
index 01cabe6a..ce670451 100644
--- a/mediagoblin/tools/translate.py
+++ b/mediagoblin/tools/translate.py
@@ -32,7 +32,7 @@ TRANSLATIONS_PATH = pkg_resources.resource_filename(
def locale_to_lower_upper(locale):
"""
- Take a locale, regardless of style, and format it like "en-US"
+ Take a locale, regardless of style, and format it like "en_US"
"""
if '-' in locale:
lang, country = locale.split('-', 1)
@@ -60,17 +60,23 @@ def get_locale_from_request(request):
Figure out what target language is most appropriate based on the
request
"""
- request_form = request.GET or request.form
+ request_form = request.args or request.form
if request_form.has_key('lang'):
- return locale_to_lower_upper(request_form['lang'])
+ # User explicitely demanded a language
+ target_lang = request_form['lang']
- if 'target_lang' in request.session:
+ elif 'target_lang' in request.session:
+ # TODO: Uh, ohh, this is never ever set anywhere?
target_lang = request.session['target_lang']
- # Pull the first acceptable language or English
else:
- # TODO: Internationalization broken
- target_lang = 'en'
+ # Pull the first acceptable language or English
+ # This picks your favorite browser lingo, falling back to 'en'
+
+ # TODO: We need a list of available locales, and match with the list
+ # of accepted locales, and serve the best available locale rather than
+ # the most preferred, or fall back to 'en' immediately.
+ target_lang = request.accept_languages.best
return locale_to_lower_upper(target_lang)
@@ -97,11 +103,6 @@ def setup_gettext(locale):
mg_globals.thread_scope.translations = this_gettext
-# Force en to be setup before anything else so that
-# mg_globals.translations is never None
-setup_gettext('en')
-
-
def pass_to_ugettext(*args, **kwargs):
"""
Pass a translation on to the appropriate ugettext method.