def _decorated_view(request, *args, **kwargs): # Get locale from Facebook's `signed_request` signed_request = utils.unwrap_signed_request(request) try: facebook_locale = signed_request['user']['locale'] except KeyError: pass else: # If user's locale isn't supported, get the next best one. # Defaults to en-US if no locale in same language as the # user's is found. best_locale = utils.get_best_locale(facebook_locale) prefix = urlresolvers.get_url_prefix() # Compare locales in lowercase just in case. Heh. # If we aren't using the best locale, redirect to it if prefix.locale.lower() != best_locale.lower(): prefix.locale = best_locale locale_url = prefix.fix(request.path_info) query_string = urllib.urlencode(request.GET) final_url = ('?'.join([locale_url, query_string]) if query_string else locale_url) return redirect(final_url) return view_fn(request, *args, **kwargs)
def activate(self, locale): """Context manager that temporarily activates a locale.""" old_prefix = get_url_prefix() old_locale = translation.get_language() rf = RequestFactory() set_url_prefix(Prefixer(rf.get('/%s/' % (locale,)))) translation.activate(locale) yield set_url_prefix(old_prefix) translation.activate(old_locale)
def activate(self, locale): """Context manager that temporarily activates a locale.""" old_prefix = get_url_prefix() old_locale = translation.get_language() rf = RequestFactory() set_url_prefix(Prefixer(rf.get('/%s/' % (locale, )))) translation.activate(locale) yield set_url_prefix(old_prefix) translation.activate(old_locale)