PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
104 stars 102 forks source link

I18n par module avec ngx-translate #1136

Open jpm-cbna opened 4 years ago

jpm-cbna commented 4 years ago

GeoNature utilise Ngx-translate pour l’internationalisation (i18n) de l'application. Actuellement, tous les fichiers sont regroupés dans le dossier/frontend/src/assets/i18n/ et concernent tous les modules de l'application. Afin de simplifier la gestion des traductions, il serait nécessaire de mettre en place une gestion de ces fichiers de traduction au sein de chaque module. Ce dossier principal ne devant contenir que les chaînes globale à l'appli.

Cette bibliothèque permet bien de charger des fichiers de traduction au format JSON par module à partir de sa version 12. La version 12 est compatible avec Angular v8+. L'utilisation de cette fonctionnalité devra attendre la mise à jour de GeoNature vers une version d'Angular plus récente.

La façon de procéder est indiqué dans la section "Lazy loaded modules" de la documentation de Ngx-translate. Il faut utiliser comme indiqué l'option extend: true.

camillemonchicourt commented 4 years ago

Oui en effet, l'idéal serait un fichier de langue global pour tous les termes globaux. Et un fichier par module. En bonus, il serait intéressant de pouvoir surcoucher localement dans on instance les variables de langue, pour pouvoir adapter les vocabulaires à son contexte sans toucher au code source.

Voir aussi :

jpm-cbna commented 4 years ago

@camillemonchicourt il faudrait prendre le temps de tester les plugins ngx-translate-multi-http-loader et ngx-translate-module-loader qui peuvent peut être permettre de répondre aux besoins que tu évoques.

Si nous ne souhaitons pas ajouter de nouveau plugin, ils peuvent servir de base et d'exemple pour développer notre propre loader de fichier json de traduction.