#26046: ugettext causes error when unrecognized language code in language cookie
-------------------------------------+-------------------------------------
     Reporter:  jenlu                |                    Owner:  nobody
         Type:  Uncategorized        |                   Status:  new
    Component:                       |                  Version:  1.9
  Internationalization               |
     Severity:  Normal               |               Resolution:
     Keywords:  i18n                 |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by timgraham):

 * needs_better_patch:   => 0
 * needs_tests:   => 0
 * needs_docs:   => 0


Old description:

> Currently attempting to upgrade Django 187 --> 191 but am running into an
> unexpected problem with translations in my template files. At first
> occurrence of a trans-tag in template I get the error below. Seems to me
> like ugettext is not defaulting back correctly when no mo/po file is
> found or match for this language 'no' (norwegian).
>
> I ended up migrating all users from 'no' to 'nb' (Norwegian Bokmal) and
> since this is a recognized language code then things work.
>
> Still, seems a little hard to get server error under Django 1.9.1 just
> because a erroneous language code is set by mistake...
>
> Attached trace info below:
>
> ---
>
> 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'

New description:

 Currently attempting to upgrade Django 187 --> 191 but am running into an
 unexpected problem with translations in my template files. At first
 occurrence of a trans-tag in template I get the error below. Seems to me
 like ugettext is not defaulting back correctly when no mo/po file is found
 or match for this language 'no' (norwegian).

 I ended up migrating all users from 'no' to 'nb' (Norwegian Bokmal) and
 since this is a recognized language code then things work.

 Still, seems a little hard to get server error under Django 1.9.1 just
 because a erroneous language code is set by mistake...

 Attached trace info below:
 {{{
 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'
 }}}

--

--
Ticket URL: <https://code.djangoproject.com/ticket/26046#comment:1>
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/063.04bd3cd160d3039d03aa60d40a67f2a4%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to