J'ai une question sur l'utilisation de ugettext et ugettext_lazy
pour les traductions. J'ai appris que dans les modèles je devrais utiliser ugettext_lazy
, tandis que dans les vues ugettext. Mais y a-t-il d'autres endroits où je devrais ugettext_lazy
aussi utiliser ? Qu'en est-il des définitions de formulaire? Y a-t-il des différences de performances entre eux?
Edit:
Et encore une chose. Parfois, au lieu de ugettext_lazy
, ugettext_noop
est utilisé. Comme le dit la documentation, les ugettext_noop
chaînes ne sont marquées pour la traduction et traduites que le plus tard possible avant de les afficher à l'utilisateur, mais je suis un peu confus ici, n'est-ce pas similaire à quoi ugettext_lazy
faire? J'ai encore du mal à décider lequel utiliser dans mes modèles et mes formulaires.
la source
msg = "An error has occurred"; logging.error(msg);return HttpResponse(_(msg))? why need
_noop?
si sans_noop
, django ne trouve pas la chaîne à traduire?_noop
?Une excellente utilisation de _noop, est lorsque vous souhaitez enregistrer un message en anglais pour les développeurs, mais présenter la chaîne traduite à un visualiseur. Un exemple de ceci est à http://blog.bessas.me/posts/using-gettext-in-django/
la source
La version différée renvoie un objet proxy au lieu d'une chaîne et dans certaines situations, cela ne fonctionnerait pas comme prévu. Par exemple:
échouerait parce que la toute dernière ligne essaierait de sérialiser l' objet lst en JSON et au lieu d'une chaîne pour "client", il aurait un objet proxy. L'objet proxy n'est pas sérialisable dans json.
la source