Entries for Gettext

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 >>

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 >>

Internacionalización en Python con GetText

written by uve

7 March 2010

GetText es la biblioteca de internacionalización desarrollada por GNU y extendida en toda la comunidad libre. De forma fácil y sencilla nos permite soportar múltiples idiomas en nuestra aplicación o en nuestro módulo.

Para quien no conozca GetText, decir que una vez disponibles las fuentes nos provee herramientas para generar una plantilla con los textos a traducir, messages.po, que servirá la traducción. Una vez disponibles los ficheros .po (uno para cada idioma) se compilarán y se generarán ficheros .mo que se utilizarán en la aplicación.

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é.