@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.
@@ -2,7 +2,7 @@
2
2
  createdAt: 2025-02-07
3
3
  updatedAt: 2026-05-19
4
4
  title: Markdown
5
- description: Erfahren Sie, wie Sie Markdown-Inhalte in Ihrer mehrsprachigen Website mit Intlayer deklarieren und verwenden. Folgen Sie den Schritten in dieser Online-Dokumentation, um Markdown nahtlos in Ihr Projekt zu integrieren.
5
+ description: Erfahren Sie, wie Sie Markdown-Inhalte auf Ihrer mehrsprachigen Website mit Intlayer deklarieren und verwenden. Befolgen Sie die Schritte in dieser Online-Dokumentation, um Markdown nahtlos in Ihr Projekt zu integrieren.
6
6
  keywords:
7
7
  - Markdown
8
8
  - Internationalisierung
@@ -19,49 +19,49 @@ slugs:
19
19
  history:
20
20
  - version: 8.10.0
21
21
  date: 2026-05-19
22
- changes: "Unterstützung für `.content.md`-Dateien hinzufügen"
22
+ changes: "Unterstützung für `.content.md`-Dateien hinzugefügt"
23
23
  - version: 8.5.0
24
24
  date: 2026-03-24
25
- changes: "Add `intlayerMarkdown` plugin object; use `app.use(intlayerMarkdown)` instead of `app.use(installIntlayerMarkdown)`"
25
+ changes: "`intlayerMarkdown`-Plugin-Objekt hinzugefügt; verwenden Sie `app.use(intlayerMarkdown)` anstelle von `app.use(installIntlayerMarkdown)`"
26
26
  - version: 8.5.0
27
27
  date: 2026-03-24
28
- changes: "Import von {{framework}}-intlayer nach {{framework}}-intlayer/markdown verschieben"
28
+ changes: "Import von `{{framework}}-intlayer` nach `{{framework}}-intlayer/markdown` verschoben"
29
29
  - version: 8.0.0
30
30
  date: 2026-01-22
31
- changes: "Hinzufügen von MarkdownRenderer / useMarkdownRenderer / renderMarkdown Utility und forceInline Option"
31
+ changes: "MarkdownRenderer / useMarkdownRenderer / renderMarkdown-Dienstprogramm und forceInline-Option hinzugefügt"
32
32
  - version: 8.0.0
33
33
  date: 2026-01-18
34
34
  changes: "Automatische Dekoration von Markdown-Inhalten, MDX- und SSR-Unterstützung"
35
35
  - version: 5.5.10
36
36
  date: 2025-06-29
37
- changes: "Initialisierung des Verlaufs"
37
+ changes: "Historie initialisiert"
38
38
  ---
39
39
 
40
40
  # Markdown / Rich-Text-Inhalte
41
41
 
42
- Intlayer unterstützt Rich-Text-Inhalte, die mittels Markdown-Syntax definiert sind. Dies ermöglicht es Ihnen, Inhalte mit reichhaltiger Formatierung, wie Blogs, Artikel und mehr, einfach zu schreiben und zu pflegen.
42
+ Intlayer unterstützt Rich-Text-Inhalte, die mit der Markdown-Syntax definiert werden. Dies ermöglicht es Ihnen, Inhalte mit umfangreicher Formatierung wie Blogs, Artikel und vieles mehr einfach zu erstellen und zu verwalten.
43
43
 
44
- ## Teil 1: Markdown-Inhalte deklarieren
44
+ ## Markdown-Inhalte deklarieren
45
45
 
46
- Sie können Markdown-Inhalte mit der `md`-Funktion oder einfach als String deklarieren (sofern er Markdown-Syntax enthält).
46
+ Sie können Markdown-Inhalte mithilfe der Funktion `md` oder einfach als Zeichenfolge (sofern sie Markdown-Syntax enthält) deklarieren.
47
47
 
48
48
  <Tabs>
49
49
  <Tab label=".content.md" value=".content.md">
50
- Seit Version `8.10.0` können Sie Markdown-Inhalte direkt in `.content.md`-Dateien deklarieren. Intlayer wird die Markdown-Inhalte automatisch erkennen und parsen.
50
+ Ab Version `8.10.0` können Sie Markdown-Inhalte direkt in `.content.md`-Dateien deklarieren. Intlayer erkennt und analysiert den Markdown-Inhalt automatisch.
51
51
 
