i18n: use consistent way of setting user language.
This commit is contained in:
parent
4be3097bae
commit
526cdfd9b2
3 changed files with 17 additions and 15 deletions
|
|
@ -443,20 +443,12 @@ class BaseController(WSGIController):
|
|||
self.sa = meta.Session
|
||||
self.scm_model = ScmModel(self.sa)
|
||||
|
||||
default_lang = c.language
|
||||
user_lang = c.language
|
||||
try:
|
||||
user_obj = self._rhodecode_user.get_instance()
|
||||
if user_obj:
|
||||
user_lang = user_obj.user_data.get('language')
|
||||
except Exception:
|
||||
log.exception('Failed to fetch user language for user %s',
|
||||
self._rhodecode_user)
|
||||
|
||||
if user_lang and user_lang != default_lang:
|
||||
log.debug('set language to %s for user %s', user_lang,
|
||||
self._rhodecode_user)
|
||||
# set user language
|
||||
user_lang = getattr(c.pyramid_request, '_LOCALE_', None)
|
||||
if user_lang:
|
||||
translation.set_lang(user_lang)
|
||||
log.debug('set language to %s for user %s',
|
||||
user_lang, self._rhodecode_user)
|
||||
|
||||
def _dispatch_redirect(self, with_url, environ, start_response):
|
||||
resp = HTTPFound(with_url)
|
||||
|
|
|
|||
|
|
@ -63,6 +63,15 @@ def add_localizer(event):
|
|||
request.plularize = localizer.pluralize
|
||||
|
||||
|
||||
def set_user_lang(event):
|
||||
cur_user = getattr(event.request, 'user', None)
|
||||
|
||||
if cur_user:
|
||||
user_lang = cur_user.get_instance().user_data.get('language')
|
||||
if user_lang:
|
||||
event.request._LOCALE_ = user_lang
|
||||
|
||||
|
||||
def scan_repositories_if_enabled(event):
|
||||
"""
|
||||
This is subscribed to the `pyramid.events.ApplicationCreated` event. It
|
||||
|
|
|
|||
|
|
@ -67,8 +67,7 @@ def pylons_compatibility_tween_factory(handler, registry):
|
|||
session_key = (
|
||||
config['pylons.environ_config'].get('session', 'beaker.session'))
|
||||
environ[session_key] = session
|
||||
pylons.url._push_object(URLGenerator(config['routes.map'],
|
||||
environ))
|
||||
pylons.url._push_object(URLGenerator(config['routes.map'], environ))
|
||||
|
||||
# TODO: Maybe we should use the language from pyramid.
|
||||
translator = _get_translator(config.get('lang'))
|
||||
|
|
@ -92,6 +91,8 @@ def pylons_compatibility_tween_factory(handler, registry):
|
|||
def includeme(config):
|
||||
config.add_subscriber('rhodecode.subscribers.add_renderer_globals',
|
||||
'pyramid.events.BeforeRender')
|
||||
config.add_subscriber('rhodecode.subscribers.set_user_lang',
|
||||
'pyramid.events.NewRequest')
|
||||
config.add_subscriber('rhodecode.subscribers.add_localizer',
|
||||
'pyramid.events.NewRequest')
|
||||
config.add_tween('rhodecode.tweens.pylons_compatibility_tween_factory')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue