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 Comentario

  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

Dejar respuesta

Please enter your comment!
Please enter your name here