#26705: DjangoTranslation instance has no attribute 'plural'
--------------------------------------+--------------------
Reporter: theju | Owner: nobody
Type: Bug | Status: new
Component: Internationalization | Version: 1.8
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------+--------------------
When you activate a language that is not supported by django, an error is
raised during the internationalization. Here is a test to reproduce the
error:
{{{
import datetime
from django.utils.translation import activate
from django.utils.timesince import timesince
from django.test import TestCase
from django.conf import settings
# Create your tests here.
class TmpTestCase(TestCase):
def test_lang(self):
today = datetime.datetime.now()
yesterday = today - datetime.timedelta(minutes=5)
tt = timesince(yesterday, now=today)
self.assertEqual(tt, u"5\xa0minutes")
activate("hi")
tt = timesince(yesterday, now=today)
self.assertEqual(tt, u"5\xa0minutes")
activate("as")
tt = timesince(yesterday, now=today)
self.assertEqual(tt, u"5\xa0minutes")
}}}
`as` is Assamese, a language that is currently not in django.
The error is
{{{
AttributeError Traceback (most recent call
last)
<ipython-input-22-e5b829f6150e> in <module>()
----> 1 capfirst(ngettext(u"test", u"tests", 2))
/home/ubuntu/wg_env/local/lib/python2.7/site-
packages/django/utils/translation/__init__.pyc in ngettext(singular,
plural, number)
78
79 def ngettext(singular, plural, number):
---> 80 return _trans.ngettext(singular, plural, number)
81
82
/home/ubuntu/wg_env/local/lib/python2.7/site-
packages/django/utils/translation/trans_real.pyc in ngettext(singular,
plural, number)
369 Returns a string on Python 3 and an UTF-8-encoded bytestring
on Python 2.
370 """
--> 371 return do_ntranslate(singular, plural, number, 'ngettext')
372
373 if six.PY3:
/home/ubuntu/wg_env/local/lib/python2.7/site-
packages/django/utils/translation/trans_real.pyc in
do_ntranslate(singular, plural, number, translation_function)
356 t = getattr(_active, "value", None)
357 if t is not None:
--> 358 return getattr(t, translation_function)(singular, plural,
number)
359 if _default is None:
360 _default = translation(settings.LANGUAGE_CODE)
/usr/lib/python2.7/gettext.pyc in ngettext(self, msgid1, msgid2, n)
368 def ngettext(self, msgid1, msgid2, n):
369 try:
--> 370 tmsg = self._catalog[(msgid1, self.plural(n))]
371 if self._output_charset:
372 return tmsg.encode(self._output_charset)
AttributeError: DjangoTranslation instance has no attribute 'plural'
}}}
Ideally, there shouldn't be an error.
--
Ticket URL: <https://code.djangoproject.com/ticket/26705>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/048.9a4391bbf05f5b178c695c71c2be04bb%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.