@intlayer/docs 8.10.0-canary.0 → 8.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ar/dictionary/markdown.md +409 -88
- package/docs/de/dictionary/markdown.md +279 -107
- package/docs/en/dictionary/markdown.md +237 -37
- package/docs/en-GB/dictionary/markdown.md +361 -76
- package/docs/es/dictionary/markdown.md +295 -123
- package/docs/fr/dictionary/markdown.md +301 -129
- package/docs/hi/dictionary/markdown.md +376 -90
- package/docs/id/dictionary/markdown.md +377 -91
- package/docs/it/dictionary/markdown.md +296 -129
- package/docs/ko/dictionary/markdown.md +306 -134
- package/docs/pl/dictionary/markdown.md +287 -116
- package/docs/pt/dictionary/markdown.md +287 -116
- package/docs/ru/dictionary/markdown.md +78 -513
- package/docs/tr/dictionary/markdown.md +300 -130
- package/docs/uk/dictionary/markdown.md +386 -100
- package/docs/vi/dictionary/markdown.md +383 -97
- package/docs/zh/dictionary/markdown.md +293 -125
- 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";
|
|
@@ -95,34 +95,34 @@ Możesz zadeklarować treść Markdown, używając funkcji `md` lub po prostu ja
|
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
</Tab>
|
|
98
|
-
<Tab label="
|
|
99
|
-
|
|
98
|
+
<Tab label="Pliki zewnętrzne" value="external-files">
|
|
99
|
+
Importuj pliki `.md` bezpośrednio za pomocą funkcji `file`.
|
|
100
100
|
|
|
101
101
|
```typescript fileName="markdownDictionary.content.ts"
|
|
102
|
+
import { md, file, t } from "intlayer";
|
|
103
|
+
|
|
102
104
|
export default {
|
|
103
105
|
key: "app",
|
|
104
|
-
contentAutoTransformation: true, // Włącz automatyczne wykrywanie treści Markdown - Można ustawić globalnie w intlayer.config.ts
|
|
105
106
|
content: {
|
|
106
|
-
|
|
107
|
+
content: t({
|
|
108
|
+
en: md(file("./myMarkdown.en.md")),
|
|
109
|
+
pl: md(file("./myMarkdown.pl.md")),
|
|
110
|
+
}),
|
|
107
111
|
},
|
|
108
112
|
};
|
|
109
113
|
```
|
|
110
114
|
|
|
111
115
|
</Tab>
|
|
112
|
-
<Tab label="Pliki zewnętrzne" value="external-files">
|
|
113
|
-
Importuj pliki `.md` bezpośrednio przy użyciu funkcji `file`.
|
|
114
116
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
<Tab label="Automatyczne wykrywanie" value="automatic-detection">
|
|
118
|
+
Jeśli ciąg znaków zawiera typowe wskaźniki Markdown (takie jak nagłówki, listy, linki itp.), Intlayer automatycznie je przekształci.
|
|
117
119
|
|
|
120
|
+
```typescript fileName="markdownDictionary.content.ts"
|
|
118
121
|
export default {
|
|
119
122
|
key: "app",
|
|
123
|
+
contentAutoTransformation: true, // Włącz automatyczne wykrywanie treści Markdown - Można ustawić globalnie w intlayer.config.ts
|
|
120
124
|
content: {
|
|
121
|
-
|
|
122
|
-
en: md(file("./myMarkdown.en.md")),
|
|
123
|
-
fr: md(file("./myMarkdown.fr.md")),
|
|
124
|
-
pl: md(file("./myMarkdown.pl.md")),
|
|
125
|
-
}),
|
|
125
|
+
myMarkdownContent: "## Mój tytuł \n\nLorem Ipsum",
|
|
126
126
|
},
|
|
127
127
|
};
|
|
128
128
|
```
|
|
@@ -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,9 @@ 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
|
-
|
|
447
|
-
|
|
646
|
+
// Use dynamic import to reduce the bundle size of your application
|
|
647
|
+
const { renderMarkdown } = await import('react-intlayer/markdown');
|
|
648
|
+
return renderMarkdown(md);
|
|
448
649
|
}}
|
|
449
650
|
>
|
|
450
651
|
{children}
|
|
@@ -452,10 +653,10 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
452
653
|
);
|
|
453
654
|
```
|
|
454
655
|
|
|
455
|
-
> Dynamiczne importowanie
|
|
656
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
456
657
|
|
|
457
658
|
</Tab>
|
|
458
|
-
<Tab label="Vue">
|
|
659
|
+
<Tab label="Vue" value="vue">
|
|
459
660
|
|
|
460
661
|
```typescript fileName="main.ts"
|
|
461
662
|
import { createApp } from "vue";
|
|
@@ -479,7 +680,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
479
680
|
app.mount("#app");
|
|
480
681
|
```
|
|
481
682
|
|
|
482
|
-
Możesz również użyć własnego
|
|
683
|
+
Możesz również użyć własnego renderera markdown:
|
|
483
684
|
|
|
484
685
|
```typescript fileName="main.ts"
|
|
485
686
|
import { createApp } from "vue";
|
|
@@ -492,15 +693,15 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
492
693
|
app.use(intlayer);
|
|
493
694
|
app.use(intlayerMarkdown, {
|
|
494
695
|
renderMarkdown: async (md) => {
|
|
495
|
-
const {
|
|
496
|
-
return
|
|
696
|
+
const { renderMarkdown } = await import('vue-intlayer/markdown');
|
|
697
|
+
return renderMarkdown(md);
|
|
497
698
|
},
|
|
498
699
|
});
|
|
499
700
|
|
|
500
701
|
app.mount("#app");
|
|
501
702
|
```
|
|
502
703
|
|
|
503
|
-
> Dynamiczne importowanie
|
|
704
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
504
705
|
|
|
505
706
|
</Tab>
|
|
506
707
|
<Tab label="Svelte" value="svelte">
|
|
@@ -520,7 +721,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
520
721
|
</MarkdownProvider>
|
|
521
722
|
```
|
|
522
723
|
|
|
523
|
-
Możesz również użyć własnego
|
|
724
|
+
Możesz również użyć własnego renderera markdown:
|
|
524
725
|
|
|
525
726
|
```svelte fileName="App.svelte"
|
|
526
727
|
<script lang="ts">
|
|
@@ -529,15 +730,15 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
529
730
|
|
|
530
731
|
<MarkdownProvider
|
|
531
732
|
renderMarkdown={async (md) => {
|
|
532
|
-
const {
|
|
533
|
-
return
|
|
733
|
+
const { renderMarkdown } = await import('svelte-intlayer/markdown');
|
|
734
|
+
return renderMarkdown(md);
|
|
534
735
|
}}
|
|
535
736
|
>
|
|
536
737
|
<slot />
|
|
537
738
|
</MarkdownProvider>
|
|
538
739
|
```
|
|
539
740
|
|
|
540
|
-
> Dynamiczne importowanie
|
|
741
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
541
742
|
|
|
542
743
|
</Tab>
|
|
543
744
|
<Tab label="Preact" value="preact">
|
|
@@ -556,7 +757,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
556
757
|
);
|
|
557
758
|
```
|
|
558
759
|
|
|
559
|
-
Możesz również użyć własnego
|
|
760
|
+
Możesz również użyć własnego renderera markdown:
|
|
560
761
|
|
|
561
762
|
```tsx fileName="AppProvider.tsx"
|
|
562
763
|
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
@@ -564,8 +765,8 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
564
765
|
export const AppProvider = ({ children }) => (
|
|
565
766
|
<MarkdownProvider
|
|
566
767
|
renderMarkdown={async (md) => {
|
|
567
|
-
const {
|
|
568
|
-
return
|
|
768
|
+
const { renderMarkdown } = await import('preact-intlayer/markdown');
|
|
769
|
+
return renderMarkdown(md);
|
|
569
770
|
}}
|
|
570
771
|
>
|
|
571
772
|
{children}
|
|
@@ -573,7 +774,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
573
774
|
);
|
|
574
775
|
```
|
|
575
776
|
|
|
576
|
-
> Dynamiczne importowanie
|
|
777
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
577
778
|
|
|
578
779
|
</Tab>
|
|
579
780
|
<Tab label="Solid" value="solid">
|
|
@@ -592,7 +793,7 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
592
793
|
);
|
|
593
794
|
```
|
|
594
795
|
|
|
595
|
-
Możesz również użyć własnego
|
|
796
|
+
Możesz również użyć własnego renderera markdown:
|
|
596
797
|
|
|
597
798
|
```tsx fileName="AppProvider.tsx"
|
|
598
799
|
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
@@ -600,8 +801,8 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
600
801
|
export const AppProvider = (props) => (
|
|
601
802
|
<MarkdownProvider
|
|
602
803
|
renderMarkdown={async (md) => {
|
|
603
|
-
const {
|
|
604
|
-
return
|
|
804
|
+
const { renderMarkdown } = await import('solid-intlayer/markdown');
|
|
805
|
+
return renderMarkdown(md);
|
|
605
806
|
}}
|
|
606
807
|
>
|
|
607
808
|
{props.children}
|
|
@@ -609,59 +810,29 @@ Możesz skonfigurować renderowanie Markdown globalnie dla całej aplikacji. To
|
|
|
609
810
|
);
|
|
610
811
|
```
|
|
611
812
|
|
|
612
|
-
> Dynamiczne importowanie
|
|
813
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
613
814
|
|
|
614
815
|
</Tab>
|
|
615
816
|
<Tab label="Angular" value="angular">
|
|
616
817
|
|
|
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:
|
|
818
|
+
```typescript fileName="app.module.ts"
|
|
819
|
+
import { NgModule } from '@angular/core';
|
|
820
|
+
import { IntlayerMarkdownModule } from 'angular-intlayer/markdown';
|
|
632
821
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
export const appConfig: ApplicationConfig = {
|
|
637
|
-
providers: [
|
|
638
|
-
createIntlayerMarkdownProvider({
|
|
822
|
+
@NgModule({
|
|
823
|
+
imports: [
|
|
824
|
+
IntlayerMarkdownModule.forRoot({
|
|
639
825
|
renderMarkdown: async (md) => {
|
|
640
|
-
const {
|
|
641
|
-
return
|
|
642
|
-
}
|
|
643
|
-
})
|
|
644
|
-
]
|
|
645
|
-
}
|
|
826
|
+
const { renderMarkdown } = await import('angular-intlayer/markdown');
|
|
827
|
+
return renderMarkdown(md);
|
|
828
|
+
}
|
|
829
|
+
})
|
|
830
|
+
]
|
|
831
|
+
})
|
|
832
|
+
export class AppModule {}
|
|
646
833
|
```
|
|
647
834
|
|
|
648
|
-
> Dynamiczne importowanie
|
|
835
|
+
> Dynamiczne importowanie twojego renderera Markdown to świetny sposób na zmniejszenie rozmiaru pakietu twojej aplikacji.
|
|
649
836
|
|
|
650
837
|
</Tab>
|
|
651
838
|
</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. |
|