@intlayer/docs 8.6.1 → 8.6.10
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/dist/cjs/doc.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +60 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/doc.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +60 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/doc.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +3 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/cli/index.md +54 -42
- package/docs/ar/cli/init.md +32 -20
- package/docs/ar/cli/standalone.md +91 -0
- package/docs/ar/configuration.md +39 -7
- package/docs/ar/custom_domains.md +250 -0
- package/docs/ar/intlayer_with_tanstack+solid.md +14 -33
- package/docs/ar/intlayer_with_tanstack.md +25 -16
- package/docs/ar/intlayer_with_vanilla.md +506 -0
- package/docs/bn/cli/index.md +195 -0
- package/docs/bn/cli/init.md +96 -0
- package/docs/bn/cli/standalone.md +91 -0
- package/docs/bn/configuration.md +46 -14
- package/docs/bn/custom_domains.md +250 -0
- package/docs/bn/intlayer_with_vanilla.md +506 -0
- package/docs/cs/cli/index.md +195 -0
- package/docs/cs/cli/init.md +96 -0
- package/docs/cs/cli/standalone.md +91 -0
- package/docs/cs/configuration.md +46 -7
- package/docs/cs/custom_domains.md +250 -0
- package/docs/cs/intlayer_with_vanilla.md +506 -0
- package/docs/de/cli/index.md +53 -41
- package/docs/de/cli/standalone.md +91 -0
- package/docs/de/configuration.md +46 -7
- package/docs/de/custom_domains.md +250 -0
- package/docs/de/intlayer_with_tanstack+solid.md +14 -33
- package/docs/de/intlayer_with_tanstack.md +25 -16
- package/docs/de/intlayer_with_vanilla.md +506 -0
- package/docs/en/bundle_optimization.md +288 -23
- package/docs/en/cli/index.md +6 -1
- package/docs/en/cli/init.md +13 -1
- package/docs/en/cli/standalone.md +91 -0
- package/docs/en/configuration.md +46 -7
- package/docs/en/custom_domains.md +245 -0
- package/docs/en/intlayer_with_tanstack+solid.md +14 -33
- package/docs/en/intlayer_with_tanstack.md +25 -16
- package/docs/en/intlayer_with_vanilla.md +506 -0
- package/docs/en-GB/cli/index.md +56 -44
- package/docs/en-GB/cli/init.md +28 -21
- package/docs/en-GB/cli/standalone.md +91 -0
- package/docs/en-GB/configuration.md +53 -14
- package/docs/en-GB/custom_domains.md +250 -0
- package/docs/en-GB/intlayer_with_tanstack+solid.md +14 -33
- package/docs/en-GB/intlayer_with_tanstack.md +25 -16
- package/docs/en-GB/intlayer_with_vanilla.md +506 -0
- package/docs/es/cli/index.md +65 -53
- package/docs/es/cli/init.md +33 -21
- package/docs/es/cli/standalone.md +91 -0
- package/docs/es/configuration.md +39 -1
- package/docs/es/custom_domains.md +250 -0
- package/docs/es/intlayer_with_tanstack+solid.md +14 -33
- package/docs/es/intlayer_with_tanstack.md +25 -16
- package/docs/es/intlayer_with_vanilla.md +506 -0
- package/docs/fr/cli/index.md +43 -31
- package/docs/fr/cli/init.md +37 -25
- package/docs/fr/cli/standalone.md +91 -0
- package/docs/fr/configuration.md +46 -7
- package/docs/fr/custom_domains.md +250 -0
- package/docs/fr/intlayer_with_tanstack+solid.md +14 -33
- package/docs/fr/intlayer_with_tanstack.md +25 -16
- package/docs/fr/intlayer_with_vanilla.md +506 -0
- package/docs/hi/cli/index.md +71 -59
- package/docs/hi/cli/init.md +37 -33
- package/docs/hi/cli/standalone.md +91 -0
- package/docs/hi/configuration.md +39 -7
- package/docs/hi/custom_domains.md +250 -0
- package/docs/hi/intlayer_with_tanstack+solid.md +14 -33
- package/docs/hi/intlayer_with_tanstack.md +25 -16
- package/docs/hi/intlayer_with_vanilla.md +506 -0
- package/docs/id/cli/index.md +59 -47
- package/docs/id/cli/init.md +32 -25
- package/docs/id/cli/standalone.md +91 -0
- package/docs/id/configuration.md +46 -7
- package/docs/id/custom_domains.md +250 -0
- package/docs/id/intlayer_with_tanstack+solid.md +14 -33
- package/docs/id/intlayer_with_tanstack.md +25 -16
- package/docs/id/intlayer_with_vanilla.md +506 -0
- package/docs/it/cli/index.md +58 -41
- package/docs/it/cli/init.md +37 -38
- package/docs/it/cli/standalone.md +91 -0
- package/docs/it/configuration.md +46 -7
- package/docs/it/custom_domains.md +250 -0
- package/docs/it/intlayer_with_tanstack+solid.md +14 -33
- package/docs/it/intlayer_with_tanstack.md +25 -16
- package/docs/it/intlayer_with_vanilla.md +506 -0
- package/docs/ja/cli/index.md +59 -47
- package/docs/ja/cli/init.md +36 -24
- package/docs/ja/cli/standalone.md +91 -0
- package/docs/ja/configuration.md +46 -7
- package/docs/ja/custom_domains.md +250 -0
- package/docs/ja/intlayer_with_tanstack+solid.md +14 -33
- package/docs/ja/intlayer_with_tanstack.md +25 -16
- package/docs/ja/intlayer_with_vanilla.md +506 -0
- package/docs/ko/cli/index.md +58 -46
- package/docs/ko/cli/init.md +39 -35
- package/docs/ko/cli/standalone.md +91 -0
- package/docs/ko/configuration.md +47 -8
- package/docs/ko/custom_domains.md +250 -0
- package/docs/ko/intlayer_with_tanstack+solid.md +14 -33
- package/docs/ko/intlayer_with_tanstack.md +25 -16
- package/docs/ko/intlayer_with_vanilla.md +506 -0
- package/docs/nl/cli/index.md +195 -0
- package/docs/nl/cli/init.md +96 -0
- package/docs/nl/cli/standalone.md +91 -0
- package/docs/nl/configuration.md +46 -7
- package/docs/nl/custom_domains.md +250 -0
- package/docs/nl/intlayer_with_vanilla.md +506 -0
- package/docs/pl/cli/index.md +56 -44
- package/docs/pl/cli/init.md +36 -32
- package/docs/pl/cli/standalone.md +91 -0
- package/docs/pl/configuration.md +46 -7
- package/docs/pl/custom_domains.md +250 -0
- package/docs/pl/intlayer_with_tanstack+solid.md +14 -33
- package/docs/pl/intlayer_with_tanstack.md +25 -16
- package/docs/pl/intlayer_with_vanilla.md +506 -0
- package/docs/pt/cli/index.md +64 -52
- package/docs/pt/cli/init.md +35 -31
- package/docs/pt/cli/standalone.md +91 -0
- package/docs/pt/configuration.md +46 -7
- package/docs/pt/custom_domains.md +250 -0
- package/docs/pt/intlayer_with_tanstack+solid.md +14 -33
- package/docs/pt/intlayer_with_tanstack.md +25 -16
- package/docs/pt/intlayer_with_vanilla.md +506 -0
- package/docs/ru/cli/index.md +54 -42
- package/docs/ru/cli/init.md +31 -27
- package/docs/ru/cli/standalone.md +91 -0
- package/docs/ru/configuration.md +46 -7
- package/docs/ru/custom_domains.md +250 -0
- package/docs/ru/intlayer_with_tanstack+solid.md +14 -33
- package/docs/ru/intlayer_with_tanstack.md +25 -16
- package/docs/ru/intlayer_with_vanilla.md +506 -0
- package/docs/tr/cli/index.md +64 -52
- package/docs/tr/cli/init.md +37 -30
- package/docs/tr/cli/standalone.md +91 -0
- package/docs/tr/configuration.md +46 -7
- package/docs/tr/custom_domains.md +250 -0
- package/docs/tr/intlayer_with_tanstack+solid.md +14 -33
- package/docs/tr/intlayer_with_tanstack.md +25 -16
- package/docs/tr/intlayer_with_vanilla.md +506 -0
- package/docs/uk/cli/index.md +60 -55
- package/docs/uk/cli/init.md +32 -20
- package/docs/uk/cli/standalone.md +91 -0
- package/docs/uk/configuration.md +46 -7
- package/docs/uk/custom_domains.md +250 -0
- package/docs/uk/intlayer_with_tanstack+solid.md +14 -33
- package/docs/uk/intlayer_with_tanstack.md +25 -16
- package/docs/uk/intlayer_with_vanilla.md +506 -0
- package/docs/ur/cli/index.md +195 -0
- package/docs/ur/cli/init.md +96 -0
- package/docs/ur/cli/standalone.md +91 -0
- package/docs/ur/configuration.md +46 -7
- package/docs/ur/custom_domains.md +250 -0
- package/docs/ur/intlayer_with_vanilla.md +506 -0
- package/docs/vi/cli/index.md +72 -61
- package/docs/vi/cli/init.md +33 -21
- package/docs/vi/cli/standalone.md +91 -0
- package/docs/vi/configuration.md +46 -7
- package/docs/vi/custom_domains.md +250 -0
- package/docs/vi/intlayer_with_tanstack+solid.md +14 -33
- package/docs/vi/intlayer_with_tanstack.md +25 -16
- package/docs/vi/intlayer_with_vanilla.md +506 -0
- package/docs/zh/cli/index.md +56 -49
- package/docs/zh/cli/init.md +30 -18
- package/docs/zh/cli/standalone.md +91 -0
- package/docs/zh/configuration.md +46 -7
- package/docs/zh/custom_domains.md +250 -0
- package/docs/zh/intlayer_with_tanstack+solid.md +14 -33
- package/docs/zh/intlayer_with_tanstack.md +25 -16
- package/docs/zh/intlayer_with_vanilla.md +506 -0
- package/package.json +8 -8
- package/src/doc.ts +4 -1
- package/src/generated/docs.entry.ts +60 -0
- package/docs/ar/bundle_optimization.md +0 -185
- package/docs/de/bundle_optimization.md +0 -195
- package/docs/en-GB/bundle_optimization.md +0 -184
- package/docs/es/bundle_optimization.md +0 -194
- package/docs/fr/bundle_optimization.md +0 -184
- package/docs/hi/bundle_optimization.md +0 -185
- package/docs/id/bundle_optimization.md +0 -185
- package/docs/it/bundle_optimization.md +0 -185
- package/docs/ja/bundle_optimization.md +0 -185
- package/docs/ko/bundle_optimization.md +0 -185
- package/docs/pl/bundle_optimization.md +0 -185
- package/docs/pt/bundle_optimization.md +0 -184
- package/docs/ru/bundle_optimization.md +0 -185
- package/docs/tr/bundle_optimization.md +0 -184
- package/docs/uk/bundle_optimization.md +0 -186
- package/docs/vi/bundle_optimization.md +0 -185
- package/docs/zh/bundle_optimization.md +0 -185
package/docs/fr/cli/init.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
createdAt: 2025-12-30
|
|
3
3
|
updatedAt: 2025-12-30
|
|
4
4
|
title: Initialiser Intlayer
|
|
5
|
-
description: Apprenez
|
|
5
|
+
description: Apprenez à initialiser Intlayer dans votre projet.
|
|
6
6
|
keywords:
|
|
7
7
|
- Initialiser
|
|
8
8
|
- CLI
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- cli
|
|
15
15
|
- init
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.6.4
|
|
18
|
+
date: 2026-03-31
|
|
19
|
+
changes: "Ajout de l'option --no-gitignore"
|
|
17
20
|
- version: 7.5.9
|
|
18
21
|
date: 2025-12-30
|
|
19
22
|
changes: "Ajout de la commande init"
|
|
@@ -25,38 +28,39 @@ history:
|
|
|
25
28
|
npx intlayer init
|
|
26
29
|
```
|
|
27
30
|
|
|
28
|
-
La commande `init` configure automatiquement Intlayer dans votre projet en
|
|
31
|
+
La commande `init` configure automatiquement Intlayer dans votre projet en paramétrant les fichiers et réglages nécessaires. C'est le moyen recommandé pour commencer avec Intlayer.
|
|
29
32
|
|
|
30
|
-
## Alias:
|
|
33
|
+
## Alias :
|
|
31
34
|
|
|
32
35
|
- `npx intlayer init`
|
|
33
36
|
|
|
34
|
-
## Arguments:
|
|
37
|
+
## Arguments :
|
|
35
38
|
|
|
36
|
-
- `--project-root [projectRoot]` - Optionnel.
|
|
39
|
+
- `--project-root [projectRoot]` - Optionnel. Spécifiez le répertoire racine du projet. Si non fourni, la commande recherchera la racine du projet à partir du répertoire de travail actuel.
|
|
40
|
+
- `--no-gitignore` - Optionnel. Ignore la mise à jour automatique du fichier `.gitignore`. Si ce drapeau est défini, `.intlayer` ne sera pas ajouté au `.gitignore`.
|
|
37
41
|
|
|
38
|
-
## Ce
|
|
42
|
+
## Ce qu'il fait :
|
|
39
43
|
|
|
40
|
-
|
|
44
|
+
La commande `init` effectue les tâches de configuration suivantes :
|
|
41
45
|
|
|
42
|
-
1. **Valide la structure du projet** -
|
|
43
|
-
2. **Met à jour `.gitignore`** - Ajoute `.intlayer` à votre fichier `.gitignore` pour exclure les fichiers générés du contrôle de version
|
|
44
|
-
3. **Configure TypeScript** - Met à jour tous les fichiers `tsconfig.json` pour inclure les définitions de types Intlayer (`.intlayer/**/*.ts`)
|
|
45
|
-
4. **Crée le fichier de configuration** - Génère un `intlayer.config.ts` (pour les projets TypeScript) ou `intlayer.config.mjs` (pour les projets JavaScript) avec les
|
|
46
|
-
5. **Met à jour la config Vite** - Si un fichier de configuration Vite est détecté, ajoute l'
|
|
47
|
-
6. **Met à jour la
|
|
46
|
+
1. **Valide la structure du projet** - S'assure que vous êtes dans un répertoire de projet valide avec un fichier `package.json`.
|
|
47
|
+
2. **Met à jour le `.gitignore`** - Ajoute `.intlayer` à votre fichier `.gitignore` pour exclure les fichiers générés du contrôle de version (peut être ignoré avec `--no-gitignore`).
|
|
48
|
+
3. **Configure TypeScript** - Met à jour tous les fichiers `tsconfig.json` pour inclure les définitions de types Intlayer (`.intlayer/**/*.ts`).
|
|
49
|
+
4. **Crée le fichier de configuration** - Génère un `intlayer.config.ts` (pour les projets TypeScript) ou `intlayer.config.mjs` (pour les projets JavaScript) avec les paramètres par défaut.
|
|
50
|
+
5. **Met à jour la config Vite** - Si un fichier de configuration Vite est détecté, ajoute l'importation du plugin `vite-intlayer`.
|
|
51
|
+
6. **Met à jour la config Next.js** - Si un fichier de configuration Next.js est détecté, ajoute l'importation du plugin `next-intlayer`.
|
|
48
52
|
|
|
49
53
|
## Exemples :
|
|
50
54
|
|
|
51
|
-
### Initialisation
|
|
55
|
+
### Initialisation de base :
|
|
52
56
|
|
|
53
57
|
```bash
|
|
54
58
|
npx intlayer init
|
|
55
59
|
```
|
|
56
60
|
|
|
57
|
-
Cela initialisera Intlayer dans le répertoire
|
|
61
|
+
Cela initialisera Intlayer dans le répertoire actuel, en détectant automatiquement la racine du projet.
|
|
58
62
|
|
|
59
|
-
###
|
|
63
|
+
### Initialisation avec une racine de projet personnalisée :
|
|
60
64
|
|
|
61
65
|
```bash
|
|
62
66
|
npx intlayer init --project-root ./my-project
|
|
@@ -64,21 +68,29 @@ npx intlayer init --project-root ./my-project
|
|
|
64
68
|
|
|
65
69
|
Cela initialisera Intlayer dans le répertoire spécifié.
|
|
66
70
|
|
|
71
|
+
### Initialisation sans mettre à jour le .gitignore :
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npx intlayer init --no-gitignore
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Cela configurera tous les fichiers de configuration mais ne modifiera pas votre `.gitignore`.
|
|
78
|
+
|
|
67
79
|
## Exemple de sortie :
|
|
68
80
|
|
|
69
81
|
```bash
|
|
70
82
|
npx intlayer init
|
|
71
|
-
|
|
72
|
-
✓
|
|
73
|
-
✓
|
|
74
|
-
|
|
75
|
-
✓
|
|
76
|
-
✓
|
|
83
|
+
Checking Intlayer configuration...
|
|
84
|
+
✓ Added .intlayer to .gitignore
|
|
85
|
+
✓ Updated tsconfig.json to include intlayer types
|
|
86
|
+
✓ Created intlayer.config.ts
|
|
87
|
+
✓ Injected import into vite.config.ts
|
|
88
|
+
✓ Intlayer init setup complete.
|
|
77
89
|
```
|
|
78
90
|
|
|
79
91
|
## Remarques :
|
|
80
92
|
|
|
81
|
-
- La commande est idempotente - vous pouvez l'exécuter plusieurs fois en toute sécurité. Elle
|
|
93
|
+
- La commande est idempotente - vous pouvez l'exécuter plusieurs fois en toute sécurité. Elle ignorera les étapes déjà configurées.
|
|
82
94
|
- Si un fichier de configuration existe déjà, il ne sera pas écrasé.
|
|
83
|
-
- Les fichiers de
|
|
84
|
-
- La commande
|
|
95
|
+
- Les fichiers de config TypeScript sans tableau `include` (par exemple, les configs de type solution avec des références) sont ignorés.
|
|
96
|
+
- La commande s'arrêtera avec une erreur si aucun `package.json` n'est trouvé à la racine du projet.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-11
|
|
3
|
+
updatedAt: 2026-03-31
|
|
4
|
+
title: Bundle Standalone
|
|
5
|
+
description: Apprenez à créer un bundle JavaScript autonome pour le contenu de votre application.
|
|
6
|
+
keywords:
|
|
7
|
+
- Standalone
|
|
8
|
+
- Bundle
|
|
9
|
+
- CLI
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Editor
|
|
12
|
+
- CMS
|
|
13
|
+
slugs:
|
|
14
|
+
- doc
|
|
15
|
+
- concept
|
|
16
|
+
- cli
|
|
17
|
+
- standalone
|
|
18
|
+
history:
|
|
19
|
+
- version: 8.6.4
|
|
20
|
+
date: 2026-03-31
|
|
21
|
+
changes: "Initialisation de la documentation de la commande standalone"
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Bundle Standalone
|
|
25
|
+
|
|
26
|
+
La commande `standalone` vous permet de créer un bundle JavaScript autonome contenant Intlayer et tout autre paquet spécifié. Cela est particulièrement utile pour utiliser Intlayer dans des environnements sans gestionnaire de paquets ou bundler, comme une application HTML/JS pure.
|
|
27
|
+
|
|
28
|
+
Le bundle utilise [esbuild](https://esbuild.github.io/) pour combiner les paquets demandés et leurs dépendances en un seul fichier qui peut être facilement importé dans n'importe quel projet web.
|
|
29
|
+
|
|
30
|
+
## Utilisation
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx intlayer standalone --packages [paquets...] [options]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Options
|
|
37
|
+
|
|
38
|
+
- `-o, --outfile [outfile]` - Optionnel. Le nom du fichier de sortie. Par défaut : `intlayer-bundle.js`.
|
|
39
|
+
- `--packages [paquets...]` - Requis. Une liste de paquets à inclure dans le bundle (par exemple, `intlayer`, `vanilla-intlayer`).
|
|
40
|
+
- `--version [version]` - Optionnel. La version des paquets à regrouper. Si non spécifiée, elle correspond par défaut à la version du CLI Intlayer.
|
|
41
|
+
- `--minify` - Optionnel. Indique s'il faut minifier la sortie. Par défaut : `true`.
|
|
42
|
+
- `--platform [platform]` - Optionnel. La plateforme cible pour le bundle (par exemple, `browser`, `node`). Par défaut : `browser`.
|
|
43
|
+
- `--format [format]` - Optionnel. Le format de sortie du bundle (par exemple, `esm`, `cjs`, `iife`). Par défaut : `esm`.
|
|
44
|
+
|
|
45
|
+
## Options Communes
|
|
46
|
+
|
|
47
|
+
- `--env-file [envFile]` - Fichier d'environnement.
|
|
48
|
+
- `-e, --env [env]` - Environnement.
|
|
49
|
+
- `--base-dir [baseDir]` - Répertoire de base.
|
|
50
|
+
- `--no-cache` - Désactiver le cache.
|
|
51
|
+
- `--verbose` - Sortie verbeuse.
|
|
52
|
+
|
|
53
|
+
## Exemples :
|
|
54
|
+
|
|
55
|
+
### Créer un bundle pour Vanilla JS :
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx intlayer standalone --packages intlayer vanilla-intlayer --outfile intlayer.js
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Cela créera un fichier `intlayer.js` contenant à la fois les paquets `intlayer` et `vanilla-intlayer`, minifié et au format ESM, prêt à être utilisé dans un navigateur via une balise `<script>`.
|
|
62
|
+
|
|
63
|
+
### Regrouper une version spécifique :
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx intlayer standalone --packages intlayer --version 8.6.4
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Regrouper avec un format différent :
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npx intlayer standalone --packages intlayer --format iife
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Ce qu'il fait :
|
|
76
|
+
|
|
77
|
+
1. **Crée un environnement temporaire** - Configure un répertoire temporaire pour gérer les dépendances.
|
|
78
|
+
2. **Installe les paquets** - Utilise `npm` ou `bun` (si disponible) pour installer les paquets demandés et leurs dépendances.
|
|
79
|
+
3. **Génère un point d'entrée** - Crée un fichier d'entrée temporaire qui exporte tous les paquets demandés et les expose en tant que variables globales lors de l'exécution dans un navigateur.
|
|
80
|
+
4. **Regroupe avec esbuild** - Utilise esbuild pour tout regrouper en un seul fichier, en appliquant la minification et le formatage demandés.
|
|
81
|
+
5. **Sort le fichier** - Écrit le bundle résultant dans le chemin de sortie spécifié.
|
|
82
|
+
|
|
83
|
+
## Variables Globales
|
|
84
|
+
|
|
85
|
+
Lorsque le bundle est chargé dans un navigateur, il expose les paquets demandés en tant que variables globales sur l'objet `window`. Les noms des variables sont dérivés des noms des paquets (par exemple, `intlayer` devient `Intlayer`, `vanilla-intlayer` devient `VanillaIntlayer`).
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
// Accéder à Intlayer depuis le bundle
|
|
89
|
+
const { getLocaleName } = window.Intlayer;
|
|
90
|
+
const { installIntlayer, useIntlayer } = window.VanillaIntlayer;
|
|
91
|
+
```
|
package/docs/fr/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-04-08
|
|
4
4
|
title: Configuration
|
|
5
5
|
description: Apprenez à configurer Intlayer pour votre application. Comprenez les différents paramètres et options disponibles pour personnaliser Intlayer selon vos besoins.
|
|
6
6
|
keywords:
|
|
@@ -14,6 +14,12 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.7.0
|
|
18
|
+
date: 2026-04-08
|
|
19
|
+
changes: "Ajout des options `prune` et `minify` à la configuration de build"
|
|
20
|
+
- version: 8.7.0
|
|
21
|
+
date: 2026-04-03
|
|
22
|
+
changes: "Ajout de l'option `currentDomain`"
|
|
17
23
|
- version: 8.4.0
|
|
18
24
|
date: 2026-03-20
|
|
19
25
|
changes: "Ajout de la notation d'objet par locale pour 'compiler.output' et 'dictionary.fill'"
|
|
@@ -237,6 +243,17 @@ const config: IntlayerConfig = {
|
|
|
237
243
|
fr: "/[locale]/a-propos",
|
|
238
244
|
},
|
|
239
245
|
}),
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Mappe les locales aux noms d'hôte de domaine pour le routage basé sur le domaine.
|
|
249
|
+
* Les URL pour ces locales seront absolues (ex: https://intlayer.cn/).
|
|
250
|
+
* Le domaine implique la locale, donc aucun préfixe de locale n'est ajouté au chemin.
|
|
251
|
+
* Par défaut : undefined
|
|
252
|
+
*/
|
|
253
|
+
domains: {
|
|
254
|
+
en: "intlayer.org",
|
|
255
|
+
zh: "intlayer.cn",
|
|
256
|
+
},
|
|
240
257
|
},
|
|
241
258
|
|
|
242
259
|
/**
|
|
@@ -388,6 +405,25 @@ const config: IntlayerConfig = {
|
|
|
388
405
|
*/
|
|
389
406
|
optimize: true,
|
|
390
407
|
|
|
408
|
+
/**
|
|
409
|
+
* Minifier les dictionnaires pour réduire la taille du bundle.
|
|
410
|
+
* Par défaut : true
|
|
411
|
+
*
|
|
412
|
+
* Note :
|
|
413
|
+
* - Cette option sera ignorée si `optimize` est désactivé.
|
|
414
|
+
* - Cette option sera ignorée si `editor.enabled` est vrai.
|
|
415
|
+
*/
|
|
416
|
+
minify: true,
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Purger les clés inutilisées dans les dictionnaires.
|
|
420
|
+
* Par défaut : true
|
|
421
|
+
*
|
|
422
|
+
* Note :
|
|
423
|
+
* - Cette option sera ignorée si `optimize` est désactivé.
|
|
424
|
+
*/
|
|
425
|
+
purge: true,
|
|
426
|
+
|
|
391
427
|
/**
|
|
392
428
|
* Format de sortie pour les fichiers de dictionnaire générés.
|
|
393
429
|
* Par défaut : ['cjs', 'esm']
|
|
@@ -600,12 +636,13 @@ Définit les paramètres liés à l'éditeur intégré, y compris le port du ser
|
|
|
600
636
|
|
|
601
637
|
Paramètres contrôlant le comportement du routage, y compris la structure des URL, le stockage des locales et la gestion du middleware.
|
|
602
638
|
|
|
603
|
-
| Champ | Description
|
|
604
|
-
| ---------- |
|
|
605
|
-
| `mode` | Mode de routage d'URL pour la gestion des locales.
|
|
606
|
-
| `storage` | Configuration pour stocker la locale sur le client.
|
|
607
|
-
| `basePath` | Le chemin de base pour les URL de l'application.
|
|
608
|
-
| `rewrite` | Règles de réécriture d'URL personnalisées qui surchargent le mode de routage par défaut pour des chemins spécifiques. Supporte les paramètres dynamiques `[param]`.
|
|
639
|
+
| Champ | Description | Type | Par défaut | Exemple | Note |
|
|
640
|
+
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
641
|
+
| `mode` | Mode de routage d'URL pour la gestion des locales. | `'prefix-no-default'` | <br/> `'prefix-all'` | <br/> `'no-prefix'` | <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) ou `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: locale gérée par d'autres moyens. `'search-params'`: `/dashboard?locale=fr` | N'impacte pas la gestion des cookies ou du stockage des locales. |
|
|
642
|
+
| `storage` | Configuration pour stocker la locale sur le client. | `false` | <br/> `'cookie'` | <br/> `'localStorage'` | <br/> `'sessionStorage'` | <br/> `'header'` | <br/> `CookiesAttributes` | <br/> `StorageAttributes` | <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Voir le tableau des Options de Stockage ci-dessous. |
|
|
643
|
+
| `basePath` | Le chemin de base pour les URL de l'application. | `string` | `''` | `'/my-app'` | Si l'application est sur `https://example.com/my-app`, basePath est `'/my-app'` et les URL deviennent `https://example.com/my-app/en`. |
|
|
644
|
+
| `rewrite` | Règles de réécriture d'URL personnalisées qui surchargent le mode de routage par défaut pour des chemins spécifiques. Supporte les paramètres dynamiques `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Voir l'exemple ci-dessous | • Les règles de réécriture ont la priorité sur le `mode`.<br/>• Fonctionne avec Next.js et Vite.<br/>• `getLocalizedUrl()` applique automatiquement les règles correspondantes.<br/>• Voir [Réécritures d'URL Personnalisées](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/custom_url_rewrites.md). |
|
|
645
|
+
| `domains` | Mappe les locales aux noms d'hôte de domaine pour le routage basé sur le domaine. Lorsqu'il est défini, les URL pour une locale utilisent ce domaine comme base (URL absolue) et aucun préfixe de locale n'est ajouté au chemin. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • Le protocole est défini par défaut sur `https://` lorsqu'il n'est pas inclus dans le nom d'hôte.<br/>• Le domaine lui-même identifie la locale, donc aucun préfixe `/zh/` n'est ajouté.<br/>• `getLocalizedUrl('/', 'zh')` renvoie `https://intlayer.zh/`. |
|
|
609
646
|
|
|
610
647
|
**Exemple de `rewrite`** :
|
|
611
648
|
|
|
@@ -909,6 +946,8 @@ Les options de build s'appliquent aux plugins `@intlayer/babel` et `@intlayer/sw
|
|
|
909
946
|
| ----------------- | ----------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
910
947
|
| `mode` | Contrôle le mode du build. | `'auto'` | <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: build activé automatiquement lors du build de l'application.<br/>• `'manual'`: ne s'exécute que lorsque la commande de build est exécutée.<br/>• Peut être utilisé pour désactiver les builds de dictionnaires (ex: pour éviter l'exécution dans des environnements Node.js). |
|
|
911
948
|
| `optimize` | Contrôle si le build doit être optimisé. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Si non défini, l'optimisation est déclenchée lors du build du framework (Vite/Next.js).<br/>• `true` force l'optimisation y compris en mode dev.<br/>• `false` la désactive.<br/>• Une fois activé, remplace les appels de dictionnaire pour optimiser le chunking.<br/>• Repose sur les plugins `@intlayer/babel` et `@intlayer/swc`. |
|
|
949
|
+
| `minify` | Minifier les dictionnaires pour réduire la taille du bundle. | `boolean` | `false` | | • Indique si le bundle doit être minifié.<br/>• Par défaut : `true` en production.<br/>• Cette option sera ignorée si `optimize` est désactivé.<br/>• Cette option sera ignorée si `editor.enabled` est vrai. |
|
|
950
|
+
| `purge` | Purger les clés inutilisées dans les dictionnaires. | `boolean` | `false` | | • Indique si le bundle doit être purgé.<br/>• Par défaut : `true` en production.<br/>• Cette option sera ignorée si `optimize` est désactivé. |
|
|
912
951
|
| `checkTypes` | Indique si le build doit vérifier les types TypeScript et loguer les erreurs. | `boolean` | `false` | | Peut ralentir le build. |
|
|
913
952
|
| `outputFormat` | Contrôle le format de sortie des dictionnaires. | `('esm' | 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
|
|
914
953
|
| `traversePattern` | Motifs définissant quels fichiers parcourir lors de l'optimisation. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • Limitez l'optimisation aux fichiers pertinents pour améliorer les performances de build.<br/>• Ignoré si `optimize` est désactivé.<br/>• Utilise des motifs glob. |
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-04-02
|
|
3
|
+
updatedAt: 2026-04-02
|
|
4
|
+
title: Domaines personnalisés
|
|
5
|
+
description: Apprenez à configurer le routage par domaine dans Intlayer pour servir différentes locales à partir de noms d'hôte dédiés.
|
|
6
|
+
keywords:
|
|
7
|
+
- Domaines personnalisés
|
|
8
|
+
- Routage par domaine
|
|
9
|
+
- Routage
|
|
10
|
+
- Internationalisation
|
|
11
|
+
- i18n
|
|
12
|
+
slugs:
|
|
13
|
+
- doc
|
|
14
|
+
- concept
|
|
15
|
+
- custom_domains
|
|
16
|
+
history:
|
|
17
|
+
- version: 8.5.0
|
|
18
|
+
date: 2026-04-02
|
|
19
|
+
changes: "Ajout du routage par domaine via la configuration routing.domains."
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Domaines personnalisés
|
|
23
|
+
|
|
24
|
+
Intlayer prend en charge le routage par domaine, vous permettant de servir des locales spécifiques à partir de noms d'hôte dédiés. Par exemple, les visiteurs chinois peuvent être dirigés vers `intlayer.zh` au lieu de `intlayer.org/zh`.
|
|
25
|
+
|
|
26
|
+
## Fonctionnement
|
|
27
|
+
|
|
28
|
+
La carte `domains` dans `routing` associe chaque locale à un nom d'hôte. Intlayer utilise cette carte à deux endroits :
|
|
29
|
+
|
|
30
|
+
1. **Génération d'URL** (`getLocalizedUrl`) : lorsque la locale cible se trouve sur un domaine _différent_ de la page actuelle, une URL absolue est retournée (ex: `https://intlayer.zh/about`). Lorsque les deux domaines correspondent, une URL relative est retournée (ex: `/fr/about`).
|
|
31
|
+
2. **Proxy serveur** (Next.js & Vite) : les requêtes entrantes sont redirigées ou réécrites en fonction du domaine sur lequel elles arrivent.
|
|
32
|
+
|
|
33
|
+
### Domaines exclusifs vs partagés
|
|
34
|
+
|
|
35
|
+
La distinction clé est l'**exclusivité** :
|
|
36
|
+
|
|
37
|
+
- **Domaine exclusif** — une seule locale correspond à ce nom d'hôte (ex: `zh → intlayer.zh`). Le domaine lui-même identifie la locale, donc aucun préfixe de locale n'est ajouté au chemin. `https://intlayer.zh/about` sert le contenu chinois.
|
|
38
|
+
- **Domaine partagé** — plusieurs locales correspondent au même nom d'hôte (ex: `en` et `fr` correspondent tous deux à `intlayer.org`). Le routage standard basé sur les préfixes s'applique. `intlayer.org/fr/about` sert le contenu français.
|
|
39
|
+
|
|
40
|
+
## Configuration
|
|
41
|
+
|
|
42
|
+
```typescript fileName="intlayer.config.ts"
|
|
43
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
44
|
+
|
|
45
|
+
const config: IntlayerConfig = {
|
|
46
|
+
internationalization: {
|
|
47
|
+
locales: [
|
|
48
|
+
Locales.ENGLISH,
|
|
49
|
+
Locales.FRENCH,
|
|
50
|
+
Locales.SPANISH,
|
|
51
|
+
Locales.CHINESE,
|
|
52
|
+
],
|
|
53
|
+
defaultLocale: Locales.ENGLISH,
|
|
54
|
+
},
|
|
55
|
+
routing: {
|
|
56
|
+
mode: "prefix-no-default",
|
|
57
|
+
domains: {
|
|
58
|
+
// Domaine partagé — en et fr utilisent le routage par préfixe sur intlayer.org
|
|
59
|
+
en: "intlayer.org",
|
|
60
|
+
// Domaine exclusif — zh a son propre nom d'hôte, aucun préfixe /zh/ n'est nécessaire
|
|
61
|
+
zh: "intlayer.zh",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export default config;
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Les locales qui ne sont pas listées dans `domains` continuent d'utiliser le routage par préfixe standard sans aucune substitution de domaine.
|
|
70
|
+
|
|
71
|
+
## Génération d'URL
|
|
72
|
+
|
|
73
|
+
`getLocalizedUrl` produit automatiquement le bon type d'URL en fonction du contexte d'appel.
|
|
74
|
+
|
|
75
|
+
### Locale sur le même domaine (URL relative)
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
// Page actuelle : intlayer.org/about
|
|
79
|
+
getLocalizedUrl("/about", "fr", { currentDomain: "intlayer.org" });
|
|
80
|
+
// → "/fr/about"
|
|
81
|
+
|
|
82
|
+
getLocalizedUrl("/about", "en", { currentDomain: "intlayer.org" });
|
|
83
|
+
// → "/about" (locale par défaut, pas de préfixe)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Locale sur un domaine différent (URL absolue)
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
// Page actuelle : intlayer.org/about
|
|
90
|
+
getLocalizedUrl("/about", "zh", { currentDomain: "intlayer.org" });
|
|
91
|
+
// → "https://intlayer.zh/about" (domaine exclusif, pas de préfixe /zh/)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Service depuis le propre domaine de la locale
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
// Page actuelle : intlayer.zh/about
|
|
98
|
+
getLocalizedUrl("/about", "zh", { currentDomain: "intlayer.zh" });
|
|
99
|
+
// → "/about" (déjà sur le bon domaine — URL relative)
|
|
100
|
+
|
|
101
|
+
getLocalizedUrl("/about", "fr", { currentDomain: "intlayer.zh" });
|
|
102
|
+
// → "https://intlayer.org/fr/about" (lien inter-domaines vers intlayer.org)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Auto-détection du domaine actuel
|
|
106
|
+
|
|
107
|
+
`currentDomain` est facultatif. S'il est omis, `getLocalizedUrl` le résout dans cet ordre :
|
|
108
|
+
|
|
109
|
+
1. Le nom d'hôte d'une URL d'entrée absolue (ex: `https://intlayer.org/about` → `intlayer.org`).
|
|
110
|
+
2. `window.location.hostname` dans les environnements de navigation.
|
|
111
|
+
3. Si aucun n'est disponible (SSR sans option explicite), une URL relative est retournée pour les locales du même domaine et aucune URL absolue n'est produite — c'est le repli sécurisé.
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
// Navigateur — window.location.hostname === 'intlayer.org'
|
|
115
|
+
getLocalizedUrl("/about", "zh");
|
|
116
|
+
// → "https://intlayer.zh/about" (détecté automatiquement à partir de window)
|
|
117
|
+
|
|
118
|
+
// À partir d'une URL absolue — domaine détecté automatiquement
|
|
119
|
+
getLocalizedUrl("https://intlayer.org/about", "zh");
|
|
120
|
+
// → "https://intlayer.zh/about"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### `getMultilingualUrls` avec domaines
|
|
124
|
+
|
|
125
|
+
`getMultilingualUrls` appelle `getLocalizedUrl` pour chaque locale, il produit donc un mélange d'URLs relatives et absolues selon le domaine de l'appelant :
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
// currentDomain: 'intlayer.org'
|
|
129
|
+
getMultilingualUrls("/about", { currentDomain: "intlayer.org" });
|
|
130
|
+
// {
|
|
131
|
+
// en: "/about",
|
|
132
|
+
// fr: "/fr/about",
|
|
133
|
+
// es: "/es/about",
|
|
134
|
+
// zh: "https://intlayer.zh/about",
|
|
135
|
+
// }
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Ces URLs absolues sont prêtes à être utilisées dans les balises `<link rel="alternate" hreflang="...">` pour le SEO.
|
|
139
|
+
|
|
140
|
+
## Comportement du Proxy
|
|
141
|
+
|
|
142
|
+
### Next.js
|
|
143
|
+
|
|
144
|
+
Le middleware `intlayerProxy` gère automatiquement le routage par domaine. Ajoutez-le à votre `middleware.ts` :
|
|
145
|
+
|
|
146
|
+
```typescript fileName="middleware.ts"
|
|
147
|
+
export { intlayerProxy as default } from "next-intlayer/proxy";
|
|
148
|
+
|
|
149
|
+
export const config = {
|
|
150
|
+
matcher: "/((?!api|static|assets|robots|sitemap|.*\\..*|_next).*)",
|
|
151
|
+
};
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Redirection** — la requête arrive sur le mauvais domaine pour un préfixe de locale donné :
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
GET intlayer.org/zh/about
|
|
158
|
+
→ 301 https://intlayer.zh/about
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Réécriture** — la requête arrive sur le domaine exclusif de la locale sans préfixe :
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
GET intlayer.zh/about
|
|
165
|
+
→ réécriture vers /zh/about (routage interne Next.js uniquement, l'URL reste propre)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Vite
|
|
169
|
+
|
|
170
|
+
Le plugin Vite `intlayerProxy` applique la même logique pendant le développement :
|
|
171
|
+
|
|
172
|
+
```typescript fileName="vite.config.ts"
|
|
173
|
+
import { defineConfig } from "vite";
|
|
174
|
+
import { intlayerProxy } from "vite-intlayer";
|
|
175
|
+
|
|
176
|
+
export default defineConfig({
|
|
177
|
+
plugins: [intlayerProxy()],
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
> **Note** : en développement local, vous êtes généralement sur `localhost`, donc les redirections inter-domaines pointeront vers les domaines en direct plutôt que vers un autre port local. Utilisez une substitution dans le fichier hosts (ex: `127.0.0.1 intlayer.zh`) ou un proxy inverse si vous avez besoin de tester le routage multi-domaines localement.
|
|
182
|
+
|
|
183
|
+
## Sélecteur de locale
|
|
184
|
+
|
|
185
|
+
Le hook `useLocale` de `next-intlayer` gère automatiquement la navigation tenant compte du domaine. Lorsqu'un utilisateur passe à une locale sur un domaine différent, le hook effectue une navigation de page complète (`window.location.href`) au lieu d'un push du routeur côté client, car le routeur Next.js ne peut pas traverser les origines.
|
|
186
|
+
|
|
187
|
+
```tsx fileName="components/LocaleSwitcher.tsx"
|
|
188
|
+
"use client";
|
|
189
|
+
|
|
190
|
+
import { useLocale } from "next-intlayer";
|
|
191
|
+
|
|
192
|
+
export const LocaleSwitcher = () => {
|
|
193
|
+
const { availableLocales, locale, setLocale } = useLocale();
|
|
194
|
+
|
|
195
|
+
return (
|
|
196
|
+
<ul>
|
|
197
|
+
{availableLocales.map((localeEl) => (
|
|
198
|
+
<li key={localeEl}>
|
|
199
|
+
<button
|
|
200
|
+
onClick={() => setLocale(localeEl)}
|
|
201
|
+
aria-current={localeEl === locale ? "true" : undefined}
|
|
202
|
+
>
|
|
203
|
+
{l.toUpperCase()}
|
|
204
|
+
</button>
|
|
205
|
+
</li>
|
|
206
|
+
))}
|
|
207
|
+
</ul>
|
|
208
|
+
);
|
|
209
|
+
};
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Aucune configuration supplémentaire n'est requise — `useLocale` détecte `window.location.hostname` en interne et décide entre `router.replace` (même domaine) et `window.location.href` (domaine différent).
|
|
213
|
+
|
|
214
|
+
## SEO : Liens alternatifs `hreflang`
|
|
215
|
+
|
|
216
|
+
Le routage par domaine est couramment utilisé avec `hreflang` pour indiquer aux moteurs de recherche quelle URL indexer pour chaque langue. Utilisez `getMultilingualUrls` pour générer l'ensemble complet des URLs alternatives :
|
|
217
|
+
|
|
218
|
+
```tsx fileName="app/[locale]/layout.tsx"
|
|
219
|
+
import { getMultilingualUrls } from "intlayer";
|
|
220
|
+
import type { Metadata } from "next";
|
|
221
|
+
|
|
222
|
+
export const generateMetadata = (): Metadata => {
|
|
223
|
+
const alternates = getMultilingualUrls("/", {
|
|
224
|
+
currentDomain: process.env.NEXT_PUBLIC_DOMAIN, // ex: "intlayer.org"
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
return {
|
|
228
|
+
alternates: {
|
|
229
|
+
languages: alternates,
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Cela produit :
|
|
236
|
+
|
|
237
|
+
```html
|
|
238
|
+
<link rel="alternate" hreflang="en" href="https://intlayer.org/" />
|
|
239
|
+
<link rel="alternate" hreflang="fr" href="https://intlayer.org/fr/" />
|
|
240
|
+
<link rel="alternate" hreflang="es" href="https://intlayer.org/es/" />
|
|
241
|
+
<link rel="alternate" hreflang="zh" href="https://intlayer.zh/" />
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Utilitaires de base
|
|
245
|
+
|
|
246
|
+
| Utilitaire | Description |
|
|
247
|
+
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
248
|
+
| `getLocalizedUrl(url, locale, { currentDomain })` | Retourne une URL relative ou absolue selon que la locale cible est sur le domaine actuel ou non. |
|
|
249
|
+
| `getMultilingualUrls(url, { currentDomain })` | Retourne une carte des URLs localisées par locale, mélangeant relatives et absolues selon les besoins. |
|
|
250
|
+
| `getPrefix(locale, { domains })` | Retourne un préfixe vide pour les locales à domaine exclusif, sinon le préfixe normal. |
|