summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-10-03 01:57:02 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-10-03 01:57:02 +0000
commitfa546d797e4b7c627c91ec3740b0f104aa30549d (patch)
tree5118334be273b4493e8c6ceb15b523b7b5dd59cf
parent10466470c0b950b6571abf96b52c0a8254a05ed7 (diff)
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
-rw-r--r--django/utils/translation/__init__.py14
-rw-r--r--django/utils/translation/trans_null.py1
-rw-r--r--django/utils/translation/trans_real.py6
-rw-r--r--tests/regressiontests/i18n/tests.py8
4 files changed, 17 insertions, 12 deletions
diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py
index 13fc8a847a..18071b9683 100644
--- a/django/utils/translation/__init__.py
+++ b/django/utils/translation/__init__.py
@@ -2,6 +2,7 @@
Internationalization support.
"""
from django.utils.functional import lazy
+from django.utils.encoding import force_unicode
__all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext',
'ngettext_lazy', 'string_concat', 'activate', 'deactivate',
@@ -39,7 +40,7 @@ def delayed_loader(*args, **kwargs):
g['real_%s' % name] = getattr(trans, name)
# 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()
for name in __all__:
@@ -63,14 +64,10 @@ def ugettext(message):
def ungettext(singular, plural, number):
return real_ungettext(singular, plural, number)
-def string_concat(*strings):
- return real_string_concat(*strings)
-
ngettext_lazy = lazy(ngettext, str)
gettext_lazy = lazy(gettext, str)
ungettext_lazy = lazy(ungettext, unicode)
ugettext_lazy = lazy(ugettext, unicode)
-string_concat = lazy(string_concat, unicode)
def activate(language):
return real_activate(language)
@@ -108,3 +105,10 @@ def templatize(src):
def 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)
diff --git a/django/utils/translation/trans_null.py b/django/utils/translation/trans_null.py
index e3f89567a5..771a80e99c 100644
--- a/django/utils/translation/trans_null.py
+++ b/django/utils/translation/trans_null.py
@@ -13,7 +13,6 @@ ngettext_lazy = ngettext
def ungettext(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
deactivate = deactivate_all = install = lambda: None
get_language = lambda: settings.LANGUAGE_CODE
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 5fff1ea63a..250af04e8c 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -516,9 +516,3 @@ def templatize(src):
out.write(blankout(t.contents, 'X'))
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])
diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py
index 8a7d2bee3e..99204451e4 100644
--- a/tests/regressiontests/i18n/tests.py
+++ b/tests/regressiontests/i18n/tests.py
@@ -30,4 +30,12 @@ True
>>> s4 = ugettext_lazy('Some other string')
>>> s == s4
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'
"""