From 1a1baccddd89918f9c26d76f51c6d0e636259efa Mon Sep 17 00:00:00 2001 From: Debucquoy Anthony Date: Fri, 1 Mar 2024 17:44:56 +0100 Subject: [PATCH] idea of internationalisation in JDB --- Documents/JournalDeBord/i18n.md | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Documents/JournalDeBord/i18n.md diff --git a/Documents/JournalDeBord/i18n.md b/Documents/JournalDeBord/i18n.md new file mode 100644 index 0000000..02f0967 --- /dev/null +++ b/Documents/JournalDeBord/i18n.md @@ -0,0 +1,45 @@ +# Internationalization (i18n) + +L'un des critère du projet est de donner la possibilité aux utilisateur de choisir entre différentes +langues. Minimum 2 sont a implémenter, le français et l'anglais. + +## Intention + +La gestion des langue au niveau backend peut sembler être une bonne idée aux premier abord car celà +permeterais de laisser la possibilité a différents frontend utilisant la meme api de traduction. +cependant, peu d'éléments venant de la base de données sont traduisible. Nous alons alors opter pour +une internationalization au niveau du frontend. Dans le cas ou un éléments venant du frontend +devrait être traduit, Il suffirait alors de le faire traduire par le frontend directement + +## Implémentation + +Le frontend va se voir équiper d'une collection de fonctions permettant la traduction. notament +`i18n(key: str) -> str` qui prendrait en entrée une "clé" identifiant la traduction à aller +chercher. Cette clé serait sous la forme : `.`. La fonctions retournera alors la +traduction du texte dans la langue choisie par l'utilisateur. cette langue sera stockée dans les +cookies pour qu'un utilisateur non enregistré puisse naviguer sur le site sans problèmes. Si +l'utilisateur est enregistré elle pourra également être ajouter à son profil pour que la langue soit +mise à jours lors de son prochain passage. + +### Base de données de traduction + +Les traductions seront rasembler dans fichier txt. Une langue sera présente par fichier et une +traduction par ligne. (Ce format semble être utilisé par certaines librairies de spring. Malgré le +fait que nous ne l'utiliserons finalement pas, ce format semble efficace est facile à utilsier). + +Chaque ligne commence par la clé. suivi immédiatement d'un "=". le contenu après ce égale est la +traduction jusqu'au égale. + +## Considérations + +- Il existe certainemnt des librairies prète à l'emploi de traduction mais celà semble être + relativement simple à implémenter manuellement. + +- Dans l'éventualité où nous voudrions implémenter des éléments au milieu d'une traduction (example: + Veuillez vérifier votre addresse mail: `tonitch@herisson.ovh` puis revenir sur le site!). Dans ce + cas nous pouvons utiliser le regex et simplement renseigner ces éléments par \1, \2, \3, ... puis + créer une fonction qui s'occuperais de remplacer ces éléments dans le texte avant de le mettre en + avant. + +- Il ne devrait pas etre trop compliqué d'écrire un script qui vérifie que toutes les traductions + sont présente dans tout les fichiers en vérifiant que toutes les clés d'un fichiers sont présente.