| 
									
										
										
										
											2024-03-01 17:44:56 +01:00
										 |  |  | # 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 : `<context>.<element>`. 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-02 20:06:43 +01:00
										 |  |  | Les traductions seront rassembler dans fichier txt. Une langue sera présente par fichier et une | 
					
						
							| 
									
										
										
										
											2024-03-01 17:44:56 +01:00
										 |  |  | 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. |