52
- ```md fileName="markdown-file.de.content.md"
52
+ ```md fileName="markdown-file.en.content.md"
53
53
  ---
54
- key: mein-markdown-inhalt
54
+ key: my-markdown-content
55
55
  description: Mein Inhalt
56
- locale: de
56
+ locale: en
57
57
  ---
58
58
 
59
59
  # Mein Inhalt
60
60
 
61
- Hier ein Beispiel für Markdown-Inhalte
61
+ Hier ist ein Beispiel für Markdown-Inhalte
62
62
  ```
63
63
 
64
- Das Frontmatter-Feld `locale` definiert das Gebietsschema (Locale) des Inhalts. Es ist optional. Wenn es nicht angegeben wird, verwendet Intlayer das Standard-Gebietsschema, das auch als Fallback-Gebietsschema dient, wenn für ein bestimmtes Gebietsschema keine Übersetzung verfügbar ist.
64
+ Das `locale`-Feld im Frontmatter definiert die Sprache des Inhalts. Es ist optional. Wird es nicht angegeben, verwendet Intlayer die Standardsprache, die auch als Fallback-Sprache dient, falls keine Übersetzung für eine spezifische Sprache verfügbar ist.
65
65
 
66
66
  Beispiel für die Dateistruktur:
67
67
 
@@ -75,11 +75,11 @@ Sie können Markdown-Inhalte mit der `md`-Funktion oder einfach als String dekla
75
75
  └── markdown-file.es.content.md
76
76
  ```
77
77
 
78
- Sie können im Frontmatter alle Eigenschaften hinzufügen, die in der [Wörterbuchdefinition (Dictionary)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/content_file.md) definiert sind.
78
+ Sie können im Frontmatter alle Eigenschaften hinzufügen, die in der [Wörterbuch-Definition](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/content_file.md) definiert sind.
79
79
 
80
80
  </Tab>
81
- <Tab label="Manuelles Wrapping" value="manual-wrapping">
82
- Verwenden Sie die `md`-Funktion, um Markdown-Inhalte explizit zu deklarieren. Dies ist nützlich, wenn Sie sicherstellen möchten, dass ein String als Markdown behandelt wird, auch wenn er keine offensichtliche Syntax enthält.
81
+ <Tab label="Manuelles Einwickeln" value="manual-wrapping">
82
+ Verwenden Sie die Funktion `md`, um Markdown-Inhalte explizit zu deklarieren. Dies ist nützlich, wenn Sie sicherstellen möchten, dass eine Zeichenfolge als Markdown behandelt wird, auch wenn sie keine offensichtliche Syntax aufweist.
83
83
 
84
84
  ```typescript fileName="markdownDictionary.content.ts"
85
85
  import { md, type Dictionary } from "intlayer";
@@ -96,12 +96,12 @@ Sie können Markdown-Inhalte mit der `md`-Funktion oder einfach als String dekla
96
96
 
97
97
  </Tab>
98
98
  <Tab label="Automatische Erkennung" value="automatic-detection">
99
- Wenn der String gängige Markdown-Indikatoren enthält (wie Überschriften, Listen, Links usw.), wird Intlayer ihn automatisch umwandeln.
99
+ Wenn die Zeichenfolge gängige Markdown-Indikatoren (wie Überschriften, Listen, Links usw.) enthält, transformiert Intlayer sie automatisch.
100
100
 
101
101
  ```typescript fileName="markdownDictionary.content.ts"
