Prise en charge de plusieurs langues dans SvelteKit, avec typesafe-i18n
Dans ce post, nous regarderons comment mettre en place typesafe-i18n dans une application avec SvelteKit pour couvrir plusieurs langues.
Création du projet Sveltekit
Commençons par créer le project Sveltekit.
Terminal
Pour le template, choisissez Skeleton Project. Puis, pour la vérification des
types, j'irai Typescript (mais tu peux choisir ce que tu préfères). Et
finalement, pour les options additionnelles, je n'ajouterai rien car on en aura
pas besoin pour ce projet. Sois libre d'en ajouter si nécessaire.
Entre dans le dossier et installe les dépendances.
Terminal
Ajout de typesafe-i18n
Ajoute typesafe-i18n avec cette commande. Cela générera un fichier
.typesafe-i18n.json à la racine du projet et un nouveau script sera ajouté
dans le fichier packaged.json, nommé typesafe-i18n.
Terminal
Ajoutons une langue de base dans notre fichier .typesafe-i18n.json. J'irai avec
en mais n'hésite pas à en choisir une autre.
.typesafe-i18n.json
Dans le fichier svelte.config.js, ajoutons un nouvel alias. Nous
l'utiliserons pour accéder au dossier i18n depuis n'importe où, sans nous
soucier des chemins relatifs.
svelte.config.js
Enfin, exécute les scripts suivants dans deux terminaux différents.
Cela créera un dossier nommé i18n dans le dossier src si ce n'est pas déjà
le cas. Il contiendra les traductions de notre application. Il contient notre
paramètres de langue de base et de. Tu peux le supprimer ou le remplacer par
un autre paramètre de langue. Je vais le changer en fr. N'hésite pas à
explorer à l'intérieur du dossier.
Terminal
Et exécute le serveur de développement vite pour afficher notre site web dans
le navigateur.
Terminal
Ajoutons des traductions
Ajoutons quelques traductions. Dans le dossier de ta langue de base à
l'intérieur de i18n, ajoute une clé pour la traduction et et sa valeur.
Ensuite, effectue la même chose avec tes autres langues. Voici les miennes.
i18n/en/index.ts
i18n/fr/index.ts
Utilisons nos traductions dans l'application
Ajoutons un fichier utils.ts dans le dossier src avec le contenu suivant.
utils.ts
Décommentons l'interface Locals dans app.d.ts et ajoutons ce qui suit.
app.d.ts
Gérons les langues invalides en créant un nouveau fichier lang.ts à
l'intérieur du dossier src/params.
params/lang.ts
Et ajoute ceci dans hooks.server.ts (crée-le si nécessaire). Cela gérera la
langue préférée, les langues invalides (en redirigeant vers la langue préférée)
et ajoutera les fonctions de langue et de traduction dans la requête.
hooks.server.ts
Maintenant, créons un fichier à la racine nommé +layout.server.ts, dans
lequel nous renverrons la langue, extrait de locals.
+layout.server.ts
Ensuite, chargeons les traductions dans notre fichier +layout.ts. Cela
nous permettra d'accéder aux traductions depuis n'importe quelle route.
+layout.ts
Enfin, dans ton fichier racine +layout.svelte, définissez la langue. Note que
cela doit être effectué avant d'accéder à des traductions.
+layout.svelte
Maintenant, créons un dossier [lang=lang] dans src/routes et mettons-y
notre page principale. Supprimons le contenu par défaut et affichons du texte
personnalisé. LL est un store qui contient nos traductions.
+page.svelte
Dans le navigateur, le texte apparaîtra correctement et changer la langue
manuellement le traduira correctement. Cependant, ce n'est pas très pratique de
changer la langue directement dans l'URL. Implémentons une barre de navigation
pour la changer.
Modifier la langue
D'abord, ajoutons de nouvelles traductions pour les langues.
i18n/en/index.ts
i18n/fr/index.ts
Puis, adaptons notre fichier +layout.svelte à la racine du dossier
src/routes pour y ajouter notre barre de navigation.
+layout.svelte
Tu devrais désormais pouvoir changer de langue facilement.
Conclusion
Voilà, maintenant tu peux simplement ajouter des traductions dans les fichiers
correspondants et les utiliser dans n'importe quel fichier +page.svelte.
Assure-toi juste de les ajouter à l'intérieur du dossier [lang=lang] pour y
accéder dans le navigateur.