52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
"""
|
|
Utilities for use in Mako markup.
|
|
"""
|
|
|
|
from django.utils.translation import ugettext as django_ugettext
|
|
from django.utils.translation import ungettext as django_ungettext
|
|
import markupsafe
|
|
|
|
|
|
# So that we can use escape() imported from here.
|
|
escape = markupsafe.escape # pylint: disable=invalid-name
|
|
|
|
|
|
def ugettext(text):
|
|
"""Translate a string, and escape it as plain text.
|
|
|
|
Use like this in Mako::
|
|
|
|
<% from util.markup import ugettext as _ %>
|
|
<p>${_("Hello, world!")}</p>
|
|
|
|
Or with formatting::
|
|
|
|
<% from util.markup import HTML, ugettext as _ %>
|
|
${_("Write & send {start}email{end}").format(
|
|
start=HTML("<a href='mailto:ned@edx.org'>"),
|
|
end=HTML("</a>"),
|
|
)}
|
|
|
|
"""
|
|
return markupsafe.escape(django_ugettext(text))
|
|
|
|
|
|
def ungettext(text1, text2, num):
|
|
"""Translate a number-sensitive string, and escape it as plain text."""
|
|
return markupsafe.escape(django_ungettext(text1, text2, num))
|
|
|
|
|
|
def HTML(html): # pylint: disable=invalid-name
|
|
"""Mark a string as already HTML, so that it won't be escaped before output.
|
|
|
|
Use this when formatting HTML into other strings::
|
|
|
|
<% from util.markup import HTML, ugettext as _ %>
|
|
${_("Write & send {start}email{end}").format(
|
|
start=HTML("<a href='mailto:ned@edx.org'>"),
|
|
end=HTML("</a>"),
|
|
)}
|
|
|
|
"""
|
|
return markupsafe.Markup(html)
|