102
102
  export default {
103
103
  key: "app",
104
- contentAutoTransformation: true, // Automatische Erkennung von Markdown-Inhalten aktivieren - Kann global in intlayer.config.ts eingestellt werden
104
+ contentAutoTransformation: true, // Automatische Erkennung von Markdown-Inhalten aktivieren - Kann global in intlayer.config.ts konfiguriert werden
105
105
  content: {
106
106
  myMarkdownContent: "## Mein Titel \n\nLorem Ipsum",
107
107
  },
@@ -109,6 +109,7 @@ Sie können Markdown-Inhalte mit der `md`-Funktion oder einfach als String dekla
109
109
  ```
110
110
 
111
111
  </Tab>
112
+
112
113
  <Tab label="Externe Dateien" value="external-files">
113
114
  Importieren Sie `.md`-Dateien direkt mit der `file`-Funktion.
114
115
 
@@ -120,7 +121,7 @@ Sie können Markdown-Inhalte mit der `md`-Funktion oder einfach als String dekla
120
121
  content: {
121
122
  content: t({
122
123
  en: md(file("./myMarkdown.en.md")),
123
- fr: md(file("./myMarkdown.fr.md")),
124
+ de: md(file("./myMarkdown.de.md")),
124
125
  }),
125
126
  },
126
127
  };
@@ -133,11 +134,17 @@ Sie können Markdown-Inhalte mit der `md`-Funktion oder einfach als String dekla
133
134
 
134
135
  ## Markdown rendern
135
136
 
136
- Das Rendering kann automatisch durch das Inhaltssystem von Intlayer oder manuell mit spezialisierten Tools erfolgen.
137
+ Intlayer bietet zwei unabhängige Möglichkeiten zum Rendern von Markdown:
138
+
139
+ 1. **Über `useIntlayer`**
140
+ — Intlayer konvertiert den `md`-Knoten automatisch in die native Ausgabe des Frameworks (JSX, VNode, HTML-String).
141
+ - Das Frontmatter wird analysiert und als `.metadata` bereitgestellt. Sie können das Rendern auf zwei Ebenen überschreiben — global mit dem `MarkdownProvider` (oder dem Framework-Äquivalent) und lokal pro Knoten mit `.use()`. Beide können kombiniert werden; `.use()` hat Vorrang vor dem `MarkdownProvider`, der wiederum Vorrang vor dem Standardverhalten hat.
142
+
143
+ 2. **Hilfsprogramme** — `<MarkdownRenderer />`, `useMarkdownRenderer()` und `renderMarkdown()` sind eigenständige Tools, die **nur reine Markdown-Strings** akzeptieren. Sie sind unabhängig von `useIntlayer` und funktionieren nicht mit den dekorierten Knoten, die es zurückgibt.
137
144
 
138
- ### 1. Automatisches Rendering (mit `useIntlayer`)
145
+ Das Markdown-Rendering unterstützt **MDX** verwenden Sie jede JSX/Framework-Komponente namentlich direkt in Ihrem Markdown.
139
146
 
140
- Wenn Sie auf Inhalte über `useIntlayer` zugreifen, sind Markdown-Knoten bereits für das Rendering vorbereitet.
147
+ ### 1. Automatisches Rendern (über `useIntlayer`)
141
148
 
142
149
  <Tabs group="framework">
143
150
  <Tab label="React / Next.js" value="react">
@@ -145,24 +152,54 @@ Wenn Sie auf Inhalte über `useIntlayer` zugreifen, sind Markdown-Knoten bereits
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} />, // MDX-Komponente
168
+ }}
169
+ >
170
+ <AppContent />
171
+ </MarkdownProvider>
172
+ );
153
173
  ```
154
174
 
155
- Sie können auch lokale Overrides für bestimmte Knoten mit der `.use()`-Methode bereitstellen:
175
+ > Wenn `MarkdownProvider` nicht vorhanden ist, rendert Intlayer das Markdown mit dem standardmäßigen Markdown-zu-JSX-Parser.
176
+
177
+ Sie können auch lokale Überschreibungen für bestimmte Knoten mit der Methode `.use()` bereitstellen:
156
178
 
157
179
  ```tsx
158
180
  {myMarkdownContent.use({
159
- h1: ({ children }) => <h1 className="text-3xl font-bold">{children}</h1>,
181
+ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
160
182
  })}
161
183
  ```
162
184
 
185
+ Sie können das Markdown als Zeichenfolge abrufen:
186
+
187
+ ```tsx
188
+ {myMarkdownContent.value}
189
+ {String(myMarkdownContent)}
190
+ {myMarkdownContent.toString()}
191
+ ```
192
+
193
+ Und Sie können folgendermaßen auf Ihre Markdown-Metadaten zugreifen:
194
+
195
+ ```tsx
196
+ {myMarkdownContent.metadata}
197
+ {myMarkdownContent.metadata.title}
198
+ ```
199
+
163
200
  </Tab>
164
201
  <Tab label="Vue" value="vue">
165
- In Vue können Markdown-Inhalte mit der integrierten `component`-Komponente oder direkt als Knoten gerendert werden.
202
+ In Vue kann Markdown-Inhalt mithilfe des integrierten Tags `component` oder direkt als Knoten gerendert werden.
166
203
 
167
204
  ```vue fileName="App.vue"
168
205
  <script setup>
@@ -175,43 +212,183 @@ Wenn Sie auf Inhalte über `useIntlayer` zugreifen, sind Markdown-Knoten bereits
175
212
  </template>
176
213
  ```
177
214
 
215
+ Global über das `intlayerMarkdown`-Plugin konfigurieren (unterstützt benutzerdefinierte MDX-Komponenten):
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), // MDX-Komponente
224
+ },
225
+ });
226
+ ```
227
+
228
+ > Wenn das `intlayerMarkdown`-Plugin nicht installiert ist, rendert Intlayer mit dem Standard-Compiler.
229
+
230
+ Sie können auch lokale Überschreibungen für bestimmte Knoten mit der Methode `.use()` bereitstellen:
231
+
232
+ ```vue
233
+ <component :is="myMarkdownContent.use({
234
+ h1: (props) => h('h1', { style: { color: 'red' } }, props.children),
235
+ })" />
236
+ ```
237
+
238
+ Sie können das Markdown als Zeichenfolge abrufen:
239
+
240
+ ```vue
241
+ {{ myMarkdownContent.value }}
242
+ {{ String(myMarkdownContent) }}
243
+ {{ myMarkdownContent.toString() }}
244
+ ```
245
+
246
+ Und Sie können folgendermaßen auf Ihre Markdown-Metadaten zugreifen:
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
255
  Svelte rendert Markdown standardmäßig als HTML-String. Verwenden Sie `{@html}`, um es zu rendern.
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
- {@html $content.myMarkdownContent}
266
+ <MarkdownProvider components={{ h1: MyHeading }}>
267
+ {@html $content.myMarkdownContent}
268
+ </MarkdownProvider>
269
+ ```
270
+
271
+ > Wenn `MarkdownProvider` nicht vorhanden ist, rendert Intlayer das Markdown mit dem Standard-Compiler.
272
+
273
+ Sie können auch lokale Überschreibungen für bestimmte Knoten mit der Methode `.use()` bereitstellen:
274
+
275
+ ```svelte
276
+ {@html $content.myMarkdownContent.use({ ... })}
277
+ ```
278
+
279
+ Sie können das Markdown als Zeichenfolge abrufen:
280
+
281
+ ```svelte
282
+ {$content.myMarkdownContent.value}
283
+ {String($content.myMarkdownContent)}
284
+ {$content.myMarkdownContent.toString()}
285
+ ```
286
+
287
+ Und Sie können folgendermaßen auf Ihre Markdown-Metadaten zugreifen:
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 unterstützt Markdown-Knoten direkt im JSX.
296
+ Preact unterstützt Markdown-Knoten direkt in 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} />, // MDX-Komponente
312
+ }}
313
+ >
314
+ <AppContent />
315
+ </MarkdownProvider>
316
+ );
317
+ ```
318
+
319
+ > Wenn `MarkdownProvider` nicht vorhanden ist, rendert Intlayer das Markdown mit dem standardmäßigen Markdown-zu-JSX-Parser.
320
+
321
+ Sie können auch lokale Überschreibungen für bestimmte Knoten mit der Methode `.use()` bereitstellen:
322
+
323
+ ```tsx
324
+ {myMarkdownContent.use({
325
+ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
326
+ })}
327
+ ```
328
+
329
+ Sie können das Markdown als Zeichenfolge abrufen:
330
+
331
+ ```tsx
332
+ {myMarkdownContent.value}
333
+ {String(myMarkdownContent)}
334
+ {myMarkdownContent.toString()}
335
+ ```
336
+
337
+ Und Sie können folgendermaßen auf Ihre Markdown-Metadaten zugreifen:
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 unterstützt Markdown-Knoten direkt im JSX.
346
+ Solid unterstützt Markdown-Knoten direkt in 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} />, // MDX-Komponente
362
+ }}
363
+ >
364
+ <AppContent />
365
+ </MarkdownProvider>
366
+ );
367
+ ```
368
+
369
+ > Wenn `MarkdownProvider` nicht vorhanden ist, rendert Intlayer das Markdown mit dem standardmäßigen Markdown-zu-JSX-Parser.
370
+
371
+ Sie können auch lokale Überschreibungen für bestimmte Knoten mit der Methode `.use()` bereitstellen:
372
+
373
+ ```tsx
374
+ {myMarkdownContent.use({
375
+ h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
376
+ })}
377
+ ```
378
+
379
+ Sie können das Markdown als Zeichenfolge abrufen:
380
+
381
+ ```tsx
382
+ {myMarkdownContent.value}
383
+ {String(myMarkdownContent)}
384
+ {myMarkdownContent.toString()}
385
+ ```
386
+
387
+ Und Sie können folgendermaßen auf Ihre Markdown-Metadaten zugreifen:
388
+
389
+ ```tsx
390
+ {myMarkdownContent.metadata}
391
+ {myMarkdownContent.metadata.title}
215
392
  ```
216
393
 
217
394
  </Tab>
@@ -231,7 +408,9 @@ Wenn Sie auf Inhalte über `useIntlayer` zugreifen, sind Markdown-Knoten bereits
231
408
  }
232
409
  ```
233
410
 
234
- Sie können auch lokale Overrides für bestimmte Knoten mit der `.use()`-Methode bereitstellen:
411
+ > Wenn der IntlayerMarkdown-Provider nicht konfiguriert ist, rendert Intlayer mit dem Standard-Compiler.
412
+
413
+ Sie können auch lokale Überschreibungen für bestimmte Knoten mit der Methode `.use()` bereitstellen:
235
414
 
236
415
  ```typescript
237
416
  content().myMarkdownContent.use({
@@ -239,16 +418,35 @@ Wenn Sie auf Inhalte über `useIntlayer` zugreifen, sind Markdown-Knoten bereits
239
418
  })
240
419
  ```
241
420
 
421
+ Sie können das Markdown als Zeichenfolge abrufen:
422
+
423
+ ```typescript
424
+ content().myMarkdownContent.value
425
+ String(content().myMarkdownContent)
426
+ content().myMarkdownContent.toString()
427
+ ```
428
+
429
+ Und Sie können folgendermaßen auf Ihre Markdown-Metadaten zugreifen:
430
+
431
+ ```typescript
432
+ content().myMarkdownContent.metadata
433
+ content().myMarkdownContent.metadata.title
434
+ ```
435
+
242
436
  </Tab>
243
437
  </Tabs>
244
438
 
245
- ### 2. Manuelles Rendering & Erweiterte Tools
439
+ ### 2. Hilfsprogramme (Nur Markdown-Strings)
246
440
 
247
- Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Rendering-Prozess wünschen, verwenden Sie die folgenden Tools.
441
+ Diese Dienstprogramme rendern **nur reine Markdown-Strings** und sind unabhängig von `useIntlayer`. Verwenden Sie sie, wenn Sie Markdown aus anderen Quellen als Ihren Wörterbüchern rendern müssen.
248
442
 
249
443
  <Tabs group="framework">
250
444
  <Tab label="React / Next.js" value="react">
251
445
 
446
+ #### `<MarkdownRenderer />` Komponente
447
+
448
+ Rendert einen Markdown-String mit bestimmten Optionen.
449
+
252
450
  ```tsx
253
451
  import { MarkdownRenderer } from "react-intlayer/markdown";
254
452
 
@@ -259,7 +457,7 @@ Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Ren
259
457
 
260
458
  #### `useMarkdownRenderer()` Hook
261
459
 
262
- Holen Sie sich eine vorkonfigurierte Renderer-Funktion.
460
+ Holt eine vorkonfigurierte Render-Funktion.
263
461
 
264
462
  ```tsx
265
463
  import { useMarkdownRenderer } from "react-intlayer/markdown";
@@ -272,8 +470,8 @@ Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Ren
272
470
  return renderMarkdown("# Mein Titel");
273
471
  ```
274
472
 
275
- #### `renderMarkdown()` Utility
276
- Eigenständiges Utility zum Rendern außerhalb von Komponenten.
473
+ #### `renderMarkdown()` Dienstprogramm
474
+ Eigenständiges Dienstprogramm zum Rendern außerhalb von Komponenten.
277
475
 
278
476
  ```tsx
279
477
  import { renderMarkdown } from "react-intlayer/markdown";
@@ -320,7 +518,7 @@ Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Ren
320
518
  {@html render("# Mein Titel")}
321
519
  ```
322
520
 
323
- #### `renderMarkdown()` Utility
521
+ #### `renderMarkdown()` Dienstprogramm
324
522
 
