Development #70584
multilinguisme
0%
Description
Détails à venir.
Related issues
Associated revisions
settings: add options to enable multilinguism (#70584)
misc: get default language from settings (#70584)
general: add translatable messages storage basis (#70584)
backoffice: add skeleton page for i18n (#70584)
i18n: add scanning for strings (#70584)
i18n: add ui to submit/edit translations (#70584)
misc: delay configuring translations (#70584)
misc: load translation catalog from db (#70584)
On some initial tests bulk loading (load_as_catalog) is 5× more
efficient than the naive call to TranslatableMessage.select();
an it takes ~8ms on my local catalog of ~5000 (mostly untranslated)
strings.
misc: store user language when submitting a form (#70584)
misc: apply translations to forms and workflows (#70584)
misc: allow /lang/ prefix to force language (#70584)
History
Updated by Chloé Girard about 1 year ago
- Related to Development #70892: Multilinguisme sur les formulaires added
Updated by Frédéric Péters about 1 year ago
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Dans la branche wip/70584-multilinguism,
- misc: move remaining settings from qommon.admin.settings (#70584)
L'écran /backoffice/settings/language était encore sous qommon/admin/settings.py, ça déplace juste le code vers admin/settings.py.
- settings: add options to enable multilinguism (#70584)
Ajout à cet écran d'une case à cocher pour activer le multilinguisme, avec le choix des langues à prendre en charge. Aussi l'option "langue du site" contenait une option "selon l'entête HTTP Accept-Language", c'est désormais séparé vers une nouvelle option "langue par défaut", qui peut alors soit être la langue sélectionnée comme langue du site, soit la langue de l'entête HTTP.
- misc: get default language from settings (#70584)
Il y a un endroit où à défaut de paramètre on mettait 'en', ici ça prend désormais plutôt la langue configurée pour le site (et là alors se fait un fallback sur 'en' si pas de langue configurée).
- general: add translatable messages storage basis (#70584)
Introduction du stockage des chaines traduites, chaine d'origine, contexte, emplacements. + des colonnes par langue, string_fr, string_de, etc. selon ce qui est activé. (ces colonnes sont créées à la volée et jamais supprimées).
- backoffice: add skeleton page for i18n (#70584)
Ajout d'une page /backoffice/i18n/, liée depuis la page d'accueil "studio".
En passant, je note mes hésitations et allers-retours entre "multilinguisme" et "internationalisation", je ne sais pas ce qui au final sera le plus intelligible.
- i18n: add scanning for strings (#70584)
Enfin du code, pour parcourir tout ce qu'il y a sur le site, formulaires, workflows, etc. et ajouter tout ça dans la base de données. C'est assez proche de ce qui existe pour le scan et l'affichage des dépréciations.
À noter qu'il y a un attribut "context" pour les traductions, qui permettrait de différencier un mot utilisé dans un libellé du même mot utilisé dans un bouton mais j'ai finalement décidé ici de ne pas encore mettre ça en œuvre.
- i18n: add ui to submit/edit translations (#70584)
Tableau pour lister les chaines à traduire, avec formulaire pour filtrer (recherche de chaine + langue), puis fenêtre pour tape la traduction.
Dans les trucs évidents qui manquent ici c'est un export/import, pour pouvoir donner un fichier à traduire à l'équipe en charge, ça sera ajouté mais je voulais d'abord faire quelques recherches pour voir s'il y avait des formats de fichier particuliers à préférer (sinon ça sera un ods).
- misc: delay configuring translations (#70584)
La mise en place des traductions (gettext) se faisait à l'initialisation du publisher, c'est déplacé dans une méthode start_request pour faire ça au début du traitement d'une requête.
- misc: load translation catalog from db (#70584)
Ajout à ce moment de mise en place du chargement intégral des traductions de la langue concernées. (en local sur un gros site mais une majorité de chaines pas traduites, ça prend ~8ms).
- misc: store user language when submitting a form (#70584)
Au dépôt d'une demande ajout dans le formdata (submission_context['language']) de la langue de l'usager. (plus précisément c'est la langue utilisée par le site, avec l'idée que l'usager aura choisi celle-ci pour correspondre à la sienne).
- misc: apply translations to forms and workflows (#70584)
Ajout et appel d'une méthode translate() à publisher, ça fait des tas de get_publisher().translate(...) mais c'est aussi un peu plus compliqué que ça, exemple de l'agent francophone qui clique sur un bouton du workflow et d'un mail envoyé à l'usager, ce mail doit être en anglais si la demande de l'usager était en anglais. Et donc pour l'envoi de mail ou de notification il y a autosplit de l'action par langue, pour que les mails/notifs dans la bonne langue soient envoyées à la bonne personne.
Ce n'est pas fait pour les SMS parce qu'on n'a pas encore de quoi distinguer le numéro de l'usager, c'est quelque chose qui arrive par un tout autre chemin, le travail de Paul sur l'authentification via ce numéro, ça pourra alors évoluer.
- misc: allow /lang/ prefix to force language (#70584)
Plutôt qu'aller modifier son navigateur pour lui dire d'envoyer un Accept-Language qui va bien, ça introduit la possibilité de préfixe les URL, ex: /fr/categorie/demarche/.
~~
Voilà, ça fait une grosse base, les étapes à suivre derrière ça serait donc l'export/import des chaines à traduire, l'extension des traductions pour également pouvoir concerner les données saisies dans des fiches, puis des choses au-delà de w.c.s. à détailler (combo, hobo, publik-base-theme).
Updated by Anaïs Ecuvillon about 1 year ago
Frédéric Péters a écrit :
En passant, je note mes hésitations et allers-retours entre "multilinguisme" et "internationalisation", je ne sais pas ce qui au final sera le plus intelligible.
Multilinguisme sans hésiter (ça répond à la définition de la capacité dà s'exprimer dans plusieurs langues).
Updated by Agate Berriot about 1 year ago
Anaïs Ecuvillon a écrit :
Frédéric Péters a écrit :
En passant, je note mes hésitations et allers-retours entre "multilinguisme" et "internationalisation", je ne sais pas ce qui au final sera le plus intelligible.
Multilinguisme sans hésiter (ça répond à la définition de la capacité à s'exprimer dans plusieurs langues).
Ma (relative) expérience :
- on parle d'internationalisation (i18n) pour l'ensemble des processus qui visent à rendre un site localisable
- on parle de localisation ou de traduction (l10n) pour la partie traduction / adaptation des contenus proprements dits
- une fois qu'on a un système internationalisé et localisé, on est effectivement multilingues. Le multilinguisme est une conséquence des étapes précédentes
Un article plutôt bien fait sur le sujet : https://crowdin.com/blog/2022/07/14/internationalization-vs-localization
Updated by Pierre Cros about 1 year ago
Yes Agate, merci.
Fred connaît bien les enjeux de la localisation et de l'internationalisation, il me les a enseignés il y a longtemps, à peu près dans les termes que tu emploies.
Son doute concerne ce que va comprendre le client et mon avis c'est qu'on peut s'en remettre à Anaïs, employer multilinguisme même si on est pas encore sur un système totalement multilingue techniquement parlant.
Updated by Lauréline Guérin about 1 year ago
Ok pour moi; mais je laisse la possibilité à un autre relecteur de poser des remarques avant de valider.
Updated by Lauréline Guérin about 1 year ago
- Status changed from Solution proposée to Solution validée
Updated by Frédéric Péters about 1 year ago
- Status changed from Solution validée to Résolu (à déployer)
commit 43daf96689f8a5706c3b289902dbef0acb80c321 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Oct 23 18:04:36 2022 +0200 misc: allow /lang/ prefix to force language (#70584) commit 08ce5e4ea3e28826cb8a4d6479962d84fac77340 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 18:34:58 2022 +0200 misc: apply translations to forms and workflows (#70584) commit 18c64beab191e3f369096be005b97270e847913b Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Oct 23 08:28:40 2022 +0200 misc: store user language when submitting a form (#70584) commit 2fff42f981f565a20befd5019cd9adb3db1b4ea4 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 17:02:37 2022 +0200 misc: load translation catalog from db (#70584) On some initial tests bulk loading (load_as_catalog) is 5× more efficient than the naive call to TranslatableMessage.select(); an it takes ~8ms on my local catalog of ~5000 (mostly untranslated) strings. commit be3acf8d78bc5a394eb61dd30ed390aeca02995e Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 17:01:23 2022 +0200 misc: delay configuring translations (#70584) commit 441727bb3c168f25ee3e7735ea956ff2d4706c70 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 14:10:19 2022 +0200 i18n: add ui to submit/edit translations (#70584) commit 4b25f424a60c2ecf3db6640d3fcc22f7062d7742 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 10:51:41 2022 +0200 i18n: add scanning for strings (#70584) commit 4f6e9d499fe686df2ff62756a83e3264045b670d Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 09:59:56 2022 +0200 backoffice: add skeleton page for i18n (#70584) commit 896419069bd6195bbca0dd4199177de7a011658e Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 09:41:52 2022 +0200 general: add translatable messages storage basis (#70584) commit 1f96cf2be1fe7a57170ce99d298925d67c74707b Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 16:59:35 2022 +0200 misc: get default language from settings (#70584) commit a62ed120d2797221a4207422df11f8d1e5e0b44a Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 08:51:54 2022 +0200 settings: add options to enable multilinguism (#70584) commit 925e4cebd5d89e818bff645721077cd02b20a37d Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Oct 22 08:31:42 2022 +0200 misc: move remaining settings from qommon.admin.settings (#70584)
Updated by Transition automatique about 1 year ago
- Status changed from Résolu (à déployer) to Solution déployée
misc: move remaining settings from qommon.admin.settings (#70584)