@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: 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,68 @@ 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: 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
+ <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="Demo CodeSandbox - Cómo internacionalizar tu aplicación usando Intlayer"
53
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
54
+ loading="lazy"
55
+ />
56
+
57
+ ### Paso 1: Instalar Dependencias
58
+
59
+ <Tab defaultTab="video">
60
+ <TabItem label="Video" value="video">
61
+
62
+ <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/IE3XWkZ6a5U?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
63
+
64
+ </TabItem>
65
+ <TabItem label="Código" 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="Demo CodeSandbox - Cómo internacionalizar tu aplicación usando 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
+ Consulta la [Plantilla de Aplicación](https://github.com/aymericzip/intlayer-nuxt-4-template) en GitHub.
44
79
 
45
80
  Instala los paquetes necesarios usando npm:
46
81
 
@@ -61,13 +96,13 @@ yarn add --save-dev nuxt-intlayer
61
96
 
62
97
  - **intlayer**
63
98
 
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).
99
+ 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
100
 
66
101
  - **vue-intlayer**
67
102
  El paquete que integra Intlayer con aplicaciones Vue. Proporciona los composables para los componentes Vue.
68
103
 
69
104
  - **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.
105
+ 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
106
 
72
107
  ### Paso 2: Configuración de tu proyecto
73
108
 
@@ -86,9 +121,6 @@ const config: IntlayerConfig = {
86
121
  ],
87
122
  defaultLocale: Locales.ENGLISH,
88
123
  },
89
- content: {
90
- contentDir: ["."], // Porque por defecto Intlayer observará los archivos de declaración de contenido desde el directorio `./src`
91
- },
92
124
  };
93
125
 
94
126
  export default config;
@@ -98,7 +130,6 @@ export default config;
98
130
  import { Locales } from "intlayer";
99
131
 
100
132
  /** @type {import('intlayer').IntlayerConfig} */
101
- // Configuración del archivo para Intlayer
102
133
  const config = {
103
134
  internationalization: {
104
135
  locales: [
@@ -109,9 +140,6 @@ const config = {
109
140
  ],
110
141
  defaultLocale: Locales.ENGLISH,
111
142
  },
112
- content: {
113
- contentDir: ["."], // Directorio donde se encuentran las declaraciones de contenido
114
- },
115
143
  };
116
144
 
117
145
  export default config;
@@ -121,7 +149,6 @@ export default config;
121
149
  const { Locales } = require("intlayer");
122
150
 
123
151
  /** @type {import('intlayer').IntlayerConfig} */
124
- // Configuración del archivo para Intlayer
125
152
  const config = {
126
153
  internationalization: {
127
154
  locales: [
@@ -132,17 +159,14 @@ const config = {
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
- > 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).
167
+ > 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
168
 
145
- ### Paso 3: Integra Intlayer en tu configuración de Nuxt
169
+ ### Paso 3: Integra Intlayer en tu Configuración de Nuxt
146
170
 
147
171
  Agrega el módulo intlayer a tu configuración de Nuxt:
148
172
 
@@ -155,186 +179,46 @@ export default defineNuxtConfig({
155
179
  });
156
180
  ```
157
181
 
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.
182
+ > 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
183
 
160
- ### Paso 4: Declara Tu Contenido
184
+ ### Paso 4: Declara tu Contenido
161
185
 
162
- Crea y administra tus declaraciones de contenido para almacenar traducciones:
186
+ Crea y gestiona tus declaraciones de contenido para almacenar traducciones:
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
- 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
- };
288
-
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
- }
212
+ export default content;
329
213
  ```
330
214
 
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}`).
215
+ > 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}`).
332
216
 
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).
217
+ > 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).
334
218
 
335
- ### Paso 5: Utilice Intlayer en su Código
219
+ ### Paso 5: Utiliza Intlayer en tu Código
336
220
 
337
- Acceda a sus diccionarios de contenido en toda su aplicación Nuxt usando el composable `useIntlayer`:
221
+ Accede a tus diccionarios de contenido en toda tu aplicación Nuxt usando el composable `useIntlayer`:
338
222
 
