ugettext y ugettext_lazy en Django

Podría explicar qué diferencia principal de ugettext y ugettext_lazy.

Cuando estoy intente

return HttpResponse(ugettext_lazy("Hello"))

he visto nada, pero

return HttpResponse(ugettext("Hello"))

está trabajando.

¿Por qué?

Gracias.

1 Kommentar

  1. 38

    ugettext se utiliza para cargar una traducción de una cadena ahora. ugettext_lazy devuelve un objeto que puede ser eventualmente se convirtió en una cadena. Necesitas que si el ugettext_lazy llamada se evalúa antes de la correcta configuración regional se ha establecido.

    ugettext_lazy puede ser utilizado donde se utiliza un objeto Unicode. Comprobar la salida de HTML, podría tener este aspecto:

    <django.utils.functional...>

    y el navegador es ignorar todo como un desconocido etiqueta.

    Usted no necesita un perezoso de la traducción en este caso, debido a que son inmediatamente el uso de la cadena. Si usted realmente desea continuar con ugettext_lazy por alguna razón, intente esto:

    return HttpResponse(ugettext_lazy("Hello").encode('utf-8'))

    Ver el docs para obtener más información.

    • Creo que ugettext_lazy es más útil en models.py.
    • Así que déjame ver si lo he entendido. ugettext es útil cuando usted está dentro de un método o función (como una vista por ejemplo), o en los lugares que se llama después de la configuración & co se han cargado. ugettext_lazy es más útil cuando se quiere traducir las propiedades de la clase y tal (como @SergeyOrshanskiy sugirió la hora de definir un modelo o un formulario) que se cargan cuando se inicia el servidor y la necesidad de carga diferida. A la derecha?
    • asa e 🙂 Es el mismo principio que el uso de reverse_lazy en lugar de reverse. Usted puede utilizar reverse_lazy en una clase basada vista para definir la succes_url por ejemplo, en cuyo caso, la inversa no podrá ser evaluado hasta que sea necesario

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea