Skip to content

Instantly share code, notes, and snippets.

@jeffkistler
Created March 10, 2011 20:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeffkistler/864899 to your computer and use it in GitHub Desktop.
Save jeffkistler/864899 to your computer and use it in GitHub Desktop.
Template translation helpers.
from django import template
from django.conf import settings
if settings.USE_I18N:
from django.utils.translation.trans_real import translation
def get_translation(msgid, lang):
t = translation(lang)
return t.gettext(msgid)
else:
def get_translation(msgid, lang):
return msgid
register = template.Library()
class TranslateNode(template.Node):
"""
Return a message in a given language.
"""
def __init__(self, msgid, lang):
self.msgid = msgid
self.lang = lang
def render(self, context):
msgid = self.msgid.resolve(context)
lang = self.lang.resolve(context)
return get_translation(msgid, lang)
def do_translate(parser, token):
try:
tag, msgid, lang = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError('translate takes two arguments: msgid and lang')
msgid = parser.compile_filter(msgid)
lang = parser.compile_filter(lang)
return TranslateNode(msgid, lang)
register.tag('get_translation', do_translate)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment