@intlayer/docs 6.0.1 → 6.0.2-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/cjs/blog.cjs.map +1 -1
  2. package/dist/cjs/common.cjs +6 -5
  3. package/dist/cjs/common.cjs.map +1 -1
  4. package/dist/cjs/generated/blog.entry.cjs +318 -1863
  5. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  6. package/dist/cjs/generated/docs.entry.cjs +1317 -6282
  7. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  8. package/dist/cjs/generated/frequentQuestions.entry.cjs +197 -1182
  9. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  10. package/dist/cjs/generated/legal.entry.cjs +43 -84
  11. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  12. package/dist/esm/blog.mjs.map +1 -1
  13. package/dist/esm/common.mjs +2 -5
  14. package/dist/esm/common.mjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +318 -1863
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +1317 -6282
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +197 -1182
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +43 -84
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/dist/types/blog.d.ts +1 -1
  24. package/dist/types/blog.d.ts.map +1 -1
  25. package/dist/types/common.d.ts +1 -1
  26. package/dist/types/common.d.ts.map +1 -1
  27. package/dist/types/generated/blog.entry.d.ts +1 -1
  28. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  29. package/dist/types/generated/docs.entry.d.ts +2 -1
  30. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  31. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -1
  32. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  33. package/dist/types/generated/legal.entry.d.ts +1 -1
  34. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  35. package/docs/ar/intlayer_CMS.md +261 -85
  36. package/docs/ar/releases/v6.md +273 -0
  37. package/docs/ar/roadmap.md +1 -3
  38. package/docs/ar/vs_code_extension.md +94 -63
  39. package/docs/de/intlayer_CMS.md +247 -65
  40. package/docs/de/releases/v6.md +298 -0
  41. package/docs/de/roadmap.md +1 -3
  42. package/docs/de/vs_code_extension.md +89 -58
  43. package/docs/en/configuration.md +9 -2
  44. package/docs/en/intlayer_CMS.md +205 -23
  45. package/docs/en/intlayer_cli.md +4 -4
  46. package/docs/en/intlayer_visual_editor.md +7 -6
  47. package/docs/en/intlayer_with_nextjs_14.md +17 -1
  48. package/docs/en/intlayer_with_nextjs_15.md +17 -1
  49. package/docs/en/releases/v6.md +268 -0
  50. package/docs/en/roadmap.md +1 -3
  51. package/docs/en/vs_code_extension.md +79 -49
  52. package/docs/en-GB/intlayer_CMS.md +216 -52
  53. package/docs/en-GB/releases/v6.md +297 -0
  54. package/docs/en-GB/roadmap.md +1 -3
  55. package/docs/en-GB/vs_code_extension.md +79 -48
  56. package/docs/es/intlayer_CMS.md +257 -84
  57. package/docs/es/releases/v6.md +274 -0
  58. package/docs/es/roadmap.md +1 -3
  59. package/docs/es/vs_code_extension.md +90 -60
  60. package/docs/fr/intlayer_CMS.md +250 -68
  61. package/docs/fr/releases/v6.md +274 -0
  62. package/docs/fr/roadmap.md +1 -3
  63. package/docs/fr/vs_code_extension.md +94 -63
  64. package/docs/hi/intlayer_CMS.md +253 -77
  65. package/docs/hi/releases/v6.md +273 -0
  66. package/docs/hi/roadmap.md +1 -3
  67. package/docs/hi/vs_code_extension.md +92 -61
  68. package/docs/it/intlayer_CMS.md +251 -73
  69. package/docs/it/releases/v6.md +273 -0
  70. package/docs/it/roadmap.md +1 -3
  71. package/docs/it/vs_code_extension.md +94 -63
  72. package/docs/ja/intlayer_CMS.md +282 -97
  73. package/docs/ja/releases/v6.md +273 -0
  74. package/docs/ja/roadmap.md +1 -3
  75. package/docs/ja/vs_code_extension.md +99 -68
  76. package/docs/ko/intlayer_CMS.md +267 -93
  77. package/docs/ko/releases/v6.md +273 -0
  78. package/docs/ko/roadmap.md +1 -3
  79. package/docs/ko/vs_code_extension.md +88 -57
  80. package/docs/pt/intlayer_CMS.md +261 -83
  81. package/docs/pt/releases/v6.md +273 -0
  82. package/docs/pt/roadmap.md +1 -3
  83. package/docs/pt/vs_code_extension.md +89 -58
  84. package/docs/ru/intlayer_CMS.md +240 -65
  85. package/docs/ru/releases/v6.md +274 -0
  86. package/docs/ru/roadmap.md +1 -1
  87. package/docs/ru/vs_code_extension.md +83 -52
  88. package/docs/tr/intlayer_CMS.md +278 -96
  89. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  90. package/docs/tr/intlayer_with_tanstack.md +3 -0
  91. package/docs/tr/releases/v6.md +273 -0
  92. package/docs/tr/roadmap.md +1 -1
  93. package/docs/tr/vs_code_extension.md +100 -71
  94. package/docs/zh/intlayer_CMS.md +257 -76
  95. package/docs/zh/releases/v6.md +273 -0
  96. package/docs/zh/roadmap.md +1 -3
  97. package/docs/zh/vs_code_extension.md +99 -68
  98. package/package.json +9 -8
  99. package/src/blog.ts +1 -1
  100. package/src/common.ts +2 -6
  101. package/src/generated/blog.entry.ts +323 -1864
  102. package/src/generated/docs.entry.ts +1317 -6278
  103. package/src/generated/frequentQuestions.entry.ts +202 -1183
  104. package/src/generated/legal.entry.ts +48 -85