339
223
  ```vue fileName="components/HelloWorld.vue"
340
224
  <script setup lang="ts">
@@ -388,7 +272,7 @@ const countRef = ref(0);
388
272
  Intlayer ofrece diferentes APIs para acceder a tu contenido:
389
273
 
390
274
  - **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).
275
+ 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
276
 
393
277
  - **Sintaxis basada en cadenas**:
394
278
  Usa `{{ myContent }}` para renderizar el contenido como texto plano, sin soporte para el Editor Visual.
@@ -398,71 +282,61 @@ Intlayer ofrece diferentes APIs para acceder a tu contenido:
398
282
 
399
283
  - **Sintaxis de desestructuración**:
400
284
  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.
285
+ - Usa `const content = useIntlayer("myContent");` y `{{ content.myContent }}` / `<content.myContent />`.
286
+ - O usa `const { myContent } = useIntlayer("myContent");` y `{{ myContent}}` / `<myContent/>` para desestructurar el contenido.
403
287
 
404
288
  ### (Opcional) Paso 6: Cambiar el idioma de tu contenido
405
289
 
406
290
  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
291
 
408
- Crea un componente para cambiar entre idiomas:
292
+ 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
293
 
410
294
  ```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
295
  <script setup lang="ts">
422
- import { ref, watch } from "vue";
423
- import { getLocaleName } from "intlayer";
296
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
424
297
  import { useLocale } from "vue-intlayer";
425
298
 
426
- // Obtener información del locale y la función setLocale
299
+ // Nuxt importa automáticamente useRoute
300
+ const route = useRoute();
427
301
  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
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>
443
317
  </template>
318
+ ```
444
319
 
445
- <style scoped>
446
- .locale-switcher {
447
- margin: 1rem 0;
448
- }
320
+ > 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
321
 
450
- select {
451
- padding: 0.5rem;
452
- border-radius: 0.25rem;
453
- border: 1px solid #ccc;
454
- }
455
- </style>
322
+ Luego, configura tu `app.vue` para usar layouts:
323
+
324
+ ```vue fileName="app.vue"
325
+ <template>
326
+ <NuxtLayout>
327
+ <NuxtPage />
328
+ </NuxtLayout>
329
+ </template>
456
330
  ```
457
331
 
458
- Luego, usa este componente en tus páginas o en el layout:
332
+ ### (Opcional) Paso 6b: Crear un Layout con Navegación
459
333
 
460
- ```vue fileName="app.vue"
334
+ 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:
335
+
336
+ ```vue fileName="layouts/default.vue"
461
337
  <script setup lang="ts">
462
- import { useIntlayer } from "vue-intlayer";
338
+ import Links from "~/components/Links.vue";
463
339
  import LocaleSwitcher from "~/components/LocaleSwitcher.vue";
464
-
465
- const content = useIntlayer("app"); // Crear archivo de declaración intlayer relacionado
466
340
  </script>
467
341
 
468
342
  <template>
@@ -471,15 +345,20 @@ const content = useIntlayer("app"); // Crear archivo de declaración intlayer re
471
345
  <LocaleSwitcher />
472
346
  </header>
473
347
  <main>
474
- <NuxtPage />
348
+ <slot />
475
349
  </main>
350
+
351
+ <Links href="/">Inicio</Links>
352
+ <Links href="/about">Acerca de</Links>
476
353
  </div>
477
354
  </template>
478
355
  ```
479
356
 
357
+ El componente `Links` (mostrado a continuación) asegura que los enlaces de navegación interna se localicen automáticamente.
358
+
480
359
  ### (Opcional) Paso 7: Añadir enrutamiento localizado a tu aplicación
481
360
 
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.
361
+ 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
362
 
484
363
  Ejemplo:
485
364
 
@@ -491,249 +370,281 @@ pages/
491
370
  └── index.vue → /contact, /fr/contact, /es/contact
492
371
  ```
493
372
 
494
- Para crear una página localizada, simplemente crea tus archivos Vue en el directorio `pages/`:
373
+ Para crear páginas localizadas, simplemente crea tus archivos Vue en el directorio `pages/`. Aquí tienes dos ejemplos de páginas:
374
+
375
+ **Página de inicio (`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
+ **Página Acerca de (`pages/about.vue`):**
495
400
 
496
401
  ```vue fileName="pages/about.vue"
497
402
  <script setup lang="ts">
498
403
  import { useIntlayer } from "vue-intlayer";
499
404
 
500
- const content = useIntlayer("about");
405
+ const content = useIntlayer("about-page");
406
+
407
+ useHead({
408
+ title: content.metaTitle.raw, // Usa .raw para acceso a cadena primitiva
409
+ meta: [
410
+ {
411
+ name: "description",
412
+ content: content.metaDescription.raw, // Usa .raw para acceder a la cadena primitiva
413
+ },
414
+ ],
415
+ });
501
416
  </script>
502
417
 
503
418
  <template>
504
- <div>
505
- <h1>{{ content.title }}</h1>
506
- <p>{{ content.description }}</p>
507
- </div>
419
+ <h1><content.title /></h1>
508
420
  </template>
509
421
  ```
510
422
 
511
- El módulo `nuxt-intlayer` automáticamente:
423
+ > 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.
424
+
425
+ El módulo `nuxt-intlayer` hará automáticamente:
512
426
 
513
- - Detectar el idioma preferido del usuario
514
- - Gestionar el cambio de idioma a través de la URL
427
+ - Detectar la configuración regional preferida del usuario
428
+ - Gestionar el cambio de idioma vía URL
515
429
  - Establecer el atributo `<html lang="">` apropiado
516
- - Administrar las cookies de idioma
430
+ - Manejar las cookies de idioma
517
431
  - Redirigir a los usuarios a la URL localizada correspondiente
518
432
 
519
433
  ### (Opcional) Paso 8: Crear un Componente de Enlace Localizado
520
434
 
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>
435
+ 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
436
 
437
+ ```vue fileName="components/Links.vue"
530
438
  <script setup lang="ts">
531
- import { computed } from "vue";
532
439
  import { getLocalizedUrl } from "intlayer";
533
440
  import { useLocale } from "vue-intlayer";
534
441
 
535
- const props = defineProps({
536
- to: {
537
- type: String,
538
- required: true,
539
- },
540
- });
442
+ interface Props {
443
+ href: string;
444
+ locale?: string;
445
+ }
446
+
447
+ const props = defineProps<Props>();
541
448
 
542
- const { locale } = useLocale();
449
+ const { locale: currentLocale } = useLocale();
543
450
 
544
- // Verificar si el enlace es externo
545
- const isExternalLink = computed(() => /^https?:\/\//.test(props.to || ""));
451
+ // Calcular la ruta final
452
+ const finalPath = computed(() => {
453
+ // 1. Verificar si el enlace es externo
454
+ const isExternal = /^https?:\/\//.test(props.href || "");
546
455
 
547
- // Crear un href localizado para enlaces internos
548
- const localizedHref = computed(() =>
549
- isExternalLink.value ? props.to : getLocalizedUrl(props.to, locale.value)
550
- );
456
+ // 2. Si es externo, devolver tal cual (NuxtLink maneja la generación de la etiqueta <a>)
457
+ if (isExternal) return props.href;
458
+
459
+ // 3. Si es interno, localiza la URL
460
+ const targetLocale = props.locale || currentLocale.value;
461
+ return getLocalizedUrl(props.href, targetLocale);
462
+ });
551
463
  </script>
464
+
465
+ <template>
466
+ <NuxtLink :to="finalPath" v-bind="$attrs">
467
+ <slot />
468
+ </NuxtLink>
469
+ </template>
552
470
  ```
553
471
 
554
472
  Luego usa este componente en toda tu aplicación:
555
473
 
556
- ```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
+
557
480
  <template>
558
481
  <div>
559
- <LocalizedLink to="/about">
560
- {{ content.aboutLink }}
561
- </LocalizedLink>
562
- <LocalizedLink to="/contact">
563
- {{ content.contactLink }}
564
- </LocalizedLink>
482
+ <header>
483
+ <LocaleSwitcher />
484
+ </header>
485
+ <main>
486
+ <slot />
487
+ </main>
488
+
489
+ <Links href="/">Inicio</Links>
490
+ <Links href="/about">Acerca de</Links>
565
491
  </div>
566
492
  </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
493
  ```
575
494
 
495
+ > Al usar `NuxtLink` con rutas localizadas, aseguras que:
496
+ >
497
+ > - Los motores de búsqueda puedan rastrear e indexar todas las versiones de idioma de tus páginas
498
+ > - Los usuarios puedan compartir URLs localizadas directamente
499
+ > - El historial del navegador funcione correctamente con URLs que tienen prefijos de locale
500
+
576
501
  ### (Opcional) Paso 9: Manejar Metadatos y SEO
577
502
 
578
- Nuxt ofrece excelentes capacidades de SEO. Puedes usar Intlayer para manejar metadatos localizados:
503
+ 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
504
 
580
505
  ```vue fileName="pages/about.vue"
581
506
  <script setup lang="ts">
582
- import { useSeoMeta } from "nuxt/app";
583
- import { getIntlayer } from "intlayer";
584
- import { useLocale } from "vue-intlayer";
507
+ import { useIntlayer } from "vue-intlayer";
585
508
 
586
- const { locale } = useLocale();
587
- const content = getIntlayer("about-meta", locale.value);
509
+ // useHead se auto-importa en Nuxt
510
+ const content = useIntlayer("about-page");
588
511
 
589
- useSeoMeta({
590
- title: content.title,
591
- description: content.description,
512
+ useHead({
513
+ title: content.metaTitle.raw, // Usa .raw para acceso a cadena primitiva
514
+ meta: [
515
+ {
516
+ name: "description",
517
+ content: content.metaDescription.raw, // Usar .raw para acceder al valor primitivo de cadena
518
+ },
519
+ ],
592
520
  });
593
521
  </script>
594
522
 
595
523
  <template>
596
- <div>
597
- <h1>{{ content.pageTitle }}</h1>
598
- <p>{{ content.pageContent }}</p>
599
- </div>
524
+ <h1><content.title /></h1>
600
525
  </template>
601
526
  ```
602
527
 
528
+ > Alternativamente, puedes usar la función `import { getIntlayer } from "intlayer"` para obtener el contenido sin reactividad de Vue.
529
+
530
+ > **Accediendo a los valores del contenido:**
531
+ >
532
+ > - Usa `.raw` para obtener el valor primitivo de cadena (no reactivo)
533
+ > - Usa `.value` para obtener el valor reactivo
534
+ > - Usa la sintaxis de componente `<content.key />` para soporte del Editor Visual
535
+
603
536
  Crea la declaración de contenido correspondiente:
604
537
 
605
- ```ts fileName="pages/about-meta.content.ts"
538
+ ```ts fileName="pages/about-page.content.ts" contentDeclarationFormat="typescript"
606
539
  import { t, type Dictionary } from "intlayer";
607
- import type { useSeoMeta } from "nuxt/app";
608
540
 
