Django

Code

Changeset 6681

Show
Ignore:
Timestamp:
11/17/07 06:11:54 (11 months ago)
Author:
mtredinnick
Message:

Translating safe strings should return a safe result.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/utils/translation/trans_null.py

    r6582 r6681  
    55from django.conf import settings 
    66from django.utils.encoding import force_unicode 
     7from django.utils.safestring import mark_safe, SafeData 
    78 
    89def ngettext(singular, plural, number): 
     
    3233 
    3334def gettext(message): 
    34     return TECHNICAL_ID_MAP.get(message, message) 
     35    result = TECHNICAL_ID_MAP.get(message, message) 
     36    if isinstance(message, SafeData): 
     37        return mark_safe(result) 
     38    return result 
    3539 
    3640def ugettext(message): 
  • django/trunk/django/utils/translation/trans_real.py

    r6608 r6681  
    99 
    1010from django.utils.encoding import force_unicode 
     11from django.utils.safestring import mark_safe, SafeData 
    1112 
    1213try: 
     
    272273    t = _active.get(currentThread(), None) 
    273274    if t is not None: 
    274         return getattr(t, translation_function)(message) 
    275     if _default is None: 
    276         from django.conf import settings 
    277         _default = translation(settings.LANGUAGE_CODE) 
    278     return getattr(_default, translation_function)(message) 
     275        result = getattr(t, translation_function)(message) 
     276    else: 
     277        if _default is None: 
     278            from django.conf import settings 
     279            _default = translation(settings.LANGUAGE_CODE) 
     280        result = getattr(_default, translation_function)(message) 
     281    if isinstance(message, SafeData): 
     282        return mark_safe(result) 
     283    return result 
    279284 
    280285def gettext(message): 
  • django/trunk/tests/regressiontests/i18n/tests.py

    r6608 r6681  
    55Format string interpolation should work with *_lazy objects. 
    66 
    7 >>> from django.utils.translation import ugettext_lazy, activate, deactivate, gettext_lazy 
     7>>> from django.utils.translation import ugettext, ugettext_lazy, activate, deactivate, gettext_lazy 
    88>>> s = ugettext_lazy('Add %(name)s') 
    99>>> d = {'name': 'Ringo'} 
     
    4040>>> unicode(django.utils.translation.string_concat("dja", "ngo")) 
    4141u'django' 
     42 
     43Translating a string requiring no auto-escaping shouldn't change the "safe" 
     44status. 
     45 
     46>>> from django.utils.safestring import mark_safe 
     47>>> s = mark_safe('Password') 
     48>>> type(s) 
     49<class 'django.utils.safestring.SafeString'> 
     50>>> activate('de') 
     51>>> type(ugettext(s)) 
     52<class 'django.utils.safestring.SafeUnicode'> 
     53>>> deactivate() 
    4254""" 
    4355