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()