Projet

Général

Profil

Development #51289

faire de N_() un gettext_lazy

Ajouté par Frédéric Péters il y a environ 3 ans. Mis à jour il y a presque 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
19 février 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision 0da7edea (diff)
Ajouté par Frédéric Péters il y a presque 3 ans

general: add and use a lazy gettext function (#51289)

Historique

#1

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Assigné à mis à Frédéric Péters
#2

Mis à jour par Frédéric Péters il y a presque 3 ans

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.

#3

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_).

#4

Mis à jour par Lauréline Guérin il y a presque 3 ans

  • Statut changé de Solution proposée à Solution validée
#5

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)
#6

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

Formats disponibles : Atom PDF