@intlayer/docs 7.3.11 → 7.3.13

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 +294 -438
  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 +284 -410
  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 +237 -341
  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 +254 -378
  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 +271 -390
  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 +278 -405
  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 +303 -447
  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 +266 -395
  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 +299 -423
  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 +309 -432
  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 +295 -422
  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 +273 -476
  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 +277 -420
  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 +287 -425
  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 +313 -406
  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 +273 -418
  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 +300 -461
  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 +10 -11
  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: Cómo traducir tu Nuxt and Vue – guía i18n 2025
3
+ updatedAt: 2025-12-07
4
+ title: Cómo traducir tu aplicación Nuxt y Vue – Guía i18n 2025
5
5
  description: Descubre cómo hacer tu sitio web Nuxt y Vue multilingüe. Sigue la documentación para internacionalizar (i18n) y traducirlo.
6
6
  keywords:
7
7
  - Internacionalización
@@ -14,33 +14,60 @@ 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=nhUcUAVQ6eQ
18
19
  history:
20
+ - version: 7.3.11
21
+ date: 2025-12-07
22
+ changes: Actualización de LocaleSwitcher, SEO, metadatos
19
23
  - version: 5.5.10
20
24
  date: 2025-06-29
21
25
  changes: Historial inicial
22
26
  ---
23
27
 
24
- # Traduce tu Nuxt and Vue con Intlayer | Internacionalización (i18n)
28
+ # Traduce tu sitio web Nuxt y Vue usando Intlayer | Internacionalización (i18n)
25
29
 
26
- Consulta la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-nuxt-template) en GitHub.
30
+ ## Tabla de Contenidos
31
+
32
+ <TOC/>
27
33
 
28
34
  ## ¿Qué es Intlayer?
29
35
 
30
- **Intlayer** es una biblioteca innovadora y de código abierto para la internacionalización (i18n) diseñada para simplificar el soporte multilingüe en aplicaciones web modernas.
36
+ **Intlayer** es una biblioteca innovadora y de código abierto para internacionalización (i18n) diseñada para simplificar el soporte multilingüe en aplicaciones web modernas.
31
37
 
32
38
  Con Intlayer, puedes:
33
39
 
34
40
  - **Gestionar traducciones fácilmente** usando diccionarios declarativos a nivel de componente.
35
41
  - **Localizar dinámicamente metadatos**, rutas y contenido.
36
- - **Garantizar soporte para TypeScript** con tipos autogenerados, mejorando la autocompletación y la detección de errores.
37
- - **Beneficiarte de funciones avanzadas**, como la detección y el cambio dinámico de idioma.
42
+ - **Asegurar soporte para TypeScript** con tipos autogenerados, mejorando la autocompletación y detección de errores.
43
+ - **Beneficiarte de funciones avanzadas**, como la detección y cambio dinámico de locales.
38
44
 
39
45
  ---
40
46
 
41
47
  ## Guía paso a paso para configurar Intlayer en una aplicación Nuxt
42
48
 
43
- ### Paso 1: Instalar dependencias
49
+ <Tab defaultTab="video">
50
+ <TabItem label="Video" value="video">
51
+
52
+ <iframe title="¿Cómo traducir tu aplicación Nuxt y Vue usando Intlayer? Descubre 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/nhUcUAVQ6eQ?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
53
+
54
+ </TabItem>
55
+ <TabItem label="Código" value="code">
56
+
57
+ <iframe
58
+ src="https://stackblitz.com/github/aymericzip/intlayer-nuxt-4-template?embed=1&ctl=1&file=intlayer.config.ts"
59
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
60
+ title="Demo CodeSandbox - Cómo internacionalizar tu aplicación usando Intlayer"
61
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
62
+ loading="lazy"
63
+ />
64
+
65
+ </TabItem>
66
+ </Tab>
67
+
68
+ Consulta la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-nuxt-4-template) en GitHub.
69
+
70
+ ### Paso 1: Instalar Dependencias
44
71
 
45
72
  Instala los paquetes necesarios usando npm:
46
73
 
@@ -61,13 +88,13 @@ yarn add --save-dev nuxt-intlayer
61
88
 
62
89
  - **intlayer**
63
90
 
64
- El paquete principal que proporciona herramientas de internacionalización para la gestión de configuración, traducción, [declaración de contenido](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/get_started.md), transpilación y [comandos CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_cli.md).
91
+ El paquete principal que proporciona herramientas de internacionalización para la gestión de configuración, traducción, [declaración de contenido](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/content_file.md), transpilación y [comandos CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/index.md).
65
92
 
66
93
  - **vue-intlayer**
67
94
  El paquete que integra Intlayer con aplicaciones Vue. Proporciona los composables para los componentes Vue.
68
95
 
69
96
  - **nuxt-intlayer**
70
- El módulo de Nuxt que integra Intlayer con aplicaciones Nuxt. Proporciona configuración automática, middleware para la detección de la configuración regional, gestión de cookies y redirección de URL.
97
+ El módulo de Nuxt que integra Intlayer con aplicaciones Nuxt. Proporciona configuración automática, middleware para la detección de locale, gestión de cookies y redirección de URL.
71
98
 