@@ -1,11 +1,11 @@
1
1
  ---
2
- createdAt: 2024-08-11
3
- updatedAt: 2025-06-29
4
- title: CMS Intlayer | Externe tu contenido en el CMS Intlayer
5
- description: Externe tu contenido en el CMS Intlayer para delegar la gestión de tu contenido a tu equipo.
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
+ title: Intlayer CMS | Externaliza tu contenido en el Intlayer CMS
5
+ description: Externaliza tu contenido en el Intlayer CMS para delegar la gestión de tu contenido a tu equipo.
6
6
  keywords:
7
7
  - CMS
8
- - Editor visual
8
+ - Editor Visual
9
9
  - Internacionalización
10
10
  - Documentación
11
11
  - Intlayer
@@ -21,27 +21,27 @@ youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
21
21
 
22
22
  # Documentación del Sistema de Gestión de Contenidos (CMS) de Intlayer
23
23
 
24
- <iframe title="Visual Editor + CMS for Your Web App: Intlayer Explained" 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/UDDTnirwi_4?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
24
+ <iframe title="Editor Visual + CMS para tu Aplicación Web: Explicación de 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/UDDTnirwi_4?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
25
25
 
26
- El CMS de Intlayer es una aplicación que te permite externalizar el contenido de un proyecto de Intlayer.
26
+ El CMS de Intlayer es una aplicación que te permite externalizar el contenido de un proyecto Intlayer.
27
27
 
28
- Para ello, Intlayer introduce el concepto de 'diccionarios remotos'.
28
+ Para ello, Intlayer introduce el concepto de 'diccionarios distantes'.
29
29
 
30
30
  ![Interfaz del CMS de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/assets/CMS.png)
31
31
 
32
- ## Entendiendo los diccionarios remotos
32
+ ## Entendiendo los diccionarios distantes
33
33
 
34
- Intlayer diferencia entre diccionarios 'locales' y 'remotos'.
34
+ Intlayer diferencia entre diccionarios 'locales' y 'distantes'.
35
35
 
36
- - Un diccionario 'local' es un diccionario que se declara en tu proyecto de Intlayer. Como el archivo de declaración de un botón o tu barra de navegación. Externalizar este contenido no tiene sentido en este caso porque este contenido no está destinado a cambiar con frecuencia.
36
+ - Un diccionario 'local' es un diccionario que se declara en tu proyecto Intlayer. Como el archivo de declaración de un botón, o tu barra de navegación. Externalizar tu contenido no tiene sentido en este caso porque se supone que este contenido no debe cambiar con frecuencia.
37
37
 
38
- - Un diccionario 'remoto' es un diccionario que se gestiona a través del CMS de Intlayer. Puede ser útil para permitir que tu equipo gestione el contenido directamente en tu sitio web, y también tiene como objetivo utilizar funciones de pruebas A/B y optimización automática de SEO.
38
+ - Un diccionario 'distante' es un diccionario que se gestiona a través del CMS de Intlayer. Puede ser útil para permitir que tu equipo gestione el contenido directamente en tu sitio web, y también tiene como objetivo utilizar funciones de pruebas A/B y optimización automática para SEO.
39
39
 
