Development #51289
faire de N_() un gettext_lazy
0%
Description
C'était à un moment mis en builtin super tôt et défini comme lambda mais ce n'est plus le cas depuis longtemps et N_ est importé où il faut et est une fonction et ça pourrait renvoyer la trad pour éviter les surprises.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 3 ans
- Fichier 0001-general-add-and-use-a-lazy-gettext-function-51289.patch 0001-general-add-and-use-a-lazy-gettext-function-51289.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Voilà ajout d'un gettext_lazy qui peut se substituer aux N_ dans la grande majorité des cas (les situations restantes étant celles où il y a besoin de garder un accès à la chaine anglaise). Dans un premier temps j'avais uniquement remplacé les N_ qui le pouvaient par gettext_lazy mais ça introduisait un _() (gettext) et un gettext_lazy() avec nécessairement les questions de quand utiliser l'un ou l'autre, donc second temps j'ai fait de _() le gettext_lazy(), ce qui correspond à ce qu'on a dans les applis django (...import ugettext_lazy as _
).
Ça a amené "quelques" endroits qui échouaient parce que ces chaines lazy vivent mal le pickle et le json; pour le json c'est pour la plupart des situations ajusté via l'encodeur maison qui fait ça, (moche),
+ if obj.__class__.__name__ == '__proxy__': + # lazy gettext + return str(obj)
Pour le pickle c'est ajusté en posant des str() aux endroits opportuns.
Ça foirait aussi parfois sur d'autres constructions, concaténation de chaines via + ou ''.join(), là aussi des str() explicites ont été nécessaires, type :
- return ', '.join(parts) + return ', '.join([str(x) for x in parts])
Malgré tout ça reste un patch qui rend globalement le code plus simple, dans le sens où il n'y a plus à savoir qu'une chaine a été déclarée avec N_() et qu'il est donc nécessaire lors de son exploitation d'appeler gettext dessus, ce qui permet de simplifier ainsi :
- <dt>{% trans job.label %}</dt> + <dt>{{ job.label }}</dt>
Ça touche plein de fichiers et je préférerais ne pas avoir à le rebaser trop souvent, relecture rapide bienvenue, donc.
Mis à jour par Frédéric Péters il y a presque 3 ans
(ça vient après #53995 que j'ai en fait surtout fait pour en dégager les N_).
Mis à jour par Lauréline Guérin il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 0da7edeab81f52b4960c42091bf9905691a20154 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat May 15 15:34:16 2021 +0200 general: add and use a lazy gettext function (#51289)
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
general: add and use a lazy gettext function (#51289)