Fixed #4796. Fixed a problem when using i18n support for the first time -- in
particular when string_concat() was the first call made. Thanks, Andy Durdin. git-svn-id: http://code.djangoproject.com/svn/django/trunk@6446 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
10466470c0
commit
fa546d797e
|
@ -2,6 +2,7 @@
|
||||||
Internationalization support.
|
Internationalization support.
|
||||||
"""
|
"""
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
|
from django.utils.encoding import force_unicode
|
||||||
|
|
||||||
__all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext',
|
__all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext',
|
||||||
'ngettext_lazy', 'string_concat', 'activate', 'deactivate',
|
'ngettext_lazy', 'string_concat', 'activate', 'deactivate',
|
||||||
|
@ -39,7 +40,7 @@ def delayed_loader(*args, **kwargs):
|
||||||
g['real_%s' % name] = getattr(trans, name)
|
g['real_%s' % name] = getattr(trans, name)
|
||||||
|
|
||||||
# Make the originally requested function call on the way out the door.
|
# Make the originally requested function call on the way out the door.
|
||||||
return g[caller](*args, **kwargs)
|
return g['real_%s' % caller](*args, **kwargs)
|
||||||
|
|
||||||
g = globals()
|
g = globals()
|
||||||
for name in __all__:
|
for name in __all__:
|
||||||
|
@ -63,14 +64,10 @@ def ugettext(message):
|
||||||
def ungettext(singular, plural, number):
|
def ungettext(singular, plural, number):
|
||||||
return real_ungettext(singular, plural, number)
|
return real_ungettext(singular, plural, number)
|
||||||
|
|
||||||
def string_concat(*strings):
|
|
||||||
return real_string_concat(*strings)
|
|
||||||
|
|
||||||
ngettext_lazy = lazy(ngettext, str)
|
ngettext_lazy = lazy(ngettext, str)
|
||||||
gettext_lazy = lazy(gettext, str)
|
gettext_lazy = lazy(gettext, str)
|
||||||
ungettext_lazy = lazy(ungettext, unicode)
|
ungettext_lazy = lazy(ungettext, unicode)
|
||||||
ugettext_lazy = lazy(ugettext, unicode)
|
ugettext_lazy = lazy(ugettext, unicode)
|
||||||
string_concat = lazy(string_concat, unicode)
|
|
||||||
|
|
||||||
def activate(language):
|
def activate(language):
|
||||||
return real_activate(language)
|
return real_activate(language)
|
||||||
|
@ -108,3 +105,10 @@ def templatize(src):
|
||||||
def deactivate_all():
|
def deactivate_all():
|
||||||
return real_deactivate_all()
|
return real_deactivate_all()
|
||||||
|
|
||||||
|
def string_concat(*strings):
|
||||||
|
""""
|
||||||
|
Lazy variant of string concatenation, needed for translations that are
|
||||||
|
constructed from multiple parts.
|
||||||
|
"""
|
||||||
|
return u''.join([force_unicode(s) for s in strings])
|
||||||
|
string_concat = lazy(string_concat, unicode)
|
||||||
|
|
|
@ -13,7 +13,6 @@ ngettext_lazy = ngettext
|
||||||
def ungettext(singular, plural, number):
|
def ungettext(singular, plural, number):
|
||||||
return force_unicode(ngettext(singular, plural, number))
|
return force_unicode(ngettext(singular, plural, number))
|
||||||
|
|
||||||
string_concat = lambda *strings: u''.join([force_unicode(el) for el in strings])
|
|
||||||
activate = lambda x: None
|
activate = lambda x: None
|
||||||
deactivate = deactivate_all = install = lambda: None
|
deactivate = deactivate_all = install = lambda: None
|
||||||
get_language = lambda: settings.LANGUAGE_CODE
|
get_language = lambda: settings.LANGUAGE_CODE
|
||||||
|
|
|
@ -516,9 +516,3 @@ def templatize(src):
|
||||||
out.write(blankout(t.contents, 'X'))
|
out.write(blankout(t.contents, 'X'))
|
||||||
return out.getvalue()
|
return out.getvalue()
|
||||||
|
|
||||||
def string_concat(*strings):
|
|
||||||
""""
|
|
||||||
Lazy variant of string concatenation, needed for translations that are
|
|
||||||
constructed from multiple parts.
|
|
||||||
"""
|
|
||||||
return u''.join([force_unicode(s) for s in strings])
|
|
||||||
|
|
|
@ -30,4 +30,12 @@ True
|
||||||
>>> s4 = ugettext_lazy('Some other string')
|
>>> s4 = ugettext_lazy('Some other string')
|
||||||
>>> s == s4
|
>>> s == s4
|
||||||
False
|
False
|
||||||
|
|
||||||
|
unicode(string_concat(...)) should not raise a TypeError - #4796
|
||||||
|
|
||||||
|
>>> import django.utils.translation
|
||||||
|
>>> reload(django.utils.translation)
|
||||||
|
<module 'django.utils.translation' from ...>
|
||||||
|
>>> unicode(django.utils.translation.string_concat("dja", "ngo"))
|
||||||
|
u'django'
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue