@intlayer/docs 8.10.0-canary.0 → 8.10.0-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ar/dictionary/markdown.md +402 -82
- package/docs/de/dictionary/markdown.md +269 -98
- package/docs/en/dictionary/markdown.md +221 -25
- package/docs/en-GB/dictionary/markdown.md +351 -67
- package/docs/es/dictionary/markdown.md +286 -115
- package/docs/fr/dictionary/markdown.md +292 -121
- package/docs/hi/dictionary/markdown.md +366 -81
- package/docs/id/dictionary/markdown.md +368 -83
- package/docs/it/dictionary/markdown.md +288 -122
- package/docs/ko/dictionary/markdown.md +297 -126
- package/docs/pl/dictionary/markdown.md +276 -106
- package/docs/pt/dictionary/markdown.md +276 -106
- package/docs/ru/dictionary/markdown.md +70 -505
- package/docs/tr/dictionary/markdown.md +291 -122
- package/docs/uk/dictionary/markdown.md +377 -92
- package/docs/vi/dictionary/markdown.md +377 -92
- package/docs/zh/dictionary/markdown.md +284 -117
- package/package.json +7 -7
- package/docs/ja/dictionary/markdown.md +0 -666
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
createdAt: 2025-02-07
|
|
3
3
|
updatedAt: 2026-05-19
|
|
4
4
|
title: Markdown
|
|
5
|
-
description: Aprenda
|
|
5
|
+
description: Aprenda cómo declarar y usar contenido Markdown en su sitio web multilingüe con Intlayer. Siga los pasos de esta documentación en línea para integrar Markdown sin problemas en su proyecto.
|
|
6
6
|
keywords:
|
|
7
7
|
- Markdown
|
|
8
8
|
- Internacionalización
|
|
@@ -19,49 +19,49 @@ slugs:
|
|
|
19
19
|
history:
|
|
20
20
|
- version: 8.10.0
|
|
21
21
|
date: 2026-05-19
|
|
22
|
-
changes: "
|
|
22
|
+
changes: "Se agregó soporte para archivos `.content.md`"
|
|
23
23
|
- version: 8.5.0
|
|
24
24
|
date: 2026-03-24
|
|
25
|
-
changes: "
|
|
25
|
+
changes: "Se agregó el objeto plugin `intlayerMarkdown`; use `app.use(intlayerMarkdown)` en lugar de `app.use(installIntlayerMarkdown)`"
|
|
26
26
|
- version: 8.5.0
|
|
27
27
|
date: 2026-03-24
|
|
28
|
-
changes: "
|
|
28
|
+
changes: "Se movió la importación de `{{framework}}-intlayer` a `{{framework}}-intlayer/markdown`"
|
|
29
29
|
- version: 8.0.0
|
|
30
30
|
date: 2026-01-22
|
|
31
|
-
changes: "
|
|
31
|
+
changes: "Se agregó la utilidad MarkdownRenderer / useMarkdownRenderer / renderMarkdown y la opción forceInline"
|
|
32
32
|
- version: 8.0.0
|
|
33
33
|
date: 2026-01-18
|
|
34
34
|
changes: "Decoración automática de contenido markdown, soporte para MDX y SSR"
|
|
35
35
|
- version: 5.5.10
|
|
36
36
|
date: 2025-06-29
|
|
37
|
-
changes: "
|
|
37
|
+
changes: "Historial inicializado"
|
|
38
38
|
---
|
|
39
39
|
|
|
40
40
|
# Markdown / Contenido de Texto Enriquecido
|
|
41
41
|
|
|
42
|
-
Intlayer admite contenido de texto enriquecido definido mediante la sintaxis Markdown. Esto le permite escribir y mantener fácilmente contenido con
|
|
42
|
+
Intlayer admite contenido de texto enriquecido definido mediante la sintaxis Markdown. Esto le permite escribir y mantener fácilmente contenido con formato enriquecido, como blogs, artículos y mucho más.
|
|
43
43
|
|
|
44
44
|
## Declarar Contenido Markdown
|
|
45
45
|
|
|
46
|
-
Puede declarar contenido Markdown
|
|
46
|
+
Puede declarar contenido Markdown usando la función `md` o simplemente como una cadena de texto (si contiene sintaxis Markdown).
|
|
47
47
|
|
|
48
48
|
<Tabs>
|
|
49
49
|
<Tab label=".content.md" value=".content.md">
|
|
50
50
|
A partir de la versión `8.10.0`, puede declarar contenido Markdown directamente en archivos `.content.md`. Intlayer detectará y analizará automáticamente el contenido Markdown.
|
|
51
51
|
|
|
52
|
-
```md fileName="markdown-file.
|
|
52
|
+
```md fileName="markdown-file.en.content.md"
|
|
53
53
|
---
|
|
54
54
|
key: my-markdown-content
|
|
55
55
|
description: Mi contenido
|
|
56
|
-
locale:
|
|
56
|
+
locale: en
|
|
57
57
|
---
|
|
58
58
|
|
|
59
59
|
# Mi contenido
|
|
60
60
|
|
|
61
|
-
Aquí un ejemplo de contenido
|
|
61
|
+
Aquí hay un ejemplo de contenido markdown
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
El campo
|
|
64
|
+
El campo `locale` en el front-matter es el campo que define el idioma del contenido. Es opcional. Si no se proporciona, Intlayer utilizará el idioma por defecto, que también se usa como idioma de respaldo si no hay traducción disponible para un idioma específico.
|
|
65
65
|
|
|
66
66
|
Ejemplo de estructura de archivos:
|
|
67
67
|
|
|
@@ -75,11 +75,11 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
|
|
|
75
75
|
└── markdown-file.es.content.md
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
Puede agregar en front-matter cualquier propiedad definida en la [
|
|
78
|
+
Puede agregar en el front-matter cualquier propiedad definida en la [Definición del Diccionario](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/content_file.md)
|
|
79
79
|
|
|
80
80
|
</Tab>
|
|
81
81
|
<Tab label="Envoltura Manual" value="manual-wrapping">
|
|
82
|
-
|
|
82
|
+
Use la función `md` para declarar explícitamente contenido Markdown. Esto es útil si desea asegurarse de que una cadena se trate como Markdown incluso si no contiene sintaxis evidente.
|
|
83
83
|
|
|
84
84
|
```typescript fileName="markdownDictionary.content.ts"
|
|
85
85
|
import { md, type Dictionary } from "intlayer";
|
|
@@ -87,7 +87,7 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
|
|
|
87
87
|
const markdownDictionary = {
|
|
88
88
|
key: "app",
|
|
89
89
|
content: {
|
|
90
|
-
myMarkdownContent: md("##
|
|
90
|
+
myMarkdownContent: md("## Mi título \n\nLorem Ipsum"),
|
|
91
91
|
},
|
|
92
92
|
} satisfies Dictionary;
|
|
93
93
|
|
|
@@ -101,16 +101,17 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
|
|
|
101
101
|
```typescript fileName="markdownDictionary.content.ts"
|
|
102
102
|
export default {
|
|
103
103
|
key: "app",
|
|
104
|
-
contentAutoTransformation: true, // Habilitar
|
|
104
|
+
contentAutoTransformation: true, // Habilitar detección automática de contenido Markdown - Se puede configurar globalmente en intlayer.config.ts
|
|
105
105
|
content: {
|
|
106
|
-
myMarkdownContent: "##
|
|
106
|
+
myMarkdownContent: "## Mi título \n\nLorem Ipsum",
|
|
107
107
|
},
|
|
108
108
|
};
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
</Tab>
|
|
112
|
+
|
|
112
113
|
<Tab label="Archivos Externos" value="external-files">
|
|
113
|
-
Importe archivos `.md` directamente
|
|
114
|
+
Importe archivos `.md` directamente usando la función `file`.
|
|
114
115
|
|
|
115
116
|
```typescript fileName="markdownDictionary.content.ts"
|
|
116
117
|
import { md, file, t } from "intlayer";
|
|
@@ -120,7 +121,7 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
|
|
|
120
121
|
content: {
|
|
121
122
|
content: t({
|
|
122
123
|
en: md(file("./myMarkdown.en.md")),
|
|
123
|
-
|
|
124
|
+
es: md(file("./myMarkdown.es.md")),
|
|
124
125
|
}),
|
|
125
126
|
},
|
|
126
127
|
};
|
|
@@ -131,13 +132,19 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
|
|
|
131
132
|
|
|
132
133
|
---
|
|
133
134
|
|
|
134
|
-
##
|
|
135
|
+
## Renderización de Markdown
|
|
136
|
+
|
|
137
|
+
Intlayer proporciona dos formas independientes de renderizar Markdown:
|
|
138
|
+
|
|
139
|
+
1. **A través de `useIntlayer`**
|
|
140
|
+
— Intlayer transforma automáticamente el nodo `md` en la salida nativa del framework (JSX, VNode, cadena HTML).
|
|
141
|
+
- El Frontmatter se analiza y expone como `.metadata`. Puede anular la renderización en dos niveles — globalmente con `MarkdownProvider` (o el equivalente en el framework) y localmente por nodo con `.use()`. Ambos pueden combinarse; `.use()` tiene prioridad sobre `MarkdownProvider`, el cual tiene prioridad sobre el predeterminado.
|
|
135
142
|
|
|
136
|
-
|
|
143
|
+
2. **Utilidades auxiliares** — `<MarkdownRenderer />`, `useMarkdownRenderer()`, y `renderMarkdown()` son herramientas independientes que aceptan **únicamente cadenas Markdown puras**. Son independientes de `useIntlayer` y no funcionan con los nodos decorados que este retorna.
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
La renderización de Markdown admite **MDX** — use cualquier componente JSX/framework por su nombre directamente dentro de su Markdown.
|
|
139
146
|
|
|
140
|
-
|
|
147
|
+
### 1. Renderización Automática (a través de `useIntlayer`)
|
|
141
148
|
|
|
142
149
|
<Tabs group="framework">
|
|
143
150
|
<Tab label="React / Next.js" value="react">
|
|
@@ -145,24 +152,54 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
|
|
|
145
152
|
|
|
146
153
|
```tsx fileName="App.tsx"
|
|
147
154
|
import { useIntlayer } from "react-intlayer";
|
|
155
|
+
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
148
156
|
|
|
149
157
|
const AppContent = () => {
|
|
150
158
|
const { myMarkdownContent } = useIntlayer("app");
|
|
159
|
+
|
|
151
160
|
return <div>{myMarkdownContent}</div>;
|
|
152
161
|
};
|
|
162
|
+
|
|
163
|
+
const App = () => (
|
|
164
|
+
<MarkdownProvider
|
|
165
|
+
components={{
|
|
166
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
167
|
+
MyButton: (props) => <button {...props} />, // Componente MDX
|
|
168
|
+
}}
|
|
169
|
+
>
|
|
170
|
+
<AppContent />
|
|
171
|
+
</MarkdownProvider>
|
|
172
|
+
);
|
|
153
173
|
```
|
|
154
174
|
|
|
155
|
-
|
|
175
|
+
> Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el analizador por defecto de Markdown a JSX.
|
|
176
|
+
|
|
177
|
+
También puede proporcionar anulaciones locales para nodos específicos utilizando el método `.use()`:
|
|
156
178
|
|
|
157
179
|
```tsx
|
|
158
180
|
{myMarkdownContent.use({
|
|
159
|
-
h1: ({ children }) => <h1
|
|
181
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
160
182
|
})}
|
|
161
183
|
```
|
|
162
184
|
|
|
185
|
+
Puede recuperar el Markdown como cadena:
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
{myMarkdownContent.value}
|
|
189
|
+
{String(myMarkdownContent)}
|
|
190
|
+
{myMarkdownContent.toString()}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Y puede acceder a los metadatos de su markdown así:
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
{myMarkdownContent.metadata}
|
|
197
|
+
{myMarkdownContent.metadata.title}
|
|
198
|
+
```
|
|
199
|
+
|
|
163
200
|
</Tab>
|
|
164
201
|
<Tab label="Vue" value="vue">
|
|
165
|
-
En Vue, el contenido Markdown se puede renderizar
|
|
202
|
+
En Vue, el contenido Markdown se puede renderizar usando la etiqueta incorporada `component` o directamente como un nodo.
|
|
166
203
|
|
|
167
204
|
```vue fileName="App.vue"
|
|
168
205
|
<script setup>
|
|
@@ -175,43 +212,183 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
|
|
|
175
212
|
</template>
|
|
176
213
|
```
|
|
177
214
|
|
|
215
|
+
Configure globalmente a través del plugin `intlayerMarkdown` (admite componentes MDX personalizados):
|
|
216
|
+
|
|
217
|
+
```ts fileName="main.ts"
|
|
218
|
+
import { intlayerMarkdown } from "vue-intlayer/markdown";
|
|
219
|
+
|
|
220
|
+
app.use(intlayerMarkdown, {
|
|
221
|
+
components: {
|
|
222
|
+
h1: (props) => h('h1', { style: { color: 'green' } }, props.children),
|
|
223
|
+
MyButton: (props) => h('button', props), // Componente MDX
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
> Si el plugin `intlayerMarkdown` no está instalado, Intlayer renderizará utilizando el compilador predeterminado.
|
|
229
|
+
|
|
230
|
+
También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
|
|
231
|
+
|
|
232
|
+
```vue
|
|
233
|
+
<component :is="myMarkdownContent.use({
|
|
234
|
+
h1: (props) => h('h1', { style: { color: 'red' } }, props.children),
|
|
235
|
+
})" />
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Puede recuperar el Markdown como cadena:
|
|
239
|
+
|
|
240
|
+
```vue
|
|
241
|
+
{{ myMarkdownContent.value }}
|
|
242
|
+
{{ String(myMarkdownContent) }}
|
|
243
|
+
{{ myMarkdownContent.toString() }}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Y puede acceder a los metadatos de su markdown así:
|
|
247
|
+
|
|
248
|
+
```vue
|
|
249
|
+
<component :is="myMarkdownContent.metadata" />
|
|
250
|
+
<component :is="myMarkdownContent.metadata.title" />
|
|
251
|
+
```
|
|
252
|
+
|
|
178
253
|
</Tab>
|
|
179
254
|
<Tab label="Svelte" value="svelte">
|
|
180
|
-
Svelte renderiza Markdown como una cadena HTML por defecto.
|
|
255
|
+
Svelte renderiza el Markdown como una cadena HTML por defecto. Use `{@html}` para renderizarlo.
|
|
181
256
|
|
|
182
|
-
```svelte
|
|
257
|
+
```svelte fileName="App.svelte"
|
|
183
258
|
<script lang="ts">
|
|
184
259
|
import { useIntlayer } from "svelte-intlayer";
|
|
260
|
+
import { MarkdownProvider } from "svelte-intlayer/markdown";
|
|
261
|
+
import MyHeading from "./MyHeading.svelte";
|
|
262
|
+
|
|
185
263
|
const content = useIntlayer("app");
|
|
186
264
|
</script>
|
|
187
265
|
|
|
188
|
-
{
|
|
266
|
+
<MarkdownProvider components={{ h1: MyHeading }}>
|
|
267
|
+
{@html $content.myMarkdownContent}
|
|
268
|
+
</MarkdownProvider>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
> Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el compilador por defecto.
|
|
272
|
+
|
|
273
|
+
También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
|
|
274
|
+
|
|
275
|
+
```svelte
|
|
276
|
+
{@html $content.myMarkdownContent.use({ ... })}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Puede recuperar el Markdown como cadena:
|
|
280
|
+
|
|
281
|
+
```svelte
|
|
282
|
+
{$content.myMarkdownContent.value}
|
|
283
|
+
{String($content.myMarkdownContent)}
|
|
284
|
+
{$content.myMarkdownContent.toString()}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Y puede acceder a los metadatos de su markdown así:
|
|
288
|
+
|
|
289
|
+
```svelte
|
|
290
|
+
{$content.myMarkdownContent.metadata}
|
|
291
|
+
{$content.myMarkdownContent.metadata.title}
|
|
189
292
|
```
|
|
190
293
|
|
|
191
294
|
</Tab>
|
|
192
295
|
<Tab label="Preact" value="preact">
|
|
193
|
-
Preact
|
|
296
|
+
Preact soporta los nodos Markdown directamente en JSX.
|
|
194
297
|
|
|
195
298
|
```tsx fileName="App.tsx"
|
|
196
299
|
import { useIntlayer } from "preact-intlayer";
|
|
300
|
+
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
197
301
|
|
|
198
302
|
const AppContent = () => {
|
|
199
303
|
const { myMarkdownContent } = useIntlayer("app");
|
|
200
304
|
return <div>{myMarkdownContent}</div>;
|
|
201
305
|
};
|
|
306
|
+
|
|
307
|
+
const App = () => (
|
|
308
|
+
<MarkdownProvider
|
|
309
|
+
components={{
|
|
310
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
311
|
+
MyButton: (props) => <button {...props} />, // Componente MDX
|
|
312
|
+
}}
|
|
313
|
+
>
|
|
314
|
+
<AppContent />
|
|
315
|
+
</MarkdownProvider>
|
|
316
|
+
);
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
> Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el analizador predeterminado de Markdown a JSX.
|
|
320
|
+
|
|
321
|
+
También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
|
|
322
|
+
|
|
323
|
+
```tsx
|
|
324
|
+
{myMarkdownContent.use({
|
|
325
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
326
|
+
})}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Puede recuperar el Markdown como cadena:
|
|
330
|
+
|
|
331
|
+
```tsx
|
|
332
|
+
{myMarkdownContent.value}
|
|
333
|
+
{String(myMarkdownContent)}
|
|
334
|
+
{myMarkdownContent.toString()}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Y puede acceder a los metadatos de su markdown así:
|
|
338
|
+
|
|
339
|
+
```tsx
|
|
340
|
+
{myMarkdownContent.metadata}
|
|
341
|
+
{myMarkdownContent.metadata.title}
|
|
202
342
|
```
|
|
203
343
|
|
|
204
344
|
</Tab>
|
|
205
345
|
<Tab label="Solid" value="solid">
|
|
206
|
-
Solid
|
|
346
|
+
Solid soporta los nodos Markdown directamente en JSX.
|
|
207
347
|
|
|
208
348
|
```tsx fileName="App.tsx"
|
|
209
349
|
import { useIntlayer } from "solid-intlayer";
|
|
350
|
+
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
210
351
|
|
|
211
352
|
const AppContent = () => {
|
|
212
353
|
const { myMarkdownContent } = useIntlayer("app");
|
|
213
354
|
return <div>{myMarkdownContent}</div>;
|
|
214
355
|
};
|
|
356
|
+
|
|
357
|
+
const App = () => (
|
|
358
|
+
<MarkdownProvider
|
|
359
|
+
components={{
|
|
360
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
361
|
+
MyButton: (props) => <button {...props} />, // Componente MDX
|
|
362
|
+
}}
|
|
363
|
+
>
|
|
364
|
+
<AppContent />
|
|
365
|
+
</MarkdownProvider>
|
|
366
|
+
);
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
> Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el analizador predeterminado de Markdown a JSX.
|
|
370
|
+
|
|
371
|
+
También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
|
|
372
|
+
|
|
373
|
+
```tsx
|
|
374
|
+
{myMarkdownContent.use({
|
|
375
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
376
|
+
})}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Puede recuperar el Markdown como cadena:
|
|
380
|
+
|
|
381
|
+
```tsx
|
|
382
|
+
{myMarkdownContent.value}
|
|
383
|
+
{String(myMarkdownContent)}
|
|
384
|
+
{myMarkdownContent.toString()}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
Y puede acceder a los metadatos de su markdown así:
|
|
388
|
+
|
|
389
|
+
```tsx
|
|
390
|
+
{myMarkdownContent.metadata}
|
|
391
|
+
{myMarkdownContent.metadata.title}
|
|
215
392
|
```
|
|
216
393
|
|
|
217
394
|
</Tab>
|
|
@@ -231,7 +408,9 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
|
|
|
231
408
|
}
|
|
232
409
|
```
|
|
233
410
|
|
|
234
|
-
|
|
411
|
+
> Si el proveedor IntlayerMarkdown no está configurado, Intlayer renderizará utilizando el compilador predeterminado.
|
|
412
|
+
|
|
413
|
+
También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
|
|
235
414
|
|
|
236
415
|
```typescript
|
|
237
416
|
content().myMarkdownContent.use({
|
|
@@ -239,21 +418,40 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
|
|
|
239
418
|
})
|
|
240
419
|
```
|
|
241
420
|
|
|
421
|
+
Puede recuperar el Markdown como cadena:
|
|
422
|
+
|
|
423
|
+
```typescript
|
|
424
|
+
content().myMarkdownContent.value
|
|
425
|
+
String(content().myMarkdownContent)
|
|
426
|
+
content().myMarkdownContent.toString()
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
Y puede acceder a los metadatos de su markdown así:
|
|
430
|
+
|
|
431
|
+
```typescript
|
|
432
|
+
content().myMarkdownContent.metadata
|
|
433
|
+
content().myMarkdownContent.metadata.title
|
|
434
|
+
```
|
|
435
|
+
|
|
242
436
|
</Tab>
|
|
243
437
|
</Tabs>
|
|
244
438
|
|
|
245
|
-
### 2.
|
|
439
|
+
### 2. Utilidades Auxiliares (Solo Cadenas Markdown)
|
|
246
440
|
|
|
247
|
-
|
|
441
|
+
Estas utilidades renderizan **únicamente cadenas Markdown puras** y son independientes de `useIntlayer`. Úselas cuando necesite renderizar Markdown de fuentes que no sean sus diccionarios.
|
|
248
442
|
|
|
249
443
|
<Tabs group="framework">
|
|
250
444
|
<Tab label="React / Next.js" value="react">
|
|
251
445
|
|
|
446
|
+
#### Componente `<MarkdownRenderer />`
|
|
447
|
+
|
|
448
|
+
Renderiza una cadena Markdown con opciones específicas.
|
|
449
|
+
|
|
252
450
|
```tsx
|
|
253
451
|
import { MarkdownRenderer } from "react-intlayer/markdown";
|
|
254
452
|
|
|
255
453
|
<MarkdownRenderer forceBlock={true} tagfilter={true}>
|
|
256
|
-
{"#
|
|
454
|
+
{"# Mi Título"}
|
|
257
455
|
</MarkdownRenderer>
|
|
258
456
|
```
|
|
259
457
|
|
|
@@ -269,7 +467,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
269
467
|
components: { h1: (props) => <h1 {...props} className="custom" /> }
|
|
270
468
|
});
|
|
271
469
|
|
|
272
|
-
return renderMarkdown("#
|
|
470
|
+
return renderMarkdown("# Mi Título");
|
|
273
471
|
```
|
|
274
472
|
|
|
275
473
|
#### Utilidad `renderMarkdown()`
|
|
@@ -278,7 +476,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
278
476
|
```tsx
|
|
279
477
|
import { renderMarkdown } from "react-intlayer/markdown";
|
|
280
478
|
|
|
281
|
-
const jsx = renderMarkdown("#
|
|
479
|
+
const jsx = renderMarkdown("# Mi Título", { forceBlock: true });
|
|
282
480
|
```
|
|
283
481
|
|
|
284
482
|
</Tab>
|
|
@@ -292,7 +490,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
292
490
|
</script>
|
|
293
491
|
|
|
294
492
|
<template>
|
|
295
|
-
<MarkdownRenderer :forceBlock="true" content="#
|
|
493
|
+
<MarkdownRenderer :forceBlock="true" content="# Mi Título" />
|
|
296
494
|
</template>
|
|
297
495
|
```
|
|
298
496
|
|
|
@@ -306,7 +504,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
306
504
|
import { MarkdownRenderer } from "svelte-intlayer/markdown";
|
|
307
505
|
</script>
|
|
308
506
|
|
|
309
|
-
<MarkdownRenderer forceBlock={true} value="#
|
|
507
|
+
<MarkdownRenderer forceBlock={true} value="# Mi Título" />
|
|
310
508
|
```
|
|
311
509
|
|
|
312
510
|
#### Hook `useMarkdownRenderer()`
|
|
@@ -317,7 +515,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
317
515
|
const render = useMarkdownRenderer();
|
|
318
516
|
</script>
|
|
319
517
|
|
|
320
|
-
{@html render("#
|
|
518
|
+
{@html render("# Mi Título")}
|
|
321
519
|
```
|
|
322
520
|
|
|
323
521
|
#### Utilidad `renderMarkdown()`
|
|
@@ -327,7 +525,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
327
525
|
import { renderMarkdown } from "svelte-intlayer/markdown";
|
|
328
526
|
</script>
|
|
329
527
|
|
|
330
|
-
{@html renderMarkdown("#
|
|
528
|
+
{@html renderMarkdown("# Mi Título")}
|
|
331
529
|
```
|
|
332
530
|
|
|
333
531
|
</Tab>
|
|
@@ -338,7 +536,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
338
536
|
import { MarkdownRenderer } from "preact-intlayer/markdown";
|
|
339
537
|
|
|
340
538
|
<MarkdownRenderer forceBlock={true}>
|
|
341
|
-
{"#
|
|
539
|
+
{"# Mi Título"}
|
|
342
540
|
</MarkdownRenderer>
|
|
343
541
|
```
|
|
344
542
|
|
|
@@ -349,7 +547,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
349
547
|
|
|
350
548
|
const render = useMarkdownRenderer();
|
|
351
549
|
|
|
352
|
-
return <div>{render("#
|
|
550
|
+
return <div>{render("# Mi Título")}</div>;
|
|
353
551
|
```
|
|
354
552
|
|
|
355
553
|
#### Utilidad `renderMarkdown()`
|
|
@@ -357,7 +555,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
357
555
|
```tsx
|
|
358
556
|
import { renderMarkdown } from "preact-intlayer/markdown";
|
|
359
557
|
|
|
360
|
-
return <div>{renderMarkdown("#
|
|
558
|
+
return <div>{renderMarkdown("# Mi Título")}</div>;
|
|
361
559
|
```
|
|
362
560
|
|
|
363
561
|
</Tab>
|
|
@@ -368,7 +566,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
368
566
|
import { MarkdownRenderer } from "solid-intlayer/markdown";
|
|
369
567
|
|
|
370
568
|
<MarkdownRenderer forceBlock={true}>
|
|
371
|
-
{"#
|
|
569
|
+
{"# Mi Título"}
|
|
372
570
|
</MarkdownRenderer>
|
|
373
571
|
```
|
|
374
572
|
|
|
@@ -379,7 +577,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
379
577
|
|
|
380
578
|
const render = useMarkdownRenderer();
|
|
381
579
|
|
|
382
|
-
return <div>{render("#
|
|
580
|
+
return <div>{render("# Mi Título")}</div>;
|
|
383
581
|
```
|
|
384
582
|
|
|
385
583
|
#### Utilidad `renderMarkdown()`
|
|
@@ -387,13 +585,13 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
387
585
|
```tsx
|
|
388
586
|
import { renderMarkdown } from "solid-intlayer/markdown";
|
|
389
587
|
|
|
390
|
-
return <div>{renderMarkdown("#
|
|
588
|
+
return <div>{renderMarkdown("# Mi Título")}</div>;
|
|
391
589
|
```
|
|
392
590
|
|
|
393
591
|
</Tab>
|
|
394
592
|
<Tab label="Angular" value="angular">
|
|
395
593
|
#### Servicio `IntlayerMarkdownService`
|
|
396
|
-
Renderiza una cadena Markdown
|
|
594
|
+
Renderiza una cadena Markdown usando el servicio.
|
|
397
595
|
|
|
398
596
|
```typescript
|
|
399
597
|
import { IntlayerMarkdownService } from "angular-intlayer/markdown";
|
|
@@ -414,7 +612,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
|
|
|
414
612
|
|
|
415
613
|
## Configuración Global con `MarkdownProvider`
|
|
416
614
|
|
|
417
|
-
|
|
615
|
+
`MarkdownProvider` (o su equivalente en el framework) configura el proceso de renderización Markdown para toda su aplicación. Esto se aplica tanto a la renderización automática de `useIntlayer` como a las utilidades auxiliares. Las opciones configuradas aquí son las predeterminadas — `.use()` las anula a nivel de nodo.
|
|
418
616
|
|
|
419
617
|
<Tabs group="framework">
|
|
420
618
|
<Tab label="React / Next.js" value="react">
|
|
@@ -425,8 +623,9 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
425
623
|
export const AppProvider = ({ children }) => (
|
|
426
624
|
<MarkdownProvider
|
|
427
625
|
components={{
|
|
428
|
-
h1: (
|
|
429
|
-
a: ({ href,
|
|
626
|
+
h1: (props) => <h1 style={{color: 'green'}} {...props} />,
|
|
627
|
+
a: ({ href, ...props }) => <a style={{color: 'red'}} {...props} />,
|
|
628
|
+
MyCustomJSXComponent: (props) => <span style={{color: 'red'}} {...props} />,
|
|
430
629
|
}}
|
|
431
630
|
>
|
|
432
631
|
{children}
|
|
@@ -434,7 +633,9 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
434
633
|
);
|
|
435
634
|
```
|
|
436
635
|
|
|
437
|
-
|
|
636
|
+
> MDX es compatible — cualquier nombre de componente usado dentro de su Markdown (ej. `<MyCustomJSXComponent />`) se resuelve contra el mapeo de `components`.
|
|
637
|
+
|
|
638
|
+
También puede usar su propio renderizador de markdown:
|
|
438
639
|
|
|
439
640
|
```tsx fileName="AppProvider.tsx"
|
|
440
641
|
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
@@ -442,8 +643,8 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
442
643
|
export const AppProvider = ({ children }) => (
|
|
443
644
|
<MarkdownProvider
|
|
444
645
|
renderMarkdown={async (md) => {
|
|
445
|
-
const {
|
|
446
|
-
return
|
|
646
|
+
const { renderMarkdown } = await import('react-intlayer/markdown');
|
|
647
|
+
return renderMarkdown(md);
|
|
447
648
|
}}
|
|
448
649
|
>
|
|
449
650
|
{children}
|
|
@@ -451,7 +652,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
451
652
|
);
|
|
452
653
|
```
|
|
453
654
|
|
|
454
|
-
> Importar
|
|
655
|
+
> Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
|
|
455
656
|
|
|
456
657
|
</Tab>
|
|
457
658
|
<Tab label="Vue" value="vue">
|
|
@@ -478,7 +679,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
478
679
|
app.mount("#app");
|
|
479
680
|
```
|
|
480
681
|
|
|
481
|
-
También puede
|
|
682
|
+
También puede usar su propio renderizador de markdown:
|
|
482
683
|
|
|
483
684
|
```typescript fileName="main.ts"
|
|
484
685
|
import { createApp } from "vue";
|
|
@@ -491,15 +692,15 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
491
692
|
app.use(intlayer);
|
|
492
693
|
app.use(intlayerMarkdown, {
|
|
493
694
|
renderMarkdown: async (md) => {
|
|
494
|
-
const {
|
|
495
|
-
return
|
|
695
|
+
const { renderMarkdown } = await import('vue-intlayer/markdown');
|
|
696
|
+
return renderMarkdown(md);
|
|
496
697
|
},
|
|
497
698
|
});
|
|
498
699
|
|
|
499
700
|
app.mount("#app");
|
|
500
701
|
```
|
|
501
702
|
|
|
502
|
-
> Importar
|
|
703
|
+
> Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
|
|
503
704
|
|
|
504
705
|
</Tab>
|
|
505
706
|
<Tab label="Svelte" value="svelte">
|
|
@@ -519,7 +720,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
519
720
|
</MarkdownProvider>
|
|
520
721
|
```
|
|
521
722
|
|
|
522
|
-
También puede
|
|
723
|
+
También puede usar su propio renderizador de markdown:
|
|
523
724
|
|
|
524
725
|
```svelte fileName="App.svelte"
|
|
525
726
|
<script lang="ts">
|
|
@@ -528,15 +729,15 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
528
729
|
|
|
529
730
|
<MarkdownProvider
|
|
530
731
|
renderMarkdown={async (md) => {
|
|
531
|
-
const {
|
|
532
|
-
return
|
|
732
|
+
const { renderMarkdown } = await import('svelte-intlayer/markdown');
|
|
733
|
+
return renderMarkdown(md);
|
|
533
734
|
}}
|
|
534
735
|
>
|
|
535
736
|
<slot />
|
|
536
737
|
</MarkdownProvider>
|
|
537
738
|
```
|
|
538
739
|
|
|
539
|
-
> Importar
|
|
740
|
+
> Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
|
|
540
741
|
|
|
541
742
|
</Tab>
|
|
542
743
|
<Tab label="Preact" value="preact">
|
|
@@ -555,7 +756,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
555
756
|
);
|
|
556
757
|
```
|
|
557
758
|
|
|
558
|
-
También puede
|
|
759
|
+
También puede usar su propio renderizador de markdown:
|
|
559
760
|
|
|
560
761
|
```tsx fileName="AppProvider.tsx"
|
|
561
762
|
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
@@ -563,8 +764,8 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
563
764
|
export const AppProvider = ({ children }) => (
|
|
564
765
|
<MarkdownProvider
|
|
565
766
|
renderMarkdown={async (md) => {
|
|
566
|
-
const {
|
|
567
|
-
return
|
|
767
|
+
const { renderMarkdown } = await import('preact-intlayer/markdown');
|
|
768
|
+
return renderMarkdown(md);
|
|
568
769
|
}}
|
|
569
770
|
>
|
|
570
771
|
{children}
|
|
@@ -572,7 +773,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
572
773
|
);
|
|
573
774
|
```
|
|
574
775
|
|
|
575
|
-
> Importar
|
|
776
|
+
> Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
|
|
576
777
|
|
|
577
778
|
</Tab>
|
|
578
779
|
<Tab label="Solid" value="solid">
|
|
@@ -591,7 +792,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
591
792
|
);
|
|
592
793
|
```
|
|
593
794
|
|
|
594
|
-
También puede
|
|
795
|
+
También puede usar su propio renderizador de markdown:
|
|
595
796
|
|
|
596
797
|
```tsx fileName="AppProvider.tsx"
|
|
597
798
|
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
@@ -599,8 +800,8 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
599
800
|
export const AppProvider = (props) => (
|
|
600
801
|
<MarkdownProvider
|
|
601
802
|
renderMarkdown={async (md) => {
|
|
602
|
-
const {
|
|
603
|
-
return
|
|
803
|
+
const { renderMarkdown } = await import('solid-intlayer/markdown');
|
|
804
|
+
return renderMarkdown(md);
|
|
604
805
|
}}
|
|
605
806
|
>
|
|
606
807
|
{props.children}
|
|
@@ -608,59 +809,29 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
|
|
|
608
809
|
);
|
|
609
810
|
```
|
|
610
811
|
|
|
611
|
-
> Importar
|
|
812
|
+
> Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
|
|
612
813
|
|
|
613
814
|
</Tab>
|
|
614
815
|
<Tab label="Angular" value="angular">
|
|
615
816
|
|
|
616
|
-
```typescript fileName="app.
|
|
617
|
-
import {
|
|
618
|
-
|
|
619
|
-
export const appConfig: ApplicationConfig = {
|
|
620
|
-
providers: [
|
|
621
|
-
createIntlayerMarkdownProvider({
|
|
622
|
-
components: {
|
|
623
|
-
h1: { class: "text-2xl font-bold" },
|
|
624
|
-
},
|
|
625
|
-
}),
|
|
626
|
-
],
|
|
627
|
-
};
|
|
628
|
-
```
|
|
629
|
-
|
|
630
|
-
También puede utilizar su propio motor de renderizado de markdown:
|
|
631
|
-
|
|
632
|
-
```typescript fileName="app.config.ts"
|
|
633
|
-
import { createIntlayerMarkdownProvider } from "angular-intlayer/markdown";
|
|
817
|
+
```typescript fileName="app.module.ts"
|
|
818
|
+
import { NgModule } from '@angular/core';
|
|
819
|
+
import { IntlayerMarkdownModule } from 'angular-intlayer/markdown';
|
|
634
820
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
821
|
+
@NgModule({
|
|
822
|
+
imports: [
|
|
823
|
+
IntlayerMarkdownModule.forRoot({
|
|
638
824
|
renderMarkdown: async (md) => {
|
|
639
|
-
const {
|
|
640
|
-
return
|
|
641
|
-
}
|
|
642
|
-
})
|
|
643
|
-
]
|
|
644
|
-
}
|
|
825
|
+
const { renderMarkdown } = await import('angular-intlayer/markdown');
|
|
826
|
+
return renderMarkdown(md);
|
|
827
|
+
}
|
|
828
|
+
})
|
|
829
|
+
]
|
|
830
|
+
})
|
|
831
|
+
export class AppModule {}
|
|
645
832
|
```
|
|
646
833
|
|
|
647
|
-
> Importar
|
|
834
|
+
> Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
|
|
648
835
|
|
|
649
836
|
</Tab>
|
|
650
837
|
</Tabs>
|
|
651
|
-
|
|
652
|
-
---
|
|
653
|
-
|
|
654
|
-
## Referencia de Opciones
|
|
655
|
-
|
|
656
|
-
Estas opciones se pueden pasar a `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer` y `renderMarkdown`.
|
|
657
|
-
|
|
658
|
-
| Opción | Tipo | Por Defecto | Descripción |
|
|
659
|
-
| :-------------------- | :---------- | :---------- | :------------------------------------------------------------------------------------------------------------ |
|
|
660
|
-
| `forceBlock` | `boolean` | `false` | Obliga a que la salida esté envuelta en un elemento de nivel de bloque (p. ej., `<div>`). |
|
|
661
|
-
| `forceInline` | `boolean` | `false` | Obliga a que la salida esté envuelta en un elemento en línea (p. ej., `<span>`). |
|
|
662
|
-
| `tagfilter` | `boolean` | `true` | Habilita el filtro de etiquetas de GitHub para mejorar la seguridad al eliminar etiquetas HTML peligrosas. |
|
|
663
|
-
| `preserveFrontmatter` | `boolean` | `false` | Si es `true`, no se eliminará el frontmatter al principio de la cadena Markdown. |
|
|
664
|
-
| `components` | `Overrides` | `{}` | Un mapa de etiquetas HTML a componentes personalizados (p. ej., `{ h1: MyHeading }`). |
|
|
665
|
-
| `wrapper` | `Component` | `null` | Un componente personalizado para envolver el Markdown renderizado. |
|
|
666
|
-
| `renderMarkdown` | `Function` | `null` | Una función de renderizado personalizada para reemplazar completamente el compilador de Markdown por defecto. |
|