40
40
  ## Editor visual vs CMS
41
41
 
42
- El [Editor Visual de Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) es una herramienta que te permite gestionar tu contenido en un editor visual para diccionarios locales. Una vez realizado un cambio, el contenido será reemplazado en la base de código. Esto significa que la aplicación se reconstruirá y la página se recargará para mostrar el nuevo contenido.
42
+ El editor [Intlayer Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_visual_editor.md) es una herramienta que te permite gestionar tu contenido en un editor visual para diccionarios locales. Una vez que se realiza un cambio, el contenido será reemplazado en la base de código. Eso significa que la aplicación se reconstruirá y la página se recargará para mostrar el nuevo contenido.
43
43
 
44
- En contraste, el CMS de Intlayer es una herramienta que te permite gestionar tu contenido en un editor visual para diccionarios remotos. Una vez realizado un cambio, el contenido **no** impactará tu base de código. Y el sitio web mostrará automáticamente el contenido cambiado.
44
+ En contraste, el CMS de Intlayer es una herramienta que te permite gestionar tu contenido en un editor visual para diccionarios distantes. Una vez que se realiza un cambio, el contenido **no** afectará tu base de código. Y el sitio web mostrará automáticamente el contenido modificado.
45
45
 
46
46
  ## Integración
47
47
 
@@ -67,20 +67,20 @@ En tu archivo de configuración de Intlayer, puedes personalizar los ajustes del
67
67
  import type { IntlayerConfig } from "intlayer";
68
68
 
