Entries for i18n

'WSGIRequest' object has no attribute 'LANGUAGE_CODE'

written by uve

14 March 2011

Un problema breve, una solución breve. Hace un poco tiempo estuve programando una página con soporte para internacionalización sobre Django 1.2 y me encontré con lo siguiente:

Request Method:    GET
Django Version:    1.2
Exception Type:    AttributeError
Exception Value:   
'WSGIRequest' object has no attribute 'LANGUAGE_CODE'

Tras seguir la traza, llegué a la vista que estaba ocasionando el problema. En esta vista tenía algo como lo siguiente:

def view(request):
    ...
    language = request.LANGUAGE_CODE
    ...

El problema: no está bien configurado el middleware. La solución:

MIDDLEWARE_CLASSES = (
    ...
    'django.middleware.locale.LocaleMiddleware',
    ...
)

Full entry >>

Django, forms y ugettext: "TypeError: Lazy object returned unexpected type."

written by uve

7 January 2011

Estaba programando tranquilamente un formulario (ModelForm) y de repente deja de renderizarse. Reviso la vista, el código de retorno, el HTML de salida... pero todo está correctamente salvo que el formulario no se visualiza.

El código es el siguiente:

models.py

from django.db import models
from django.utils.translation import ugettext_lazy as _

class MiModelo(models.Model):
    ...
    campo = models.CharField(_(u''), ...)

forms.py:

from django import forms

class MiForm(forms.ModelForm):
    class Meta:
        model = MiModelo

Aparentemente todo está bien. Pero al ejecutar desde el shell (python manage.py shell) y tratar de renderizar el formulario me encuentro con el error:

TypeError: Lazy object returned unexpected type.

Full entry >>

Django: cambiar el idioma de trabajo en manage.py shell

written by uve

22 September 2010

Ahora mismo estoy trabajando en un proyecto que gestiona distintos idiomas. Cuando trabajamos en el shell que ofrece Django, es necesario cambiar el idioma con el que se trabaja, ya que por defecto utiliza siempre 'en-us' (no importa la configuración de settings.py).

$ python manage.py shell
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.utils import translation
>>> translation.get_language()
'en-us'

Full entry >>

Breves: coercing to Unicode y gettext en Django

written by uve

18 September 2010

Siguiendo con el desarrollo del módulo de noticias, he encontrado el mismo error, pero esta vez debido al uso de gettext:

>>> model_instance.objects.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/pymodules/python2.6/django/db/models/query.py", line 71, in __repr__
    return repr(data)
  File "/usr/lib/pymodules/python2.6/django/db/models/base.py", line 345, in __repr__
    u = unicode(self)
TypeError: coercing to Unicode: need string or buffer, __proxy__ found

Full entry >>

Breves: python manage.py makemessages -l es

written by uve

30 August 2010

Estoy ahora mismo tocando todos los temas de internacionalización y me encuentro con lo siguiente:

$ python manage.py makemessages -l es
Error: This script should be run from the Django SVN tree or your project or app tree. If you did indeed run it from the SVN checkout or your project or application, maybe you are just missing the conf/locale (in the django tree) or locale (for project and application) directory? It is not created automatically, you have to create it by hand if you want to enable i18n for your project or application

Full entry >>

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.