diff --git a/r2/r2/controllers/reddit_base.py b/r2/r2/controllers/reddit_base.py index 7a6ddc447..be0de1183 100644 --- a/r2/r2/controllers/reddit_base.py +++ b/r2/r2/controllers/reddit_base.py @@ -373,7 +373,7 @@ def set_iface_lang(): #one for l in lang: try: - h.set_lang(l) + h.set_lang(l, fallback_lang=g.lang) c.lang = l break except h.LanguageError: diff --git a/r2/r2/lib/translation.py b/r2/r2/lib/translation.py index 9c3e9546e..73ae69a48 100644 --- a/r2/r2/lib/translation.py +++ b/r2/r2/lib/translation.py @@ -52,13 +52,17 @@ def _get_translator(lang, graceful_fail=False, **kwargs): return translator -def set_lang(lang, graceful_fail = False, **kwargs): +def set_lang(lang, graceful_fail=False, fallback_lang=None, **kwargs): """Set the i18n language used""" registry = pylons.request.environ['paste.registry'] if not lang: registry.replace(pylons.translator, NullTranslations()) else: translator = _get_translator(lang, graceful_fail = graceful_fail, **kwargs) + if fallback_lang: + fallback_translator = _get_translator(fallback_lang, + graceful_fail=True) + translator.add_fallback(fallback_translator) registry.replace(pylons.translator, translator)