69
69
  const config: IntlayerConfig = {
70
- // ... otros ajustes de configuración
70
+ // ... otras configuraciones
71
71
  editor: {
72
72
  /**
73
73
  * Requerido
74
74
  *
75
75
  * La URL de la aplicación.
76
- * Esta es la URL objetivo del editor visual.
76
+ * Esta es la URL a la que apunta el editor visual.
77
77
  */
78
78
  applicationURL: process.env.INTLAYER_APPLICATION_URL,
79
79
 
80
80
  /**
81
81
  * Requerido
82
82
  *
83
- * Se requieren el ID del cliente y el secreto del cliente para habilitar el editor.
83
+ * El ID de cliente y el secreto de cliente son necesarios para habilitar el editor.
84
84
  * Permiten identificar al usuario que está editando el contenido.
85
85
  * Se pueden obtener creando un nuevo cliente en el Panel de Intlayer - Proyectos (https://intlayer.org/dashboard/projects).
86
86
  * clientId: process.env.INTLAYER_CLIENT_ID,
@@ -92,20 +92,20 @@ const config: IntlayerConfig = {
92
92
  /**
93
93
  * Opcional
94
94
  *
95
- * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes establecer la URL del CMS.
95
+ * En caso de que esté alojando el Intlayer CMS por su cuenta, puede configurar la URL del CMS.
96
96
  *
97
- * La URL del CMS de Intlayer.
98
- * Por defecto, está configurada como https://intlayer.org
97
+ * La URL del Intlayer CMS.
98
+ * Por defecto, está configurada a https://intlayer.org
99
99
  */
100
100
  cmsURL: process.env.INTLAYER_CMS_URL,
101
101
 
102
102
  /**
103
103
  * Opcional
104
104
  *
105
- * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes establecer la URL del backend.
105
+ * En caso de que esté alojando el Intlayer CMS por su cuenta, puede configurar la URL del backend.
106
106
  *
107
- * La URL del CMS de Intlayer.
108
- * Por defecto, está configurada como https://back.intlayer.org
107
+ * La URL del Intlayer CMS.
108
+ * Por defecto, está configurada a https://back.intlayer.org
109
109
  */
110
110
  backendURL: process.env.INTLAYER_BACKEND_URL,
111
111
  },
@@ -117,20 +117,20 @@ export default config;
117
117
  ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
118
118
  /** @type {import('intlayer').IntlayerConfig} */
119
119
  const config = {
120
- // ... otros ajustes de configuración
120
+ // ... otras configuraciones
121
121
  editor: {
122
122
  /**
123
123
  * Requerido
124
124
  *
125
125
  * La URL de la aplicación.
126
- * Esta es la URL objetivo del editor visual.
126
+ * Esta es la URL a la que apunta el editor visual.
127
127
  */
128
128
  applicationURL: process.env.INTLAYER_APPLICATION_URL,
129
129
 
130
130
  /**
131
131
  * Requerido
132
132
  *
133
- * Se requieren el ID del cliente y el secreto del cliente para habilitar el editor.
133
+ * El ID de cliente y el secreto de cliente son necesarios para habilitar el editor.
134
134
  * Permiten identificar al usuario que está editando el contenido.
135
135
  * Se pueden obtener creando un nuevo cliente en el Panel de Intlayer - Proyectos (https://intlayer.org/dashboard/projects).
136
136
  * clientId: process.env.INTLAYER_CLIENT_ID,
@@ -142,20 +142,20 @@ const config = {
142
142
  /**
143
143
  * Opcional
144
144
  *
145
- * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes establecer la URL del CMS.
145
+ * En caso de que esté alojando el Intlayer CMS por su cuenta, puede configurar la URL del CMS.
146
146
  *
147
147
  * La URL del CMS de Intlayer.
148
- * Por defecto, está configurada como https://intlayer.org
148
+ * Por defecto, está configurada a https://intlayer.org
149
149
  */
150
150
  cmsURL: process.env.INTLAYER_CMS_URL,
151
151
 
152
152
  /**
153
153
  * Opcional
154
154
  *
155
- * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes establecer la URL del backend.
155
+ * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes configurar la URL del backend.
156
156
  *
157
157
  * La URL del CMS de Intlayer.
158
- * Por defecto, está configurada como https://back.intlayer.org
158
+ * Por defecto, está configurada a https://back.intlayer.org
159
159
  */
160
160
  backendURL: process.env.INTLAYER_BACKEND_URL,
161
161
  },
@@ -167,20 +167,20 @@ export default config;
167
167
  ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
168
168
  /** @type {import('intlayer').IntlayerConfig} */
169
169
  const config = {
170
- // ... otros ajustes de configuración
170
+ // ... otras configuraciones
171
171
  editor: {
172
172
  /**
173
173
  * Requerido
174
174
  *
175
175
  * La URL de la aplicación.
176
- * Esta es la URL objetivo del editor visual.
176
+ * Esta es la URL a la que apunta el editor visual.
177
177
  */
178
178
  applicationURL: process.env.INTLAYER_APPLICATION_URL,
179
179
 
180
180
  /**
181
181
  * Requerido
182
182
  *
183
- * Se requieren el ID del cliente y el secreto del cliente para habilitar el editor.
183
+ * El ID de cliente y el secreto de cliente son necesarios para habilitar el editor.
184
184
  * Permiten identificar al usuario que está editando el contenido.
185
185
  * Se pueden obtener creando un nuevo cliente en el Panel de Intlayer - Proyectos (https://intlayer.org/dashboard/projects).
186
186
  * clientId: process.env.INTLAYER_CLIENT_ID,
@@ -192,19 +192,20 @@ const config = {
192
192
  /**
193
193
  * Opcional
194
194
  *
195
- * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes establecer la URL del CMS.
195
+ * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes configurar la URL del CMS.
196
196
  *
197
197
  * La URL del CMS de Intlayer.
198
- * Por defecto, está configurada como https://intlayer.org
198
+ * Por defecto, está configurada a https://intlayer.org
199
+ */
199
200
  cmsURL: process.env.INTLAYER_CMS_URL,
200
201
 
201
202
  /**
202
203
  * Opcional
203
204
  *
204
- * En caso de que estés alojando el CMS de Intlayer por tu cuenta, puedes establecer la URL del backend.
205
+ * En caso de que estés alojando el Intlayer CMS por tu cuenta, puedes configurar la URL del backend.
205
206
  *
206
- * La URL del CMS de Intlayer.
207
- * Por defecto, está configurada como https://back.intlayer.org
207
+ * La URL del Intlayer CMS.
208
+ * Por defecto, está configurada en https://back.intlayer.org
208
209
  */
209
210
  backendURL: process.env.INTLAYER_BACKEND_URL,
210
211
  },
@@ -217,11 +218,11 @@ module.exports = config;
217
218
 
218
219
  > Para ver todos los parámetros disponibles, consulta la [documentación de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/configuration.md).
219
220
 
220
- ## Usando el CMS
221
+ ## Uso del CMS
221
222
 
222
- ### Sube tu configuración
223
+ ### Enviar tu configuración
223
224
 
224
- Para configurar el CMS de Intlayer, puedes usar los comandos del [CLI de Intlayer](https://github.com/aymericzip/intlayer/tree/main/docs/es/intlayer_cli.md).
225
+ Para configurar el Intlayer CMS, puedes usar los comandos del [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/es/intlayer_cli.md).
225
226
 
226
227
  ```bash
227
228
  npx intlayer config push
@@ -233,11 +234,11 @@ npx intlayer config push
233
234
  npx intlayer config push --env production
234
235
  ```
235
236
 
236
- Este comando sube tu configuración al CMS de Intlayer.
237
+ Este comando sube tu configuración al Intlayer CMS.
237
238
 
238
- ### Sube un diccionario
239
+ ### Subir un diccionario
239
240
 
240
- Para transformar tus diccionarios locales en un diccionario remoto, puedes usar los comandos del [CLI de Intlayer](https://github.com/aymericzip/intlayer/tree/main/docs/es/intlayer_cli.md).
241
+ Para transformar tus diccionarios de localización en un diccionario remoto, puedes usar los comandos del [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/es/intlayer_cli.md).
241
242
 
242
243
  ```bash
243
244
  npx intlayer dictionary push -d my-first-dictionary-key
@@ -249,37 +250,52 @@ npx intlayer dictionary push -d my-first-dictionary-key
249
250
  npx intlayer dictionary push -d my-first-dictionary-key --env production
250
251
  ```
251
252
 
252
- Este comando sube tus diccionarios de contenido iniciales, haciéndolos disponibles para su obtención y edición asincrónica a través de la plataforma de Intlayer.
253
+ Este comando sube tus diccionarios de contenido inicial, haciéndolos disponibles para su obtención y edición asíncrona a través de la plataforma Intlayer.
254
+
255
+ ### Editar el diccionario
253
256
 
254
- ### Edita el diccionario
257
+ Luego podrás ver y gestionar tu diccionario en el [Intlayer CMS](https://intlayer.org/dashboard/content).
255
258
 
256
- Luego podrás ver y gestionar tu diccionario en el [CMS de Intlayer](https://intlayer.org/dashboard/content).
259
+ ## Sincronización en vivo
257
260
 
258
- ## Recarga en caliente
261
+ La sincronización en vivo permite que tu aplicación refleje los cambios de contenido del CMS en tiempo de ejecución. No se requiere reconstrucción ni redepliegue. Cuando está habilitada, las actualizaciones se transmiten a un servidor de sincronización en vivo que actualiza los diccionarios que tu aplicación lee.
259
262
 
260
- El CMS de Intlayer es capaz de recargar en caliente los diccionarios cuando se detecta un cambio.
263
+ > Live Sync requiere una conexión continua al servidor y está disponible en el plan enterprise.
261
264
 
262
- Sin la recarga en caliente, será necesario un nuevo build de la aplicación para mostrar el nuevo contenido.
263
- Al activar la configuración [`liveSync`](https://intlayer.org/doc/concept/configuration#editor-configuration), la aplicación reemplazará automáticamente el contenido actualizado cuando sea detectado.
265
+ Habilita Live Sync actualizando tu configuración de Intlayer:
264
266
 
265
267
  ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
266
268
  import type { IntlayerConfig } from "intlayer";
267
269
 
268
270
  const config: IntlayerConfig = {
269
- // ... otros ajustes de configuración
271
+ // ... otras configuraciones
270
272
  editor: {
271
- // ... otros ajustes de configuración
272
-
273
273
  /**
274
- * Indica si la aplicación debe recargar en caliente las configuraciones locales cuando se detecta un cambio.
275
- * Por ejemplo, cuando se agrega o actualiza un nuevo diccionario, la aplicación actualizará el contenido para mostrar en la página.
274
+ * Habilita la recarga en caliente de las configuraciones de localización cuando se detectan cambios.
275
+ * Por ejemplo, cuando se añade o actualiza un diccionario, la aplicación actualiza
276
+ * el contenido mostrado en la página.
276
277
  *
277
- * Debido a que la recarga en caliente necesita una conexión continua con el servidor, solo está disponible para clientes del plan `enterprise`.
278
+ * Debido a que la recarga en caliente requiere una conexión continua al servidor,
279
+ * solo está disponible para clientes del plan `enterprise`.
278
280
  *
279
281
  * Por defecto: false
280
282
  */
281
283
  liveSync: true,
282
284
  },
285
+ build: {
286
+ /**
287
+ * Controla cómo se importan los diccionarios:
288
+ *
289
+ * - "live": Los diccionarios se obtienen dinámicamente usando la API de Live Sync.
290
+ * Reemplaza useIntlayer por useDictionaryDynamic.
291
+ *
292
+ * Nota: El modo live usa la API de Live Sync para obtener los diccionarios. Si la llamada a la API
293
+ * falla, los diccionarios se importan dinámicamente.
294
+ * Nota: Solo los diccionarios con contenido remoto y la bandera "live" usan el modo live.
295
+ * Los demás usan el modo dinámico para mejorar el rendimiento.
296
+ */
297
+ importMode: "live",
298
+ },
283
299
  };
284
300
 
285
301
  export default config;
@@ -288,20 +304,34 @@ export default config;
288
304
  ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
289
305
  /** @type {import('intlayer').IntlayerConfig} */
290
306
  const config = {
291
- // ... otros ajustes de configuración
307
+ // ... otras configuraciones
292
308
  editor: {
293
- // ... otros ajustes de configuración
294
-
295
309
  /**
296
- * Indica si la aplicación debe recargar en caliente las configuraciones locales cuando se detecta un cambio.
297
- * Por ejemplo, cuando se agrega o actualiza un nuevo diccionario, la aplicación actualizará el contenido para mostrar en la página.
310
+ * Habilita la recarga en caliente de las configuraciones de localización cuando se detectan cambios.
311
+ * Por ejemplo, cuando se añade o actualiza un diccionario, la aplicación actualiza
312
+ * el contenido mostrado en la página.
298
313
  *
299
- * Debido a que la recarga en caliente necesita una conexión continua con el servidor, solo está disponible para clientes del plan `enterprise`.
314
+ * Debido a que la recarga en caliente requiere una conexión continua con el servidor,
315
+ * solo está disponible para clientes del plan `enterprise`.
300
316
  *
301
317
  * Por defecto: false
302
318
  */
303
319
  liveSync: true,
304
320
  },
321
+ build: {
322
+ /**
323
+ * Controla cómo se importan los diccionarios:
324
+ *
325
+ * - "live": Los diccionarios se obtienen dinámicamente usando la API de Live Sync.
326
+ * Reemplaza useIntlayer por useDictionaryDynamic.
327
+ *
328
+ * Nota: El modo live usa la API de Live Sync para obtener los diccionarios. Si la llamada a la API
329
+ * falla, los diccionarios se importan dinámicamente.
330
+ * Nota: Solo los diccionarios con contenido remoto y la bandera "live" usan el modo en vivo.
331
+ * Otros usan el modo dinámico para mejorar el rendimiento.
332
+ */
333
+ importMode: "live",
334
+ },
305
335
  };
306
336
 
307
337
  export default config;
@@ -310,45 +340,188 @@ export default config;
310
340
  ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
311
341
  /** @type {import('intlayer').IntlayerConfig} */
312
342
  const config = {
313
- // ... otros ajustes de configuración
343
+ // ... otras configuraciones
314
344
  editor: {
315
- // ... otros ajustes de configuración
316
-
317
345
  /**
318
- * Indica si la aplicación debe recargar en caliente las configuraciones locales cuando se detecta un cambio.
319
- * Por ejemplo, cuando se agrega o actualiza un nuevo diccionario, la aplicación actualizará el contenido para mostrar en la página.
346
+ * Habilita la recarga en caliente de las configuraciones de localización cuando se detectan cambios.
347
+ * Por ejemplo, cuando se añade o actualiza un diccionario, la aplicación actualiza
348
+ * el contenido mostrado en la página.
320
349
  *
321
- * Debido a que la recarga en caliente necesita una conexión continua con el servidor, solo está disponible para clientes del plan `enterprise`.
350
+ * Debido a que la recarga en caliente requiere una conexión continua con el servidor,
351
+ * solo está disponible para clientes del plan `enterprise`.
322
352
  *
323
353
  * Por defecto: false
324
354
  */
325
355
  liveSync: true,
356
+
357
+ /**
358
+ * El puerto del servidor Live Sync.
359
+ *
360
+ * Predeterminado: 4000
361
+ */
362
+ liveSyncPort: 4000,
363
+
364
+ /**
365
+ * La URL del servidor Live Sync.
366
+ *
367
+ * Predeterminado: http://localhost:{liveSyncPort}
368
+ */
369
+ liveSyncURL: "https://live.example.com",
370
+ },
371
+ build: {
372
+ /**
373
+ * Controla cómo se importan los diccionarios:
374
+ *
375
+ * - "live": Los diccionarios se obtienen dinámicamente usando la API de Live Sync.
376
+ * Reemplaza useIntlayer por useDictionaryDynamic.
377
+ *
378
+ * Nota: El modo en vivo usa la API de Live Sync para obtener los diccionarios. Si la llamada a la API
379
+ * falla, los diccionarios se importan dinámicamente.
380
+ * Nota: Solo los diccionarios con contenido remoto y la bandera "live" usan el modo en vivo.
381
+ * Otros usan el modo dinámico para mejorar el rendimiento.
382
+ */
383
+ importMode: "live",
326
384
  },
327
385
  };
328
386
 
329
387
  module.exports = config;
330
388
  ```
331
389
 
332
- La recarga en caliente reemplaza el contenido tanto en el lado del servidor como en el cliente.
390
+ Inicie el servidor Live Sync para envolver su aplicación:
391
+
392
+ Ejemplo usando Next.js:
393
+
394
+ ```json5 fileName="package.json"
395
+ {
396
+ "scripts": {
397
+ // ... otros scripts
398
+ "build": "next build",
399
+ "dev": "next dev",
400
+ "start": "npx intlayer live --process 'next start'",
401
+ },
402
+ }
403
+ ```
404
+
405
+ Ejemplo usando Vite:
406
+
407
+ ```json5 fileName="package.json"
408
+ {
409
+ "scripts": {
410
+ // ... otros scripts
411
+ "build": "vite build",
412
+ "dev": "vite dev",
413
+ "start": "npx intlayer live --process 'vite start'",
414
+ },
415
+ }
416
+ ```
417
+
418
+ El servidor Live Sync envuelve su aplicación y aplica automáticamente el contenido actualizado a medida que llega.
419
+
420
+ Para recibir notificaciones de cambios desde el CMS, el servidor Live Sync mantiene una conexión SSE con el backend. Cuando el contenido cambia en el CMS, el backend envía la actualización al servidor Live Sync, que escribe los nuevos diccionarios. Su aplicación reflejará la actualización en la siguiente navegación o recarga del navegador, sin necesidad de reconstrucción.
421
+
422
+ Diagrama de flujo (CMS/Backend -> Servidor Live Sync -> Servidor de Aplicación -> Frontend):
423
+
424
+ ![Esquema de lógica de Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
425
+
426
+ Cómo funciona:
427
+
428
+ ![Esquema de flujo Live Sync CMS/Backend/Servidor Live Sync/Servidor de Aplicación/Frontend](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
429
+
430
+ ### Flujo de trabajo de desarrollo (local)
431
+
432
+ docs/ko/intlayer_CMS.md
433
+
434
+ - En desarrollo, todos los diccionarios remotos se obtienen cuando la aplicación se inicia, para que puedas probar actualizaciones rápidamente.
435
+ - Para probar Live Sync localmente con Next.js, envuelve tu servidor de desarrollo:
436
+
437
+ ```json5 fileName="package.json"
438
+ {
439
+ "scripts": {
440
+ // ... otros scripts
441
+ "dev": "npx intlayer live --process 'next dev'",
442
+ // "dev": "npx intlayer live --process 'vite dev'", // Para Vite
443
+ },
444
+ }
445
+ ```
446
+
447
+ Habilita la optimización para que Intlayer aplique las transformaciones de importación en vivo durante el desarrollo:
448
+
449
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
450
+ import type { IntlayerConfig } from "intlayer";
451
+
452
+ const config: IntlayerConfig = {
453
+ editor: {
454
+ applicationURL: "http://localhost:5173",
455
+ liveSyncURL: "http://localhost:4000",
456
+ liveSync: true,
457
+ },
458
+ build: {
459
+ optimize: true,
460
+ importMode: "live",
461
+ },
462
+ };
463
+
464
+ export default config;
465
+ ```
466
+
467
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
468
+ /** @type {import('intlayer').IntlayerConfig} */
469
+ const config = {
470
+ editor: {
471
+ applicationURL: "http://localhost:5173",
472
+ liveSyncURL: "http://localhost:4000",
473
+ liveSync: true,
474
+ },
475
+ build: {
476
+ optimize: true,
477
+ importMode: "live",
478
+ },
479
+ };
480
+
481
+ export default config;
482
+ ```
483
+
484
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
485
+ /** @type {import('intlayer').IntlayerConfig} */
486
+ const config = {
487
+ editor: {
488
+ applicationURL: "http://localhost:5173",
489
+ liveSyncURL: "http://localhost:4000",
490
+ liveSync: true,
491
+ },
492
+ build: {
493
+ optimize: true,
494
+ importMode: "live",
495
+ },
496
+ };
497
+
498
+ module.exports = config;
499
+ ```
500
+
501
+ Esta configuración envuelve tu servidor de desarrollo con el servidor Live Sync, obtiene los diccionarios remotos al iniciar y transmite actualizaciones desde el CMS vía SSE. Actualiza la página para ver los cambios.
502
+
503
+ Notas y restricciones:
333
504
 
334
- - En el lado del servidor, debes asegurarte de que el proceso de la aplicación tenga acceso de escritura al directorio `.intlayer/dictionaries`.
335
- - En el lado del cliente, la recarga en caliente permite que la aplicación recargue el contenido en el navegador sin necesidad de recargar la página. Sin embargo, esta función solo está disponible para componentes de cliente.
336
- > Debido a que la recarga en caliente necesita una conexión continua con el servidor utilizando un `EventListener`, solo está disponible para clientes del plan `enterprise`.
505
+ - Añade el origen de live sync a la política de seguridad de tu sitio (CSP). Asegúrate de que la URL de live sync esté permitida en `connect-src` (y en `frame-ancestors` si es relevante).
506
+ - Live Sync no funciona con salida estática. Para Next.js, la página debe ser dinámica para recibir actualizaciones en tiempo de ejecución (por ejemplo, usa `generateStaticParams`, `generateMetadata`, `getServerSideProps` o `getStaticProps` adecuadamente para evitar restricciones de solo estático).
337
507
 
338
- ## Depuración
508
+ Esta configuración envuelve tu servidor de desarrollo con el servidor Live Sync, obtiene diccionarios remotos al iniciar y transmite actualizaciones desde el CMS vía SSE. Actualiza la página para ver los cambios.
339
509
 
340
- Si encuentras algún problema con el CMS, verifica lo siguiente:
510
+ Notas y restricciones:
341
511
 
342
- - La aplicación está en ejecución.
512
+ - Añade el origen de live sync a la política de seguridad de tu sitio (CSP). Asegúrate de que la URL de live sync esté permitida en `connect-src` (y en `frame-ancestors` si es relevante).
513
+ - Live Sync no funciona con salida estática. Para Next.js, la página debe ser dinámica para recibir actualizaciones en tiempo de ejecución (por ejemplo, usa `generateStaticParams`, `generateMetadata`, `getServerSideProps` o `getStaticProps` adecuadamente para evitar restricciones de solo estático).
514
+ - La URL de la aplicación debe coincidir con la que configuraste en la configuración del editor (`applicationURL`).
515
+ - La URL del CMS
343
516
 
344
- - La configuración del [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) está correctamente establecida en tu archivo de configuración de Intlayer.
345
- - Campos requeridos:
346
- - La URL de la aplicación debe coincidir con la que configuraste en la configuración del editor (`applicationURL`).
347
- - La URL del CMS.
517
+ - Asegúrate de que la configuración del proyecto se haya enviado al CMS de Intlayer.
348
518
 
349
- - Asegúrate de que la configuración del proyecto fue subida al CMS de Intlayer.
350
- - El editor visual utiliza un iframe para mostrar tu sitio web. Asegúrate de que la Política de Seguridad de Contenidos (CSP) de tu sitio web permita la URL del CMS como `frame-ancestors` ('https://intlayer.org' por defecto). Revisa la consola del editor para detectar cualquier error.
519
+ - El editor visual utiliza un iframe para mostrar tu sitio web. Asegúrate de que la Política de Seguridad de Contenidos (CSP) de tu sitio web permita la URL del CMS como `frame-ancestors` ('https://intlayer.org' por defecto). Revisa la consola del editor para cualquier error.
351
520
 
352
- ## Historial del documento
521
+ ## Historial de Documentación
353
522
 
354
- - 5.5.10 - 2025-06-29: Historial inicial
523
+ | Versión | Fecha | Cambios |
524
+ | ------- | ---------- | ----------------------------------------------- |
525
+ | 6.0.1 | 2025-09-22 | Añadida documentación de sincronización en vivo |
526
+ | 6.0.0 | 2025-09-04 | Reemplazado el campo `hotReload` por `liveSync` |
527
+ | 5.5.10 | 2025-06-29 | Historial inicial |