@intlayer/docs 7.3.11 → 7.3.12

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.
Files changed (90) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +19 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +19 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +1 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/intlayer_with_nuxt.md +305 -421
  8. package/docs/ar/intlayer_with_react_router_v7.md +33 -4
  9. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +516 -0
  10. package/docs/ar/intlayer_with_tanstack.md +2 -12
  11. package/docs/ar/intlayer_with_vite+vue.md +1 -0
  12. package/docs/de/intlayer_with_nuxt.md +296 -394
  13. package/docs/de/intlayer_with_react_router_v7.md +33 -4
  14. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +573 -0
  15. package/docs/de/intlayer_with_tanstack.md +1 -0
  16. package/docs/de/intlayer_with_vite+vue.md +1 -0
  17. package/docs/en/intlayer_with_nuxt.md +242 -321
  18. package/docs/en/intlayer_with_react_router_v7.md +24 -0
  19. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +570 -0
  20. package/docs/en/intlayer_with_tanstack.md +2 -12
  21. package/docs/en/intlayer_with_vite+vue.md +49 -48
  22. package/docs/en-GB/intlayer_with_nuxt.md +262 -358
  23. package/docs/en-GB/intlayer_with_react_router_v7.md +33 -4
  24. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +513 -0
  25. package/docs/en-GB/intlayer_with_tanstack.md +2 -12
  26. package/docs/en-GB/intlayer_with_vite+vue.md +1 -0
  27. package/docs/es/intlayer_with_nuxt.md +284 -375
  28. package/docs/es/intlayer_with_react_router_v7.md +33 -4
  29. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +575 -0
  30. package/docs/es/intlayer_with_tanstack.md +1 -0
  31. package/docs/es/intlayer_with_vite+vue.md +1 -2
  32. package/docs/fr/intlayer_with_nuxt.md +288 -387
  33. package/docs/fr/intlayer_with_react_router_v7.md +34 -5
  34. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +574 -0
  35. package/docs/fr/intlayer_with_tanstack.md +1 -0
  36. package/docs/fr/intlayer_with_vite+vue.md +1 -0
  37. package/docs/hi/intlayer_with_nuxt.md +318 -434
  38. package/docs/hi/intlayer_with_react_router_v7.md +33 -4
  39. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +518 -0
  40. package/docs/hi/intlayer_with_tanstack.md +2 -12
  41. package/docs/hi/intlayer_with_vite+vue.md +1 -0
  42. package/docs/id/intlayer_with_nuxt.md +275 -376
  43. package/docs/id/intlayer_with_react_router_v7.md +29 -4
  44. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +521 -0
  45. package/docs/id/intlayer_with_tanstack.md +2 -12
  46. package/docs/id/intlayer_with_vite+vue.md +1 -0
  47. package/docs/it/intlayer_with_nuxt.md +312 -408
  48. package/docs/it/intlayer_with_react_router_v7.md +33 -4
  49. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +574 -0
  50. package/docs/it/intlayer_with_tanstack.md +1 -0
  51. package/docs/ja/intlayer_with_nuxt.md +319 -414
  52. package/docs/ja/intlayer_with_react_router_v7.md +33 -4
  53. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +574 -0
  54. package/docs/ja/intlayer_with_tanstack.md +2 -12
  55. package/docs/ja/intlayer_with_vite+vue.md +1 -0
  56. package/docs/ko/intlayer_with_nuxt.md +307 -406
  57. package/docs/ko/intlayer_with_react_router_v7.md +33 -4
  58. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +515 -0
  59. package/docs/ko/intlayer_with_tanstack.md +2 -12
  60. package/docs/ko/intlayer_with_vite+vue.md +1 -0
  61. package/docs/pl/intlayer_with_nuxt.md +282 -457
  62. package/docs/pl/intlayer_with_react_router_v7.md +32 -5
  63. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +615 -0
  64. package/docs/pl/intlayer_with_tanstack.md +2 -12
  65. package/docs/pl/intlayer_with_vite+vue.md +1 -0
  66. package/docs/pt/intlayer_with_nuxt.md +288 -403
  67. package/docs/pt/intlayer_with_react_router_v7.md +28 -0
  68. package/docs/pt/intlayer_with_tanstack.md +1 -0
  69. package/docs/ru/intlayer_with_nuxt.md +300 -410
  70. package/docs/ru/intlayer_with_react_router_v7.md +33 -4
  71. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +574 -0
  72. package/docs/ru/intlayer_with_tanstack.md +1 -0
  73. package/docs/ru/intlayer_with_vite+vue.md +1 -0
  74. package/docs/tr/intlayer_with_nuxt.md +327 -392
  75. package/docs/tr/intlayer_with_react_router_v7.md +33 -4
  76. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +572 -0
  77. package/docs/tr/intlayer_with_tanstack.md +2 -12
  78. package/docs/tr/intlayer_with_vite+vue.md +1 -0
  79. package/docs/vi/intlayer_with_nuxt.md +282 -399
  80. package/docs/vi/intlayer_with_react_router_v7.md +29 -4
  81. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +523 -0
  82. package/docs/vi/intlayer_with_tanstack.md +2 -12
  83. package/docs/vi/intlayer_with_vite+vue.md +1 -0
  84. package/docs/zh/intlayer_with_nuxt.md +311 -444
  85. package/docs/zh/intlayer_with_react_router_v7.md +33 -4
  86. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +516 -0
  87. package/docs/zh/intlayer_with_tanstack.md +2 -12
  88. package/docs/zh/intlayer_with_vite+vue.md +1 -0
  89. package/package.json +6 -6
  90. package/src/generated/docs.entry.ts +19 -0
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  createdAt: 2025-06-18
3
- updatedAt: 2025-06-29
4
- title: Comment traduire votre Nuxt and Vue – guide i18n 2025
3
+ updatedAt: 2025-12-07
4
+ title: Comment traduire votre application Nuxt et Vue – guide i18n 2025
5
5
  description: Découvrez comment rendre votre site Nuxt et Vue multilingue. Suivez la documentation pour internationaliser (i18n) et traduire votre site.