609
- const aboutMetaContent = {
610
- key: "about-meta",
541
+ const aboutPageContent = {
542
+ key: "about-page",
611
543
  content: {
612
- title: t({
544
+ metaTitle: t({
613
545
  en: "About Us - My Company",
614
546
  fr: "À Propos - Ma Société",
615
547
  es: "Acerca de Nosotros - Mi Empresa",
616
548
  }),
617
- description: t({
549
+ metaDescription: t({
618
550
  en: "Learn more about our company and our mission",
619
551
  fr: "En savoir plus sur notre société et notre mission",
620
552
  es: "Conozca más sobre nuestra empresa y nuestra misión",
621
553
  }),
554
+ title: t({
555
+ en: "About Us",
556
+ fr: "À Propos",
557
+ es: "Acerca de Nosotros",
558
+ }),
622
559
  },
623
- } satisfies Dictionary<Parameters<typeof useSeoMeta>[0]>;
560
+ } satisfies Dictionary;
624
561
 
625
- export default aboutMetaContent;
562
+ export default aboutPageContent;
626
563
  ```
627
564
 
628
- ```typescript fileName="pages/about-meta.content.mjs" contentDeclarationFormat="esm"
565
+ ```javascript fileName="pages/about-page.content.mjs" contentDeclarationFormat="esm"
629
566
  import { t } from "intlayer";
630
567
 
631
568
  /** @type {import('intlayer').Dictionary} */
632
- const aboutMetaContent = {
633
- key: "about-meta",
569
+ const aboutPageContent = {
570
+ key: "about-page",
634
571
  content: {
635
- title: t({
636
- zh: "关于我们 - 我的公司",
572
+ metaTitle: t({
637
573
  en: "About Us - My Company",
638
574
  fr: "À Propos - Ma Société",
639
575
  es: "Acerca de Nosotros - Mi Empresa",
640
576
  }),
641
- description: t({
642
- zh: "了解更多关于我们公司和我们的使命",
577
+ metaDescription: t({
643
578
  en: "Learn more about our company and our mission",
644
579
  fr: "En savoir plus sur notre société et notre mission",
645
580
  es: "Conozca más sobre nuestra empresa y nuestra misión",
646
581
  }),
582
+ title: t({
583
+ en: "About Us",
584
+ fr: "À Propos",
585
+ es: "Acerca de Nosotros",
586
+ }),
647
587
  },
648
588
  };
649
589
 
650
- export default aboutMetaContent;
590
+ export default aboutPageContent;
651
591
  ```
652
592
 
653
- ```typescript fileName="pages/about-meta.content.js" contentDeclarationFormat="cjs"
593
+ ```javascript fileName="pages/about-page.content.cjs" contentDeclarationFormat="commonjs"
654
594
  const { t } = require("intlayer");
655
595
 
656
596
  /** @type {import('intlayer').Dictionary} */
657
- const aboutMetaContent = {
658
- key: "about-meta",
597
+ const aboutPageContent = {
598
+ key: "about-page",
659
599
  content: {
660
- title: t({
661
- zh: "关于我们 - 我的公司",
600
+ metaTitle: t({
662
601
  en: "About Us - My Company",
663
602
  fr: "À Propos - Ma Société",
664
603
  es: "Acerca de Nosotros - Mi Empresa",
665
604
  }),
666
- description: t({
667
- zh: "了解更多关于我们公司和我们的使命",
605
+ metaDescription: t({
668
606
  en: "Learn more about our company and our mission",
669
607
  fr: "En savoir plus sur notre société et notre mission",
670
608
  es: "Conozca más sobre nuestra empresa y nuestra misión",
671
609
  }),
610
+ title: t({
611
+ en: "About Us",
612
+ fr: "À Propos",
613
+ es: "Acerca de Nosotros",
614
+ }),
672
615
  },
673
616
  };
674
617
 
675
- module.exports = aboutMetaContent;
618
+ module.exports = aboutPageContent;
676
619
  ```
677
620
 
678
- ```json fileName="pages/about-meta.content.json" contentDeclarationFormat="json"
621
+ ```json fileName="pages/about-page.content.json" contentDeclarationFormat="json"
679
622
  {
680
- "key": "about-meta",
623
+ "$schema": "https://intlayer.org/schema.json",
624
+ "key": "about-page",
681
625
  "content": {
682
- "title": {
626
+ "metaTitle": {
683
627
  "nodeType": "translation",
684
- "translations": {
685
- "zh": "关于我们 - 我的公司",
628
+ "translation": {
686
629
  "en": "About Us - My Company",
687
630
  "fr": "À Propos - Ma Société",
688
631
  "es": "Acerca de Nosotros - Mi Empresa"
689
632
  }
690
633
  },
691
- "description": {
634
+ "metaDescription": {
692
635
  "nodeType": "translation",
693
- "translations": {
694
- "zh": "了解更多关于我们公司和我们的使命",
636
+ "translation": {
695
637
  "en": "Learn more about our company and our mission",
696
638
  "fr": "En savoir plus sur notre société et notre mission",
697
639
  "es": "Conozca más sobre nuestra empresa y nuestra misión"
698
640
  }
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
641
  },
730
- "description": {
642
+ "title": {
731
643
  "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"
644
+ "translation": {
645
+ "en": "About Us",
646
+ "fr": "À Propos",
647
+ "es": "Acerca de Nosotros"
737
648
  }
738
649
  }
739
650
  }
@@ -744,18 +655,18 @@ module.exports = aboutMetaContent;
744
655
 
745
656
  Intlayer utiliza la ampliación de módulos para aprovechar las ventajas de TypeScript y fortalecer su base de código.
746
657
 
747
- ![texto alternativo](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
658
+ ![Autocompletado](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
748
659
 
749
- ![texto alternativo](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
660
+ ![Error de traducción](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
750
661
 
751
- Asegúrese de que su configuración de TypeScript incluya los tipos autogenerados.
662
+ Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerados.
752
663
 
753
664
  ```json5 fileName="tsconfig.json"
754
665
  {
755
- // ... Sus configuraciones existentes de TypeScript
666
+ // ... Tus configuraciones existentes de TypeScript
756
667
  "include": [
757
668
  // ... Tus configuraciones existentes de TypeScript
758
- ".intlayer/**/*.ts", // Incluir los tipos generados automáticamente
669
+ ".intlayer/**/*.ts", // Incluir los tipos autogenerados
759
670
  ],
760
671
  }
761
672
  ```
@@ -771,25 +682,23 @@ Para hacerlo, puedes agregar las siguientes instrucciones a tu archivo `.gitigno
771
682
  .intlayer
772
683
  ```
773
684
 
774
- ### Extensión de VS Code
685
+ ### Extensión para VS Code
775
686
 
776
687
  Para mejorar tu experiencia de desarrollo con Intlayer, puedes instalar la **Extensión oficial de Intlayer para VS Code**.
777
688
 
778
689
  [Instalar desde el Marketplace de VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
779
690
 
780
- Esta extensión proporciona:
691
+ Esta extensión ofrece:
781
692
 
782
693
  - **Autocompletado** para las claves de traducción.
783
694
  - **Detección de errores en tiempo real** para traducciones faltantes.
784
- - **Vistas previas en línea** del contenido traducido.
695
+ - **Previsualizaciones en línea** del contenido traducido.
785
696
  - **Acciones rápidas** para crear y actualizar traducciones fácilmente.
786
697
 
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).
698
+ 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
699
 
789
700
  ---
790
701
 
791
702
  ### Ir más allá
792
703
 
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
- ---
704
+ 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).