Translating safe strings should return a safe result.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6681 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
0928fa5566
commit
64c0bf8677
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.encoding import force_unicode
|
from django.utils.encoding import force_unicode
|
||||||
|
from django.utils.safestring import mark_safe, SafeData
|
||||||
|
|
||||||
def ngettext(singular, plural, number):
|
def ngettext(singular, plural, number):
|
||||||
if number == 1: return singular
|
if number == 1: return singular
|
||||||
|
@ -31,7 +32,10 @@ TECHNICAL_ID_MAP = {
|
||||||
}
|
}
|
||||||
|
|
||||||
def gettext(message):
|
def gettext(message):
|
||||||
return TECHNICAL_ID_MAP.get(message, message)
|
result = TECHNICAL_ID_MAP.get(message, message)
|
||||||
|
if isinstance(message, SafeData):
|
||||||
|
return mark_safe(result)
|
||||||
|
return result
|
||||||
|
|
||||||
def ugettext(message):
|
def ugettext(message):
|
||||||
return force_unicode(gettext(message))
|
return force_unicode(gettext(message))
|
||||||
|
|
|
@ -8,6 +8,7 @@ import gettext as gettext_module
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
|
||||||
from django.utils.encoding import force_unicode
|
from django.utils.encoding import force_unicode
|
||||||
|
from django.utils.safestring import mark_safe, SafeData
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import threading
|
import threading
|
||||||
|
@ -271,11 +272,15 @@ def do_translate(message, translation_function):
|
||||||
global _default, _active
|
global _default, _active
|
||||||
t = _active.get(currentThread(), None)
|
t = _active.get(currentThread(), None)
|
||||||
if t is not None:
|
if t is not None:
|
||||||
return getattr(t, translation_function)(message)
|
result = getattr(t, translation_function)(message)
|
||||||
|
else:
|
||||||
if _default is None:
|
if _default is None:
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
_default = translation(settings.LANGUAGE_CODE)
|
_default = translation(settings.LANGUAGE_CODE)
|
||||||
return getattr(_default, translation_function)(message)
|
result = getattr(_default, translation_function)(message)
|
||||||
|
if isinstance(message, SafeData):
|
||||||
|
return mark_safe(result)
|
||||||
|
return result
|
||||||
|
|
||||||
def gettext(message):
|
def gettext(message):
|
||||||
return do_translate(message, 'gettext')
|
return do_translate(message, 'gettext')
|
||||||
|
|
|
@ -4,7 +4,7 @@ import misc
|
||||||
regressions = ur"""
|
regressions = ur"""
|
||||||
Format string interpolation should work with *_lazy objects.
|
Format string interpolation should work with *_lazy objects.
|
||||||
|
|
||||||
>>> from django.utils.translation import ugettext_lazy, activate, deactivate, gettext_lazy
|
>>> from django.utils.translation import ugettext, ugettext_lazy, activate, deactivate, gettext_lazy
|
||||||
>>> s = ugettext_lazy('Add %(name)s')
|
>>> s = ugettext_lazy('Add %(name)s')
|
||||||
>>> d = {'name': 'Ringo'}
|
>>> d = {'name': 'Ringo'}
|
||||||
>>> s % d
|
>>> s % d
|
||||||
|
@ -39,6 +39,18 @@ unicode(string_concat(...)) should not raise a TypeError - #4796
|
||||||
<module 'django.utils.translation' from ...>
|
<module 'django.utils.translation' from ...>
|
||||||
>>> unicode(django.utils.translation.string_concat("dja", "ngo"))
|
>>> unicode(django.utils.translation.string_concat("dja", "ngo"))
|
||||||
u'django'
|
u'django'
|
||||||
|
|
||||||
|
Translating a string requiring no auto-escaping shouldn't change the "safe"
|
||||||
|
status.
|
||||||
|
|
||||||
|
>>> from django.utils.safestring import mark_safe
|
||||||
|
>>> s = mark_safe('Password')
|
||||||
|
>>> type(s)
|
||||||
|
<class 'django.utils.safestring.SafeString'>
|
||||||
|
>>> activate('de')
|
||||||
|
>>> type(ugettext(s))
|
||||||
|
<class 'django.utils.safestring.SafeUnicode'>
|
||||||
|
>>> deactivate()
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__test__ = {
|
__test__ = {
|
||||||
|
|
Loading…
Reference in New Issue