@intlayer/docs 7.1.8 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cjs/generated/docs.entry.cjs +19 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +19 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_with_svelte_kit.md +730 -0
- package/docs/ar/intlayer_with_vite+svelte.md +288 -104
- package/docs/de/intlayer_with_svelte_kit.md +730 -0
- package/docs/de/intlayer_with_vite+svelte.md +302 -101
- package/docs/en/intlayer_with_svelte_kit.md +560 -0
- package/docs/en/intlayer_with_vite+svelte.md +153 -15
- package/docs/en/introduction.md +2 -0
- package/docs/en-GB/intlayer_with_svelte_kit.md +730 -0
- package/docs/en-GB/intlayer_with_vite+svelte.md +262 -84
- package/docs/es/intlayer_with_svelte_kit.md +730 -0
- package/docs/es/intlayer_with_vite+svelte.md +300 -107
- package/docs/fr/intlayer_with_svelte_kit.md +762 -0
- package/docs/fr/intlayer_with_vite+svelte.md +297 -101
- package/docs/hi/intlayer_with_svelte_kit.md +730 -0
- package/docs/hi/intlayer_with_vite+svelte.md +298 -108
- package/docs/id/intlayer_with_svelte_kit.md +730 -0
- package/docs/id/intlayer_with_vite+svelte.md +277 -99
- package/docs/it/intlayer_with_svelte_kit.md +762 -0
- package/docs/it/intlayer_with_vite+svelte.md +275 -99
- package/docs/ja/intlayer_with_svelte_kit.md +730 -0
- package/docs/ja/intlayer_with_vite+svelte.md +295 -110
- package/docs/ko/intlayer_with_svelte_kit.md +730 -0
- package/docs/ko/intlayer_with_vite+svelte.md +286 -199
- package/docs/pl/intlayer_with_svelte_kit.md +732 -0
- package/docs/pl/intlayer_with_vite+svelte.md +273 -101
- package/docs/pt/intlayer_with_svelte_kit.md +764 -0
- package/docs/pt/intlayer_with_vite+svelte.md +290 -96
- package/docs/ru/intlayer_with_svelte_kit.md +730 -0
- package/docs/ru/intlayer_with_vite+svelte.md +275 -99
- package/docs/tr/intlayer_with_svelte_kit.md +730 -0
- package/docs/tr/intlayer_with_vite+svelte.md +297 -119
- package/docs/vi/intlayer_with_svelte_kit.md +730 -0
- package/docs/vi/intlayer_with_vite+svelte.md +275 -102
- package/docs/zh/intlayer_with_svelte_kit.md +730 -0
- package/docs/zh/intlayer_with_vite+svelte.md +309 -107
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +19 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt: 2025-
|
|
4
|
-
title: Comment traduire votre Vite
|
|
5
|
-
description: Découvrez comment rendre votre site Vite et Svelte multilingue. Suivez la documentation pour internationaliser (i18n) et traduire votre site.
|
|
3
|
+
updatedAt: 2025-11-19
|
|
4
|
+
title: Comment traduire votre application Vite et Svelte – guide i18n 2025
|
|
5
|
+
description: Découvrez comment rendre votre site web Vite et Svelte multilingue. Suivez la documentation pour internationaliser (i18n) et traduire votre site.
|
|
6
6
|
keywords:
|
|
7
7
|
- Internationalisation
|
|
8
8
|
- Documentation
|
|
@@ -14,20 +14,23 @@ slugs:
|
|
|
14
14
|
- doc
|
|
15
15
|
- environment
|
|
16
16
|
- vite-and-svelte
|
|
17
|
-
|
|
17
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-vite-svelte-template
|
|
18
18
|
history:
|
|
19
|
+
- version: 5.5.11
|
|
20
|
+
date: 2025-11-19
|
|
21
|
+
changes: Mise à jour de la doc
|
|
19
22
|
- version: 5.5.10
|
|
20
23
|
date: 2025-06-29
|
|
21
24
|
changes: Historique initial
|
|
22
25
|
---
|
|
23
26
|
|
|
24
|
-
#
|
|
27
|
+
# Traduisez votre site Vite et Svelte avec Intlayer | Internationalisation (i18n)
|
|
25
28
|
|
|
26
|
-
|
|
29
|
+
## Table des matières
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
<TOC/>
|
|
29
32
|
|
|
30
|
-
## Qu'est-ce
|
|
33
|
+
## Qu'est-ce que Intlayer ?
|
|
31
34
|
|
|
32
35
|
**Intlayer** est une bibliothèque d'internationalisation (i18n) innovante et open-source conçue pour simplifier la prise en charge multilingue dans les applications web modernes.
|
|
33
36
|
|
|
@@ -35,16 +38,26 @@ Avec Intlayer, vous pouvez :
|
|
|
35
38
|
|
|
36
39
|
- **Gérer facilement les traductions** en utilisant des dictionnaires déclaratifs au niveau des composants.
|
|
37
40
|
- **Localiser dynamiquement les métadonnées**, les routes et le contenu.
|
|
38
|
-
- **Assurer la prise en charge de TypeScript** avec des types générés automatiquement, améliorant l'autocomplétion et la détection
|
|
39
|
-
- **
|
|
41
|
+
- **Assurer la prise en charge de TypeScript** avec des types générés automatiquement, améliorant l'autocomplétion et la détection d'erreurs.
|
|
42
|
+
- **Bénéficier de fonctionnalités avancées**, comme la détection et le changement dynamiques de la locale.
|
|
40
43
|
|
|
41
44
|
---
|
|
42
45
|
|
|
43
46
|
## Guide étape par étape pour configurer Intlayer dans une application Vite et Svelte
|
|
44
47
|
|
|
48
|
+
<iframe
|
|
49
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-vite-react-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
50
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
51
|
+
title="Demo CodeSandbox - Comment internationaliser votre application avec Intlayer"
|
|
52
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
53
|
+
loading="lazy"
|
|
54
|
+
/>
|
|
55
|
+
|
|
56
|
+
Voir le [Modèle d'application](https://github.com/aymericzip/intlayer-vite-svelte-template) sur GitHub.
|
|
57
|
+
|
|
45
58
|
### Étape 1 : Installer les dépendances
|
|
46
59
|
|
|
47
|
-
Installez les paquets nécessaires
|
|
60
|
+
Installez les paquets nécessaires en utilisant npm :
|
|
48
61
|
|
|
49
62
|
```bash packageManager="npm"
|
|
50
63
|
npm install intlayer svelte-intlayer
|
|
@@ -61,23 +74,26 @@ yarn add intlayer svelte-intlayer
|
|
|
61
74
|
yarn add vite-intlayer --save-dev
|
|
62
75
|
```
|
|
63
76
|
|
|
64
|
-
|
|
77
|
+
```bash packageManager="bun"
|
|
78
|
+
bun add intlayer svelte-intlayer
|
|
79
|
+
bun add vite-intlayer --save-dev
|
|
80
|
+
```
|
|
65
81
|
|
|
66
82
|
- **intlayer**
|
|
67
83
|
|
|
68
|
-
Le
|
|
84
|
+
Le package principal qui fournit des outils d'internationalisation pour la gestion de la configuration, la traduction, la [déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/content_file.md), la transpilation, et les [commandes CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_cli.md).
|
|
69
85
|
|
|
70
86
|
- **svelte-intlayer**
|
|
71
|
-
Le
|
|
87
|
+
Le package qui intègre Intlayer avec une application Svelte. Il fournit des context providers et des hooks pour l'internationalisation dans Svelte.
|
|
72
88
|
|
|
73
89
|
- **vite-intlayer**
|
|
74
|
-
Inclut le plugin Vite pour intégrer Intlayer avec le [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), ainsi
|
|
90
|
+
Inclut le plugin Vite pour intégrer Intlayer avec le [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), ainsi qu'un middleware pour détecter la locale préférée de l'utilisateur, gérer les cookies, et gérer la redirection des URL.
|
|
75
91
|
|
|
76
92
|
### Étape 2 : Configuration de votre projet
|
|
77
93
|
|
|
78
94
|
Créez un fichier de configuration pour configurer les langues de votre application :
|
|
79
95
|
|
|
80
|
-
```typescript fileName="intlayer.config.ts"
|
|
96
|
+
```typescript fileName="intlayer.config.ts"
|
|
81
97
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
82
98
|
|
|
83
99
|
const config: IntlayerConfig = {
|
|
@@ -86,26 +102,7 @@ const config: IntlayerConfig = {
|
|
|
86
102
|
Locales.ENGLISH,
|
|
87
103
|
Locales.FRENCH,
|
|
88
104
|
Locales.SPANISH,
|
|
89
|
-
// Vos autres
|
|
90
|
-
],
|
|
91
|
-
defaultLocale: Locales.ENGLISH,
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
export default config;
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
99
|
-
import { Locales } from "intlayer";
|
|
100
|
-
|
|
101
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
102
|
-
const config = {
|
|
103
|
-
internationalization: {
|
|
104
|
-
locales: [
|
|
105
|
-
Locales.ENGLISH,
|
|
106
|
-
Locales.FRENCH,
|
|
107
|
-
Locales.SPANISH,
|
|
108
|
-
// Vos autres langues
|
|
105
|
+
// Vos autres locales
|
|
109
106
|
],
|
|
110
107
|
defaultLocale: Locales.ENGLISH,
|
|
111
108
|
},
|
|
@@ -114,43 +111,13 @@ const config = {
|
|
|
114
111
|
export default config;
|
|
115
112
|
```
|
|
116
113
|
|
|
117
|
-
|
|
118
|
-
const { Locales } = require("intlayer");
|
|
119
|
-
|
|
120
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
121
|
-
const config = {
|
|
122
|
-
internationalization: {
|
|
123
|
-
locales: [
|
|
124
|
-
Locales.ENGLISH,
|
|
125
|
-
Locales.FRENCH,
|
|
126
|
-
Locales.SPANISH,
|
|
127
|
-
// Vos autres langues
|
|
128
|
-
],
|
|
129
|
-
defaultLocale: Locales.ENGLISH,
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
module.exports = config;
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
> Grâce à ce fichier de configuration, vous pouvez configurer des URL localisées, la redirection via middleware, les noms des cookies, l'emplacement et l'extension de vos déclarations de contenu, désactiver les logs Intlayer dans la console, et bien plus encore. Pour une liste complète des paramètres disponibles, consultez la [documentation de configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/configuration.md).
|
|
114
|
+
> Grâce à ce fichier de configuration, vous pouvez configurer les URL localisées, la redirection via middleware, les noms des cookies, l'emplacement et l'extension de vos déclarations de contenu, désactiver les logs Intlayer dans la console, et plus encore. Pour une liste complète des paramètres disponibles, consultez la [documentation de configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/configuration.md).
|
|
137
115
|
|
|
138
116
|
### Étape 3 : Intégrer Intlayer dans votre configuration Vite
|
|
139
117
|
|
|
140
118
|
Ajoutez le plugin intlayer dans votre configuration.
|
|
141
119
|
|
|
142
|
-
```typescript fileName="vite.config.ts"
|
|
143
|
-
import { defineConfig } from "vite";
|
|
144
|
-
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
145
|
-
import { intlayer } from "vite-intlayer";
|
|
146
|
-
|
|
147
|
-
// https://vitejs.dev/config/
|
|
148
|
-
export default defineConfig({
|
|
149
|
-
plugins: [svelte(), intlayer()],
|
|
150
|
-
});
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
```javascript fileName="vite.config.mjs" codeFormat="esm"
|
|
120
|
+
```typescript fileName="vite.config.ts"
|
|
154
121
|
import { defineConfig } from "vite";
|
|
155
122
|
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
156
123
|
import { intlayer } from "vite-intlayer";
|
|
@@ -161,20 +128,9 @@ export default defineConfig({
|
|
|
161
128
|
});
|
|
162
129
|
```
|
|
163
130
|
|
|
164
|
-
|
|
165
|
-
const { defineConfig } = require("vite");
|
|
166
|
-
const react = require("@vitejs/plugin-react-swc");
|
|
167
|
-
const { intlayer } = require("vite-intlayer");
|
|
168
|
-
|
|
169
|
-
// https://vitejs.dev/config/
|
|
170
|
-
module.exports = defineConfig({
|
|
171
|
-
plugins: [react(), intlayer()],
|
|
172
|
-
});
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
> Le plugin Vite `intlayer()` est utilisé pour intégrer Intlayer avec Vite. Il assure la construction des fichiers de déclaration de contenu et les surveille en mode développement. Il définit les variables d'environnement Intlayer au sein de l'application Vite. De plus, il fournit des alias pour optimiser les performances.
|
|
131
|
+
> Le plugin Vite `intlayer()` est utilisé pour intégrer Intlayer avec Vite. Il assure la génération des fichiers de déclaration de contenu et les surveille en mode développement. Il définit les variables d'environnement Intlayer au sein de l'application Vite. De plus, il fournit des alias pour optimiser les performances.
|
|
176
132
|
|
|
177
|
-
### Étape 4 : Déclarez
|
|
133
|
+
### Étape 4 : Déclarez votre contenu
|
|
178
134
|
|
|
179
135
|
Créez et gérez vos déclarations de contenu pour stocker les traductions :
|
|
180
136
|
|
|
@@ -199,6 +155,7 @@ export default appContent;
|
|
|
199
155
|
import { t } from "intlayer";
|
|
200
156
|
|
|
201
157
|
/** @type {import('intlayer').Dictionary} */
|
|
158
|
+
// Déclaration du contenu de l'application
|
|
202
159
|
const appContent = {
|
|
203
160
|
key: "app",
|
|
204
161
|
content: {
|
|
@@ -249,39 +206,280 @@ module.exports = appContent;
|
|
|
249
206
|
}
|
|
250
207
|
```
|
|
251
208
|
|
|
252
|
-
> Vos déclarations de contenu peuvent être définies n'importe où dans votre application dès
|
|
209
|
+
> Vos déclarations de contenu peuvent être définies n'importe où dans votre application dès qu'elles sont incluses dans le répertoire `contentDir` (par défaut, `./src`). Et correspondent à l'extension de fichier de déclaration de contenu (par défaut, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
253
210
|
|
|
254
|
-
> Pour plus de détails, consultez la [documentation sur la déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/
|
|
211
|
+
> Pour plus de détails, consultez la [documentation sur la déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/content_file.md).
|
|
255
212
|
|
|
256
213
|
### Étape 5 : Utiliser Intlayer dans votre code
|
|
257
214
|
|
|
258
|
-
|
|
215
|
+
```svelte fileName="src/App.svelte"
|
|
216
|
+
<script>
|
|
217
|
+
import { useIntlayer } from "svelte-intlayer";
|
|
218
|
+
|
|
219
|
+
const content = useIntlayer("app");
|
|
220
|
+
</script>
|
|
221
|
+
|
|
222
|
+
<div>
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
<!-- Afficher le contenu comme contenu simple -->
|
|
226
|
+
<h1>{$content.title}</h1>
|
|
227
|
+
<!-- Pour afficher le contenu éditable via l'éditeur -->
|
|
228
|
+
<h1><svelte:component this={$content.title} /></h1>
|
|
229
|
+
<!-- Pour afficher le contenu en tant que chaîne de caractères -->
|
|
230
|
+
<div aria-label={$content.title.value}></div>
|
|
231
|
+
```
|
|
259
232
|
|
|
260
233
|
### (Optionnel) Étape 6 : Changer la langue de votre contenu
|
|
261
234
|
|
|
262
|
-
|
|
235
|
+
```svelte fileName="src/App.svelte"
|
|
236
|
+
<script lang="ts">
|
|
237
|
+
import { getLocaleName } from 'intlayer';
|
|
238
|
+
import { useLocale } from 'svelte-intlayer';
|
|
239
|
+
|
|
240
|
+
// Obtenir les informations de locale et la fonction setLocale
|
|
241
|
+
const { locale, availableLocales, setLocale } = useLocale();
|
|
242
|
+
|
|
243
|
+
// Gérer le changement de locale
|
|
244
|
+
const changeLocale = (event: Event) => {
|
|
245
|
+
const target = event.target as HTMLSelectElement;
|
|
246
|
+
const newLocale = target.value;
|
|
247
|
+
setLocale(newLocale);
|
|
248
|
+
};
|
|
249
|
+
</script>
|
|
250
|
+
|
|
251
|
+
<div>
|
|
252
|
+
<select value={$locale} on:change={changeLocale}>
|
|
253
|
+
{#each availableLocales ?? [] as loc}
|
|
254
|
+
<option value={loc}>
|
|
255
|
+
{getLocaleName(loc)}
|
|
256
|
+
</option>
|
|
257
|
+
{/each}
|
|
258
|
+
</select>
|
|
259
|
+
</div>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### (Optionnel) Étape 7 : Rendre du Markdown
|
|
263
|
+
|
|
264
|
+
Intlayer prend en charge le rendu du contenu Markdown directement dans votre application Svelte. Par défaut, le Markdown est traité comme du texte brut. Pour convertir le Markdown en HTML enrichi, vous pouvez intégrer `@humanspeak/svelte-markdown` ou un autre parseur Markdown.
|
|
265
|
+
|
|
266
|
+
> Pour voir comment déclarer du contenu markdown en utilisant le package `intlayer`, consultez la [documentation markdown](https://github.com/aymericzip/intlayer/tree/main/docs/docs/fr/dictionary/markdown.md).
|
|
267
|
+
|
|
268
|
+
```svelte fileName="src/App.svelte"
|
|
269
|
+
<script>
|
|
270
|
+
import { setIntlayerMarkdown } from "svelte-intlayer";
|
|
271
|
+
|
|
272
|
+
setIntlayerMarkdown((markdown) =>
|
|
273
|
+
// rendre le contenu markdown sous forme de chaîne
|
|
274
|
+
return markdown;
|
|
275
|
+
);
|
|
276
|
+
</script>
|
|
277
|
+
|
|
278
|
+
<h1>{$content.markdownContent}</h1>
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
> Vous pouvez également accéder aux données front-matter de votre markdown en utilisant la propriété `content.markdownContent.metadata.xxx`.
|
|
282
|
+
|
|
283
|
+
### (Optionnel) Étape 8 : Configurer l’éditeur / CMS intlayer
|
|
284
|
+
|
|
285
|
+
Pour configurer l’éditeur intlayer, vous devez suivre la [documentation de l’éditeur intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md).
|
|
286
|
+
|
|
287
|
+
Pour configurer le CMS intlayer, vous devez suivre la [documentation du CMS intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md).
|
|
288
|
+
|
|
289
|
+
En parallèle, dans votre application Svelte, vous devez ajouter la ligne suivante dans un layout, ou à la racine de votre application :
|
|
263
290
|
|
|
264
|
-
|
|
291
|
+
```svelte fileName="src/layout.svelte"
|
|
292
|
+
import { useIntlayerEditor } from "svelte-intlayer";
|
|
265
293
|
|
|
266
|
-
|
|
294
|
+
useIntlayerEditor();
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### (Optionnel) Étape 7 : Ajouter le routage localisé à votre application
|
|
298
|
+
|
|
299
|
+
Pour gérer le routage localisé dans votre application Svelte, vous pouvez utiliser `svelte-spa-router` avec `localeFlatMap` d'Intlayer pour générer les routes pour chaque locale.
|
|
300
|
+
|
|
301
|
+
Tout d'abord, installez `svelte-spa-router` :
|
|
302
|
+
|
|
303
|
+
```bash packageManager="npm"
|
|
304
|
+
npm install svelte-spa-router
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
```bash packageManager="pnpm"
|
|
308
|
+
pnpm add svelte-spa-router
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
```bash packageManager="yarn"
|
|
312
|
+
yarn add svelte-spa-router
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
```bash packageManager="bun"
|
|
316
|
+
bun add svelte-spa-router
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Ensuite, créez un fichier `Router.svelte` pour définir vos routes :
|
|
320
|
+
|
|
321
|
+
```svelte fileName="src/Router.svelte"
|
|
322
|
+
<script lang="ts">
|
|
323
|
+
import { localeFlatMap } from "intlayer";
|
|
324
|
+
import Router from "svelte-spa-router";
|
|
325
|
+
import { wrap } from "svelte-spa-router/wrap";
|
|
326
|
+
import App from "./App.svelte";
|
|
327
|
+
|
|
328
|
+
const routes = Object.fromEntries(
|
|
329
|
+
localeFlatMap(({locale, urlPrefix}) => [
|
|
330
|
+
[
|
|
331
|
+
urlPrefix || '/',
|
|
332
|
+
wrap({
|
|
333
|
+
component: App as any,
|
|
334
|
+
props: {
|
|
335
|
+
locale,
|
|
336
|
+
},
|
|
337
|
+
}),
|
|
338
|
+
],
|
|
339
|
+
])
|
|
340
|
+
);
|
|
341
|
+
</script>
|
|
342
|
+
|
|
343
|
+
<Router {routes} />
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
Mettez à jour votre `main.ts` pour monter le composant `Router` au lieu de `App` :
|
|
347
|
+
|
|
348
|
+
```typescript fileName="src/main.ts"
|
|
349
|
+
import { mount } from "svelte";
|
|
350
|
+
import Router from "./Router.svelte";
|
|
351
|
+
|
|
352
|
+
const app = mount(Router, {
|
|
353
|
+
target: document.getElementById("app")!,
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
export default app;
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
Enfin, mettez à jour votre `App.svelte` pour recevoir la propriété `locale` et l'utiliser avec `useIntlayer` :
|
|
360
|
+
|
|
361
|
+
```svelte fileName="src/App.svelte"
|
|
362
|
+
<script lang="ts">
|
|
363
|
+
import type { Locale } from 'intlayer';
|
|
364
|
+
import { useIntlayer } from 'svelte-intlayer';
|
|
365
|
+
import Counter from './lib/Counter.svelte';
|
|
366
|
+
import LocaleSwitcher from './lib/LocaleSwitcher.svelte';
|
|
367
|
+
|
|
368
|
+
export let locale: Locale;
|
|
369
|
+
|
|
370
|
+
$: content = useIntlayer('app', locale);
|
|
371
|
+
</script>
|
|
372
|
+
|
|
373
|
+
<main>
|
|
374
|
+
<div class="locale-switcher-container">
|
|
375
|
+
<LocaleSwitcher currentLocale={locale} />
|
|
376
|
+
</div>
|
|
377
|
+
|
|
378
|
+
<!-- ... reste de votre application ... -->
|
|
379
|
+
</main>
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
#### Configurer le routage côté serveur (optionnel)
|
|
383
|
+
|
|
384
|
+
En parallèle, vous pouvez également utiliser le `intlayerProxy` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
|
|
385
|
+
|
|
386
|
+
> Notez que pour utiliser le `intlayerProxy` en production, vous devez déplacer le paquet `vite-intlayer` de `devDependencies` vers `dependencies`.
|
|
267
387
|
|
|
268
|
-
|
|
388
|
+
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
389
|
+
import { defineConfig } from "vite";
|
|
390
|
+
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
391
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
269
392
|
|
|
270
|
-
|
|
393
|
+
// https://vitejs.dev/config/
|
|
394
|
+
export default defineConfig({
|
|
395
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
396
|
+
});
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
400
|
+
import { defineConfig } from "vite";
|
|
401
|
+
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
402
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
271
403
|
|
|
272
|
-
|
|
404
|
+
// https://vitejs.dev/config/
|
|
405
|
+
export default defineConfig({
|
|
406
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
407
|
+
});
|
|
408
|
+
```
|
|
273
409
|
|
|
274
|
-
|
|
410
|
+
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
411
|
+
const { defineConfig } = require("vite");
|
|
412
|
+
const { svelte } = require("@sveltejs/vite-plugin-svelte");
|
|
413
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
275
414
|
|
|
276
|
-
|
|
415
|
+
// https://vitejs.dev/config/
|
|
416
|
+
module.exports = defineConfig({
|
|
417
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
418
|
+
});
|
|
419
|
+
```
|
|
277
420
|
|
|
278
|
-
|
|
421
|
+
### (Optionnel) Étape 8 : Modifier l'URL lorsque la locale change
|
|
422
|
+
|
|
423
|
+
Pour permettre aux utilisateurs de changer de langue et de mettre à jour l'URL en conséquence, vous pouvez créer un composant `LocaleSwitcher`. Ce composant utilisera `getLocalizedUrl` de `intlayer` et `push` de `svelte-spa-router`.
|
|
424
|
+
|
|
425
|
+
```svelte fileName="src/lib/LocaleSwitcher.svelte"
|
|
426
|
+
<script lang="ts">
|
|
427
|
+
import { getLocaleName, getLocalizedUrl } from "intlayer";
|
|
428
|
+
import { useLocale } from "svelte-intlayer";
|
|
429
|
+
import { push } from "svelte-spa-router";
|
|
430
|
+
|
|
431
|
+
export let currentLocale: string | undefined = undefined;
|
|
432
|
+
|
|
433
|
+
// Obtenir les informations de la locale
|
|
434
|
+
const { locale, availableLocales } = useLocale();
|
|
435
|
+
|
|
436
|
+
// Gérer le changement de locale
|
|
437
|
+
const changeLocale = (event: Event) => {
|
|
438
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
439
|
+
});
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### (Optionnel) Étape 8 : Modifier l’URL lors du changement de langue
|
|
443
|
+
|
|
444
|
+
Pour permettre aux utilisateurs de changer de langue et de mettre à jour l’URL en conséquence, vous pouvez créer un composant `LocaleSwitcher`. Ce composant utilisera `getLocalizedUrl` de `intlayer` et `push` de `svelte-spa-router`.
|
|
445
|
+
|
|
446
|
+
```svelte fileName="src/lib/LocaleSwitcher.svelte"
|
|
447
|
+
<script lang="ts">
|
|
448
|
+
import { getLocaleName, getLocalizedUrl } from "intlayer";
|
|
449
|
+
import { useLocale } from "svelte-intlayer";
|
|
450
|
+
import { push } from "svelte-spa-router";
|
|
451
|
+
|
|
452
|
+
export let currentLocale: string | undefined = undefined;
|
|
453
|
+
|
|
454
|
+
// Récupérer les informations de la locale
|
|
455
|
+
const { locale, availableLocales } = useLocale();
|
|
456
|
+
|
|
457
|
+
// Gérer le changement de langue
|
|
458
|
+
const changeLocale = (event: Event) => {
|
|
459
|
+
const target = event.target as HTMLSelectElement;
|
|
460
|
+
const newLocale = target.value;
|
|
461
|
+
const currentUrl = window.location.pathname;
|
|
462
|
+
const url = getLocalizedUrl(currentUrl, newLocale);
|
|
463
|
+
push(url);
|
|
464
|
+
};
|
|
465
|
+
</script>
|
|
466
|
+
|
|
467
|
+
<div class="locale-switcher">
|
|
468
|
+
<select value={currentLocale ?? $locale} onchange={changeLocale}>
|
|
469
|
+
{#each availableLocales ?? [] as loc}
|
|
470
|
+
<option value={loc}>
|
|
471
|
+
{getLocaleName(loc)}
|
|
472
|
+
</option>
|
|
473
|
+
{/each}
|
|
474
|
+
</select>
|
|
475
|
+
</div>
|
|
476
|
+
```
|
|
279
477
|
|
|
280
478
|
### Configuration Git
|
|
281
479
|
|
|
282
|
-
Il est recommandé d’ignorer les fichiers générés par Intlayer. Cela vous permet d’éviter de les
|
|
480
|
+
Il est recommandé d’ignorer les fichiers générés par Intlayer. Cela vous permet d’éviter de les commettre dans votre dépôt Git.
|
|
283
481
|
|
|
284
|
-
Pour ce faire, vous pouvez ajouter les instructions suivantes
|
|
482
|
+
Pour ce faire, vous pouvez ajouter les instructions suivantes dans votre fichier `.gitignore` :
|
|
285
483
|
|
|
286
484
|
```plaintext
|
|
287
485
|
# Ignorer les fichiers générés par Intlayer
|
|
@@ -290,23 +488,21 @@ Pour ce faire, vous pouvez ajouter les instructions suivantes à votre fichier `
|
|
|
290
488
|
|
|
291
489
|
### Extension VS Code
|
|
292
490
|
|
|
293
|
-
Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l
|
|
491
|
+
Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l’extension officielle **Intlayer VS Code Extension**.
|
|
294
492
|
|
|
295
|
-
[Installer depuis le
|
|
493
|
+
[Installer depuis le VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
296
494
|
|
|
297
495
|
Cette extension offre :
|
|
298
496
|
|
|
299
497
|
- **Autocomplétion** pour les clés de traduction.
|
|
300
|
-
- **Détection d
|
|
498
|
+
- **Détection d’erreurs en temps réel** pour les traductions manquantes.
|
|
301
499
|
- **Aperçus en ligne** du contenu traduit.
|
|
302
500
|
- **Actions rapides** pour créer et mettre à jour facilement les traductions.
|
|
303
501
|
|
|
304
|
-
Pour plus de détails sur l
|
|
502
|
+
Pour plus de détails sur l’utilisation de l’extension, consultez la [documentation de l’extension Intlayer VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
305
503
|
|
|
306
504
|
---
|
|
307
505
|
|
|
308
506
|
### Aller plus loin
|
|
309
507
|
|
|
310
508
|
Pour aller plus loin, vous pouvez implémenter l’[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) ou externaliser votre contenu en utilisant le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md).
|
|
311
|
-
|
|
312
|
-
---
|