6
6
  keywords:
7
7
  - Internationalisation
@@ -14,16 +14,22 @@ slugs:
14
14
  - doc
15
15
  - environment
16
16
  - nuxt-and-vue
17
- applicationTemplate: https://github.com/aymericzip/intlayer-nuxt-template
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-nuxt-4-template
18
+ youtubeVideo: https://www.youtube.com/watch?v=IE3XWkZ6a5U
18
19
  history:
20
+ - version: 7.3.11
21
+ date: 2025-12-07
22
+ changes: Mise à jour de LocaleSwitcher, SEO, métadonnées
19
23
  - version: 5.5.10
20
24
  date: 2025-06-29
21
25
  changes: Historique initial
22
26
  ---
23
27
 
24
- # Traduire votre Nuxt and Vue avec Intlayer | Internationalisation (i18n)
28
+ # Traduisez votre site Nuxt et Vue avec Intlayer | Internationalisation (i18n)
25
29
 
26
- Voir [Modèle d'application](https://github.com/aymericzip/intlayer-nuxt-template) sur GitHub.
30
+ ## Table des matières
31
+
32
+ <TOC/>
27
33
 
28
34
  ## Qu'est-ce qu'Intlayer ?
29
35
 
@@ -34,14 +40,43 @@ Avec Intlayer, vous pouvez :
34
40
  - **Gérer facilement les traductions** en utilisant des dictionnaires déclaratifs au niveau des composants.
35
41
  - **Localiser dynamiquement les métadonnées**, les routes et le contenu.
36
42
  - **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.
37
- - **Bénéficier de fonctionnalités avancées**, comme la détection et le changement dynamique de la langue.
43
+ - **Bénéficier de fonctionnalités avancées**, comme la détection et le changement dynamique de la locale.
38
44
 
39
45
  ---
40
46
 
41
47
  ## Guide étape par étape pour configurer Intlayer dans une application Nuxt
42
48
 
49
+ <iframe
50
+ src="https://stackblitz.com/github/aymericzip/intlayer-nuxt-4-template?embed=1&ctl=1&file=intlayer.config.ts"
51
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
52
+ title="Démo CodeSandbox - Comment internationaliser votre application avec Intlayer"
53
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
54
+ loading="lazy"
55
+ />
56
+
43
57
  ### Étape 1 : Installer les dépendances
44
58
 
59
+ <Tab defaultTab="video">
60
+ <TabItem label="Vidéo" value="video">
61
+
62
+ <iframe title="Comment traduire votre application Nuxt et Vue avec Intlayer ? Découvrez Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/IE3XWkZ6a5U?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
63
+
64
+ </TabItem>
65
+ <TabItem label="Code" value="code">
66
+
67
+ <iframe
68
+ src="https://stackblitz.com/github/aymericzip/intlayer-nuxt-4-template?embed=1&ctl=1&file=intlayer.config.ts"
69
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
70
+ title="Démo CodeSandbox - Comment internationaliser votre application avec Intlayer"
71
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
72
+ loading="lazy"
73
+ />
74
+
75
+ </TabItem>
76
+ </Tab>
77
+
78
+ Voir le [Modèle d'application](https://github.com/aymericzip/intlayer-nuxt-4-template) sur GitHub.
79
+
45
80
  Installez les paquets nécessaires avec npm :
46
81
 
47
82
  ```bash packageManager="npm"
@@ -61,13 +96,13 @@ yarn add --save-dev nuxt-intlayer
61
96
 
62
97
  - **intlayer**
63
98
 
64
- Le paquet 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/get_started.md), la transpilation, et les [commandes CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_cli.md).
99
+ 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/cli/index.md).
65
100
 
66
101
  - **vue-intlayer**
67
- Le paquet qui intègre Intlayer avec une application Vue. Il fournit les composables pour les composants Vue.
102
+ Le package qui intègre Intlayer avec l'application Vue. Il fournit les composables pour les composants Vue.
68
103
 
69
104
  - **nuxt-intlayer**
70
- Le module Nuxt qui intègre Intlayer avec les applications Nuxt. Il fournit une configuration automatique, un middleware pour la détection de la langue, la gestion des cookies et la redirection des URL.
105
+ Le module Nuxt qui intègre Intlayer avec les applications Nuxt. Il fournit une configuration automatique, un middleware pour la détection de la locale, la gestion des cookies, et la redirection des URL.
71
106
 
72
107
  ### Étape 2 : Configuration de votre projet
73
108
 
@@ -82,13 +117,10 @@ const config: IntlayerConfig = {
82
117
  Locales.ENGLISH,
83
118
  Locales.FRENCH,
84
119
  Locales.SPANISH,
85
- // Vos autres langues
120
+ // Vos autres locales
86
121
  ],
87
122
  defaultLocale: Locales.ENGLISH,
88
123
  },
89
- content: {
90
- contentDir: ["."], // Parce que par défaut Intlayer surveillera les fichiers de déclaration de contenu depuis le répertoire `./src`
91
- },
92
124
  };
93
125
 
94
126
  export default config;
@@ -98,20 +130,16 @@ export default config;
98
130
  import { Locales } from "intlayer";
99
131
 
100
132
  /** @type {import('intlayer').IntlayerConfig} */
101
- // Configuration de l'internationalisation et du contenu
102
133
  const config = {
103
134
  internationalization: {
104
135
  locales: [
105
136
  Locales.ENGLISH,
106
137
  Locales.FRENCH,
107
138
  Locales.SPANISH,
108
- // Vos autres langues
139
+ // Vos autres locales
109
140
  ],
110
141
  defaultLocale: Locales.ENGLISH,
111
142
  },
112
- content: {
113
- contentDir: ["."], // Répertoire de contenu à surveiller
114
- },
115
143
  };
116
144
 
117
145
  export default config;
@@ -121,26 +149,22 @@ export default config;
121
149
  const { Locales } = require("intlayer");
122
150
 
123
151
  /** @type {import('intlayer').IntlayerConfig} */
124
- // Configuration de l'internationalisation et du contenu
125
152
  const config = {
126
153
  internationalization: {
127
154
  locales: [
128
155
  Locales.ENGLISH,
129
156
  Locales.FRENCH,
130
157
  Locales.SPANISH,
131
- // Vos autres langues
158
+ // Vos autres locales
132
159
  ],
133
160
  defaultLocale: Locales.ENGLISH,
134
161
  },
135
- content: {
136
- contentDir: ["."],
137
- },
138
162
  };
139
163
 
140
164
  module.exports = config;
141
165
  ```
142
166
 
143
- > Grâce à ce fichier de configuration, vous pouvez configurer des URLs 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 d'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).
167
+ > Grâce à ce fichier de configuration, vous pouvez configurer des URLs 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).
144
168
 
145
169
  ### Étape 3 : Intégrer Intlayer dans votre configuration Nuxt
146
170
 
@@ -161,221 +185,36 @@ export default defineNuxtConfig({
161
185
 
162
186
  Créez et gérez vos déclarations de contenu pour stocker les traductions :
163
187
 
164
- ```tsx fileName="components/helloWorld.content.ts" contentDeclarationFormat="typescript"
165
- import { t, type Dictionary } from "intlayer";
188
+ ```tsx fileName="content/home-page.content.ts" contentDeclarationFormat="typescript"
189
+ import { type Dictionary, t } from "intlayer";
166
190
 
167
- const helloWorldContent = {
168
- key: "helloworld",
191
+ const content = {
192
+ key: "home-page",
169
193
  content: {
170
- count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
171
- edit: t({
172
- en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
173
- fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
174
- es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
175
- }),
176
- checkOut: t({ en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
177
- nuxtIntlayer: t({
178
- en: "Nuxt Intlayer documentation",
179
- fr: "Documentation de Nuxt Intlayer",
180
- es: "Documentación de Nuxt Intlayer",
181
- }),
182
- learnMore: t({
183
- en: "Learn more about Nuxt in the ",
184
- fr: "En savoir plus sur Nuxt dans la ",
185
- es: "Aprenda más sobre Nuxt en la ",
194
+ title: t({
195
+ en: "Hello world",
196
+ fr: "Bonjour le monde",
197
+ es: "Hola mundo",
186
198
  }),
187
- nuxtDocs: t({
188
- en: "Nuxt Documentation",
189
- fr: "Documentation Nuxt",
190
- es: "Documentación de Nuxt",
199
+ metaTitle: t({
200
+ en: "Welcome | My Application",
201
+ fr: "Bienvenue | Mon Application",
202
+ es: "Bienvenido | Mi Aplicación",
191
203
  }),
192
- readTheDocs: t({
193
- en: "Click on the Nuxt logo to learn more",
194
- fr: "Cliquez sur le logo Nuxt pour en savoir plus",
195
- es: "Haga clic en el logotipo de Nuxt para obtener más información",
204
+ metaDescription: t({
205
+ en: "Discover your multilingual Nuxt app homepage powered by Intlayer.",
206
+ fr: "Découvrez la page d'accueil multilingue de votre application Nuxt propulsée par Intlayer.",
207
+ es: "Descubre la página de inicio multilingüe de tu aplicación Nuxt impulsada por Intlayer.",
196
208
  }),
197
209
  },
198
210
  } satisfies Dictionary;
199
211
 
200
- export default helloWorldContent;
201
- fr: "Cliquez sur le logo Nuxt pour en savoir plus",
202
- es: "Haga clic en el logotipo de Nuxt para obtener más información",
203
- }),
204
- },
205
- } satisfies Dictionary;
206
-
207
- export default helloWorldContent;
208
- ```
209
-
210
- ```javascript fileName="components/helloWorld.content.mjs" contentDeclarationFormat="esm"
211
- import { t } from "intlayer";
212
-
213
- /** @type {import('intlayer').Dictionary} */
214
- const helloWorldContent = {
215
- key: "helloworld",
216
- content: {
217
- count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
218
- edit: t({
219
- en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
220
- fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
221
- es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
222
- }),
223
- checkOut: t({ en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
224
- nuxtIntlayer: t({
225
- en: "Nuxt Intlayer documentation",
226
- fr: "Documentation de Nuxt Intlayer",
227
- es: "Documentación de Nuxt Intlayer",
228
- }),
229
- learnMore: t({
230
- en: "Learn more about Nuxt in the ",
231
- fr: "En savoir plus sur Nuxt dans la ",
232
- es: "Aprenda más sobre Nuxt en la ",
233
- }),
234
- nuxtDocs: t({
235
- en: "Nuxt Documentation",
236
- fr: "Documentation Nuxt",
237
- es: "Documentación de Nuxt",
238
- }),
239
- readTheDocs: t({
240
- en: "Click on the Nuxt logo to learn more",
241
- fr: "Cliquez sur le logo Nuxt pour en savoir plus",
242
- es: "Haga clic en el logotipo de Nuxt para obtener más información",
243
- }),
244
- },
245
- };
246
-
247
- export default helloWorldContent;
248
- ```
249
-
250
- ```javascript fileName="components/helloWorld.content.cjs" contentDeclarationFormat="commonjs"
251
- const { t } = require("intlayer");
252
-
253
- /** @type {import('intlayer').Dictionary} */
254
- const helloWorldContent = {
255
- key: "helloworld",
256
- content: {
257
- count: t({ en: "count is ", fr: "le compte est ", es: "el recuento es " }),
258
- edit: t({
259
- en: "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
260
- fr: "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
261
- es: "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR",
262
- }),
263
- checkOut: t({ en: "Check out ", fr: "Vérifiez ", es: "Compruebe " }),
264
- nuxtIntlayer: t({
265
- en: "Nuxt Intlayer documentation",
266
- fr: "Documentation de Nuxt Intlayer",
267
- es: "Documentación de Nuxt Intlayer",
268
- }),
269
- learnMore: t({
270
- en: "Learn more about Nuxt in the ",
271
- fr: "En savoir plus sur Nuxt dans la ",
272
- es: "Aprenda más sobre Nuxt en la ",
273
- }),
274
- nuxtDocs: t({
275
- en: "Nuxt Documentation",
276
- fr: "Documentation Nuxt",
277
- es: "Documentación de Nuxt",
278
- }),
279
- readTheDocs: t({
280
- en: "Click on the Nuxt logo to learn more",
281
- fr: "Cliquez sur le logo Nuxt pour en savoir plus",
282
- es: "Haga clic en el logotipo de Nuxt para obtener más información",
283
- }),
284
- },
285
- };
286
-
287
- module.exports = helloWorldContent;
288
- es: "Documentación de Nuxt Intlayer",
289
- }),
290
- learnMore: t({
291
- en: "Learn more about Nuxt in the ",
292
- fr: "En savoir plus sur Nuxt dans la ",
293
- es: "Aprenda más sobre Nuxt en la ",
294
- }),
295
- nuxtDocs: t({
296
- en: "Nuxt Documentation",
297
- fr: "Documentation Nuxt",
298
- es: "Documentación de Nuxt",
299
- }),
300
- readTheDocs: t({
301
- en: "Click on the Nuxt logo to learn more",
302
- fr: "Cliquez sur le logo Nuxt pour en savoir plus",
303
- es: "Haga clic en el logotipo de Nuxt para obtener más información",
304
- }),
305
- },
306
- };
307
-
308
- module.exports = helloWorldContent;
212
+ export default content;
309
213
  ```
310
214
 
311
- ```json fileName="components/helloWorld.content.json" contentDeclarationFormat="json"
312
- {
313
- "$schema": "https://intlayer.org/schema.json",
314
- "key": "helloworld",
315
- "content": {
316
- "count": {
317
- "nodeType": "translation",
318
- "translation": {
319
- "en": "count is ",
320
- "fr": "le compte est ",
321
- "es": "el recuento es "
322
- }
323
- },
324
- "edit": {
325
- "nodeType": "translation",
326
- "translation": {
327
- "en": "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
328
- "fr": "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
329
- "es": "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR"
330
- }
331
- },
332
- "checkOut": {
333
- "nodeType": "translation",
334
- "translation": {
335
- "en": "Check out ",
336
- "fr": "Vérifiez ",
337
- "es": "Compruebe "
338
- }
339
- },
340
- "nuxtIntlayer": {
341
- "nodeType": "translation",
342
- "translation": {
343
- "en": "Documentation de Nuxt Intlayer",
344
- "fr": "Documentation de Nuxt Intlayer",
345
- "es": "Documentación de Nuxt Intlayer"
346
- }
347
- },
348
- "learnMore": {
349
- "nodeType": "translation",
350
- "translation": {
351
- "en": "En savoir plus sur Nuxt dans la ",
352
- "fr": "En savoir plus sur Nuxt dans la ",
353
- "es": "Aprenda más sobre Nuxt en la "
354
- }
355
- },
356
- "nuxtDocs": {
357
- "nodeType": "translation",
358
- "translation": {
359
- "en": "Documentation Nuxt",
360
- "fr": "Documentation Nuxt",
361
- "es": "Documentación de Nuxt"
362
- }
363
- },
364
- "readTheDocs": {
365
- "nodeType": "translation",
366
- "translation": {
367
- "en": "Cliquez sur le logo Nuxt pour en savoir plus",
368
- "fr": "Cliquez sur le logo Nuxt pour en savoir plus",
369
- "es": "Haga clic en el logotipo de Nuxt para obtener más información"
370
- }
371
- }
372
- }
373
- }
374
- ```
215
+ > Vos déclarations de contenu peuvent être définies n'importe où dans votre application tant qu'elles sont incluses dans le répertoire `contentDir` (par défaut, `./src`). Et correspondent à l'extension des fichiers de déclaration de contenu (par défaut, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
375
216
 
376
- > Vos déclarations de contenu peuvent être définies n'importe où dans votre application tant 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}`).
377
-
378
- > Pour plus de détails, référez-vous à la [documentation sur la déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/get_started.md).
217
+ > 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).
379
218
 
380
219
  ### Étape 5 : Utilisez Intlayer dans votre code
381
220
 
@@ -428,86 +267,76 @@ const countRef = ref(0);
428
267
  </template>
429
268
  ```
430
269
 
431
- #### Accéder au contenu dans Intlayer
270
+ #### Accès au contenu dans Intlayer
432
271
 
433
272
  Intlayer propose différentes API pour accéder à votre contenu :
434
273
 
435
- - **Syntaxe basée sur les composants** (recommandée) :
436
- Utilisez la syntaxe `<myContent />` ou `<Component :is="myContent" />` pour rendre le contenu en tant que nœud Intlayer. Cela s'intègre parfaitement avec l'[Éditeur Visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) et le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md).
274
+ - **Syntaxe basée sur les composants** (recommandée) :
275
+ Utilisez la syntaxe `<myContent />`, ou `<Component :is="myContent" />` pour rendre le contenu en tant que nœud Intlayer. Cela s'intègre parfaitement avec l'[Éditeur Visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) et le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md).
437
276
 
438
- - **Syntaxe basée sur les chaînes** :
277
+ - **Syntaxe basée sur les chaînes** :
439
278
  Utilisez `{{ myContent }}` pour afficher le contenu en texte brut, sans support de l'Éditeur Visuel.
440
279
 
441
- - **Syntaxe HTML brute** :
280
+ - **Syntaxe HTML brute** :
442
281
  Utilisez `<div v-html="myContent" />` pour afficher le contenu en HTML brut, sans support de l'Éditeur Visuel.
443
282
 
444
- - **Syntaxe de déstructuration** :
445
- Le composable `useIntlayer` retourne un Proxy avec le contenu. Ce proxy peut être déstructuré pour accéder au contenu tout en conservant la réactivité.
446
- - Utilisez `const content = useIntlayer("myContent");` et `{{ content.myContent }}` / `<content.myContent />`.
447
- - Ou utilisez `const { myContent } = useIntlayer("myContent");` et `{{ myContent}}` / `<myContent/>` pour déstructurer le contenu.
283
+ - **Syntaxe de déstructuration** :
284
+ Le composable `useIntlayer` retourne un Proxy contenant le contenu. Ce proxy peut être déstructuré pour accéder au contenu tout en conservant la réactivité.
285
+ - Utilisez `const content = useIntlayer("myContent");` et `{{ content.myContent }}` / `<content.myContent />`.
286
+ - Ou utilisez `const { myContent } = useIntlayer("myContent");` et `{{ myContent}}` / `<myContent/>` pour déstructurer le contenu.
448
287
 
449
288
  ### (Optionnel) Étape 6 : Changer la langue de votre contenu
450
289
 
451
290
  Pour changer la langue de votre contenu, vous pouvez utiliser la fonction `setLocale` fournie par le composable `useLocale`. Cette fonction vous permet de définir la locale de l'application et de mettre à jour le contenu en conséquence.
452
291
 
453
- Créez un composant pour basculer entre les langues :
292
+ Créez un composant pour basculer entre les langues en utilisant `NuxtLink`. **Utiliser des liens plutôt que des boutons pour le changement de locale est une bonne pratique pour le SEO et la découvrabilité des pages**, car cela permet aux moteurs de recherche d'explorer et d'indexer toutes les versions localisées de vos pages :
454
293
 
455
294
  ```vue fileName="components/LocaleSwitcher.vue"
456
- <template>
457
- <div class="locale-switcher">
458
- <select v-model="selectedLocale" @change="changeLocale">
459
- <option v-for="loc in availableLocales" :key="loc" :value="loc">
460
- {{ getLocaleName(loc) }}
461
- </option>
462
- </select>
463
- </div>
464
- </template>
465
-
466
295
  <script setup lang="ts">
467
- import { ref, watch } from "vue";
468
- import { getLocaleName } from "intlayer";
296
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
469
297
  import { useLocale } from "vue-intlayer";
470
298
 
471
- // Obtenir les informations de locale et la fonction setLocale
299
+ // Nuxt importe automatiquement useRoute
300
+ const route = useRoute();
472
301
  const { locale, availableLocales, setLocale } = useLocale();
473
-
474
- // Suivre la locale sélectionnée avec un ref
475
- const selectedLocale = ref(locale.value);
476
-
477
- // Mettre à jour la locale lorsque la sélection change
478
- const changeLocale = () => setLocale(selectedLocale.value);
479
-
480
- // Garder selectedLocale synchronisé avec la locale globale
481
- watch(
482
- () => locale.value,
483
- (newLocale) => {
484
- selectedLocale.value = newLocale;
485
- }
486
- );
487
302
  </script>
303
+
304
+ <template>
305
+ <nav class="locale-switcher">
306
+ <NuxtLink
307
+ v-for="localeEl in availableLocales"
308
+ :key="localeEl"
309
+ :to="getLocalizedUrl(route.fullPath, localeEl)"
310
+ class="locale-link"
311
+ :class="{ 'active-locale': localeEl === locale }"
312
+ @click="setLocale(localeEl)"
313
+ >
314
+ {{ getLocaleName(localeEl) }}
315
+ </NuxtLink>
316
+ </nav>
488
317
  </template>
318
+ ```
489
319
 
490
- <style scoped>
491
- .locale-switcher {
492
- margin: 1rem 0;
493
- }
320
+ > Utiliser `NuxtLink` avec des attributs `href` appropriés (via `getLocalizedUrl`) garantit que les moteurs de recherche peuvent découvrir toutes les variantes linguistiques de vos pages. Cela est préférable au changement de langue uniquement via JavaScript, que les robots des moteurs de recherche peuvent ne pas suivre.
494
321
 
495
- select {
496
- padding: 0.5rem;
497
- border-radius: 0.25rem;
498
- border: 1px solid #ccc;
499
- }
500
- </style>
322
+ Ensuite, configurez votre `app.vue` pour utiliser des layouts :
323
+
324
+ ```vue fileName="app.vue"
325
+ <template>
326
+ <NuxtLayout>
327
+ <NuxtPage />
328
+ </NuxtLayout>
329
+ </template>
501
330
  ```
502
331
 
503
- Ensuite, utilisez ce composant dans vos pages ou votre mise en page :
332
+ ### (Optionnel) Étape 6b : Créer un layout avec navigation
504
333
 
505
- ```vue fileName="app.vue"
334
+ Les layouts Nuxt vous permettent de définir une structure commune pour vos pages. Créez un layout par défaut qui inclut le sélecteur de langue et la navigation :
335
+
336
+ ```vue fileName="layouts/default.vue"
506
337
  <script setup lang="ts">
507
- import { useIntlayer } from "vue-intlayer";
338
+ import Links from "~/components/Links.vue";
508
339
  import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
509
-
510
- const content = useIntlayer("app"); // Créez le fichier de déclaration intlayer associé
511
340
  </script>
512
341
 
513
342
  <template>
@@ -516,15 +345,20 @@ const content = useIntlayer("app"); // Créez le fichier de déclaration intlaye
516
345
  <LocaleSwitcher />
517
346
  </header>
518
347
  <main>
519
- <NuxtPage />
348
+ <slot />
520
349
  </main>
350
+
351
+ <Links href="/">Accueil</Links>
352
+ <Links href="/about">À propos</Links>
521
353
  </div>
522
354
  </template>
523
355
  ```
524
356
 
525
- ### (Optionnel) Étape 7 : Ajoutez le routage localisé à votre application
357
+ Le composant `Links` (montré ci-dessous) garantit que les liens de navigation internes sont automatiquement localisés.
358
+
359
+ ### (Optionnel) Étape 7 : Ajouter le routage localisé à votre application
526
360
 
527
- Nuxt gère automatiquement le routage localisé lorsqu'on utilise le module `nuxt-intlayer`. Cela crée des routes pour chaque langue automatiquement en fonction de la structure de votre répertoire de pages.
361
+ Nuxt gère automatiquement le routage localisé lorsqu'on utilise le module `nuxt-intlayer`. Cela crée des routes pour chaque langue automatiquement en fonction de la structure de votre répertoire pages.
528
362
 
529
363
  Exemple :
530
364
 
@@ -536,214 +370,283 @@ pages/
536
370
  └── index.vue → /contact, /fr/contact, /es/contact
537
371
  ```
538
372
 
539
- Pour créer une page localisée, il suffit de créer vos fichiers Vue dans le répertoire `pages/` :
373
+ Pour créer des pages localisées, il suffit de créer vos fichiers Vue dans le répertoire `pages/`. Voici deux exemples de pages :
374
+
375
+ **Page d'accueil (`pages/index.vue`) :**
376
+
377
+ ```vue fileName="pages/index.vue"
378
+ <script setup lang="ts">
379
+ import { useIntlayer } from "vue-intlayer";
380
+
381
+ const content = useIntlayer("home-page");
382
+
383
+ useHead({
384
+ title: content.metaTitle.value,
385
+ meta: [
386
+ {
387
+ name: "description",
388
+ content: content.metaDescription.value,
389
+ },
390
+ ],
391
+ });
392
+ </script>
393
+
394
+ <template>
395
+ <h1><content.title /></h1>
396
+ </template>
397
+ ```
398
+
399
+ **Page À propos (`pages/about.vue`) :**
540
400
 
541
401
  ```vue fileName="pages/about.vue"
542
402
  <script setup lang="ts">
543
403
  import { useIntlayer } from "vue-intlayer";
544
404
 
545
- const content = useIntlayer("about");
405
+ const content = useIntlayer("about-page");
406
+
407
+ useHead({
408
+ title: content.metaTitle.raw, // Utiliser .raw pour accéder à la chaîne primitive
409
+ meta: [
410
+ {
411
+ name: "description",
412
+ content: content.metaDescription.raw, // Utilisez .raw pour accéder à la chaîne primitive
413
+ },
414
+ ],
415
+ });
546
416
  </script>
547
417
 
548
418
  <template>
549
- <div>
550
- <h1>{{ content.title }}</h1>
551
- <p>{{ content.description }}</p>
552
- </div>
419
+ <h1><content.title /></h1>
553
420
  </template>
554
421
  ```
555
422
 
556
- Le module `nuxt-intlayer` va automatiquement :
423
+ > Remarque : `useHead` est importé automatiquement dans Nuxt. Vous pouvez accéder aux valeurs du contenu en utilisant soit `.value` (réactif) soit `.raw` (chaîne primitive) selon vos besoins.
424
+
425
+ Le module `nuxt-intlayer` fera automatiquement :
557
426
 
558
- - Détecter la langue préférée de l'utilisateur
559
- - Gérer le changement de langue via l'URL
427
+ - Détecter la locale préférée de l'utilisateur
428
+ - Gérer le changement de locale via l'URL
560
429
  - Définir l'attribut `<html lang="">` approprié
561
- - Gérer les cookies de langue
430
+ - Gérer les cookies de locale
562
431
  - Rediriger les utilisateurs vers l'URL localisée appropriée
563
432
 
564
433
  ### (Optionnel) Étape 8 : Création d'un composant de lien localisé
565
434
 
566
- Pour garantir que la navigation de votre application respecte la langue actuelle, vous pouvez créer un composant personnalisé `LocalizedLink`. Ce composant préfixe automatiquement les URL internes avec la langue courante.
567
-
568
- ```vue fileName="components/LocalizedLink.vue"
569
- <template>
570
- <NuxtLink :to="localizedHref" v-bind="$attrs">
571
- <slot />
572
- </NuxtLink>
573
- </template>
435
+ Pour garantir que la navigation de votre application respecte la locale actuelle, vous pouvez créer un composant personnalisé `Links`. Ce composant préfixe automatiquement les URLs internes avec la langue courante, ce qui est essentiel pour le **SEO et la découvrabilité des pages**.
574
436
 
437
+ ```vue fileName="components/Links.vue"
575
438
  <script setup lang="ts">
576
- import { computed } from "vue";
577
439
  import { getLocalizedUrl } from "intlayer";
578
440
  import { useLocale } from "vue-intlayer";
579
441
 
580
- const props = defineProps({
581
- to: {
582
- type: String,
583
- required: true,
584
- },
585
- });
442
+ interface Props {
443
+ href: string;
444
+ locale?: string;
445
+ }
446
+
447
+ const props = defineProps<Props>();
448
+
449
+ const { locale: currentLocale } = useLocale();
586
450
 
587
- const { locale } = useLocale();
451
+ // Calculer le chemin final
452
+ const finalPath = computed(() => {
453
+ // 1. Vérifier si le lien est externe
454
+ const isExternal = /^https?:\/\//.test(props.href || "");
588
455
 
589
- // Vérifie si le lien est externe
590
- const isExternalLink = computed(() => /^https?:\/\//.test(props.to || ""));
456
+ // 2. Si externe, retourner tel quel (NuxtLink gère la génération de la balise <a>)
457
+ if (isExternal) return props.href;
591
458
 
592
- // Crée un href localisé pour les liens internes
593
- const localizedHref = computed(() =>
594
- isExternalLink.value ? props.to : getLocalizedUrl(props.to, locale.value)
595
- );
459
+ // 3. Si le lien est interne, localiser l'URL
460
+ const targetLocale = props.locale || currentLocale.value;
461
+ return getLocalizedUrl(props.href, targetLocale);
462
+ });
596
463
  </script>
464
+
465
+ <template>
466
+ <NuxtLink :to="finalPath" v-bind="$attrs">
467
+ <slot />
468
+ </NuxtLink>
469
+ </template>
597
470
  ```
598
471
 
599
472
  Ensuite, utilisez ce composant dans toute votre application :
600
473
 
601
- ```vue fileName="pages/index.vue"
474
+ ```vue fileName="layouts/default.vue"
475
+ <script setup lang="ts">
476
+ import Links from "~/components/Links.vue";
477
+ import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
478
+ </script>
479
+
602
480
  <template>
603
481
  <div>
604
- <LocalizedLink to="/about">
605
- {{ content.aboutLink }}
606
- </LocalizedLink>
607
- <LocalizedLink to="/contact">
608
- {{ content.contactLink }}
609
- </LocalizedLink>
482
+ <header>
483
+ <LocaleSwitcher />
484
+ </header>
485
+ <main>
486
+ <slot />
487
+ </main>
488
+
489
+ <Links href="/">Accueil</Links>
490
+ <Links href="/about">À propos</Links>
610
491
  </div>
611
492
  </template>
612
-
613
- <script setup lang="ts">
614
- import { useIntlayer } from "vue-intlayer";
615
- import LocalizedLink from "~/components/LocalizedLink.vue";
616
-
617
- const content = useIntlayer("home");
618
- </script>
619
493
  ```
620
494
 
495
+ > En utilisant `NuxtLink` avec des chemins localisés, vous vous assurez que :
496
+ >
497
+ > - Les moteurs de recherche peuvent explorer et indexer toutes les versions linguistiques de vos pages
498
+ > - Les utilisateurs peuvent partager directement des URLs localisées
499
+ > - L'historique du navigateur fonctionne correctement avec des URLs préfixées par la locale
500
+
621
501
  ### (Optionnel) Étape 9 : Gérer les métadonnées et le SEO
622
502
 
623
- Nuxt offre d'excellentes capacités SEO. Vous pouvez utiliser Intlayer pour gérer les métadonnées localisées :
503
+ Nuxt offre d'excellentes capacités SEO via le composable `useHead` (auto-importé). Vous pouvez utiliser Intlayer pour gérer les métadonnées localisées en utilisant l'accesseur `.raw` ou `.value` pour obtenir la valeur primitive de chaîne :
624
504
 
625
505
  ```vue fileName="pages/about.vue"
626
506
  <script setup lang="ts">
627
- import { useSeoMeta } from "nuxt/app";
628
- import { getIntlayer } from "intlayer";
629
- import { useLocale } from "vue-intlayer";
507
+ import { useIntlayer } from "vue-intlayer";
630
508
 
631
- const { locale } = useLocale();
632
- const content = getIntlayer("about-meta", locale.value);
509
+ // useHead est auto-importé dans Nuxt
510
+ const content = useIntlayer("about-page");
633
511
 
634
- useSeoMeta({
635
- title: content.title,
636
- description: content.description,
512
+ useHead({
513
+ title: content.metaTitle.raw, // Utilisez .raw pour accéder à la chaîne primitive
514
+ meta: [
515
+ {
516
+ name: "description",
517
+ content: content.metaDescription.raw, // Utilisez .raw pour accéder à la chaîne primitive
518
+ },
519
+ ],
637
520
  });
638
521
  </script>
639
522
 
640
523
  <template>
641
- <div>
642
- <h1>{{ content.pageTitle }}</h1>
643
- <p>{{ content.pageContent }}</p>
644
- </div>
524
+ <h1><content.title /></h1>
645
525
  </template>
646
526
  ```
647
527
 
528
+ > Alternativement, vous pouvez utiliser la fonction `import { getIntlayer } from "intlayer"` pour obtenir le contenu sans la réactivité de Vue.
529
+
530
+ > **Accéder aux valeurs du contenu :**
531
+ >
532
+ > - Utilisez `.raw` pour obtenir la valeur primitive de la chaîne (non réactive)
533
+ > - Utilisez `.value` pour obtenir la valeur réactive
534
+ > - Utilisez la syntaxe composant `<content.key />` pour le support de l'éditeur visuel
535
+
648
536
  Créez la déclaration de contenu correspondante :
649
537
 
650
- ```ts fileName="pages/about-meta.content.ts"
538
+ ```ts fileName="pages/about-page.content.ts" contentDeclarationFormat="typescript"
651
539
  import { t, type Dictionary } from "intlayer";
652
- import type { useSeoMeta } from "nuxt/app";
653
540
 
654
- const aboutMetaContent = {
655
- key: "about-meta",
541
+ const aboutPageContent = {
542
+ key: "about-page",
656
543
  content: {
657
- title: t({
544
+ metaTitle: t({
658
545
  en: "About Us - My Company",
659
546
  fr: "À Propos - Ma Société",
660
547
  es: "Acerca de Nosotros - Mi Empresa",
661
548
  }),
662
- description: t({
549
+ metaDescription: t({
663
550
  en: "Learn more about our company and our mission",
664
551
  fr: "En savoir plus sur notre société et notre mission",
665
552
  es: "Conozca más sobre nuestra empresa y nuestra misión",
666
553
  }),
554
+ title: t({
555
+ en: "About Us",
556
+ fr: "À Propos",
557
+ es: "Acerca de Nosotros",
558
+ }),
667
559
  },
668
- } satisfies Dictionary<Parameters<typeof useSeoMeta>[0]>;
560
+ } satisfies Dictionary;
669
561
 
670
- export default aboutMetaContent;
562
+ export default aboutPageContent;
671
563
  ```
672
564
 
673
- ```typescript fileName="pages/about-meta.content.mjs" contentDeclarationFormat="esm"
565
+ ```javascript fileName="pages/about-page.content.mjs" contentDeclarationFormat="esm"
674
566
  import { t } from "intlayer";
675
567
 
676
568
  /** @type {import('intlayer').Dictionary} */
677
- const aboutMetaContent = {
678
- key: "about-meta",
569
+ const aboutPageContent = {
570
+ key: "about-page",
679
571
  content: {
680
- title: t({
681
- zh: "关于我们 - 我的公司",
572
+ metaTitle: t({
682
573
  en: "About Us - My Company",
683
574
  fr: "À Propos - Ma Société",
575
+ fr: "À Propos - Ma Société",
684
576
  es: "Acerca de Nosotros - Mi Empresa",
685
577
  }),
686
- description: t({
687
- zh: "了解更多关于我们公司和我们的使命",
578
+ metaDescription: t({
688
579
  en: "Learn more about our company and our mission",
689
580
  fr: "En savoir plus sur notre société et notre mission",
690
581
  es: "Conozca más sobre nuestra empresa y nuestra misión",
691
582
  }),
583
+ title: t({
584
+ en: "About Us",
585
+ fr: "À Propos",
586
+ es: "Acerca de Nosotros",
587
+ }),
692
588
  },
693
589
  };
694
590
 
695
- export default aboutMetaContent;
591
+ export default aboutPageContent;
696
592
  ```
697
593
 
698
- ```typescript fileName="pages/about-meta.content.js" contentDeclarationFormat="cjs"
594
+ ```javascript fileName="pages/about-page.content.cjs" contentDeclarationFormat="commonjs"
699
595
  const { t } = require("intlayer");
700
596
 
701
597
  /** @type {import('intlayer').Dictionary} */
702
- const aboutMetaContent = {
703
- key: "about-meta",
598
+ const aboutPageContent = {
599
+ key: "about-page",
704
600
  content: {
705
- title: t({
706
- zh: "关于我们 - 我的公司",
601
+ metaTitle: t({
707
602
  en: "About Us - My Company",
708
603
  fr: "À Propos - Ma Société",
709
604
  es: "Acerca de Nosotros - Mi Empresa",
710
605
  }),
711
- fr: "À Propos - Ma Société",
712
- es: "Acerca de Nosotros - Mi Empresa",
713
- }),
714
- description: t({
715
- zh: "了解更多关于我们公司和我们的使命",
606
+ metaDescription: t({
716
607
  en: "Learn more about our company and our mission",
717
608
  fr: "En savoir plus sur notre société et notre mission",
718
609
  es: "Conozca más sobre nuestra empresa y nuestra misión",
719
610
  }),
611
+ title: t({
612
+ en: "About Us",
613
+ fr: "À Propos",
614
+ es: "Acerca de Nosotros",
615
+ }),
720
616
  },
721
617
  };
722
618
 
723
- module.exports = aboutMetaContent;
619
+ module.exports = aboutPageContent;
724
620
  ```
725
621
 
726
- ```json fileName="pages/about-meta.content.json" contentDeclarationFormat="json"
622
+ ```json fileName="pages/about-page.content.json" contentDeclarationFormat="json"
727
623
  {
728
- "key": "about-meta",
624
+ "$schema": "https://intlayer.org/schema.json",
625
+ "key": "about-page",
729
626
  "content": {
730
- "title": {
627
+ "metaTitle": {
731
628
  "nodeType": "translation",
732
- "translations": {
733
- "zh": "关于我们 - 我的公司",
629
+ "translation": {
734
630
  "en": "About Us - My Company",
735
631
  "fr": "À Propos - Ma Société",
736
632
  "es": "Acerca de Nosotros - Mi Empresa"
737
633
  }
738
634
  },
739
- "description": {
635
+ "metaDescription": {
740
636
  "nodeType": "translation",
741
- "translations": {
742
- "zh": "了解更多关于我们公司和我们的使命",
637
+ "translation": {
743
638
  "en": "Learn more about our company and our mission",
744
639
  "fr": "En savoir plus sur notre société et notre mission",
745
640
  "es": "Conozca más sobre nuestra empresa y nuestra misión"
746
641
  }
642
+ },
643
+ "title": {
644
+ "nodeType": "translation",
645
+ "translation": {
646
+ "en": "About Us",
647
+ "fr": "À Propos",
648
+ "es": "Acerca de Nosotros"
649
+ }
747
650
  }
748
651
  }
749
652
  }
@@ -753,9 +656,9 @@ module.exports = aboutMetaContent;
753
656
 
754
657
  Intlayer utilise l'augmentation de module pour bénéficier de TypeScript et renforcer votre base de code.
755
658
 
756
- ![texte alternatif](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
659
+ ![Autocomplétion](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
757
660
 
758
- ![texte alternatif](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
661
+ ![Erreur de traduction](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
759
662
 
760
663
  Assurez-vous que votre configuration TypeScript inclut les types générés automatiquement.
761
664
 
@@ -771,7 +674,7 @@ Assurez-vous que votre configuration TypeScript inclut les types générés auto
771
674
 
772
675
  ### Configuration Git
773
676
 
774
- 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.
677
+ Il est recommandé d'ignorer les fichiers générés par Intlayer. Cela vous permet d'éviter de les committer dans votre dépôt Git.
775
678
 
776
679
  Pour ce faire, vous pouvez ajouter les instructions suivantes dans votre fichier `.gitignore` :
777
680
 
@@ -782,23 +685,21 @@ Pour ce faire, vous pouvez ajouter les instructions suivantes dans votre fichier
782
685
 
783
686
  ### Extension VS Code
784
687
 
785
- Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l'extension officielle **Intlayer VS Code Extension**.
688
+ Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l’**extension officielle Intlayer pour VS Code**.
786
689
 
787
690
  [Installer depuis le Marketplace VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
788
691
 
789
- Cette extension fournit :
692
+ Cette extension offre :
790
693
 
791
694
  - **Autocomplétion** pour les clés de traduction.
792
- - **Détection d'erreurs en temps réel** pour les traductions manquantes.
695
+ - **Détection derreurs en temps réel** pour les traductions manquantes.
793
696
  - **Aperçus en ligne** du contenu traduit.
794
697
  - **Actions rapides** pour créer et mettre à jour facilement les traductions.
795
698
 
796
- Pour plus de détails sur l'utilisation de l'extension, consultez la [documentation de l'extension Intlayer pour VS Code](https://intlayer.org/doc/vs-code-extension).
699
+ Pour plus de détails sur lutilisation de lextension, consultez la [documentation de lextension Intlayer pour VS Code](https://intlayer.org/doc/vs-code-extension).
797
700
 
798
701
  ---
799
702
 
800
703
  ### Aller plus loin
801
704
 
802
- 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).
803
-
804
- ---
705
+ 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).