@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:
|
|
5
|
+
description: Découvrez comment déclarer et utiliser du contenu Markdown sur votre site multilingue avec Intlayer. Suivez les étapes de cette documentation en ligne pour intégrer facilement Markdown à votre projet.
|
|
6
6
|
keywords:
|
|
7
7
|
- Markdown
|
|
8
8
|
- Internationalisation
|
|
@@ -19,51 +19,51 @@ slugs:
|
|
|
19
19
|
history:
|
|
20
20
|
- version: 8.10.0
|
|
21
21
|
date: 2026-05-19
|
|
22
|
-
changes: "
|
|
22
|
+
changes: "Ajout de la prise en charge des fichiers `.content.md`"
|
|
23
23
|
- version: 8.5.0
|
|
24
24
|
date: 2026-03-24
|
|
25
|
-
changes: "
|
|
25
|
+
changes: "Ajout de l'objet plugin `intlayerMarkdown` ; utilisez `app.use(intlayerMarkdown)` au lieu de `app.use(installIntlayerMarkdown)`"
|
|
26
26
|
- version: 8.5.0
|
|
27
27
|
date: 2026-03-24
|
|
28
|
-
changes: "
|
|
28
|
+
changes: "Déplacement de l'import depuis `{{framework}}-intlayer` vers `{{framework}}-intlayer/markdown`"
|
|
29
29
|
- version: 8.0.0
|
|
30
30
|
date: 2026-01-22
|
|
31
|
-
changes: "
|
|
31
|
+
changes: "Ajout de MarkdownRenderer / useMarkdownRenderer / renderMarkdown et de l'option forceInline"
|
|
32
32
|
- version: 8.0.0
|
|
33
33
|
date: 2026-01-18
|
|
34
|
-
changes: "Décoration automatique du contenu markdown,
|
|
34
|
+
changes: "Décoration automatique du contenu markdown, prise en charge de MDX et SSR"
|
|
35
35
|
- version: 5.5.10
|
|
36
36
|
date: 2025-06-29
|
|
37
37
|
changes: "Initialisation de l'historique"
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
# Markdown / Contenu Riche
|
|
40
|
+
# Markdown / Contenu Texte Riche
|
|
41
41
|
|
|
42
|
-
Intlayer prend en charge le contenu riche
|
|
42
|
+
Intlayer prend en charge le contenu texte riche défini à l'aide de la syntaxe Markdown. Cela vous permet de rédiger et de gérer facilement du contenu avec une mise en forme avancée, comme des blogs, des articles, et bien plus encore.
|
|
43
43
|
|
|
44
|
-
## Déclarer du
|
|
44
|
+
## Déclarer du Contenu Markdown
|
|
45
45
|
|
|
46
|
-
Vous pouvez déclarer du contenu Markdown
|
|
46
|
+
Vous pouvez déclarer du contenu Markdown en utilisant la fonction `md` ou simplement comme une chaîne de caractères (si elle contient de la syntaxe Markdown).
|
|
47
47
|
|
|
48
48
|
<Tabs>
|
|
49
49
|
<Tab label=".content.md" value=".content.md">
|
|
50
|
-
Depuis la version `8.10.0`, vous pouvez déclarer du contenu Markdown directement dans
|
|
50
|
+
Depuis la version `8.10.0`, vous pouvez déclarer du contenu Markdown directement dans des fichiers `.content.md`. Intlayer détectera et analysera automatiquement le contenu 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: Mon contenu
|
|
56
|
-
locale:
|
|
56
|
+
locale: en
|
|
57
57
|
---
|
|
58
58
|
|
|
59
59
|
# Mon contenu
|
|
60
60
|
|
|
61
|
-
Voici un exemple de contenu
|
|
61
|
+
Voici un exemple de contenu markdown
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
Le champ
|
|
64
|
+
Le champ front-matter `locale` permet de définir la langue du contenu. Il est optionnel. S'il n'est pas fourni, Intlayer utilisera la langue par défaut, qui sert également de langue de secours si aucune traduction n'est disponible pour une langue spécifique.
|
|
65
65
|
|
|
66
|
-
Exemple de structure de
|
|
66
|
+
Exemple de structure de fichiers :
|
|
67
67
|
|
|
68
68
|
```text
|
|
69
69
|
content/
|
|
@@ -75,10 +75,10 @@ Vous pouvez déclarer du contenu Markdown à l'aide de la fonction `md` ou simpl
|
|
|
75
75
|
└── markdown-file.es.content.md
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
Vous pouvez ajouter dans le front-matter
|
|
78
|
+
Vous pouvez ajouter dans le front-matter n'importe quelle propriété définie dans la [Définition du dictionnaire](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/content_file.md)
|
|
79
79
|
|
|
80
80
|
</Tab>
|
|
81
|
-
<Tab label="
|
|
81
|
+
<Tab label="Encapsulation Manuelle" value="manual-wrapping">
|
|
82
82
|
Utilisez la fonction `md` pour déclarer explicitement du contenu Markdown. Cela est utile si vous voulez vous assurer qu'une chaîne est traitée comme du Markdown même si elle ne contient pas de syntaxe évidente.
|
|
83
83
|
|
|
84
84
|
```typescript fileName="markdownDictionary.content.ts"
|
|
@@ -87,7 +87,7 @@ Vous pouvez déclarer du contenu Markdown à l'aide de la fonction `md` ou simpl
|
|
|
87
87
|
const markdownDictionary = {
|
|
88
88
|
key: "app",
|
|
89
89
|
content: {
|
|
90
|
-
myMarkdownContent: md("##
|
|
90
|
+
myMarkdownContent: md("## Mon titre \n\nLorem Ipsum"),
|
|
91
91
|
},
|
|
92
92
|
} satisfies Dictionary;
|
|
93
93
|
|
|
@@ -96,21 +96,22 @@ Vous pouvez déclarer du contenu Markdown à l'aide de la fonction `md` ou simpl
|
|
|
96
96
|
|
|
97
97
|
</Tab>
|
|
98
98
|
<Tab label="Détection Automatique" value="automatic-detection">
|
|
99
|
-
Si la chaîne contient des indicateurs Markdown courants (comme des
|
|
99
|
+
Si la chaîne de caractères contient des indicateurs Markdown courants (comme des en-têtes, des listes, des liens, etc.), Intlayer la transformera automatiquement.
|
|
100
100
|
|
|
101
101
|
```typescript fileName="markdownDictionary.content.ts"
|
|
102
102
|
export default {
|
|
103
103
|
key: "app",
|
|
104
|
-
contentAutoTransformation: true, // Activer la détection automatique du
|
|
104
|
+
contentAutoTransformation: true, // Activer la détection automatique du Markdown - Peut être défini globalement dans intlayer.config.ts
|
|
105
105
|
content: {
|
|
106
|
-
myMarkdownContent: "##
|
|
106
|
+
myMarkdownContent: "## Mon titre \n\nLorem Ipsum",
|
|
107
107
|
},
|
|
108
108
|
};
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
</Tab>
|
|
112
|
+
|
|
112
113
|
<Tab label="Fichiers Externes" value="external-files">
|
|
113
|
-
Importez des fichiers `.md` directement
|
|
114
|
+
Importez des fichiers `.md` directement en utilisant la fonction `file`.
|
|
114
115
|
|
|
115
116
|
```typescript fileName="markdownDictionary.content.ts"
|
|
116
117
|
import { md, file, t } from "intlayer";
|
|
@@ -131,38 +132,74 @@ Vous pouvez déclarer du contenu Markdown à l'aide de la fonction `md` ou simpl
|
|
|
131
132
|
|
|
132
133
|
---
|
|
133
134
|
|
|
134
|
-
## Rendu
|
|
135
|
+
## Rendu Markdown
|
|
136
|
+
|
|
137
|
+
Intlayer propose deux manières indépendantes de rendre du Markdown :
|
|
138
|
+
|
|
139
|
+
1. **Via `useIntlayer`**
|
|
140
|
+
— Intlayer transforme automatiquement le nœud `md` dans le format natif du framework (JSX, VNode, chaîne HTML).
|
|
141
|
+
- Le frontmatter est analysé et exposé sous `.metadata`. Vous pouvez remplacer le rendu à deux niveaux — globalement avec `MarkdownProvider` (ou l'équivalent du framework) et localement par nœud avec `.use()`. Les deux peuvent être combinés ; `.use()` est prioritaire sur `MarkdownProvider`, qui est lui-même prioritaire sur le rendu par défaut.
|
|
135
142
|
|
|
136
|
-
|
|
143
|
+
2. **Utilitaires d'aide** — `<MarkdownRenderer />`, `useMarkdownRenderer()` et `renderMarkdown()` sont des outils indépendants qui n'acceptent que **des chaînes Markdown brutes**. Ils sont indépendants de `useIntlayer` et ne fonctionnent pas avec les nœuds décorés qu'il retourne.
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
Le rendu Markdown prend en charge **MDX** — utilisez n'importe quel composant JSX/framework par son nom directement dans votre Markdown.
|
|
139
146
|
|
|
140
|
-
|
|
147
|
+
### 1. Rendu Automatique (via `useIntlayer`)
|
|
141
148
|
|
|
142
149
|
<Tabs group="framework">
|
|
143
150
|
<Tab label="React / Next.js" value="react">
|
|
144
|
-
Les nœuds Markdown peuvent être rendus directement
|
|
151
|
+
Les nœuds Markdown peuvent être rendus directement sous forme de JSX.
|
|
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} />, // Composant MDX
|
|
168
|
+
}}
|
|
169
|
+
>
|
|
170
|
+
<AppContent />
|
|
171
|
+
</MarkdownProvider>
|
|
172
|
+
);
|
|
153
173
|
```
|
|
154
174
|
|
|
155
|
-
|
|
175
|
+
> Si `MarkdownProvider` n'est pas présent, Intlayer rendra le markdown en utilisant le parser par défaut de Markdown vers JSX.
|
|
176
|
+
|
|
177
|
+
Vous pouvez également fournir des remplacements locaux pour des nœuds spécifiques en utilisant la méthode `.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
|
+
Vous pouvez récupérer le Markdown sous forme de chaîne de caractères :
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
{myMarkdownContent.value}
|
|
189
|
+
{String(myMarkdownContent)}
|
|
190
|
+
{myMarkdownContent.toString()}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
{myMarkdownContent.metadata}
|
|
197
|
+
{myMarkdownContent.metadata.title}
|
|
198
|
+
```
|
|
199
|
+
|
|
163
200
|
</Tab>
|
|
164
201
|
<Tab label="Vue" value="vue">
|
|
165
|
-
Dans Vue, le contenu Markdown peut être rendu
|
|
202
|
+
Dans Vue, le contenu Markdown peut être rendu en utilisant la balise `component` intégrée ou directement comme un nœud.
|
|
166
203
|
|
|
167
204
|
```vue fileName="App.vue"
|
|
168
205
|
<script setup>
|
|
@@ -175,48 +212,188 @@ Lorsque vous accédez au contenu via `useIntlayer`, les nœuds Markdown sont dé
|
|
|
175
212
|
</template>
|
|
176
213
|
```
|
|
177
214
|
|
|
215
|
+
Configurez globalement via le plugin `intlayerMarkdown` (prend en charge les composants personnalisés 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), // Composant MDX
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
> Si le plugin `intlayerMarkdown` n'est pas installé, Intlayer effectuera le rendu avec le compilateur par défaut.
|
|
229
|
+
|
|
230
|
+
Vous pouvez également fournir des remplacements locaux pour des nœuds spécifiques en utilisant la méthode `.use()` :
|
|
231
|
+
|
|
232
|
+
```vue
|
|
233
|
+
<component :is="myMarkdownContent.use({
|
|
234
|
+
h1: (props) => h('h1', { style: { color: 'red' } }, props.children),
|
|
235
|
+
})" />
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Vous pouvez récupérer le Markdown sous forme de chaîne de caractères :
|
|
239
|
+
|
|
240
|
+
```vue
|
|
241
|
+
{{ myMarkdownContent.value }}
|
|
242
|
+
{{ String(myMarkdownContent) }}
|
|
243
|
+
{{ myMarkdownContent.toString() }}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
|
|
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 rend le Markdown sous forme de chaîne HTML par défaut. Utilisez `{@html}` pour le rendre.
|
|
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` n'est pas présent, Intlayer rendra le markdown avec le compilateur par défaut.
|
|
272
|
+
|
|
273
|
+
Vous pouvez également fournir des remplacements locaux pour des nœuds spécifiques en utilisant la méthode `.use()` :
|
|
274
|
+
|
|
275
|
+
```svelte
|
|
276
|
+
{@html $content.myMarkdownContent.use({ ... })}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Vous pouvez récupérer le Markdown sous forme de chaîne de caractères :
|
|
280
|
+
|
|
281
|
+
```svelte
|
|
282
|
+
{$content.myMarkdownContent.value}
|
|
283
|
+
{String($content.myMarkdownContent)}
|
|
284
|
+
{$content.myMarkdownContent.toString()}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
|
|
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 prend en charge les nœuds Markdown directement
|
|
296
|
+
Preact prend en charge les nœuds Markdown directement 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} />, // Composant MDX
|
|
312
|
+
}}
|
|
313
|
+
>
|
|
314
|
+
<AppContent />
|
|
315
|
+
</MarkdownProvider>
|
|
316
|
+
);
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
> Si `MarkdownProvider` n'est pas présent, Intlayer rendra le markdown en utilisant le parser par défaut de Markdown vers JSX.
|
|
320
|
+
|
|
321
|
+
Vous pouvez également fournir des remplacements locaux pour des nœuds spécifiques en utilisant la méthode `.use()` :
|
|
322
|
+
|
|
323
|
+
```tsx
|
|
324
|
+
{myMarkdownContent.use({
|
|
325
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
326
|
+
})}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Vous pouvez récupérer le Markdown sous forme de chaîne de caractères :
|
|
330
|
+
|
|
331
|
+
```tsx
|
|
332
|
+
{myMarkdownContent.value}
|
|
333
|
+
{String(myMarkdownContent)}
|
|
334
|
+
{myMarkdownContent.toString()}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
|
|
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 prend en charge les nœuds Markdown directement
|
|
346
|
+
Solid prend en charge les nœuds Markdown directement 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} />, // Composant MDX
|
|
362
|
+
}}
|
|
363
|
+
>
|
|
364
|
+
<AppContent />
|
|
365
|
+
</MarkdownProvider>
|
|
366
|
+
);
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
> Si `MarkdownProvider` n'est pas présent, Intlayer rendra le markdown en utilisant le parser par défaut de Markdown vers JSX.
|
|
370
|
+
|
|
371
|
+
Vous pouvez également fournir des remplacements locaux pour des nœuds spécifiques en utilisant la méthode `.use()` :
|
|
372
|
+
|
|
373
|
+
```tsx
|
|
374
|
+
{myMarkdownContent.use({
|
|
375
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
376
|
+
})}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Vous pouvez récupérer le Markdown sous forme de chaîne de caractères :
|
|
380
|
+
|
|
381
|
+
```tsx
|
|
382
|
+
{myMarkdownContent.value}
|
|
383
|
+
{String(myMarkdownContent)}
|
|
384
|
+
{myMarkdownContent.toString()}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
|
|
388
|
+
|
|
389
|
+
```tsx
|
|
390
|
+
{myMarkdownContent.metadata}
|
|
391
|
+
{myMarkdownContent.metadata.title}
|
|
215
392
|
```
|
|
216
393
|
|
|
217
394
|
</Tab>
|
|
218
395
|
<Tab label="Angular" value="angular">
|
|
219
|
-
Angular utilise la directive `[innerHTML]` pour
|
|
396
|
+
Angular utilise la directive `[innerHTML]` pour afficher le contenu Markdown.
|
|
220
397
|
|
|
221
398
|
```typescript fileName="app.component.ts"
|
|
222
399
|
import { Component } from "@angular/core";
|
|
@@ -231,7 +408,9 @@ Lorsque vous accédez au contenu via `useIntlayer`, les nœuds Markdown sont dé
|
|
|
231
408
|
}
|
|
232
409
|
```
|
|
233
410
|
|
|
234
|
-
|
|
411
|
+
> Si le fournisseur IntlayerMarkdown n'est pas configuré, Intlayer effectuera le rendu avec le compilateur par défaut.
|
|
412
|
+
|
|
413
|
+
Vous pouvez également fournir des remplacements locaux pour des nœuds spécifiques en utilisant la méthode `.use()` :
|
|
235
414
|
|
|
236
415
|
```typescript
|
|
237
416
|
content().myMarkdownContent.use({
|
|
@@ -239,27 +418,46 @@ Lorsque vous accédez au contenu via `useIntlayer`, les nœuds Markdown sont dé
|
|
|
239
418
|
})
|
|
240
419
|
```
|
|
241
420
|
|
|
421
|
+
Vous pouvez récupérer le Markdown sous forme de chaîne de caractères :
|
|
422
|
+
|
|
423
|
+
```typescript
|
|
424
|
+
content().myMarkdownContent.value
|
|
425
|
+
String(content().myMarkdownContent)
|
|
426
|
+
content().myMarkdownContent.toString()
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
Et vous pouvez accéder aux métadonnées de votre markdown comme ceci :
|
|
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. Utilitaires d'aide (Chaînes Markdown Uniquement)
|
|
246
440
|
|
|
247
|
-
|
|
441
|
+
Ces utilitaires rendent **des chaînes Markdown brutes** et sont indépendants de `useIntlayer`. Utilisez-les lorsque vous devez afficher du Markdown provenant de sources autres que vos dictionnaires.
|
|
248
442
|
|
|
249
443
|
<Tabs group="framework">
|
|
250
444
|
<Tab label="React / Next.js" value="react">
|
|
251
445
|
|
|
446
|
+
#### Composant `<MarkdownRenderer />`
|
|
447
|
+
|
|
448
|
+
Rend une chaîne Markdown avec des options spécifiques.
|
|
449
|
+
|
|
252
450
|
```tsx
|
|
253
451
|
import { MarkdownRenderer } from "react-intlayer/markdown";
|
|
254
452
|
|
|
255
453
|
<MarkdownRenderer forceBlock={true} tagfilter={true}>
|
|
256
|
-
{"#
|
|
454
|
+
{"# Mon Titre"}
|
|
257
455
|
</MarkdownRenderer>
|
|
258
456
|
```
|
|
259
457
|
|
|
260
458
|
#### Hook `useMarkdownRenderer()`
|
|
261
459
|
|
|
262
|
-
|
|
460
|
+
Obtenez une fonction de rendu préconfigurée.
|
|
263
461
|
|
|
264
462
|
```tsx
|
|
265
463
|
import { useMarkdownRenderer } from "react-intlayer/markdown";
|
|
@@ -269,7 +467,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
269
467
|
components: { h1: (props) => <h1 {...props} className="custom" /> }
|
|
270
468
|
});
|
|
271
469
|
|
|
272
|
-
return renderMarkdown("#
|
|
470
|
+
return renderMarkdown("# Mon Titre");
|
|
273
471
|
```
|
|
274
472
|
|
|
275
473
|
#### Utilitaire `renderMarkdown()`
|
|
@@ -278,7 +476,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
278
476
|
```tsx
|
|
279
477
|
import { renderMarkdown } from "react-intlayer/markdown";
|
|
280
478
|
|
|
281
|
-
const jsx = renderMarkdown("#
|
|
479
|
+
const jsx = renderMarkdown("# Mon Titre", { forceBlock: true });
|
|
282
480
|
```
|
|
283
481
|
|
|
284
482
|
</Tab>
|
|
@@ -292,7 +490,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
292
490
|
</script>
|
|
293
491
|
|
|
294
492
|
<template>
|
|
295
|
-
<MarkdownRenderer :forceBlock="true" content="#
|
|
493
|
+
<MarkdownRenderer :forceBlock="true" content="# Mon Titre" />
|
|
296
494
|
</template>
|
|
297
495
|
```
|
|
298
496
|
|
|
@@ -306,7 +504,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
306
504
|
import { MarkdownRenderer } from "svelte-intlayer/markdown";
|
|
307
505
|
</script>
|
|
308
506
|
|
|
309
|
-
<MarkdownRenderer forceBlock={true} value="#
|
|
507
|
+
<MarkdownRenderer forceBlock={true} value="# Mon Titre" />
|
|
310
508
|
```
|
|
311
509
|
|
|
312
510
|
#### Hook `useMarkdownRenderer()`
|
|
@@ -317,7 +515,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
317
515
|
const render = useMarkdownRenderer();
|
|
318
516
|
</script>
|
|
319
517
|
|
|
320
|
-
{@html render("#
|
|
518
|
+
{@html render("# Mon Titre")}
|
|
321
519
|
```
|
|
322
520
|
|
|
323
521
|
#### Utilitaire `renderMarkdown()`
|
|
@@ -327,7 +525,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
327
525
|
import { renderMarkdown } from "svelte-intlayer/markdown";
|
|
328
526
|
</script>
|
|
329
527
|
|
|
330
|
-
{@html renderMarkdown("#
|
|
528
|
+
{@html renderMarkdown("# Mon Titre")}
|
|
331
529
|
```
|
|
332
530
|
|
|
333
531
|
</Tab>
|
|
@@ -338,7 +536,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
338
536
|
import { MarkdownRenderer } from "preact-intlayer/markdown";
|
|
339
537
|
|
|
340
538
|
<MarkdownRenderer forceBlock={true}>
|
|
341
|
-
{"#
|
|
539
|
+
{"# Mon Titre"}
|
|
342
540
|
</MarkdownRenderer>
|
|
343
541
|
```
|
|
344
542
|
|
|
@@ -349,7 +547,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
349
547
|
|
|
350
548
|
const render = useMarkdownRenderer();
|
|
351
549
|
|
|
352
|
-
return <div>{render("#
|
|
550
|
+
return <div>{render("# Mon Titre")}</div>;
|
|
353
551
|
```
|
|
354
552
|
|
|
355
553
|
#### Utilitaire `renderMarkdown()`
|
|
@@ -357,7 +555,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
357
555
|
```tsx
|
|
358
556
|
import { renderMarkdown } from "preact-intlayer/markdown";
|
|
359
557
|
|
|
360
|
-
return <div>{renderMarkdown("#
|
|
558
|
+
return <div>{renderMarkdown("# Mon Titre")}</div>;
|
|
361
559
|
```
|
|
362
560
|
|
|
363
561
|
</Tab>
|
|
@@ -368,7 +566,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
368
566
|
import { MarkdownRenderer } from "solid-intlayer/markdown";
|
|
369
567
|
|
|
370
568
|
<MarkdownRenderer forceBlock={true}>
|
|
371
|
-
{"#
|
|
569
|
+
{"# Mon Titre"}
|
|
372
570
|
</MarkdownRenderer>
|
|
373
571
|
```
|
|
374
572
|
|
|
@@ -379,7 +577,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
379
577
|
|
|
380
578
|
const render = useMarkdownRenderer();
|
|
381
579
|
|
|
382
|
-
return <div>{render("#
|
|
580
|
+
return <div>{render("# Mon Titre")}</div>;
|
|
383
581
|
```
|
|
384
582
|
|
|
385
583
|
#### Utilitaire `renderMarkdown()`
|
|
@@ -387,13 +585,13 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
387
585
|
```tsx
|
|
388
586
|
import { renderMarkdown } from "solid-intlayer/markdown";
|
|
389
587
|
|
|
390
|
-
return <div>{renderMarkdown("#
|
|
588
|
+
return <div>{renderMarkdown("# Mon Titre")}</div>;
|
|
391
589
|
```
|
|
392
590
|
|
|
393
591
|
</Tab>
|
|
394
592
|
<Tab label="Angular" value="angular">
|
|
395
593
|
#### Service `IntlayerMarkdownService`
|
|
396
|
-
|
|
594
|
+
Rend une chaîne Markdown en utilisant le service.
|
|
397
595
|
|
|
398
596
|
```typescript
|
|
399
597
|
import { IntlayerMarkdownService } from "angular-intlayer/markdown";
|
|
@@ -414,7 +612,7 @@ Si vous avez besoin de rendre des chaînes Markdown brutes ou si vous voulez plu
|
|
|
414
612
|
|
|
415
613
|
## Configuration Globale avec `MarkdownProvider`
|
|
416
614
|
|
|
417
|
-
|
|
615
|
+
Le `MarkdownProvider` (ou son équivalent dans un framework) configure le pipeline de rendu Markdown pour toute votre application. Cela s'applique aussi bien au rendu automatique `useIntlayer` qu'aux utilitaires d'aide. Les options définies ici sont les options par défaut — `.use()` les remplace au niveau du nœud.
|
|
418
616
|
|
|
419
617
|
<Tabs group="framework">
|
|
420
618
|
<Tab label="React / Next.js" value="react">
|
|
@@ -425,8 +623,9 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
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 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
434
633
|
);
|
|
435
634
|
```
|
|
436
635
|
|
|
437
|
-
|
|
636
|
+
> MDX est pris en charge — tout nom de composant utilisé dans votre Markdown (ex. `<MyCustomJSXComponent />`) est résolu par rapport à la correspondance dans `components`.
|
|
637
|
+
|
|
638
|
+
Vous pouvez également utiliser votre propre rendu de markdown :
|
|
438
639
|
|
|
439
640
|
```tsx fileName="AppProvider.tsx"
|
|
440
641
|
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
@@ -442,8 +643,8 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
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 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
451
652
|
);
|
|
452
653
|
```
|
|
453
654
|
|
|
454
|
-
> L'
|
|
655
|
+
> L'import dynamique de votre système de rendu Markdown est un bon moyen de réduire la taille du bundle de votre application.
|
|
455
656
|
|
|
456
657
|
</Tab>
|
|
457
658
|
<Tab label="Vue" value="vue">
|
|
@@ -478,7 +679,7 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
478
679
|
app.mount("#app");
|
|
479
680
|
```
|
|
480
681
|
|
|
481
|
-
Vous pouvez également utiliser votre propre
|
|
682
|
+
Vous pouvez également utiliser votre propre rendu de markdown :
|
|
482
683
|
|
|
483
684
|
```typescript fileName="main.ts"
|
|
484
685
|
import { createApp } from "vue";
|
|
@@ -491,15 +692,15 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
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
|
-
> L'
|
|
703
|
+
> L'import dynamique de votre système de rendu Markdown est un bon moyen de réduire la taille du bundle de votre application.
|
|
503
704
|
|
|
504
705
|
</Tab>
|
|
505
706
|
<Tab label="Svelte" value="svelte">
|
|
@@ -519,7 +720,7 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
519
720
|
</MarkdownProvider>
|
|
520
721
|
```
|
|
521
722
|
|
|
522
|
-
Vous pouvez également utiliser votre propre
|
|
723
|
+
Vous pouvez également utiliser votre propre rendu de markdown :
|
|
523
724
|
|
|
524
725
|
```svelte fileName="App.svelte"
|
|
525
726
|
<script lang="ts">
|
|
@@ -528,15 +729,15 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
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
|
-
> L'
|
|
740
|
+
> L'import dynamique de votre système de rendu Markdown est un bon moyen de réduire la taille du bundle de votre application.
|
|
540
741
|
|
|
541
742
|
</Tab>
|
|
542
743
|
<Tab label="Preact" value="preact">
|
|
@@ -555,7 +756,7 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
555
756
|
);
|
|
556
757
|
```
|
|
557
758
|
|
|
558
|
-
Vous pouvez également utiliser votre propre
|
|
759
|
+
Vous pouvez également utiliser votre propre rendu de markdown :
|
|
559
760
|
|
|
560
761
|
```tsx fileName="AppProvider.tsx"
|
|
561
762
|
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
@@ -563,8 +764,8 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
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 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
572
773
|
);
|
|
573
774
|
```
|
|
574
775
|
|
|
575
|
-
> L'
|
|
776
|
+
> L'import dynamique de votre système de rendu Markdown est un bon moyen de réduire la taille du bundle de votre application.
|
|
576
777
|
|
|
577
778
|
</Tab>
|
|
578
779
|
<Tab label="Solid" value="solid">
|
|
@@ -591,7 +792,7 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
591
792
|
);
|
|
592
793
|
```
|
|
593
794
|
|
|
594
|
-
Vous pouvez également utiliser votre propre
|
|
795
|
+
Vous pouvez également utiliser votre propre rendu de markdown :
|
|
595
796
|
|
|
596
797
|
```tsx fileName="AppProvider.tsx"
|
|
597
798
|
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
@@ -599,8 +800,8 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
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 @@ Vous pouvez configurer le rendu Markdown globalement pour l'ensemble de votre ap
|
|
|
608
809
|
);
|
|
609
810
|
```
|
|
610
811
|
|
|
611
|
-
> L'
|
|
812
|
+
> L'import dynamique de votre système de rendu Markdown est un bon moyen de réduire la taille du bundle de votre application.
|
|
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
|
-
Vous pouvez également utiliser votre propre moteur de rendu 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
|
-
> L'
|
|
834
|
+
> L'import dynamique de votre système de rendu Markdown est un bon moyen de réduire la taille du bundle de votre application.
|
|
648
835
|
|
|
649
836
|
</Tab>
|
|
650
837
|
</Tabs>
|
|
651
|
-
|
|
652
|
-
---
|
|
653
|
-
|
|
654
|
-
## Référence des Options
|
|
655
|
-
|
|
656
|
-
Ces options peuvent être passées à `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer`, et `renderMarkdown`.
|
|
657
|
-
|
|
658
|
-
| Option | Type | Défaut | Description |
|
|
659
|
-
| :-------------------- | :---------- | :------ | :------------------------------------------------------------------------------------------------------ |
|
|
660
|
-
| `forceBlock` | `boolean` | `false` | Force la sortie à être enveloppée dans un élément de niveau bloc (par exemple, `<div>`). |
|
|
661
|
-
| `forceInline` | `boolean` | `false` | Force la sortie à être enveloppée dans un élément en ligne (par exemple, `<span>`). |
|
|
662
|
-
| `tagfilter` | `boolean` | `true` | Active le filtre de balises GitHub pour une sécurité accrue en supprimant les balises HTML dangereuses. |
|
|
663
|
-
| `preserveFrontmatter` | `boolean` | `false` | Si `true`, le frontmatter au début de la chaîne Markdown ne sera pas supprimé. |
|
|
664
|
-
| `components` | `Overrides` | `{}` | Une carte des balises HTML vers des composants personnalisés (par exemple, `{ h1: MyHeading }`). |
|
|
665
|
-
| `wrapper` | `Component` | `null` | Un composant personnalisé pour envelopper le Markdown rendu. |
|
|
666
|
-
| `renderMarkdown` | `Function` | `null` | Une fonction de rendu personnalisée pour remplacer complètement le compilateur Markdown par défaut. |
|