Discovered while trying to answer:
https://groups.google.com/forum/#!msg/django-
users/tc0asF6iFBo/u3cBN0SlUl0J
https://code.djangoproject.com/ticket/18192
Tests to and patch in comments.
--
Ticket URL: <https://code.djangoproject.com/ticket/21055>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
Tests and patch: https://github.com/django/django/pull/1562
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:1>
Comment (by bouke):
How can I reproduce the problem? I've tried with the example below, but
that seems to be working allright.
{{{
from django.conf import settings
settings.configure(
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
)
from django.utils.translation.trans_real import activate, gettext
activate('iu-ca')
print(gettext('Hello, world.'))
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:2>
Comment (by fernando.gutierrez@…):
I think it is not related to one unknown language, probably related to two
unknown languages and the way django tries to avoid sharing the
translation object? This script fails for me in the third activate, it
basically replicates what I am trying to do for a language chooser, were
in one template I try to show the language name in it's own language:
{{{
from django.conf import settings
gettext = lambda s: s
settings.configure(
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
},
LANGUAGES = (
('en', gettext('English')),
('zh-sg', gettext('Traditional Chinese (Singapore)')),
('zh-hk', gettext('Traditional Chinese (Hong Kong)')),
)
)
from django.utils.translation.trans_real import activate, gettext
activate('en')
print(gettext('Hello, world.'))
activate('zh-sg')
print(gettext('Hello, world.'))
activate('zh-hk')
print(gettext('Hello, world.'))
}}}
Fails with:
{{{
$ python script.py
Hello, world.
Hello, world.
Traceback (most recent call last):
File "script.py", line 21, in <module>
activate('zh-hk')
File "/Users/***/.virtualenvs/cumutmp/lib/python2.7/site-
packages/django/utils/translation/trans_real.py", line 194, in activate
_active.value = translation(language)
File "/Users/***/.virtualenvs/cumutmp/lib/python2.7/site-
packages/django/utils/translation/trans_real.py", line 184, in translation
current_translation = _fetch(language, fallback=default_translation)
File "/Users/***/.virtualenvs/cumutmp/lib/python2.7/site-
packages/django/utils/translation/trans_real.py", line 147, in _fetch
res._info = res._info.copy()
AttributeError: 'NoneType' object has no attribute '_info'
}}}
This is django 1.4.10 btw. (I've replaced my username with *)
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:3>
Comment (by anonymous):
Looks about right. The core issue is that an inappropriate IOError
exception in trans_real.translation() that results in downstream failure.
This section of code is difficult to debug and write fixes for. I've
closed my old pull in favor of a rewrite:
https://github.com/django/django/pull/2237
Some of this code hasn't been touched in ages.
I hope this pull is reviewed and merged so core django translations dev
can happen without hours of trying to untangle what is happening.
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:4>
Comment (by beck):
Replying to [comment:4 anonymous]:
Errr... didn't mean to post as anon
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:5>
* easy: 1 => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:6>
Comment (by timo):
#22409 was a duplicate.
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:7>
Comment (by timo):
Is #18192 a duplicate?
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:8>
* status: new => closed
* resolution: => fixed
Comment:
In [changeset:"a5f6cbce07b5f3ab48d931e3fd1883c757fb9b45"]:
{{{
#!CommitTicketReference repository=""
revision="a5f6cbce07b5f3ab48d931e3fd1883c757fb9b45"
Refactored DjangoTranslation class
Also fixes #18192 and #21055.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/21055#comment:9>