325
523
  ```svelte
326
524
  <script lang="ts">
@@ -352,7 +550,7 @@ Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Ren
352
550
  return <div>{render("# Mein Titel")}</div>;
353
551
  ```
354
552
 
355
- #### `renderMarkdown()` Utility
553
+ #### `renderMarkdown()` Dienstprogramm
356
554
 
357
555
  ```tsx
358
556
  import { renderMarkdown } from "preact-intlayer/markdown";
@@ -382,7 +580,7 @@ Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Ren
382
580
  return <div>{render("# Mein Titel")}</div>;
383
581
  ```
384
582
 
385
- #### `renderMarkdown()` Utility
583
+ #### `renderMarkdown()` Dienstprogramm
386
584
 
387
585
  ```tsx
388
586
  import { renderMarkdown } from "solid-intlayer/markdown";
@@ -392,8 +590,8 @@ Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Ren
392
590
 
393
591
  </Tab>
394
592
  <Tab label="Angular" value="angular">
395
- #### `IntlayerMarkdownService` Service
396
- Rendern Sie einen Markdown-String mit dem Service.
593
+ #### `IntlayerMarkdownService` Dienst
594
+ Rendert einen Markdown-String mit dem Dienst.
397
595
 
398
596
  ```typescript
399
597
  import { IntlayerMarkdownService } from "angular-intlayer/markdown";
@@ -414,7 +612,7 @@ Wenn Sie rohe Markdown-Strings rendern müssen oder mehr Kontrolle über den Ren
414
612
 
415
613
  ## Globale Konfiguration mit `MarkdownProvider`
416
614
 
417
- Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurieren. Dies vermeidet die Übergabe der gleichen Props an jeden Renderer.
615
+ Der `MarkdownProvider` (oder sein Framework-Äquivalent) konfiguriert die Markdown-Rendering-Pipeline für Ihre gesamte Anwendung. Dies gilt sowohl für das automatische Rendering von `useIntlayer` als auch für die Hilfsprogramme. Die hier konfigurierten Optionen sind die Standardeinstellungen — `.use()` überschreibt sie auf Knotenebene.
418
616
 
419
617
  <Tabs group="framework">
420
618
  <Tab label="React / Next.js" value="react">
