Entries for i18n
'WSGIRequest' object has no attribute 'LANGUAGE_CODE'
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',
...
)
Django, forms y ugettext: "TypeError: Lazy object returned unexpected type."
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.
Django: cambiar el idioma de trabajo en manage.py shell
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'
Breves: coercing to Unicode y gettext en Django
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
Breves: python manage.py makemessages -l es
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
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é.
