Changing the locale temporary

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from django.utils.translation import check_for_language, activate, deactivate, to_locale, get_language, ugettext as _
from django.http import HttpRequest
from django.template.loader import render_to_string
from django.template import RequestContext
from django.contrib.sessions.middleware import SessionMiddleware

# 1. Getting the current language: (if any)
cur_locale = to_locale(get_language())
# 2. create a request (& optionally add session middleware)
request = HttpRequest()
SessionMiddleware().process_request(request)
# 3. activate the temporary language: this loads the translation files
target_language = "nl" # this could be a function call, loaded from a UserProfile, ...
if check_for_language(target_language):
	activate(target_language)
locale = to_locale(get_language())
# 4. set the language code in the request (& optionally session)
request.LANGUAGE_CODE = locale
request.session['django_language'] = locale
# 5. example rendering of content:
msg_dict = { 'title': _('This is the title and will be translated'), 'body': _('Message body') }
rendered = render_to_string("some_template.html",  msg_dict, RequestContext(request));
# 6. reset back to the old locale:
deactivate()

More like this

  1. Django model cron jobs by willhardy 4 years, 7 months ago
  2. Email queue in DB by fish2000 3 years, 1 month ago
  3. language switcher in admin by lawgon 3 years, 6 months ago
  4. locale based on domain by zeeg 5 years, 11 months ago
  5. Multilingual Models by Archatas 6 years, 2 months ago

Comments

(Forgotten your password?)