72
99
  ### Paso 2: Configuración de tu proyecto
73
100
 
@@ -86,9 +113,6 @@ const config: IntlayerConfig = {
86
113
  ],
87
114
  defaultLocale: Locales.ENGLISH,
88
115
  },
89
- content: {
90
- contentDir: ["."], // Porque por defecto Intlayer observará los archivos de declaración de contenido desde el directorio `./src`
91
- },
92
116
  };
93
117
 
94
118
  export default config;
@@ -98,7 +122,6 @@ export default config;
98
122
  import { Locales } from "intlayer";
99
123
 
100
124
  /** @type {import('intlayer').IntlayerConfig} */
101
- // Configuración del archivo para Intlayer
102
125
  const config = {
103
126
  internationalization: {
104
127
  locales: [
@@ -109,9 +132,6 @@ const config = {
109
132
  ],
110
133
  defaultLocale: Locales.ENGLISH,
111
134
  },
112
- content: {
113
- contentDir: ["."], // Directorio donde se encuentran las declaraciones de contenido
114
- },
115
135
  };
116
136
 
117
137
  export default config;
@@ -121,7 +141,6 @@ export default config;
121
141
  const { Locales } = require("intlayer");
122
142
 
123
143
  /** @type {import('intlayer').IntlayerConfig} */
124
- // Configuración del archivo para Intlayer
125
144
  const config = {
126
145
  internationalization: {
127
146
  locales: [
@@ -132,17 +151,14 @@ const config = {
132
151
  ],
133
152
  defaultLocale: Locales.ENGLISH,
134
153
  },
135
- content: {
136
- contentDir: ["."],
137
- },
138
154
  };
139
155
 
140
156
  module.exports = config;
141
157
  ```
142
158
 
143
- > A través de este archivo de configuración, puedes configurar URLs localizadas, redirección mediante middleware, nombres de cookies, la ubicación y extensión de tus declaraciones de contenido, deshabilitar los logs de Intlayer en la consola, y más. Para una lista completa de los parámetros disponibles, consulta la [documentación de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md).
159
+ > A través de este archivo de configuración, puedes configurar URLs localizadas, redirección mediante middleware, nombres de cookies, la ubicación y extensión de tus declaraciones de contenido, desactivar los logs de Intlayer en la consola, y más. Para una lista completa de los parámetros disponibles, consulta la [documentación de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md).
144
160
 
145
- ### Paso 3: Integra Intlayer en tu configuración de Nuxt
161
+ ### Paso 3: Integra Intlayer en tu Configuración de Nuxt
146
162
 
147
163
  Agrega el módulo intlayer a tu configuración de Nuxt:
148
164
 
@@ -155,186 +171,46 @@ export default defineNuxtConfig({
155
171
  });
156
172
  ```
157
173
 
158
- > El módulo `nuxt-intlayer` maneja automáticamente la integración de Intlayer con Nuxt. Configura la construcción de la declaración de contenido, monitorea los archivos en modo desarrollo, proporciona middleware para la detección de la localidad y gestiona el enrutamiento localizado.
174
+ > El módulo `nuxt-intlayer` maneja automáticamente la integración de Intlayer con Nuxt. Configura la construcción de las declaraciones de contenido, monitorea los archivos en modo desarrollo, proporciona middleware para la detección de la locale y gestiona el enrutamiento localizado.
159
175
 
160
- ### Paso 4: Declara Tu Contenido
176
+ ### Paso 4: Declara tu Contenido
161
177
 
162
- Crea y administra tus declaraciones de contenido para almacenar traducciones:
178
+ Crea y gestiona tus declaraciones de contenido para almacenar traducciones:
163
179
 
164
- ```tsx fileName="components/helloWorld.content.ts" contentDeclarationFormat="typescript"
165
- import { t, type Dictionary } from "intlayer";
180
+ ```tsx fileName="content/home-page.content.ts" contentDeclarationFormat="typescript"
181
+ import { type Dictionary, t } from "intlayer";
166
182
 
167
- const helloWorldContent = {
168
- key: "helloworld",
183
+ const content = {
184
+ key: "home-page",
169
185
  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 ",
186
+ title: t({
187
+ en: "Hello world",
188
+ fr: "Bonjour le monde",
189
+ es: "Hola mundo",
186
190
  }),
187
- nuxtDocs: t({
188
- en: "Nuxt Documentation",
189
- fr: "Documentation Nuxt",
190
- es: "Documentación de Nuxt",
191
+ metaTitle: t({
192
+ en: "Welcome | My Application",
193
+ fr: "Bienvenue | Mon Application",
194
+ es: "Bienvenido | Mi Aplicación",
191
195
  }),
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",
196
+ metaDescription: t({
197
+ en: "Discover your multilingual Nuxt app homepage powered by Intlayer.",
198
+ fr: "Découvrez la page d'accueil multilingue de votre application Nuxt propulsée par Intlayer.",
199
+ es: "Descubre la página de inicio multilingüe de tu aplicación Nuxt impulsada por Intlayer.",
196
200
  }),
197
201
  },
198
202
  } satisfies Dictionary;
199
203
 
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;
204
+ export default content;
208
205
  ```
209
206
 
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
- ```
207
+ > Tus declaraciones de contenido pueden definirse en cualquier parte de tu aplicación siempre que estén incluidas en el directorio `contentDir` (por defecto, `./src`). Y coincidan con la extensión de archivo de declaración de contenido (por defecto, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
249
208
 
250
- ```javascript fileName="components/helloWorld.content.cjs" contentDeclarationFormat="commonjs"
251
- const { t } = require("intlayer");
209
+ > Para más detalles, consulta la [documentación de declaración de contenido](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/content_file.md).
252
210
 
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
- es: "Documentación de Nuxt Intlayer",
270
- }),
271
- learnMore: t({
272
- en: "Learn more about Nuxt in the ",
273
- fr: "En savoir plus sur Nuxt dans la ",
274
- es: "Aprenda más sobre Nuxt en la ",
275
- }),
276
- nuxtDocs: t({
277
- en: "Nuxt Documentation",
278
- fr: "Documentation Nuxt",
279
- es: "Documentación de Nuxt",
280
- }),
281
- readTheDocs: t({
282
- en: "Click on the Nuxt logo to learn more",
283
- fr: "Cliquez sur le logo Nuxt pour en savoir plus",
284
- es: "Haga clic en el logotipo de Nuxt para obtener más información",
285
- }),
286
- },
287
- };
211
+ ### Paso 5: Utiliza Intlayer en tu Código
288
212
 
289
- module.exports = helloWorldContent;
290
- ```
291
-
292
- ```json fileName="components/helloWorld.content.json" contentDeclarationFormat="json"
293
- {
294
- "$schema": "https://intlayer.org/schema.json",
295
- "key": "helloworld",
296
- "content": {
297
- "count": {
298
- "nodeType": "translation",
299
- "translation": {
300
- "en": "count is ",
301
- "fr": "le compte est ",
302
- "es": "el recuento es "
303
- }
304
- },
305
- "edit": {
306
- "nodeType": "translation",
307
- "translation": {
308
- "en": "Edit <code>components/HelloWorld.vue</code> and save to test HMR",
309
- "fr": "Éditez <code>components/HelloWorld.vue</code> et enregistrez pour tester HMR",
310
- "es": "Edita <code>components/HelloWorld.vue</code> y guarda para probar HMR"
311
- }
312
- },
313
- "checkOut": {
314
- "nodeType": "translation",
315
- "translation": {
316
- "en": "Check out ",
317
- "fr": "Vérifiez ",
318
- "es": "Compruebe "
319
- }
320
- },
321
- "nuxtIntlayer": {
322
- "nodeType": "translation",
323
- "translation": {
324
- "es": "Haga clic en el logotipo de Nuxt para obtener más información"
325
- }
326
- }
327
- }
328
- }
329
- ```
330
-
331
- > Sus declaraciones de contenido pueden definirse en cualquier lugar de su aplicación siempre que estén incluidas en el directorio `contentDir` (por defecto, `./src`). Y coincidan con la extensión de archivo de declaración de contenido (por defecto, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
332
-
333
- > Para más detalles, consulte la [documentación de declaración de contenido](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/get_started.md).
334
-
335
- ### Paso 5: Utilice Intlayer en su Código
336
-
337
- Acceda a sus diccionarios de contenido en toda su aplicación Nuxt usando el composable `useIntlayer`:
213
+ Accede a tus diccionarios de contenido en toda tu aplicación Nuxt usando el composable `useIntlayer`:
338
214
 
339
215
  ```vue fileName="components/HelloWorld.vue"
340
216
  <script setup lang="ts">
@@ -388,7 +264,7 @@ const countRef = ref(0);
388
264
  Intlayer ofrece diferentes APIs para acceder a tu contenido:
389
265
 
390
266
  - **Sintaxis basada en componentes** (recomendada):
391
- Usa la sintaxis `<myContent />` o `<Component :is="myContent" />` para renderizar contenido como un Nodo de Intlayer. Esto se integra perfectamente con el [Editor Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) y el [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md).
267
+ Usa la sintaxis `<myContent />`, o `<Component :is="myContent" />` para renderizar contenido como un Nodo de Intlayer. Esto se integra perfectamente con el [Editor Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) y el [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md).
392
268
 
393
269
  - **Sintaxis basada en cadenas**:
394
270
  Usa `{{ myContent }}` para renderizar el contenido como texto plano, sin soporte para el Editor Visual.
@@ -398,71 +274,61 @@ Intlayer ofrece diferentes APIs para acceder a tu contenido:
398
274
 
399
275
  - **Sintaxis de desestructuración**:
400
276
  El composable `useIntlayer` devuelve un Proxy con el contenido. Este proxy puede ser desestructurado para acceder al contenido manteniendo la reactividad.
401
- - Usa `const content = useIntlayer("myContent");` y `{{ content.myContent }}` / `<content.myContent />`.
402
- - O usa `const { myContent } = useIntlayer("myContent");` y `{{ myContent}}` / `<myContent/>` para desestructurar el contenido.
277
+ - Usa `const content = useIntlayer("myContent");` y `{{ content.myContent }}` / `<content.myContent />`.
278
+ - O usa `const { myContent } = useIntlayer("myContent");` y `{{ myContent}}` / `<myContent/>` para desestructurar el contenido.
403
279
 
404
280
  ### (Opcional) Paso 6: Cambiar el idioma de tu contenido
405
281
 
406
282
  Para cambiar el idioma de tu contenido, puedes usar la función `setLocale` proporcionada por el composable `useLocale`. Esta función te permite establecer la configuración regional de la aplicación y actualizar el contenido en consecuencia.
407
283
 
408
- Crea un componente para cambiar entre idiomas:
284
+ Crea un componente para cambiar entre idiomas usando `NuxtLink`. **Usar enlaces en lugar de botones para cambiar de idioma es una buena práctica para SEO y la descubribilidad de la página**, ya que permite a los motores de búsqueda rastrear e indexar todas las versiones localizadas de tus páginas:
409
285
 
410
286
  ```vue fileName="components/LocaleSwitcher.vue"
411
- <template>
412
- <div class="locale-switcher">
413
- <select v-model="selectedLocale" @change="changeLocale">
414
- <option v-for="loc in availableLocales" :key="loc" :value="loc">
415
- {{ getLocaleName(loc) }}
416
- </option>
417
- </select>
418
- </div>
419
- </template>
420
-
421
287
  <script setup lang="ts">
422
- import { ref, watch } from "vue";
423
- import { getLocaleName } from "intlayer";
288
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
424
289
  import { useLocale } from "vue-intlayer";
425
290
 
426
- // Obtener información del locale y la función setLocale
291
+ // Nuxt importa automáticamente useRoute
292
+ const route = useRoute();
427
293
  const { locale, availableLocales, setLocale } = useLocale();
428
-
429
- // Rastrear el locale seleccionado con un ref
430
- const selectedLocale = ref(locale.value);
431
-
432
- // Actualizar el locale cuando cambia la selección
433
- const changeLocale = () => setLocale(selectedLocale.value);
434
-
435
- // Mantener selectedLocale sincronizado con el locale global
436
- watch(
437
- () => locale.value,
438
- (newLocale) => {
439
- selectedLocale.value = newLocale;
440
- }
441
- );
442
294
  </script>
295
+
296
+ <template>
297
+ <nav class="locale-switcher">
298
+ <NuxtLink
299
+ v-for="localeEl in availableLocales"
300
+ :key="localeEl"
301
+ :to="getLocalizedUrl(route.fullPath, localeEl)"
302
+ class="locale-link"
303
+ :class="{ 'active-locale': localeEl === locale }"
304
+ @click="setLocale(localeEl)"
305
+ >
306
+ {{ getLocaleName(localeEl) }}
307
+ </NuxtLink>
308
+ </nav>
443
309
  </template>
310
+ ```
444
311
 
445
- <style scoped>
446
- .locale-switcher {
447
- margin: 1rem 0;
448
- }
312
+ > Usar `NuxtLink` con atributos `href` adecuados (a través de `getLocalizedUrl`) asegura que los motores de búsqueda puedan descubrir todas las variantes de idioma de tus páginas. Esto es preferible a cambiar el idioma solo con JavaScript, ya que los rastreadores de motores de búsqueda pueden no seguirlo.
449
313
 
450
- select {
451
- padding: 0.5rem;
452
- border-radius: 0.25rem;
453
- border: 1px solid #ccc;
454
- }
455
- </style>
314
+ Luego, configura tu `app.vue` para usar layouts:
315
+
316
+ ```vue fileName="app.vue"
317
+ <template>
318
+ <NuxtLayout>
319
+ <NuxtPage />
320
+ </NuxtLayout>
321
+ </template>
456
322
  ```
457
323
 
458
- Luego, usa este componente en tus páginas o en el layout:
324
+ ### (Opcional) Paso 6b: Crear un Layout con Navegación
459
325
 
460
- ```vue fileName="app.vue"
326
+ Los layouts de Nuxt te permiten definir una estructura común para tus páginas. Crea un layout por defecto que incluya el selector de idioma y la navegación:
327
+
328
+ ```vue fileName="layouts/default.vue"
461
329
  <script setup lang="ts">
462
- import { useIntlayer } from "vue-intlayer";
330
+ import Links from "~/components/Links.vue";
463
331
  import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
464
-
465
- const content = useIntlayer("app"); // Crear archivo de declaración intlayer relacionado
466
332
  </script>
467
333
 
468
334
  <template>
@@ -471,15 +337,20 @@ const content = useIntlayer("app"); // Crear archivo de declaración intlayer re
471
337
  <LocaleSwitcher />
472
338
  </header>
473
339
  <main>
474
- <NuxtPage />
340
+ <slot />
475
341
  </main>
342
+
343
+ <Links href="/">Inicio</Links>
344
+ <Links href="/about">Acerca de</Links>
476
345
  </div>
477
346
  </template>
478
347
  ```
479
348
 
349
+ El componente `Links` (mostrado a continuación) asegura que los enlaces de navegación interna se localicen automáticamente.
350
+
480
351
  ### (Opcional) Paso 7: Añadir enrutamiento localizado a tu aplicación
481
352
 
482
- Nuxt maneja automáticamente el enrutamiento localizado cuando se utiliza el módulo `nuxt-intlayer`. Esto crea rutas para cada idioma automáticamente basándose en la estructura del directorio de tus páginas.
353
+ Nuxt maneja automáticamente el enrutamiento localizado cuando se usa el módulo `nuxt-intlayer`. Esto crea rutas para cada idioma automáticamente basándose en la estructura del directorio de tus páginas.
483
354
 
484
355
  Ejemplo:
485
356
 
@@ -491,275 +362,287 @@ pages/
491
362
  └── index.vue → /contact, /fr/contact, /es/contact
492
363
  ```
493
364
 
494
- Para crear una página localizada, simplemente crea tus archivos Vue en el directorio `pages/`:
365
+ Para crear páginas localizadas, simplemente crea tus archivos Vue en el directorio `pages/`. Aquí tienes dos ejemplos de páginas:
366
+
367
+ **Página de inicio (`pages/index.vue`):**
368
+
369
+ ```vue fileName="pages/index.vue"
370
+ <script setup lang="ts">
371
+ import { useIntlayer } from "vue-intlayer";
372
+
373
+ const content = useIntlayer("home-page");
374
+
375
+ useHead({
376
+ title: content.metaTitle.value,
377
+ meta: [
378
+ {
379
+ name: "description",
380
+ content: content.metaDescription.value,
381
+ },
382
+ ],
383
+ });
384
+ </script>
385
+
386
+ <template>
387
+ <h1><content.title /></h1>
388
+ </template>
389
+ ```
390
+
391
+ **Página Acerca de (`pages/about.vue`):**
495
392
 
496
393
  ```vue fileName="pages/about.vue"
497
394
  <script setup lang="ts">
498
395
  import { useIntlayer } from "vue-intlayer";
499
396
 
500
- const content = useIntlayer("about");
397
+ const content = useIntlayer("about-page");
398
+
399
+ useHead({
400
+ title: content.metaTitle.raw, // Usa .raw para acceso a cadena primitiva
401
+ meta: [
402
+ {
403
+ name: "description",
404
+ content: content.metaDescription.raw, // Usa .raw para acceder a la cadena primitiva
405
+ },
406
+ ],
407
+ });
501
408
  </script>
502
409
 
503
410
  <template>
504
- <div>
505
- <h1>{{ content.title }}</h1>
506
- <p>{{ content.description }}</p>
507
- </div>
411
+ <h1><content.title /></h1>
508
412
  </template>
509
413
  ```
510
414
 
511
- El módulo `nuxt-intlayer` automáticamente:
415
+ > Nota: `useHead` se importa automáticamente en Nuxt. Puedes acceder a los valores del contenido usando `.value` (reactivo) o `.raw` (cadena primitiva) según tus necesidades.
416
+
417
+ El módulo `nuxt-intlayer` hará automáticamente:
512
418
 
513
- - Detectar el idioma preferido del usuario
514
- - Gestionar el cambio de idioma a través de la URL
419
+ - Detectar la configuración regional preferida del usuario
420
+ - Gestionar el cambio de idioma vía URL
515
421
  - Establecer el atributo `<html lang="">` apropiado
516
- - Administrar las cookies de idioma
422
+ - Manejar las cookies de idioma
517
423
  - Redirigir a los usuarios a la URL localizada correspondiente
518
424
 
519
425
  ### (Opcional) Paso 8: Crear un Componente de Enlace Localizado
520
426
 
521
- Para asegurar que la navegación de tu aplicación respete el idioma actual, puedes crear un componente personalizado `LocalizedLink`. Este componente añade automáticamente el prefijo del idioma actual a las URLs internas.
522
-
523
- ```vue fileName="components/LocalizedLink.vue"
524
- <template>
525
- <NuxtLink :to="localizedHref" v-bind="$attrs">
526
- <slot />
527
- </NuxtLink>
528
- </template>
427
+ Para asegurar que la navegación de tu aplicación respete la configuración regional actual, puedes crear un componente personalizado `Links`. Este componente antepone automáticamente a las URLs internas el idioma actual, lo cual es esencial para el **SEO y la descubribilidad de las páginas**.
529
428
 
429
+ ```vue fileName="components/Links.vue"
530
430
  <script setup lang="ts">
531
- import { computed } from "vue";
532
431
  import { getLocalizedUrl } from "intlayer";
533
432
  import { useLocale } from "vue-intlayer";
534
433
 
535
- const props = defineProps({
536
- to: {
537
- type: String,
538
- required: true,
539
- },
540
- });
434
+ interface Props {
435
+ href: string;
436
+ locale?: string;
437
+ }
438
+
439
+ const props = defineProps<Props>();
440
+
441
+ const { locale: currentLocale } = useLocale();
541
442
 
542
- const { locale } = useLocale();
443
+ // Calcular la ruta final
444
+ const finalPath = computed(() => {
445
+ // 1. Verificar si el enlace es externo
446
+ const isExternal = /^https?:\/\//.test(props.href || "");
543
447
 
544
- // Verificar si el enlace es externo
545
- const isExternalLink = computed(() => /^https?:\/\//.test(props.to || ""));
448
+ // 2. Si es externo, devolver tal cual (NuxtLink maneja la generación de la etiqueta <a>)
449
+ if (isExternal) return props.href;
546
450
 
547
- // Crear un href localizado para enlaces internos
548
- const localizedHref = computed(() =>
549
- isExternalLink.value ? props.to : getLocalizedUrl(props.to, locale.value)
550
- );
451
+ // 3. Si es interno, localiza la URL
452
+ const targetLocale = props.locale || currentLocale.value;
453
+ return getLocalizedUrl(props.href, targetLocale);
454
+ });
551
455
  </script>
456
+
457
+ <template>
458
+ <NuxtLink :to="finalPath" v-bind="$attrs">
459
+ <slot />
460
+ </NuxtLink>
461
+ </template>
552
462
  ```
553
463
 
554
464
  Luego usa este componente en toda tu aplicación:
555
465
 
556
- ```vue fileName="pages/index.vue"
466
+ ```vue fileName="layouts/default.vue"
467
+ <script setup lang="ts">
468
+ import Links from "~/components/Links.vue";
469
+ import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
470
+ </script>
471
+
557
472
  <template>
558
473
  <div>
559
- <LocalizedLink to="/about">
560
- {{ content.aboutLink }}
561
- </LocalizedLink>
562
- <LocalizedLink to="/contact">
563
- {{ content.contactLink }}
564
- </LocalizedLink>
474
+ <header>
475
+ <LocaleSwitcher />
476
+ </header>
477
+ <main>
478
+ <slot />
479
+ </main>
480
+
481
+ <Links href="/">Inicio</Links>
482
+ <Links href="/about">Acerca de</Links>
565
483
  </div>
566
484
  </template>
567
-
568
- <script setup lang="ts">
569
- import { useIntlayer } from "vue-intlayer";
570
- import LocalizedLink from "~/components/LocalizedLink.vue";
571
-
572
- const content = useIntlayer("home");
573
- </script>
574
485
  ```
575
486
 
487
+ > Al usar `NuxtLink` con rutas localizadas, aseguras que:
488
+ >
489
+ > - Los motores de búsqueda puedan rastrear e indexar todas las versiones de idioma de tus páginas
490
+ > - Los usuarios puedan compartir URLs localizadas directamente
491
+ > - El historial del navegador funcione correctamente con URLs que tienen prefijos de locale
492
+
576
493
  ### (Opcional) Paso 9: Manejar Metadatos y SEO
577
494
 
578
- Nuxt ofrece excelentes capacidades de SEO. Puedes usar Intlayer para manejar metadatos localizados:
495
+ Nuxt proporciona excelentes capacidades SEO a través del composable `useHead` (auto-importado). Puedes usar Intlayer para manejar metadatos localizados usando el accesor `.raw` o `.value` para obtener el valor primitivo de cadena:
579
496
 
580
497
  ```vue fileName="pages/about.vue"
581
498
  <script setup lang="ts">
582
- import { useSeoMeta } from "nuxt/app";
583
- import { getIntlayer } from "intlayer";
584
- import { useLocale } from "vue-intlayer";
499
+ import { useIntlayer } from "vue-intlayer";
585
500
 
586
- const { locale } = useLocale();
587
- const content = getIntlayer("about-meta", locale.value);
501
+ // useHead se auto-importa en Nuxt
502
+ const content = useIntlayer("about-page");
588
503
 
589
- useSeoMeta({
590
- title: content.title,
591
- description: content.description,
504
+ useHead({
505
+ title: content.metaTitle.raw, // Usa .raw para acceso a cadena primitiva
506
+ meta: [
507
+ {
508
+ name: "description",
509
+ content: content.metaDescription.raw, // Usar .raw para acceder al valor primitivo de cadena
510
+ },
511
+ ],
592
512
  });
593
513
  </script>
594
514
 
595
515
  <template>
596
- <div>
597
- <h1>{{ content.pageTitle }}</h1>
598
- <p>{{ content.pageContent }}</p>
599
- </div>
516
+ <h1><content.title /></h1>
600
517
  </template>
601
518
  ```
602
519
 
520
+ > Alternativamente, puedes usar la función `import { getIntlayer } from "intlayer"` para obtener el contenido sin reactividad de Vue.
521
+
522
+ > **Accediendo a los valores del contenido:**
523
+ >
524
+ > - Usa `.raw` para obtener el valor primitivo de cadena (no reactivo)
525
+ > - Usa `.value` para obtener el valor reactivo
526
+ > - Usa la sintaxis de componente `<content.key />` para soporte del Editor Visual
527
+
603
528
  Crea la declaración de contenido correspondiente:
604
529
 
605
- ```ts fileName="pages/about-meta.content.ts"
530
+ ```ts fileName="pages/about-page.content.ts" contentDeclarationFormat="typescript"
606
531
  import { t, type Dictionary } from "intlayer";
607
- import type { useSeoMeta } from "nuxt/app";
608
532
 
609
- const aboutMetaContent = {
610
- key: "about-meta",
533
+ const aboutPageContent = {
534
+ key: "about-page",
611
535
  content: {
612
- title: t({
536
+ metaTitle: t({
613
537
  en: "About Us - My Company",
614
538
  fr: "À Propos - Ma Société",
615
539
  es: "Acerca de Nosotros - Mi Empresa",
616
540
  }),
617
- description: t({
541
+ metaDescription: t({
618
542
  en: "Learn more about our company and our mission",
619
543
  fr: "En savoir plus sur notre société et notre mission",
620
544
  es: "Conozca más sobre nuestra empresa y nuestra misión",
621
545
  }),
546
+ title: t({
547
+ en: "About Us",
548
+ fr: "À Propos",
549
+ es: "Acerca de Nosotros",
550
+ }),
622
551
  },
623
- } satisfies Dictionary<Parameters<typeof useSeoMeta>[0]>;
552
+ } satisfies Dictionary;
624
553
 
625
- export default aboutMetaContent;
554
+ export default aboutPageContent;
626
555
  ```
627
556
 
628
- ```typescript fileName="pages/about-meta.content.mjs" contentDeclarationFormat="esm"
557
+ ```javascript fileName="pages/about-page.content.mjs" contentDeclarationFormat="esm"
629
558
  import { t } from "intlayer";
630
559
 
631
560
  /** @type {import('intlayer').Dictionary} */
632
- const aboutMetaContent = {
633
- key: "about-meta",
561
+ const aboutPageContent = {
562
+ key: "about-page",
634
563
  content: {
635
- title: t({
636
- zh: "关于我们 - 我的公司",
564
+ metaTitle: t({
637
565
  en: "About Us - My Company",
638
566
  fr: "À Propos - Ma Société",
639
567
  es: "Acerca de Nosotros - Mi Empresa",
640
568
  }),
641
- description: t({
642
- zh: "了解更多关于我们公司和我们的使命",
569
+ metaDescription: t({
643
570
  en: "Learn more about our company and our mission",
644
571
  fr: "En savoir plus sur notre société et notre mission",
645
572
  es: "Conozca más sobre nuestra empresa y nuestra misión",
646
573
  }),
574
+ title: t({
575
+ en: "About Us",
576
+ fr: "À Propos",
577
+ es: "Acerca de Nosotros",
578
+ }),
647
579
  },
648
580
  };
649
581
 
650
- export default aboutMetaContent;
582
+ export default aboutPageContent;
651
583
  ```
652
584
 
653
- ```typescript fileName="pages/about-meta.content.js" contentDeclarationFormat="cjs"
585
+ ```javascript fileName="pages/about-page.content.cjs" contentDeclarationFormat="commonjs"
654
586
  const { t } = require("intlayer");
655
587
 
656
588
  /** @type {import('intlayer').Dictionary} */
657
- const aboutMetaContent = {
658
- key: "about-meta",
589
+ const aboutPageContent = {
590
+ key: "about-page",
659
591
  content: {
660
- title: t({
661
- zh: "关于我们 - 我的公司",
592
+ metaTitle: t({
662
593
  en: "About Us - My Company",
663
594
  fr: "À Propos - Ma Société",
664
595
  es: "Acerca de Nosotros - Mi Empresa",
665
596
  }),
666
- description: t({
667
- zh: "了解更多关于我们公司和我们的使命",
597
+ metaDescription: t({
668
598
  en: "Learn more about our company and our mission",
669
599
  fr: "En savoir plus sur notre société et notre mission",
670
600
  es: "Conozca más sobre nuestra empresa y nuestra misión",
671
601
  }),
602
+ title: t({
603
+ en: "About Us",
604
+ fr: "À Propos",
605
+ es: "Acerca de Nosotros",
606
+ }),
672
607
  },
673
608
  };
674
609
 
675
- module.exports = aboutMetaContent;
610
+ module.exports = aboutPageContent;
676
611
  ```
677
612
 
678
- ```json fileName="pages/about-meta.content.json" contentDeclarationFormat="json"
613
+ ```json fileName="pages/about-page.content.json" contentDeclarationFormat="json"
679
614
  {
680
- "key": "about-meta",
615
+ "$schema": "https://intlayer.org/schema.json",
616
+ "key": "about-page",
681
617
  "content": {
682
- "title": {
618
+ "metaTitle": {
683
619
  "nodeType": "translation",
684
- "translations": {
685
- "zh": "关于我们 - 我的公司",
620
+ "translation": {
686
621
  "en": "About Us - My Company",
687
622
  "fr": "À Propos - Ma Société",
688
623
  "es": "Acerca de Nosotros - Mi Empresa"
689
624
  }
690
625
  },
691
- "description": {
626
+ "metaDescription": {
692
627
  "nodeType": "translation",
693
- "translations": {
694
- "zh": "了解更多关于我们公司和我们的使命",
628
+ "translation": {
695
629
  "en": "Learn more about our company and our mission",
696
630
  "fr": "En savoir plus sur notre société et notre mission",
697
631
  "es": "Conozca más sobre nuestra empresa y nuestra misión"
698
632
  }
699
- }
700
- }
701
- }
702
- fr: "À Propos - Ma Société",
703
- es: "Acerca de Nosotros - Mi Empresa",
704
- }),
705
- description: t({
706
- zh: "了解更多关于我们公司和我们的使命",
707
- en: "Learn more about our company and our mission",
708
- fr: "En savoir plus sur notre société et notre mission",
709
- es: "Conozca más sobre nuestra empresa y nuestra misión",
710
- }),
711
- },
712
- };
713
-
714
- module.exports = aboutMetaContent;
715
- ```
716
-
717
- ```json fileName="pages/about-meta.content.json" contentDeclarationFormat="json"
718
- {
719
- "key": "about-meta",
720
- "content": {
721
- "title": {
722
- "nodeType": "translation",
723
- "translations": {
724
- "zh": "关于我们 - 我的公司",
725
- "en": "About Us - My Company",
726
- "fr": "À Propos - Ma Société",
727
- "es": "Acerca de Nosotros - Mi Empresa"
728
- }
729
633
  },
730
- "description": {
634
+ "title": {
731
635
  "nodeType": "translation",
732
- "translations": {
733
- "zh": "了解更多关于我们公司和我们的使命",
734
- "en": "Learn more about our company and our mission",
735
- "fr": "En savoir plus sur notre société et notre mission",
736
- "es": "Conozca más sobre nuestra empresa y nuestra misión"
636
+ "translation": {
637
+ "en": "About Us",
638
+ "fr": "À Propos",
639
+ "es": "Acerca de Nosotros"
737
640
  }
738
641
  }
739
642
  }
740
643
  }
741
644
  ```
742
645
 
743
- ### Configurar TypeScript
744
-
745
- Intlayer utiliza la ampliación de módulos para aprovechar las ventajas de TypeScript y fortalecer su base de código.
746
-
747
- ![texto alternativo](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
748
-
749
- ![texto alternativo](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
750
-
751
- Asegúrese de que su configuración de TypeScript incluya los tipos autogenerados.
752
-
753
- ```json5 fileName="tsconfig.json"
754
- {
755
- // ... Sus configuraciones existentes de TypeScript
756
- "include": [
757
- // ... Tus configuraciones existentes de TypeScript
758
- ".intlayer/**/*.ts", // Incluir los tipos generados automáticamente
759
- ],
760
- }
761
- ```
762
-
763
646
  ### Configuración de Git
764
647
 
765
648
  Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar comprometerlos en tu repositorio Git.
@@ -771,25 +654,23 @@ Para hacerlo, puedes agregar las siguientes instrucciones a tu archivo `.gitigno
771
654
  .intlayer
772
655
  ```
773
656
 
774
- ### Extensión de VS Code
657
+ ### Extensión para VS Code
775
658
 
776
659
  Para mejorar tu experiencia de desarrollo con Intlayer, puedes instalar la **Extensión oficial de Intlayer para VS Code**.
777
660
 
778
661
  [Instalar desde el Marketplace de VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
779
662
 
780
- Esta extensión proporciona:
663
+ Esta extensión ofrece:
781
664
 
782
665
  - **Autocompletado** para las claves de traducción.
783
666
  - **Detección de errores en tiempo real** para traducciones faltantes.
784
- - **Vistas previas en línea** del contenido traducido.
667
+ - **Previsualizaciones en línea** del contenido traducido.
785
668
  - **Acciones rápidas** para crear y actualizar traducciones fácilmente.
786
669
 
787
- Para más detalles sobre cómo usar la extensión, consulte la [documentación de la extensión Intlayer para VS Code](https://intlayer.org/doc/vs-code-extension).
670
+ Para más detalles sobre cómo usar la extensión, consulta la [documentación de la Extensión de Intlayer para VS Code](https://intlayer.org/doc/vs-code-extension).
788
671
 
789
672
  ---
790
673
 
791
674
  ### Ir más allá
792
675
 
793
- Para ir más allá, puede implementar el [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) o externalizar su contenido usando el [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md).
794
-
795
- ---
676
+ Para ir más allá, puedes implementar el [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) o externalizar tu contenido usando el [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_CMS.md).