Dans l’application web de mon projet Value Props, j’utilise la librairie sveltekit-i19n qui propose la fonctionnalité suivante :

Module-based – your translations are loaded for visited pages only (and only once!)

Actuellement, j’ai configuré les modules suivants :

❯ tree src/lib/translations
src/lib/translations
├── en
│   ├── all_data.json
│   ├── buttons.json
│   ├── login.json
│   ├── menu.json
│   ├── my_password.json
│   ├── my_preferences.json
│   ├── question_answers.json
│   ├── question_setup.json
│   ├── question_status.json
│   ├── space_data.json
│   ├── space_edit.json
│   ├── space.json
│   ├── space_members.json
│   ├── space_questions.json
│   ├── spaces.json
│   ├── space_slides.json
│   └── space_status.json
├── fr
│   ├── all_data.json
│   ├── buttons.json
│   ├── login.json
│   ├── menu.json
│   ├── my_password.json
│   ├── my_preferences.json
│   ├── question_answers.json
│   ├── question_setup.json
│   ├── question_status.json
│   ├── space_data.json
│   ├── space_edit.json
│   ├── space.json
│   ├── space_members.json
│   ├── space_questions.json
│   ├── spaces.json
│   ├── space_slides.json
│   └── space_status.json
├── index.js
├── lang.json
└── README.md

3 directories, 37 files

Je viens à nouveau de me casser la tête parce que j’ai besoin d’une traduction présente dans le module space_data dans une page qui ne fait pas partie de ce module.
Cela m’arrive très très souvent et je m’en veux, je n’ai pas respecté le principe YAGNI !

Dès le début d’l’implémentation de cette application, j’ai voulu faire les choses “bien” et j’ai commencé à utiliser la fonctionnalité “module” de la librairie !

Je suis persuadé que c’est une optimisation inutile pour le moment. Le découpage en module est difficile.

Encore une expérience qui me confirme que je dois toujours suivre par défaut le principe suivant du Zen of Python :

Flat is better than nested.

Je pense me créer pour ce projet une tâche de dette technique, de refactoring dont le but sera de migrer tous les modules vers un seul module — un seul fichier).

Seulement, le jour où je travaillerai sur la performance de chargement des pages, je réfléchirai à un découpage “intelligent” des traductions en modules.


Tous les tags présents dans la note :