Entries for Gettext
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.
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
Internacionalización en Python con GetText
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.
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é.
