Simplifiez la gestion des locales avec i18next-parser
Fini les clefs de traduction manquantes avec ce petit outil simple
Introduction
L'internationalisation (i18n) est le processus de conception d'applications logicielles de manière à ce qu'elles puissent être adaptées à différentes langues et régions sans nécessiter de modifications dans le code. i18next-parser est un outil qui vous aidera grandement dans ce processus. Il permet d'automatiser la gestion des fichiers de traduction, rendant plus robuste votre code et évitant l'affichage de clefs non-traduite en production.
Installation
Fonctionnalités Clés
Extraction des chaînes
i18next-parser peut analyser votre code source et extraire automatiquement les chaînes à traduire. Cela permet de s'assurer qu'aucune chaîne n'est omise et facilite le processus de localisation.
Vérification des traductions
L'outil peut comparer les fichiers de chaînes de localisation pour s'assurer que toutes les langues ont les mêmes chaînes traduites, évitant ainsi les incohérences et les traductions manquantes.
Génération des fichiers de localisation
i18next-parser peut créer des fichiers de chaînes de localisation pour différentes langues à partir des clefs renseignées dans votre code.
Archivage des clefs non utilisées
Si une clef de vos fichiers de langues n'est pas utilisée dans votre code, elle est archivée.
Ma config que j'utilise dans tous mes projets
Créez un fichier /src/i18n/i18next-parser.config.mjs.
Vous pouvez bien sûr choisir un autre chemin. Il faudra seulement bien le spécifier dans la commande que nous ajouterons au package.json
Les valeurs pour "input" et pour "output" sont probablement à modifier en fonction de l'architecture de votre projet.
Dans package.json, ajoutez le script suivant :
Ça fait quoi ?
1 - Chaque fois que vous allez lancer le script "i18n:parse", i18next-parser va analyser tous les fichiers en fonction de ce que vous avez mis dans "input".
2 - Il va ensuite extraire toutes les occurrences de
et en extraire les valeurs des clefs
Consultez la doc pour plus d'infos sur les fonctions à matcher : https://github.com/i18next/i18next-parser
3 - Si la clef n'existe pas encore dans vos fichiers de traduction, il va l'ajouter pour toutes les langues définies dans "locales"
Vous n'avez plus qu'à renseigner sa traduction.
4 - Si une clef renseignée dans vos fichiers de langues n'est pas présente dans votre code, elle sera déplacée dans un fichier "/$locale/translation_old.json".
Conclusion
L'internationalisation est un aspect crucial du développement web en 2024, et i18next-parser est un outil puissant pour gérer efficacement ce processus.
Ce petit outil m'a fait tout de même gagné un temps non négligeable. Je ne peux donc que vous le conseiller.
Aller plus loin
On peut ne pas s'arrêter là. Voici quelques pistes pour blinder encore plus vos traductions.
1 - Créer un règle ESlint pour lever une erreur lorsque "NOT_TRANSLATED_ KEY" est repéré dans vos fichiers de langues. Couplé avec des outils tels que husky, cela vous empêcherai de push des clées non traduites en ligne.
2 - Trouver un moyen de traduire automatiquement les clées avec une api de traduction + peut être un peu d'IA