Development #71590
multilinguisme, traduction des sources de données fiche
0%
Description
Il y a des modèles de fiches qui servent de sources de données et on voudrait que si la source de données est utilisée sur un site de la langue A alors les éléments affichés via la source de données soient également dans la langue A.
Le plan serait d'avoir dans le gabarit un appel à |translate, ex: {{form_var_plop|translate}}.
Le multilinguisme activé, quand on met à jour le dictionnaire digests on enregistrerait une version par langue, résultat au final {'default:en': 'Apple', 'default:fr': 'Pomme'}
(avec peut-être la version non suffixée pour correspondre à la langue par défaut).
Le filtre |translate, en présence d'une chaine inconnue (i.e. absence du catalogue chargé en début de requête) l'ajouterait à la table des chaines à traduire.
+ modifier get_data_source_structured_item()/get_display_label() pour aller prendre le digest correspondant à la langue active.
Files
Related issues
Associated revisions
misc: make digests update after job work with multiple formdefs (#71590)
cards: create/use translated digests (#71590)
i18n: update digests after catalog changes (#71590)
i18n: display item value in user language (#71590)
i18n: store item fields display value in original language (#71590)
History
Updated by Frédéric Péters about 2 months ago
- Related to Development #72299: pour des champs liste alimentés par des fiches, sur l'affichage d'une demande, prendre la version à jour du libellé added
Updated by Frédéric Péters about 1 month ago
- File 0006-i18n-store-item-fields-display-value-in-original-lan.patch 0006-i18n-store-item-fields-display-value-in-original-lan.patch added
- File 0005-i18n-display-item-value-in-user-language-71590.patch 0005-i18n-display-item-value-in-user-language-71590.patch added
- File 0004-i18n-update-digests-after-catalog-changes-71590.patch 0004-i18n-update-digests-after-catalog-changes-71590.patch added
- File 0003-cards-create-use-translated-digests-71590.patch 0003-cards-create-use-translated-digests-71590.patch added
- File 0002-misc-make-digests-update-after-job-work-with-multipl.patch 0002-misc-make-digests-update-after-job-work-with-multipl.patch added
- File 0001-i18n-add-translate-template-filter-71590.patch 0001-i18n-add-translate-template-filter-71590.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
0001 introduit un filtre |translate, qui appelle le code de recherche dans le catalogue pour traduction de la chaine concernée et si jamais la chaine n'était pas dans le catalogue, l'y ajouter.
0002 modifie le job UpdateDigestAfterJob existant pour pouvoir traiter plusieurs formdefs.
0003 permet l'utilisation du |translate dans le gabarit de résumé (digest) des modèles de fiche, quand il est présent (et que le multilinguisme est activé), ça multiple les gabarits produits, façon {'default:en': 'Apple', 'default:fr': 'Pomme'}
pour reprendre l'exemple de la description.
0004 prend les deux précédents pour lancer une mise à jour des digests quand une traduction est modifiée.
0005 s'intéresse à ce qui est affiché à l'usager, pour lui présenter dans les champs liste alimentés via une source de données la version dans sa langue.
0006 assure par contre qu'au stockage c'est la chaine "native" qui est enregistrée.
Updated by Lauréline Guérin about 1 month ago
0001: comment se comporte le templatetag sur quelque chose qui n'est pas une string ?
0003: code existant, méthode set_auto_fields
, il me semble que le bloc:
if digests: self.digests = digests changed = True
pourrait être sorti de la boucle for.
(mais ça n'est pas très important)
0005: ajouter un test sur une source de donnée fiche + custom view ?
if len(parts) == 3: digest_key = 'custom-view:%s' % parts[-1] value = (carddata.digests or {}).get(digest_key) or value if get_publisher().has_i18n_enabled(): digest_key += ':' + get_publisher().current_language value = (carddata.digests or {}).get(digest_key) or value
Updated by Frédéric Péters about 1 month ago
0001: comment se comporte le templatetag sur quelque chose qui n'est pas une string ?
Il y a un str() dans get_publisher().translate mais je viens d'ajouter ça pour éviter le "None",
string = unlazy(string) if string is None: return None
pourrait être sorti de la boucle for.
fait.
0005: ajouter un test sur une source de donnée fiche + custom view ?
fait aussi.
Updated by Lauréline Guérin 30 days ago
- Status changed from Solution proposée to Solution validée
Updated by Frédéric Péters 30 days ago
- Status changed from Solution validée to Résolu (à déployer)
commit de2daf6786797838227d5279cf23c610c1faebf5 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue Dec 13 13:40:20 2022 +0100 i18n: store item fields display value in original language (#71590) commit 9e02a63fbb8a721dcee2ae3a18f507f204ab5e9a Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue Dec 13 10:22:29 2022 +0100 i18n: display item value in user language (#71590) commit b2c574e672e15b19ed08ad66f0171f5855a4c095 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Dec 12 14:35:28 2022 +0100 i18n: update digests after catalog changes (#71590) commit 87865cf8b99bd15ff6436c9a8937aa85f70da760 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Dec 12 13:58:55 2022 +0100 cards: create/use translated digests (#71590) commit 82ba22b0055ff47ce0ec89b81465c7cbf9608f61 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Dec 12 14:12:06 2022 +0100 misc: make digests update after job work with multiple formdefs (#71590) commit 6e47ebc9b1fadb19fdca99bc67d3f2a3be85d1f2 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Dec 11 17:57:49 2022 +0100 i18n: add |translate template filter (#71590)
Updated by Transition automatique 30 days ago
- Status changed from Résolu (à déployer) to Solution déployée
i18n: add |translate template filter (#71590)