@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: Dowiedz się, jak deklarować i używać
|
|
5
|
+
description: Dowiedz się, jak deklarować i używać treści Markdown na swojej wielojęzycznej stronie internetowej za pomocą Intlayer. Postępuj zgodnie z instrukcjami w tej dokumentacji online, aby bezproblemowo zintegrować Markdown ze swoim projektem.
|
|
6
6
|
keywords:
|
|
7
7
|
- Markdown
|
|
8
8
|
- Internacjonalizacja
|
|
@@ -22,46 +22,46 @@ history:
|
|
|
22
22
|
changes: "Dodano obsługę plików `.content.md`"
|
|
23
23
|
- version: 8.5.0
|
|
24
24
|
date: 2026-03-24
|
|
25
|
-
changes: "
|
|
25
|
+
changes: "Dodano obiekt wtyczki `intlayerMarkdown`; użyj `app.use(intlayerMarkdown)` zamiast `app.use(installIntlayerMarkdown)`"
|
|
26
26
|
- version: 8.5.0
|
|
27
27
|
date: 2026-03-24
|
|
28
|
-
changes: "
|
|
28
|
+
changes: "Przeniesiono import z `{{framework}}-intlayer` do `{{framework}}-intlayer/markdown`"
|
|
29
29
|
- version: 8.0.0
|
|
30
30
|
date: 2026-01-22
|
|
31
|
-
changes: "Dodano MarkdownRenderer / useMarkdownRenderer / renderMarkdown i opcję forceInline"
|
|
31
|
+
changes: "Dodano narzędzie MarkdownRenderer / useMarkdownRenderer / renderMarkdown i opcję forceInline"
|
|
32
32
|
- version: 8.0.0
|
|
33
33
|
date: 2026-01-18
|
|
34
34
|
changes: "Automatyczna dekoracja treści markdown, obsługa MDX i SSR"
|
|
35
35
|
- version: 5.5.10
|
|
36
36
|
date: 2025-06-29
|
|
37
|
-
changes: "
|
|
37
|
+
changes: "Zainicjowano historię"
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
# Markdown /
|
|
40
|
+
# Markdown / Treść w postaci tekstu sformatowanego
|
|
41
41
|
|
|
42
|
-
Intlayer obsługuje
|
|
42
|
+
Intlayer obsługuje treści w postaci tekstu sformatowanego (Rich Text) definiowane za pomocą składni Markdown. Pozwala to na łatwe pisanie i utrzymywanie bogato sformatowanych treści, takich jak blogi, artykuły i inne.
|
|
43
43
|
|
|
44
44
|
## Deklarowanie treści Markdown
|
|
45
45
|
|
|
46
|
-
Możesz zadeklarować treść Markdown
|
|
46
|
+
Możesz zadeklarować treść Markdown używając funkcji `md` lub po prostu jako ciąg znaków (jeśli zawiera składnię Markdown).
|
|
47
47
|
|
|
48
48
|
<Tabs>
|
|
49
49
|
<Tab label=".content.md" value=".content.md">
|
|
50
|
-
|
|
50
|
+
Począwszy od wersji `8.10.0`, możesz deklarować treść Markdown bezpośrednio w plikach `.content.md`. Intlayer automatycznie wykryje i przetworzy treść Markdown.
|
|
51
51
|
|
|
52
|
-
```md fileName="markdown-file.
|
|
52
|
+
```md fileName="markdown-file.en.content.md"
|
|
53
53
|
---
|
|
54
|
-
key:
|
|
55
|
-
description: Moja
|
|
56
|
-
locale:
|
|
54
|
+
key: my-markdown-content
|
|
55
|
+
description: Moja treść
|
|
56
|
+
locale: en
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
-
# Moja
|
|
59
|
+
# Moja treść
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
Oto przykład treści markdown
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
Pole
|
|
64
|
+
Pole front-matter `locale` to pole, które definiuje język treści. Jest ono opcjonalne. Jeśli nie zostanie podane, Intlayer użyje języka domyślnego, który służy również jako język zastępczy, jeśli nie jest dostępne tłumaczenie dla określonego języka.
|
|
65
65
|
|
|
66
66
|
Przykład struktury plików:
|
|
67
67
|
|
|
@@ -75,11 +75,11 @@ Możesz zadeklarować treść Markdown, używając funkcji `md` lub po prostu ja
|
|
|
75
75
|
└── markdown-file.es.content.md
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
Do front-matter można dodać dowolne właściwości zdefiniowane w [Definicji słownika](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/content_file.md)
|
|
79
79
|
|
|
80
80
|
</Tab>
|
|
81
|
-
<Tab label="Ręczne
|
|
82
|
-
Użyj funkcji `md`, aby jawnie zadeklarować
|
|
81
|
+
<Tab label="Ręczne pakowanie" value="manual-wrapping">
|
|
82
|
+
Użyj funkcji `md`, aby jawnie zadeklarować treść Markdown. Jest to przydatne, jeśli chcesz upewnić się, że ciąg znaków jest traktowany jako Markdown, nawet jeśli nie zawiera wyraźnej składni.
|
|
83
83
|
|
|
84
84
|
```typescript fileName="markdownDictionary.content.ts"
|
|
85
85
|
import { md, type Dictionary } from "intlayer";
|
|
@@ -96,7 +96,7 @@ Możesz zadeklarować treść Markdown, używając funkcji `md` lub po prostu ja
|
|
|
96
96
|
|
|
97
97
|
</Tab>
|
|
98
98
|
<Tab label="Automatyczne wykrywanie" value="automatic-detection">
|
|
99
|
-
Jeśli ciąg zawiera typowe wskaźniki Markdown (takie jak nagłówki, listy, linki itp.), Intlayer automatycznie
|
|
99
|
+
Jeśli ciąg znaków zawiera typowe wskaźniki Markdown (takie jak nagłówki, listy, linki itp.), Intlayer automatycznie je przekształci.
|
|
100
100
|
|
|
101
101
|
```typescript fileName="markdownDictionary.content.ts"
|
|
102
102
|
export default {
|
|
@@ -109,8 +109,9 @@ Możesz zadeklarować treść Markdown, używając funkcji `md` lub po prostu ja
|
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
</Tab>
|
|
112
|
+
|
|
112
113
|
<Tab label="Pliki zewnętrzne" value="external-files">
|
|
113
|
-
Importuj pliki `.md` bezpośrednio
|
|
114
|
+
Importuj pliki `.md` bezpośrednio za pomocą funkcji `file`.
|
|
114
115
|
|
|
115
116
|
```typescript fileName="markdownDictionary.content.ts"
|
|
116
117
|
import { md, file, t } from "intlayer";
|
|
@@ -120,7 +121,6 @@ Możesz zadeklarować treść Markdown, używając funkcji `md` lub po prostu ja
|
|
|
120
121
|
content: {
|
|
121
122
|
content: t({
|
|
122
123
|
en: md(file("./myMarkdown.en.md")),
|
|
123
|
-
fr: md(file("./myMarkdown.fr.md")),
|
|
124
124
|
pl: md(file("./myMarkdown.pl.md")),
|
|
125
125
|
}),
|
|
126
126
|
},
|
|
@@ -134,11 +134,17 @@ Możesz zadeklarować treść Markdown, używając funkcji `md` lub po prostu ja
|
|
|
134
134
|
|
|
135
135
|
## Renderowanie Markdown
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
Intlayer zapewnia dwa niezależne sposoby renderowania Markdown:
|
|
138
|
+
|
|
139
|
+
1. **Przez `useIntlayer`**
|
|
140
|
+
— Intlayer automatycznie przekształca węzeł `md` w natywny wynik frameworka (JSX, VNode, ciąg znaków HTML).
|
|
141
|
+
- Frontmatter jest analizowany i eksponowany jako `.metadata`. Możesz nadpisać renderowanie na dwóch poziomach — globalnie za pomocą `MarkdownProvider` (lub odpowiednika frameworka) i lokalnie dla węzła za pomocą `.use()`. Oba można łączyć; `.use()` ma pierwszeństwo przed `MarkdownProvider`, który z kolei ma pierwszeństwo przed ustawieniami domyślnymi.
|
|
142
|
+
|
|
143
|
+
2. **Narzędzia pomocnicze** — `<MarkdownRenderer />`, `useMarkdownRenderer()` i `renderMarkdown()` to samodzielne narzędzia, które akceptują **tylko surowe ciągi znaków Markdown**. Są one niezależne od `useIntlayer` i nie działają ze zwracanymi przez nie udekorowanymi węzłami.
|
|
138
144
|
|
|
139
|
-
|
|
145
|
+
Renderowanie Markdown obsługuje **MDX** — użyj dowolnego komponentu JSX/frameworka podając jego nazwę bezpośrednio w swoim Markdown.
|
|
140
146
|
|
|
141
|
-
|
|
147
|
+
### 1. Automatyczne renderowanie (przez `useIntlayer`)
|
|
142
148
|
|
|
143
149
|
<Tabs group="framework">
|
|
144
150
|
<Tab label="React / Next.js" value="react">
|
|
@@ -146,24 +152,54 @@ Kiedy uzyskujesz dostęp do treści za pomocą `useIntlayer`, węzły Markdown s
|
|
|
146
152
|
|
|
147
153
|
```tsx fileName="App.tsx"
|
|
148
154
|
import { useIntlayer } from "react-intlayer";
|
|
155
|
+
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
149
156
|
|
|
150
157
|
const AppContent = () => {
|
|
151
158
|
const { myMarkdownContent } = useIntlayer("app");
|
|
159
|
+
|
|
152
160
|
return <div>{myMarkdownContent}</div>;
|
|
153
161
|
};
|
|
162
|
+
|
|
163
|
+
const App = () => (
|
|
164
|
+
<MarkdownProvider
|
|
165
|
+
components={{
|
|
166
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
167
|
+
MyButton: (props) => <button {...props} />, // Komponent MDX
|
|
168
|
+
}}
|
|
169
|
+
>
|
|
170
|
+
<AppContent />
|
|
171
|
+
</MarkdownProvider>
|
|
172
|
+
);
|
|
154
173
|
```
|
|
155
174
|
|
|
156
|
-
|
|
175
|
+
> Jeśli `MarkdownProvider` nie jest obecny, Intlayer użyje domyślnego parsera Markdown do JSX do wyrenderowania markdownu.
|
|
176
|
+
|
|
177
|
+
Możesz również zapewnić lokalne nadpisania dla określonych węzłów za pomocą metody `.use()`:
|
|
157
178
|
|
|
158
179
|
```tsx
|
|
159
180
|
{myMarkdownContent.use({
|
|
160
|
-
h1: ({ children }) => <h1
|
|
181
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
161
182
|
})}
|
|
162
183
|
```
|
|
163
184
|
|
|
185
|
+
Możesz pobrać Markdown jako ciąg znaków:
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
{myMarkdownContent.value}
|
|
189
|
+
{String(myMarkdownContent)}
|
|
190
|
+
{myMarkdownContent.toString()}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Możesz uzyskać dostęp do metadanych markdown w ten sposób:
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
{myMarkdownContent.metadata}
|
|
197
|
+
{myMarkdownContent.metadata.title}
|
|
198
|
+
```
|
|
199
|
+
|
|
164
200
|
</Tab>
|
|
165
|
-
<Tab label="Vue">
|
|
166
|
-
W Vue
|
|
201
|
+
<Tab label="Vue" value="vue">
|
|
202
|
+
W Vue, treść Markdown można renderować przy użyciu wbudowanego tagu `component` lub bezpośrednio jako węzeł.
|
|
167
203
|
|
|
168
204
|
```vue fileName="App.vue"
|
|
169
205
|
<script setup>
|
|
@@ -176,17 +212,83 @@ Kiedy uzyskujesz dostęp do treści za pomocą `useIntlayer`, węzły Markdown s
|
|
|
176
212
|
</template>
|
|
177
213
|
```
|
|
178
214
|
|
|
215
|
+
Skonfiguruj globalnie za pomocą wtyczki `intlayerMarkdown` (obsługuje komponenty niestandardowe MDX):
|
|
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), // Komponent MDX
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
> Jeśli wtyczka `intlayerMarkdown` nie jest zainstalowana, Intlayer wyrenderuje za pomocą domyślnego kompilatora.
|
|
229
|
+
|
|
230
|
+
Możesz również zapewnić lokalne nadpisania dla określonych węzłów za pomocą metody `.use()`:
|
|
231
|
+
|
|
232
|
+
```vue
|
|
233
|
+
<component :is="myMarkdownContent.use({
|
|
234
|
+
h1: (props) => h('h1', { style: { color: 'red' } }, props.children),
|
|
235
|
+
})" />
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Możesz pobrać Markdown jako ciąg znaków:
|
|
239
|
+
|
|
240
|
+
```vue
|
|
241
|
+
{{ myMarkdownContent.value }}
|
|
242
|
+
{{ String(myMarkdownContent) }}
|
|
243
|
+
{{ myMarkdownContent.toString() }}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Możesz uzyskać dostęp do metadanych markdown w ten sposób:
|
|
247
|
+
|
|
248
|
+
```vue
|
|
249
|
+
<component :is="myMarkdownContent.metadata" />
|
|
250
|
+
<component :is="myMarkdownContent.metadata.title" />
|
|
251
|
+
```
|
|
252
|
+
|
|
179
253
|
</Tab>
|
|
180
254
|
<Tab label="Svelte" value="svelte">
|
|
181
255
|
Svelte domyślnie renderuje Markdown jako ciąg znaków HTML. Użyj `{@html}`, aby go wyrenderować.
|
|
182
256
|
|
|
183
|
-
```svelte
|
|
257
|
+
```svelte fileName="App.svelte"
|
|
184
258
|
<script lang="ts">
|
|
185
259
|
import { useIntlayer } from "svelte-intlayer";
|
|
260
|
+
import { MarkdownProvider } from "svelte-intlayer/markdown";
|
|
261
|
+
import MyHeading from "./MyHeading.svelte";
|
|
262
|
+
|
|
186
263
|
const content = useIntlayer("app");
|
|
187
264
|
</script>
|
|
188
265
|
|
|
189
|
-
{
|
|
266
|
+
<MarkdownProvider components={{ h1: MyHeading }}>
|
|
267
|
+
{@html $content.myMarkdownContent}
|
|
268
|
+
</MarkdownProvider>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
> Jeśli `MarkdownProvider` nie jest obecny, Intlayer wyrenderuje markdown używając domyślnego kompilatora.
|
|
272
|
+
|
|
273
|
+
Możesz również zapewnić lokalne nadpisania dla określonych węzłów za pomocą metody `.use()`:
|
|
274
|
+
|
|
275
|
+
```svelte
|
|
276
|
+
{@html $content.myMarkdownContent.use({ ... })}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Możesz pobrać Markdown jako ciąg znaków:
|
|
280
|
+
|
|
281
|
+
```svelte
|
|
282
|
+
{$content.myMarkdownContent.value}
|
|
283
|
+
{String($content.myMarkdownContent)}
|
|
284
|
+
{$content.myMarkdownContent.toString()}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Możesz uzyskać dostęp do metadanych markdown w ten sposób:
|
|
288
|
+
|
|
289
|
+
```svelte
|
|
290
|
+
{$content.myMarkdownContent.metadata}
|
|
291
|
+
{$content.myMarkdownContent.metadata.title}
|
|
190
292
|
```
|
|
191
293
|
|
|
192
294
|
</Tab>
|
|
@@ -195,11 +297,48 @@ Kiedy uzyskujesz dostęp do treści za pomocą `useIntlayer`, węzły Markdown s
|
|
|
195
297
|
|
|
196
298
|
```tsx fileName="App.tsx"
|
|
197
299
|
import { useIntlayer } from "preact-intlayer";
|
|
300
|
+
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
198
301
|
|
|
199
302
|
const AppContent = () => {
|
|
200
303
|
const { myMarkdownContent } = useIntlayer("app");
|
|
201
304
|
return <div>{myMarkdownContent}</div>;
|
|
202
305
|
};
|
|
306
|
+
|
|
307
|
+
const App = () => (
|
|
308
|
+
<MarkdownProvider
|
|
309
|
+
components={{
|
|
310
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
311
|
+
MyButton: (props) => <button {...props} />, // Komponent MDX
|
|
312
|
+
}}
|
|
313
|
+
>
|
|
314
|
+
<AppContent />
|
|
315
|
+
</MarkdownProvider>
|
|
316
|
+
);
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
> Jeśli `MarkdownProvider` nie jest obecny, Intlayer użyje domyślnego parsera Markdown do JSX do wyrenderowania markdownu.
|
|
320
|
+
|
|
321
|
+
Możesz również zapewnić lokalne nadpisania dla określonych węzłów za pomocą metody `.use()`:
|
|
322
|
+
|
|
323
|
+
```tsx
|
|
324
|
+
{myMarkdownContent.use({
|
|
325
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
326
|
+
})}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Możesz pobrać Markdown jako ciąg znaków:
|
|
330
|
+
|
|
331
|
+
```tsx
|
|
332
|
+
{myMarkdownContent.value}
|
|
333
|
+
{String(myMarkdownContent)}
|
|
334
|
+
{myMarkdownContent.toString()}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Możesz uzyskać dostęp do metadanych markdown w ten sposób:
|
|
338
|
+
|
|
339
|
+
```tsx
|
|
340
|
+
{myMarkdownContent.metadata}
|
|
341
|
+
{myMarkdownContent.metadata.title}
|
|
203
342
|
```
|
|
204
343
|
|
|
205
344
|
</Tab>
|
|
@@ -208,16 +347,53 @@ Kiedy uzyskujesz dostęp do treści za pomocą `useIntlayer`, węzły Markdown s
|
|
|
208
347
|
|
|
209
348
|
```tsx fileName="App.tsx"
|
|
210
349
|
import { useIntlayer } from "solid-intlayer";
|
|
350
|
+
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
211
351
|
|
|
212
352
|
const AppContent = () => {
|
|
213
353
|
const { myMarkdownContent } = useIntlayer("app");
|
|
214
354
|
return <div>{myMarkdownContent}</div>;
|
|
215
355
|
};
|
|
356
|
+
|
|
357
|
+
const App = () => (
|
|
358
|
+
<MarkdownProvider
|
|
359
|
+
components={{
|
|
360
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
361
|
+
MyButton: (props) => <button {...props} />, // Komponent MDX
|
|
362
|
+
}}
|
|
363
|
+
>
|
|
364
|
+
<AppContent />
|
|
365
|
+
</MarkdownProvider>
|
|
366
|
+
);
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
> Jeśli `MarkdownProvider` nie jest obecny, Intlayer użyje domyślnego parsera Markdown do JSX do wyrenderowania markdownu.
|
|
370
|
+
|
|
371
|
+
Możesz również zapewnić lokalne nadpisania dla określonych węzłów za pomocą metody `.use()`:
|
|
372
|
+
|
|
373
|
+
```tsx
|
|
374
|
+
{myMarkdownContent.use({
|
|
375
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
376
|
+
})}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Możesz pobrać Markdown jako ciąg znaków:
|
|
380
|
+
|
|
381
|
+
```tsx
|
|
382
|
+
{myMarkdownContent.value}
|
|
383
|
+
{String(myMarkdownContent)}
|
|
384
|
+
{myMarkdownContent.toString()}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
Możesz uzyskać dostęp do metadanych markdown w ten sposób:
|
|
388
|
+
|
|
389
|
+
```tsx
|
|
390
|
+
{myMarkdownContent.metadata}
|
|
391
|
+
{myMarkdownContent.metadata.title}
|
|
216
392
|
```
|
|
217
393
|
|
|
218
394
|
</Tab>
|
|
219
395
|
<Tab label="Angular" value="angular">
|
|
220
|
-
Angular
|
|
396
|
+
Angular używa dyrektywy `[innerHTML]` do renderowania treści Markdown.
|
|
221
397
|
|
|
222
398
|
```typescript fileName="app.component.ts"
|
|
223
399
|
import { Component } from "@angular/core";
|
|
@@ -232,7 +408,9 @@ Kiedy uzyskujesz dostęp do treści za pomocą `useIntlayer`, węzły Markdown s
|
|
|
232
408
|
}
|
|
233
409
|
```
|
|
234
410
|
|
|
235
|
-
|
|
411
|
+
> Jeśli dostawca IntlayerMarkdown nie jest skonfigurowany, Intlayer wyrenderuje za pomocą domyślnego kompilatora.
|
|
412
|
+
|
|
413
|
+
Możesz również zapewnić lokalne nadpisania dla określonych węzłów za pomocą metody `.use()`:
|
|
236
414
|
|
|
237
415
|
```typescript
|
|
238
416
|
content().myMarkdownContent.use({
|
|
@@ -240,16 +418,35 @@ Kiedy uzyskujesz dostęp do treści za pomocą `useIntlayer`, węzły Markdown s
|
|
|
240
418
|
})
|
|
241
419
|
```
|
|
242
420
|
|
|
421
|
+
Możesz pobrać Markdown jako ciąg znaków:
|
|
422
|
+
|
|
423
|
+
```typescript
|
|
424
|
+
content().myMarkdownContent.value
|
|
425
|
+
String(content().myMarkdownContent)
|
|
426
|
+
content().myMarkdownContent.toString()
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
Możesz uzyskać dostęp do metadanych markdown w ten sposób:
|
|
430
|
+
|
|
431
|
+
```typescript
|
|
432
|
+
content().myMarkdownContent.metadata
|
|
433
|
+
content().myMarkdownContent.metadata.title
|
|
434
|
+
```
|
|
435
|
+
|
|
243
436
|
</Tab>
|
|
244
437
|
</Tabs>
|
|
245
438
|
|
|
246
|
-
### 2.
|
|
439
|
+
### 2. Narzędzia pomocnicze (tylko ciągi znaków Markdown)
|
|
247
440
|
|
|
248
|
-
|
|
441
|
+
Te narzędzia renderują **tylko surowe ciągi znaków Markdown** i są niezależne od `useIntlayer`. Używaj ich, gdy musisz wyrenderować Markdown ze źródeł innych niż słowniki.
|
|
249
442
|
|
|
250
443
|
<Tabs group="framework">
|
|
251
444
|
<Tab label="React / Next.js" value="react">
|
|
252
445
|
|
|
446
|
+
#### Komponent `<MarkdownRenderer />`
|
|
447
|
+
|
|
448
|
+
Renderuje ciąg znaków Markdown z określonymi opcjami.
|
|
449
|
+
|
|
253
450
|
```tsx
|
|
254
451
|
import { MarkdownRenderer } from "react-intlayer/markdown";
|
|
255
452
|
|
|
@@ -260,7 +457,7 @@ Jeśli musisz renderować surowe łańcuchy Markdown lub potrzebujesz większej
|
|
|
260
457
|
|
|
261
458
|
#### Hook `useMarkdownRenderer()`
|
|
262
459
|
|
|
263
|
-
|
|
460
|
+
Pobierz wstępnie skonfigurowaną funkcję renderowania.
|
|
264
461
|
|
|
265
462
|
```tsx
|
|
266
463
|
import { useMarkdownRenderer } from "react-intlayer/markdown";
|
|
@@ -283,7 +480,7 @@ Jeśli musisz renderować surowe łańcuchy Markdown lub potrzebujesz większej
|
|
|
283
480
|
```
|
|
284
481
|
|
|
285
482
|
</Tab>
|
|
286
|
-
<Tab label="Vue">
|
|
483
|
+
<Tab label="Vue" value="vue">
|
|
287
484
|
|
|
288
485
|
#### Komponent `<MarkdownRenderer />`
|
|
289
486
|
|
|
@@ -394,7 +591,7 @@ Jeśli musisz renderować surowe łańcuchy Markdown lub potrzebujesz większej
|
|
|
394
591
|
</Tab>
|
|
395
592
|
<Tab label="Angular" value="angular">
|
|
396
593
|
#### Usługa `IntlayerMarkdownService`
|
|
397
|
-
Renderuje ciąg Markdown przy użyciu usługi.
|
|
594
|
+
Renderuje ciąg znaków Markdown przy użyciu usługi.
|
|
398
595
|
|
|
399
596
|
```typescript
|
|
400
597
|
import { IntlayerMarkdownService } from "angular-intlayer/markdown";
|
|
@@ -415,7 +612,7 @@ Jeśli musisz renderować surowe łańcuchy Markdown lub potrzebujesz większej
|
|
|
415
612
|
|
|
416
613
|
## Konfiguracja globalna z `MarkdownProvider`
|
|
417
614
|
|
|
418
|
-
|
|
615
|
+
`MarkdownProvider` (lub jego odpowiednik we frameworku) konfiguruje potok renderowania Markdown dla całej aplikacji. Dotyczy to zarówno automatycznego renderowania `useIntlayer`, jak i narzędzi pomocniczych. Ustawione tutaj opcje są ustawieniami domyślnymi — `.use()` nadpisuje je na poziomie węzła.
|
|
419
616
|
|
|
420
617
|
<Tabs group="framework">
|
|
421
618
|
<Tab label="React / Next.js" value="react">
|
|
@@ -426,8 +623,9 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
426
623
|
export const AppProvider = ({ children }) => (
|
|
427
624
|
<MarkdownProvider
|
|
428
625
|
components={{
|
|
429
|
-
h1: (
|
|
430
|
-
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} />,
|
|
431
629
|
}}
|
|
432
630
|
>
|
|
433
631
|
{children}
|
|
@@ -435,7 +633,9 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
435
633
|
);
|
|
436
634
|
```
|
|
437
635
|
|
|
438
|
-
|
|
636
|
+
> MDX jest obsługiwany — każda nazwa komponentu użyta wewnątrz twojego Markdown (np. `<MyCustomJSXComponent />`) jest rozwiązywana względem mapy `components`.
|
|
637
|
+
|
|
638
|
+
Możesz również użyć własnego renderera markdown:
|
|
439
639
|
|
|
440
640
|
```tsx fileName="AppProvider.tsx"
|
|
441
641
|
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
@@ -443,8 +643,8 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
443
643
|
export const AppProvider = ({ children }) => (
|
|
444
644
|
<MarkdownProvider
|
|
445
645
|
renderMarkdown={async (md) => {
|
|
446
|
-
const {
|
|
447
|
-
return
|
|
646
|
+
const { renderMarkdown } = await import('react-intlayer/markdown');
|
|
647
|
+
return renderMarkdown(md);
|
|
448
648
|
}}
|
|
449
649
|
>
|
|
450
650
|
{children}
|
|
@@ -452,10 +652,10 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
452
652
|
);
|
|
453
653
|
```
|
|
454
654
|
|
|
455
|
-
> Dynamiczne importowanie
|
|
655
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
456
656
|
|
|
457
657
|
</Tab>
|
|
458
|
-
<Tab label="Vue">
|
|
658
|
+
<Tab label="Vue" value="vue">
|
|
459
659
|
|
|
460
660
|
```typescript fileName="main.ts"
|
|
461
661
|
import { createApp } from "vue";
|
|
@@ -479,7 +679,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
479
679
|
app.mount("#app");
|
|
480
680
|
```
|
|
481
681
|
|
|
482
|
-
Możesz również użyć własnego
|
|
682
|
+
Możesz również użyć własnego renderera markdown:
|
|
483
683
|
|
|
484
684
|
```typescript fileName="main.ts"
|
|
485
685
|
import { createApp } from "vue";
|
|
@@ -492,15 +692,15 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
492
692
|
app.use(intlayer);
|
|
493
693
|
app.use(intlayerMarkdown, {
|
|
494
694
|
renderMarkdown: async (md) => {
|
|
495
|
-
const {
|
|
496
|
-
return
|
|
695
|
+
const { renderMarkdown } = await import('vue-intlayer/markdown');
|
|
696
|
+
return renderMarkdown(md);
|
|
497
697
|
},
|
|
498
698
|
});
|
|
499
699
|
|
|
500
700
|
app.mount("#app");
|
|
501
701
|
```
|
|
502
702
|
|
|
503
|
-
> Dynamiczne importowanie
|
|
703
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
504
704
|
|
|
505
705
|
</Tab>
|
|
506
706
|
<Tab label="Svelte" value="svelte">
|
|
@@ -520,7 +720,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
520
720
|
</MarkdownProvider>
|
|
521
721
|
```
|
|
522
722
|
|
|
523
|
-
Możesz również użyć własnego
|
|
723
|
+
Możesz również użyć własnego renderera markdown:
|
|
524
724
|
|
|
525
725
|
```svelte fileName="App.svelte"
|
|
526
726
|
<script lang="ts">
|
|
@@ -529,15 +729,15 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
529
729
|
|
|
530
730
|
<MarkdownProvider
|
|
531
731
|
renderMarkdown={async (md) => {
|
|
532
|
-
const {
|
|
533
|
-
return
|
|
732
|
+
const { renderMarkdown } = await import('svelte-intlayer/markdown');
|
|
733
|
+
return renderMarkdown(md);
|
|
534
734
|
}}
|
|
535
735
|
>
|
|
536
736
|
<slot />
|
|
537
737
|
</MarkdownProvider>
|
|
538
738
|
```
|
|
539
739
|
|
|
540
|
-
> Dynamiczne importowanie
|
|
740
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
541
741
|
|
|
542
742
|
</Tab>
|
|
543
743
|
<Tab label="Preact" value="preact">
|
|
@@ -556,7 +756,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
556
756
|
);
|
|
557
757
|
```
|
|
558
758
|
|
|
559
|
-
Możesz również użyć własnego
|
|
759
|
+
Możesz również użyć własnego renderera markdown:
|
|
560
760
|
|
|
561
761
|
```tsx fileName="AppProvider.tsx"
|
|
562
762
|
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
@@ -564,8 +764,8 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
564
764
|
export const AppProvider = ({ children }) => (
|
|
565
765
|
<MarkdownProvider
|
|
566
766
|
renderMarkdown={async (md) => {
|
|
567
|
-
const {
|
|
568
|
-
return
|
|
767
|
+
const { renderMarkdown } = await import('preact-intlayer/markdown');
|
|
768
|
+
return renderMarkdown(md);
|
|
569
769
|
}}
|
|
570
770
|
>
|
|
571
771
|
{children}
|
|
@@ -573,7 +773,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
573
773
|
);
|
|
574
774
|
```
|
|
575
775
|
|
|
576
|
-
> Dynamiczne importowanie
|
|
776
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
577
777
|
|
|
578
778
|
</Tab>
|
|
579
779
|
<Tab label="Solid" value="solid">
|
|
@@ -592,7 +792,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
592
792
|
);
|
|
593
793
|
```
|
|
594
794
|
|
|
595
|
-
Możesz również użyć własnego
|
|
795
|
+
Możesz również użyć własnego renderera markdown:
|
|
596
796
|
|
|
597
797
|
```tsx fileName="AppProvider.tsx"
|
|
598
798
|
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
@@ -600,8 +800,8 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
600
800
|
export const AppProvider = (props) => (
|
|
601
801
|
<MarkdownProvider
|
|
602
802
|
renderMarkdown={async (md) => {
|
|
603
|
-
const {
|
|
604
|
-
return
|
|
803
|
+
const { renderMarkdown } = await import('solid-intlayer/markdown');
|
|
804
|
+
return renderMarkdown(md);
|
|
605
805
|
}}
|
|
606
806
|
>
|
|
607
807
|
{props.children}
|
|
@@ -609,59 +809,29 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
609
809
|
);
|
|
610
810
|
```
|
|
611
811
|
|
|
612
|
-
> Dynamiczne importowanie
|
|
812
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
613
813
|
|
|
614
814
|
</Tab>
|
|
615
815
|
<Tab label="Angular" value="angular">
|
|
616
816
|
|
|
617
|
-
```typescript fileName="app.
|
|
618
|
-
import {
|
|
619
|
-
|
|
620
|
-
export const appConfig: ApplicationConfig = {
|
|
621
|
-
providers: [
|
|
622
|
-
createIntlayerMarkdownProvider({
|
|
623
|
-
components: {
|
|
624
|
-
h1: { class: "text-2xl font-bold" },
|
|
625
|
-
},
|
|
626
|
-
}),
|
|
627
|
-
],
|
|
628
|
-
};
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
Możesz również użyć własnego silnika renderującego Markdown:
|
|
632
|
-
|
|
633
|
-
```typescript fileName="app.config.ts"
|
|
634
|
-
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';
|
|
635
820
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
821
|
+
@NgModule({
|
|
822
|
+
imports: [
|
|
823
|
+
IntlayerMarkdownModule.forRoot({
|
|
639
824
|
renderMarkdown: async (md) => {
|
|
640
|
-
const {
|
|
641
|
-
return
|
|
642
|
-
}
|
|
643
|
-
})
|
|
644
|
-
]
|
|
645
|
-
}
|
|
825
|
+
const { renderMarkdown } = await import('angular-intlayer/markdown');
|
|
826
|
+
return renderMarkdown(md);
|
|
827
|
+
}
|
|
828
|
+
})
|
|
829
|
+
]
|
|
830
|
+
})
|
|
831
|
+
export class AppModule {}
|
|
646
832
|
```
|
|
647
833
|
|
|
648
|
-
> Dynamiczne importowanie
|
|
834
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
649
835
|
|
|
650
836
|
</Tab>
|
|
651
837
|
</Tabs>
|
|
652
|
-
|
|
653
|
-
---
|
|
654
|
-
|
|
655
|
-
## Referencja opcji
|
|
656
|
-
|
|
657
|
-
Te opcje mogą być przekazane do `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer` i `renderMarkdown`.
|
|
658
|
-
|
|
659
|
-
| Opcja | Typ | Domyślnie | Opis |
|
|
660
|
-
| :-------------------- | :---------- | :-------- | :--------------------------------------------------------------------------------------------------- |
|
|
661
|
-
| `forceBlock` | `boolean` | `false` | Wymusza zawinięcie danych wyjściowych w element poziomu bloku (np. `<div>`). |
|
|
662
|
-
| `forceInline` | `boolean` | `false` | Wymusza zawinięcie danych wyjściowych w element liniowy (np. `<span>`). |
|
|
663
|
-
| `tagfilter` | `boolean` | `true` | Włącza filtr tagów GitHub w celu poprawy bezpieczeństwa poprzez usuwanie niebezpiecznych tagów HTML. |
|
|
664
|
-
| `preserveFrontmatter` | `boolean` | `false` | Jeśli `true`, frontmatter na początku ciągu Markdown nie zostanie usunięty. |
|
|
665
|
-
| `components` | `Overrides` | `{}` | Mapa tagów HTML do niestandardowych komponentów (np. `{ h1: MyHeading }`). |
|
|
666
|
-
| `wrapper` | `Component` | `null` | Niestandardowy komponent do opakowania wyrenderowanego Markdowna. |
|
|
667
|
-
| `renderMarkdown` | `Function` | `null` | Niestandardowa funkcja renderująca, która całkowicie zastąpi domyślny kompilator Markdown. |
|