@@ -425,8 +623,9 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
425
623
  export const AppProvider = ({ children }) => (
426
624
  <MarkdownProvider
427
625
  components={{
428
- h1: ({ children }) => <h1 className="text-2xl font-bold">{children}</h1>,
429
- a: ({ href, children }) => <Link to={href}>{children}</Link>,
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,6 +633,8 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
434
633
  );
435
634
  ```
436
635
 
636
+ > MDX wird unterstützt — jeder in Ihrem Markdown verwendete Komponentenname (z. B. `<MyCustomJSXComponent />`) wird mit dem `components`-Mapping aufgelöst.
637
+
437
638
  Sie können auch Ihren eigenen Markdown-Renderer verwenden:
438
639
 
439
640
  ```tsx fileName="AppProvider.tsx"
@@ -442,8 +643,8 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
442
643
  export const AppProvider = ({ children }) => (
443
644
  <MarkdownProvider
444
645
  renderMarkdown={async (md) => {
445
- const { compileMarkdown } = await import('react-intlayer/markdown');
446
- return compileMarkdown(md);
646
+ const { renderMarkdown } = await import('react-intlayer/markdown');
647
+ return renderMarkdown(md);
447
648
  }}
448
649
  >
449
650
  {children}
@@ -491,8 +692,8 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
491
692
  app.use(intlayer);
492
693
  app.use(intlayerMarkdown, {
493
694
  renderMarkdown: async (md) => {
494
- const { compileMarkdown } = await import('vue-intlayer/markdown');
495
- return compileMarkdown(md);
695
+ const { renderMarkdown } = await import('vue-intlayer/markdown');
696
+ return renderMarkdown(md);
496
697
  },
497
698
  });
498
699
 
@@ -528,8 +729,8 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
528
729
 
529
730
  <MarkdownProvider
530
731
  renderMarkdown={async (md) => {
531
- const { compileMarkdown } = await import('svelte-intlayer/markdown');
532
- return compileMarkdown(md);
732
+ const { renderMarkdown } = await import('svelte-intlayer/markdown');
733
+ return renderMarkdown(md);
533
734
  }}
534
735
  >
535
736
  <slot />
@@ -563,8 +764,8 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
563
764
  export const AppProvider = ({ children }) => (
564
765
  <MarkdownProvider
565
766
  renderMarkdown={async (md) => {
566
- const { compileMarkdown } = await import('preact-intlayer/markdown');
567
- return compileMarkdown(md);
767
+ const { renderMarkdown } = await import('preact-intlayer/markdown');
768
+ return renderMarkdown(md);
568
769
  }}
569
770
  >
570
771
  {children}
@@ -599,8 +800,8 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
599
800
  export const AppProvider = (props) => (
600
801
  <MarkdownProvider
601
802
  renderMarkdown={async (md) => {
602
- const { compileMarkdown } = await import('solid-intlayer/markdown');
603
- return compileMarkdown(md);
803
+ const { renderMarkdown } = await import('solid-intlayer/markdown');
804
+ return renderMarkdown(md);
604
805
  }}
605
806
  >
606
807
  {props.children}
@@ -613,54 +814,24 @@ Sie können das Markdown-Rendering global für Ihre gesamte Anwendung konfigurie
613
814
  </Tab>
614
815
  <Tab label="Angular" value="angular">
615
816
 
616
- ```typescript fileName="app.config.ts"
617
- import { createIntlayerMarkdownProvider } from "angular-intlayer/markdown";
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
- Sie können auch Ihren eigenen Markdown-Renderer verwenden:
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
- export const appConfig: ApplicationConfig = {
636
- providers: [
637
- createIntlayerMarkdownProvider({
821
+ @NgModule({
822
+ imports: [
823
+ IntlayerMarkdownModule.forRoot({
638
824
  renderMarkdown: async (md) => {
639
- const { compileMarkdown } = await import('angular-intlayer/markdown');
640
- return compileMarkdown(md);
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
834
  > Das dynamische Importieren Ihres Markdown-Renderers ist eine gute Möglichkeit, die Bundle-Größe Ihrer Anwendung zu reduzieren.
648
835
 
649
836
  </Tab>
650
837
  </Tabs>
651
-
652
- ---
653
-
654
- ## Optionen-Referenz
655
-
656
- Diese Optionen können an `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer` und `renderMarkdown` übergeben werden.
657
-
658
- | Option | Typ | Standard | Beschreibung |
659
- | :-------------------- | :---------- | :------- | :----------------------------------------------------------------------------------------------------- |
660
- | `forceBlock` | `boolean` | `false` | Erzwingt, dass die Ausgabe in ein Block-Level-Element (z. B. `<div>`) eingeschlossen wird. |
661
- | `forceInline` | `boolean` | `false` | Erzwingt, dass die Ausgabe in ein Inline-Element (z. B. `<span>`) eingeschlossen wird. |
662
- | `tagfilter` | `boolean` | `true` | Aktiviert den GitHub-Tag-Filter für verbesserte Sicherheit durch das Entfernen gefährlicher HTML-Tags. |
663
- | `preserveFrontmatter` | `boolean` | `false` | Wenn `true`, wird Frontmatter am Anfang des Markdown-Strings nicht entfernt. |
664
- | `components` | `Overrides` | `{}` | Eine Zuordnung von HTML-Tags zu benutzerdefinierten Komponenten (z. B. `{ h1: MyHeading }`). |
665
- | `wrapper` | `Component` | `null` | Eine benutzerdefinierte Komponente, um das gerenderte Markdown zu umschließen. |
666
- | `renderMarkdown` | `Function` | `null` | Eine benutzerdefinierte Render-Funktion, um den Standard-Markdown-Compiler vollständig zu ersetzen. |