diff options
-rw-r--r-- | mediagoblin/mg_globals.py | 6 | ||||
-rw-r--r-- | mediagoblin/tools/template.py | 4 | ||||
-rw-r--r-- | mediagoblin/tools/translate.py | 9 |
3 files changed, 11 insertions, 8 deletions
diff --git a/mediagoblin/mg_globals.py b/mediagoblin/mg_globals.py index 3bd2070d..fffa1dda 100644 --- a/mediagoblin/mg_globals.py +++ b/mediagoblin/mg_globals.py @@ -19,6 +19,7 @@ In some places, we need to access the database, public_store, queue_store import gettext import pkg_resources +import threading ############################# @@ -41,8 +42,11 @@ queue_store = None # A WorkBenchManager workbench_manager = None +# A thread-local scope +thread_scope = threading.local() + # gettext -translations = gettext.find( +thread_scope.translations = gettext.find( 'mediagoblin', pkg_resources.resource_filename( 'mediagoblin', 'translations'), ['en']) diff --git a/mediagoblin/tools/template.py b/mediagoblin/tools/template.py index 72c87a99..158d5321 100644 --- a/mediagoblin/tools/template.py +++ b/mediagoblin/tools/template.py @@ -49,8 +49,8 @@ def get_jinja_env(template_loader, locale): extensions=['jinja2.ext.i18n', 'jinja2.ext.autoescape']) template_env.install_gettext_callables( - mg_globals.translations.ugettext, - mg_globals.translations.ungettext) + mg_globals.thread_scope.translations.ugettext, + mg_globals.thread_scope.translations.ungettext) # All templates will know how to ... # ... fetch all waiting messages and remove them from the queue diff --git a/mediagoblin/tools/translate.py b/mediagoblin/tools/translate.py index 33ee889a..65f636bb 100644 --- a/mediagoblin/tools/translate.py +++ b/mediagoblin/tools/translate.py @@ -100,7 +100,7 @@ def setup_gettext(locale): # TODO: fallback nicely on translations from pt_PT to pt if not # available, etc. - if SETUP_GETTEXTS.has_key(locale): + if locale in SETUP_GETTEXTS: this_gettext = SETUP_GETTEXTS[locale] else: this_gettext = gettext.translation( @@ -108,8 +108,7 @@ def setup_gettext(locale): if exists(locale): SETUP_GETTEXTS[locale] = this_gettext - mg_globals.setup_globals( - translations=this_gettext) + mg_globals.thread_scope.translations = this_gettext # Force en to be setup before anything else so that @@ -124,7 +123,7 @@ def pass_to_ugettext(*args, **kwargs): The reason we can't have a global ugettext method is because mg_globals gets swapped out by the application per-request. """ - return mg_globals.translations.ugettext( + return mg_globals.thread_scope.translations.ugettext( *args, **kwargs) @@ -146,7 +145,7 @@ def pass_to_ngettext(*args, **kwargs): The reason we can't have a global ngettext method is because mg_globals gets swapped out by the application per-request. """ - return mg_globals.translations.ngettext( + return mg_globals.thread_scope.translations.ngettext( *args, **kwargs) |