2016-01-04 1 views
0

В настоящее время пытается обновить Django 187 -> 191, но я столкнулся с неожиданной проблемой с переводами в файлы шаблонов. При первом появлении транс-тега в шаблоне я получаю ошибку ниже. Мне кажется, что ugettext не исправляет ошибку, если не найден или не соответствует файл mo/po для этой строки (в настоящее время нет файлов переводов для no/norwegian, поэтому нужно просто придерживаться существующего имени).i18n вопросы в шаблоне в Django 1.9.1

Все переводы правильно работал очень долго, так это было неожиданно ...

Есть идеи?

NoneType' object has no attribute 'get' 
Request Method: GET 
Request URL: http://shootnscoreit.com/dashboard/ 
Django Version: 1.9.1 
Exception Type: AttributeError 
Exception Value:  
'NoneType' object has no attribute 'get' 
Exception Location: /usr/local/lib/python2.7/gettext.py in ugettext, line 400 

...

usr/local/lib/python2.7/gettext.py in ugettext 
    400.  tmsg = self._catalog.get(message, missing) 

Local Vars 

    Variable Value 
    message  u'Armoury' 
    self  <DjangoTranslation lang:no> 
    missing  <object object at 0x7f0e72c00740> 

...

File "/home/tss/webapps/shoot_django/lib/python2.7/django/templatetags/i18n.py", line 89, in render 
    value = render_value_in_context(output, context) 
    File "/home/tss/webapps/shoot_django/lib/python2.7/django/template/base.py", line 1022, in render_value_in_context 
    value = force_text(value) 
    File "/home/tss/webapps/shoot_django/lib/python2.7/django/utils/encoding.py", line 78, in force_text 
    s = six.text_type(s) 
    File "/home/tss/webapps/shoot_django/lib/python2.7/django/utils/functional.py", line 114, in __text_cast 
    return func(*self.__args, **self.__kw) 
    File "/home/tss/webapps/shoot_django/lib/python2.7/django/utils/translation/__init__.py", line 85, in ugettext 
    return _trans.ugettext(message) 
    File "/home/tss/webapps/shoot_django/lib/python2.7/django/utils/translation/trans_real.py", line 318, in ugettext 
    return do_translate(message, 'ugettext') 
    File "/home/tss/webapps/shoot_django/lib/python2.7/django/utils/translation/trans_real.py", line 298, in do_translate 
    result = getattr(translation_object, translation_function)(eol_message) 
    File "/usr/local/lib/python2.7/gettext.py", line 400, in ugettext 
    tmsg = self._catalog.get(message, missing) 
AttributeError: 'NoneType' object has no attribute 'get' 
+0

проверено журналы и эта проблема wrt i18n: 2015-12-14 13: 53: 46,856 - py.warnings - ПРЕДУПРЕЖДЕНИЕ - /home/tss/webapps/shoot_django/lib/python2.7/django/utils/translation/ __init__.py:146: RemovedInDjango19 Предупреждение: использование кода языка «zh-cn» устарело. Вместо этого используйте перевод «zh-hans». return _trans.activate (язык) –

+0

удалось воссоздать это, кажется, когда непризнанный код языка (в данном случае нет = норвежский общий (также может быть nn и nb - ny norsk и norsk bokmal)) это происходит в django 191, но а не 187 ... странно ... –

+0

закончил перенос языковых файлов cookie для всех из «нет» ---> «nb», это был только код языка, который не существовал на языках Django по умолчанию. Похоже, что Django 1.9.1 был более чувствительным в этом вопросе, тогда 1.8.7 –

ответ

0

Это происходит, когда вы пытаетесь установить язык, который не указан в настройках охват языков. Для меня это было вызвано неверными пользовательскими настройками (которые, вероятно, были действительными в какой-то момент в прошлом), а translation.activate просто работал без ошибок.

Это было вызвано https://github.com/django/django/commit/f0a4ff2b118cbc3b7f9ac28a7d9e355288b546c0

PS: Я сообщил об этом, как я считаю, что это регресс, не должно произойти: https://code.djangoproject.com/ticket/26050

PS2: Это как раз показал свою неспособность сделать поиск в существующих отчетах, как это дубликат https://code.djangoproject.com/ticket/26046, который уже исправлен.

+0

https://code.djangoproject.com/ticket/26046 зарегистрировано и исправлено ... –