@intlayer/docs 8.0.0-canary.6 → 8.0.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/content_file.md +30 -1
- package/docs/ar/dictionary/html.md +45 -56
- package/docs/ar/dictionary/markdown.md +21 -57
- package/docs/ar/releases/v8.md +11 -2
- package/docs/de/dictionary/content_file.md +30 -1
- package/docs/de/dictionary/html.md +45 -56
- package/docs/de/dictionary/markdown.md +21 -57
- package/docs/de/releases/v8.md +11 -2
- package/docs/en/dictionary/content_file.md +35 -1
- package/docs/en/dictionary/html.md +45 -56
- package/docs/en/dictionary/markdown.md +22 -58
- package/docs/en/releases/v8.md +11 -2
- package/docs/en-GB/dictionary/content_file.md +31 -2
- package/docs/en-GB/dictionary/html.md +45 -56
- package/docs/en-GB/dictionary/markdown.md +17 -53
- package/docs/en-GB/releases/v8.md +11 -2
- package/docs/es/dictionary/content_file.md +30 -2
- package/docs/es/dictionary/html.md +45 -56
- package/docs/es/dictionary/markdown.md +21 -57
- package/docs/es/releases/v8.md +11 -2
- package/docs/fr/dictionary/content_file.md +30 -1
- package/docs/fr/dictionary/html.md +45 -56
- package/docs/fr/dictionary/markdown.md +21 -57
- package/docs/fr/releases/v8.md +11 -2
- package/docs/hi/dictionary/content_file.md +33 -3
- package/docs/hi/dictionary/html.md +45 -56
- package/docs/hi/dictionary/markdown.md +21 -57
- package/docs/hi/releases/v8.md +10 -1
- package/docs/id/dictionary/content_file.md +30 -1
- package/docs/id/dictionary/html.md +45 -56
- package/docs/id/dictionary/markdown.md +21 -57
- package/docs/id/releases/v8.md +11 -2
- package/docs/it/dictionary/content_file.md +30 -1
- package/docs/it/dictionary/html.md +45 -56
- package/docs/it/dictionary/markdown.md +21 -57
- package/docs/it/releases/v8.md +11 -2
- package/docs/ja/dictionary/content_file.md +30 -1
- package/docs/ja/dictionary/html.md +45 -56
- package/docs/ja/dictionary/markdown.md +21 -57
- package/docs/ja/releases/v8.md +11 -2
- package/docs/ko/dictionary/content_file.md +30 -1
- package/docs/ko/dictionary/html.md +45 -56
- package/docs/ko/dictionary/markdown.md +21 -57
- package/docs/ko/releases/v8.md +11 -2
- package/docs/pl/dictionary/content_file.md +30 -1
- package/docs/pl/dictionary/html.md +45 -56
- package/docs/pl/dictionary/markdown.md +18 -54
- package/docs/pl/releases/v8.md +11 -2
- package/docs/pt/dictionary/content_file.md +30 -1
- package/docs/pt/dictionary/html.md +45 -56
- package/docs/pt/dictionary/markdown.md +21 -57
- package/docs/pt/releases/v8.md +11 -2
- package/docs/ru/dictionary/content_file.md +30 -1
- package/docs/ru/dictionary/html.md +45 -56
- package/docs/ru/dictionary/markdown.md +21 -57
- package/docs/ru/releases/v8.md +11 -2
- package/docs/tr/dictionary/content_file.md +30 -1
- package/docs/tr/dictionary/html.md +45 -56
- package/docs/tr/dictionary/markdown.md +17 -53
- package/docs/tr/releases/v8.md +11 -2
- package/docs/uk/dictionary/content_file.md +32 -3
- package/docs/uk/dictionary/html.md +45 -56
- package/docs/uk/dictionary/markdown.md +14 -50
- package/docs/uk/releases/v8.md +11 -2
- package/docs/vi/dictionary/content_file.md +30 -1
- package/docs/vi/dictionary/html.md +45 -56
- package/docs/vi/dictionary/markdown.md +19 -55
- package/docs/vi/releases/v8.md +11 -2
- package/docs/zh/dictionary/content_file.md +28 -2
- package/docs/zh/dictionary/html.md +45 -56
- package/docs/zh/dictionary/markdown.md +20 -56
- package/docs/zh/releases/v8.md +11 -2
- package/package.json +7 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-02-07
|
|
3
|
-
updatedAt: 2026-01-
|
|
3
|
+
updatedAt: 2026-01-28
|
|
4
4
|
title: ملف المحتوى
|
|
5
5
|
description: تعلّم كيفية تخصيص الامتدادات لملفات إعلان المحتوى الخاصة بك. اتبع هذا التوثيق لتنفيذ الشروط بكفاءة في مشروعك.
|
|
6
6
|
keywords:
|
|
@@ -12,6 +12,9 @@ slugs:
|
|
|
12
12
|
- concept
|
|
13
13
|
- content
|
|
14
14
|
history:
|
|
15
|
+
- version: 8.0.0
|
|
16
|
+
date: 2026-01-28
|
|
17
|
+
changes: إضافة نوع عقدة المحتوى `html`
|
|
15
18
|
- version: 8.0.0
|
|
16
19
|
date: 2026-01-24
|
|
17
20
|
changes: Rename `live` import mode to `fetch` to better describe the underlying mechanism.
|
|
@@ -84,6 +87,7 @@ interface Content {
|
|
|
84
87
|
quantityContent: string;
|
|
85
88
|
conditionalContent: string;
|
|
86
89
|
markdownContent: never;
|
|
90
|
+
htmlContent: never;
|
|
87
91
|
externalContent: string;
|
|
88
92
|
insertionContent: string;
|
|
89
93
|
nestedContent: string;
|
|
@@ -129,6 +133,7 @@ export default {
|
|
|
129
133
|
fileContent: file("./path/to/file.txt"),
|
|
130
134
|
externalContent: fetch("https://example.com").then((res) => res.json()),
|
|
131
135
|
markdownContent: md("# مثال على ماركداون"),
|
|
136
|
+
htmlContent: html("<p>Hello <strong>World</strong></p>"),
|
|
132
137
|
|
|
133
138
|
/*
|
|
134
139
|
* متاح فقط باستخدام `react-intlayer` أو `next-intlayer`
|
|
@@ -179,6 +184,7 @@ export default {
|
|
|
179
184
|
"login.button" // [اختياري] المسار إلى المحتوى للتضمين
|
|
180
185
|
),
|
|
181
186
|
markdownContent: md("# مثال على ماركداون"),
|
|
187
|
+
htmlContent: html("<p>Hello <strong>World</strong></p>"),
|
|
182
188
|
fileContent: file("./path/to/file.txt"),
|
|
183
189
|
externalContent: fetch("https://example.com").then((res) => res.json())
|
|
184
190
|
|
|
@@ -229,6 +235,7 @@ module.exports = {
|
|
|
229
235
|
"login.button" // [اختياري] مسار المحتوى للتضمين
|
|
230
236
|
),
|
|
231
237
|
markdownContent: md("# مثال على ماركداون"),
|
|
238
|
+
htmlContent: html("<p>Hello <strong>World</strong></p>"),
|
|
232
239
|
fileContent: file("./path/to/file.txt"),
|
|
233
240
|
externalContent: fetch("https://example.com").then((res) => res.json())
|
|
234
241
|
|
|
@@ -290,6 +297,10 @@ module.exports = {
|
|
|
290
297
|
"nodeType": "markdown",
|
|
291
298
|
"markdown": "# مثال على ماركداون",
|
|
292
299
|
},
|
|
300
|
+
"htmlContent": {
|
|
301
|
+
"nodeType": "html",
|
|
302
|
+
"html": "<p>Hello <strong>World</strong></p>",
|
|
303
|
+
},
|
|
293
304
|
"fileContent": {
|
|
294
305
|
"nodeType": "file",
|
|
295
306
|
"file": "./path/to/file.txt",
|
|
@@ -324,6 +335,7 @@ module.exports = {
|
|
|
324
335
|
- **محتوى التعداد**: محتوى يتغير بناءً على قيم معدودة [انظر محتوى التعداد](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/enumeration_content.md)
|
|
325
336
|
- **محتوى الإدراج**: محتوى يمكن إدراجه داخل محتويات أخرى [انظر محتوى الإدراج](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/insertion_content.md)
|
|
326
337
|
- **محتوى ماركداون**: محتوى نص غني بصيغة ماركداون [انظر محتوى ماركداون](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/markdown_content.md)
|
|
338
|
+
- **محتوى HTML**: محتوى HTML غني مع مكونات مخصصة اختيارية [انظر محتوى HTML](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/html.md)
|
|
327
339
|
- **محتوى متداخل**: مراجع إلى قواميس أخرى [انظر المحتوى المتداخل](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/nested_content.md)
|
|
328
340
|
- **محتوى حسب الجنس**: محتوى يختلف بناءً على الجنس [انظر محتوى الجنس](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/gender_content.md)
|
|
329
341
|
- **محتوى ملف**: مراجع إلى ملفات خارجية [انظر محتوى الملف](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/file_content.md)
|
|
@@ -696,6 +708,23 @@ markdownContent: md(
|
|
|
696
708
|
);
|
|
697
709
|
```
|
|
698
710
|
|
|
711
|
+
### محتوى HTML (`html`)
|
|
712
|
+
|
|
713
|
+
محتوى HTML غني يمكنه استخدام وسوم قياسية أو مكونات مخصصة:
|
|
714
|
+
|
|
715
|
+
```typescript
|
|
716
|
+
import { html, file, t } from "intlayer";
|
|
717
|
+
|
|
718
|
+
// HTML مضمن
|
|
719
|
+
htmlContent: html("<p>Hello <strong>World</strong></p>");
|
|
720
|
+
|
|
721
|
+
// HTML حسب اللغة من ملفات خارجية
|
|
722
|
+
localizedHtmlContent: t({
|
|
723
|
+
en: html(file("./content.en.html")),
|
|
724
|
+
ar: html(file("./content.ar.html")),
|
|
725
|
+
});
|
|
726
|
+
```
|
|
727
|
+
|
|
699
728
|
### محتوى الجنس (`gender`)
|
|
700
729
|
|
|
701
730
|
محتوى يتغير بناءً على الجنس:
|
|
@@ -31,47 +31,12 @@ history:
|
|
|
31
31
|
|
|
32
32
|
يدعم Intlayer محتوى HTML، مما يتيح لك تضمين محتوى غني ومنظم داخل القواميس (dictionaries) الخاصة بك. يمكن عرض هذا المحتوى باستخدام وسوم HTML القياسية أو استبداله بمكونات مخصصة أثناء وقت التشغيل.
|
|
33
33
|
|
|
34
|
-
## كيف يعمل HTML
|
|
35
|
-
|
|
36
|
-
يقوم Intlayer v8 بذكاء باكتشاف وسوم HTML داخل سلاسل المحتوى الخاصة بك. إذا تم التعرف على السلسلة كـ HTML (تحتوي على وسوم)، فسيتم تحويلها تلقائيًا إلى عقدة HTML.
|
|
37
|
-
|
|
38
|
-
<Columns>
|
|
39
|
-
<Column title="سلوك v7 (التغليف اليدوي)">
|
|
40
|
-
|
|
41
|
-
```typescript fileName="htmlDictionary.content.ts"
|
|
42
|
-
import { html } from "intlayer";
|
|
43
|
-
|
|
44
|
-
export default {
|
|
45
|
-
key: "app",
|
|
46
|
-
content: {
|
|
47
|
-
text: html("<p>مرحبًا <strong>بالعالم</strong></p>"),
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
</Column>
|
|
53
|
-
<Column title="سلوك v8 (الكشف التلقائي)">
|
|
54
|
-
|
|
55
|
-
```typescript fileName="htmlDictionary.content.ts"
|
|
56
|
-
export default {
|
|
57
|
-
key: "app",
|
|
58
|
-
content: {
|
|
59
|
-
text: "<p>مرحبًا <strong>بالعالم</strong></p>",
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
</Column>
|
|
65
|
-
</Columns>
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
34
|
## إعلان محتوى HTML
|
|
70
35
|
|
|
71
36
|
يمكنك تعريف محتوى HTML باستخدام الدالة `html` أو ببساطة كسلسلة نصية.
|
|
72
37
|
|
|
73
38
|
<Tabs>
|
|
74
|
-
<Tab label="التغليف اليدوي">
|
|
39
|
+
<Tab label="التغليف اليدوي" value="manual-wrapping">
|
|
75
40
|
استخدم الدالة `html` لتعريف محتوى HTML صراحة. هذا يضمن مطابقة الوسوم القياسية بشكل صحيح حتى إذا تم تعطيل الكشف التلقائي.
|
|
76
41
|
|
|
77
42
|
```typescript fileName="htmlDictionary.content.ts"
|
|
@@ -88,7 +53,7 @@ export default {
|
|
|
88
53
|
```
|
|
89
54
|
|
|
90
55
|
</Tab>
|
|
91
|
-
<Tab label="الكشف التلقائي">
|
|
56
|
+
<Tab label="الكشف التلقائي" value="automatic-detection">
|
|
92
57
|
إذا كانت السلسلة تحتوي على علامات HTML الشائعة (مثل `<p>`, `<div>`, `<strong>`، إلخ)، فسيقوم Intlayer بتحويلها تلقائيًا.
|
|
93
58
|
|
|
94
59
|
```typescript fileName="htmlDictionary.content.ts"
|
|
@@ -101,7 +66,7 @@ export default {
|
|
|
101
66
|
```
|
|
102
67
|
|
|
103
68
|
</Tab>
|
|
104
|
-
<Tab label="ملفات خارجية">
|
|
69
|
+
<Tab label="ملفات خارجية" value="external-files">
|
|
105
70
|
استورد محتوى HTML من ملفات. لاحظ أن دالة `file()` حاليًا تُعيد سلسلة نصية، وسيتم اكتشافها تلقائيًا كمحتوى HTML إذا كانت تحتوي على علامات.
|
|
106
71
|
|
|
107
72
|
```typescript fileName="htmlDictionary.content.ts"
|
|
@@ -122,6 +87,30 @@ export default {
|
|
|
122
87
|
</Tab>
|
|
123
88
|
</Tabs>
|
|
124
89
|
|
|
90
|
+
### عقدة `html()`
|
|
91
|
+
|
|
92
|
+
دالة `html()` هي ميزة جديدة في Intlayer v8 تتيح لك تحديد محتوى HTML بشكل صريح في قواميسك. بينما يمكن لـ Intlayer غالبًا اكتشاف محتوى HTML تلقائيًا، فإن استخدام دالة `html()` يوفر عدة مزايا:
|
|
93
|
+
|
|
94
|
+
- **سلامة النوع (Type Safety)**: تتيح لك دالة `html()` تحديد الخصائص (props) المتوقعة للمكونات المخصصة، مما يوفر إكمالاً تلقائيًا وفحصًا أفضل للنوع في المحرر الخاص بك.
|
|
95
|
+
- **الإعلان الصريح**: يضمن معاملة السلسلة دائمًا على أنها HTML، حتى لو لم تكن تحتوي على علامات HTML قياسية من شأنها تشغيل الاكتشاف التلقائي.
|
|
96
|
+
- **تعريف المكونات المخصصة**: يمكنك تمرير وسيط ثانٍ إلى `html()` لتعريف المكونات المخصصة وأنواع الخصائص المتوقعة لها.
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
import { html } from "intlayer";
|
|
100
|
+
|
|
101
|
+
const myContent = html(
|
|
102
|
+
"<MyCustomComponent title='مرحباً'>العالم</MyCustomComponent>",
|
|
103
|
+
{
|
|
104
|
+
MyCustomComponent: {
|
|
105
|
+
title: "string",
|
|
106
|
+
children: "node",
|
|
107
|
+
},
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
عند استخدام طريقة `.use()` على عقدة HTML، سيتم التحقق من المكونات التي تقدمها مقابل التعريف المقدم في دالة `html()` (إذا كان متاحًا).
|
|
113
|
+
|
|
125
114
|
---
|
|
126
115
|
|
|
127
116
|
## عرض HTML
|
|
@@ -133,7 +122,7 @@ export default {
|
|
|
133
122
|
عند الوصول إلى المحتوى عبر `useIntlayer`، تكون عقد HTML جاهزة بالفعل للعرض.
|
|
134
123
|
|
|
135
124
|
<Tabs group="framework">
|
|
136
|
-
<Tab label="React / Next.js">
|
|
125
|
+
<Tab label="React / Next.js" value="react">
|
|
137
126
|
يمكن عرض عقد HTML مباشرةً كـ JSX. تعمل الوسوم القياسية تلقائيًا.
|
|
138
127
|
|
|
139
128
|
```tsx fileName="App.tsx"
|
|
@@ -155,7 +144,7 @@ export default {
|
|
|
155
144
|
```
|
|
156
145
|
|
|
157
146
|
</Tab>
|
|
158
|
-
<Tab label="Vue">
|
|
147
|
+
<Tab label="Vue" value="vue">
|
|
159
148
|
في Vue، يمكن عرض محتوى HTML باستخدام العنصر المدمج `component`.
|
|
160
149
|
|
|
161
150
|
```vue fileName="App.vue"
|
|
@@ -175,7 +164,7 @@ export default {
|
|
|
175
164
|
```
|
|
176
165
|
|
|
177
166
|
</Tab>
|
|
178
|
-
<Tab label="Svelte">
|
|
167
|
+
<Tab label="Svelte" value="svelte">
|
|
179
168
|
يقوم Svelte بعرض عناصر HTML كسلاسل نصية. استخدم `{@html}` لعرضها.
|
|
180
169
|
|
|
181
170
|
```svelte
|
|
@@ -188,7 +177,7 @@ export default {
|
|
|
188
177
|
```
|
|
189
178
|
|
|
190
179
|
</Tab>
|
|
191
|
-
<Tab label="Preact">
|
|
180
|
+
<Tab label="Preact" value="preact">
|
|
192
181
|
يدعم Preact عناصر HTML مباشرةً داخل JSX.
|
|
193
182
|
|
|
194
183
|
```tsx fileName="App.tsx"
|
|
@@ -201,7 +190,7 @@ export default {
|
|
|
201
190
|
```
|
|
202
191
|
|
|
203
192
|
</Tab>
|
|
204
|
-
<Tab label="Solid">
|
|
193
|
+
<Tab label="Solid" value="solid">
|
|
205
194
|
يدعم Solid عناصر HTML مباشرةً داخل JSX.
|
|
206
195
|
|
|
207
196
|
```tsx fileName="App.tsx"
|
|
@@ -214,7 +203,7 @@ export default {
|
|
|
214
203
|
```
|
|
215
204
|
|
|
216
205
|
</Tab>
|
|
217
|
-
<Tab label="Angular">
|
|
206
|
+
<Tab label="Angular" value="angular">
|
|
218
207
|
يستخدم Angular توجيه `[innerHTML]` لعرض محتوى HTML.
|
|
219
208
|
|
|
220
209
|
```typescript fileName="app.component.ts"
|
|
@@ -247,7 +236,7 @@ export default {
|
|
|
247
236
|
يمكنك تكوين عرض HTML على مستوى التطبيق بأكمله. هذا مناسب لتعريف مكونات مخصصة يجب أن تكون متاحة في جميع محتويات HTML.
|
|
248
237
|
|
|
249
238
|
<Tabs group="framework">
|
|
250
|
-
<Tab label="React / Next.js">
|
|
239
|
+
<Tab label="React / Next.js" value="react">
|
|
251
240
|
|
|
252
241
|
```tsx fileName="AppProvider.tsx"
|
|
253
242
|
import { HTMLProvider } from "react-intlayer";
|
|
@@ -265,7 +254,7 @@ export default {
|
|
|
265
254
|
```
|
|
266
255
|
|
|
267
256
|
</Tab>
|
|
268
|
-
<Tab label="Vue">
|
|
257
|
+
<Tab label="Vue" value="vue">
|
|
269
258
|
|
|
270
259
|
```typescript fileName="main.ts"
|
|
271
260
|
import { createApp, h } from "vue";
|
|
@@ -286,7 +275,7 @@ export default {
|
|
|
286
275
|
```
|
|
287
276
|
|
|
288
277
|
</Tab>
|
|
289
|
-
<Tab label="Svelte">
|
|
278
|
+
<Tab label="Svelte" value="svelte">
|
|
290
279
|
|
|
291
280
|
```svelte fileName="App.svelte"
|
|
292
281
|
<script lang="ts">
|
|
@@ -304,7 +293,7 @@ export default {
|
|
|
304
293
|
```
|
|
305
294
|
|
|
306
295
|
</Tab>
|
|
307
|
-
<Tab label="Preact">
|
|
296
|
+
<Tab label="Preact" value="preact">
|
|
308
297
|
|
|
309
298
|
```tsx fileName="AppProvider.tsx"
|
|
310
299
|
import { HTMLProvider } from "preact-intlayer";
|
|
@@ -321,7 +310,7 @@ export default {
|
|
|
321
310
|
```
|
|
322
311
|
|
|
323
312
|
</Tab>
|
|
324
|
-
<Tab label="Solid">
|
|
313
|
+
<Tab label="Solid" value="solid">
|
|
325
314
|
|
|
326
315
|
```tsx fileName="AppProvider.tsx"
|
|
327
316
|
import { HTMLProvider } from "solid-intlayer";
|
|
@@ -338,7 +327,7 @@ export default {
|
|
|
338
327
|
```
|
|
339
328
|
|
|
340
329
|
</Tab>
|
|
341
|
-
<Tab label="Angular">
|
|
330
|
+
<Tab label="Angular" value="angular">
|
|
342
331
|
|
|
343
332
|
```typescript fileName="app.config.ts"
|
|
344
333
|
import { createIntlayerMarkdownProvider } from "angular-intlayer";
|
|
@@ -365,7 +354,7 @@ export default {
|
|
|
365
354
|
إذا كنت بحاجة إلى عرض سلاسل HTML خام أو التحكم بشكل أكبر في تعيين المكونات، فاستخدم الأدوات التالية.
|
|
366
355
|
|
|
367
356
|
<Tabs group="framework">
|
|
368
|
-
<Tab label="React / Next.js">
|
|
357
|
+
<Tab label="React / Next.js" value="react">
|
|
369
358
|
#### المكوّن `<HTMLRenderer />`
|
|
370
359
|
عرض سلسلة HTML باستخدام مكونات محددة.
|
|
371
360
|
|
|
@@ -402,7 +391,7 @@ export default {
|
|
|
402
391
|
```
|
|
403
392
|
|
|
404
393
|
</Tab>
|
|
405
|
-
<Tab label="Vue">
|
|
394
|
+
<Tab label="Vue" value="vue">
|
|
406
395
|
|
|
407
396
|
#### مكوّن `<HTMLRenderer />`
|
|
408
397
|
|
|
@@ -417,7 +406,7 @@ export default {
|
|
|
417
406
|
```
|
|
418
407
|
|
|
419
408
|
</Tab>
|
|
420
|
-
<Tab label="Svelte">
|
|
409
|
+
<Tab label="Svelte" value="svelte">
|
|
421
410
|
|
|
422
411
|
#### المكوّن `<HTMLRenderer />`
|
|
423
412
|
|
|
@@ -451,7 +440,7 @@ export default {
|
|
|
451
440
|
```
|
|
452
441
|
|
|
453
442
|
</Tab>
|
|
454
|
-
<Tab label="Preact">
|
|
443
|
+
<Tab label="Preact" value="preact">
|
|
455
444
|
|
|
456
445
|
#### مكوّن `<HTMLRenderer />`
|
|
457
446
|
|
|
@@ -482,7 +471,7 @@ export default {
|
|
|
482
471
|
```
|
|
483
472
|
|
|
484
473
|
</Tab>
|
|
485
|
-
<Tab label="Solid">
|
|
474
|
+
<Tab label="Solid" value="solid">
|
|
486
475
|
|
|
487
476
|
#### مكوّن `<HTMLRenderer />`
|
|
488
477
|
|
|
@@ -513,7 +502,7 @@ export default {
|
|
|
513
502
|
```
|
|
514
503
|
|
|
515
504
|
</Tab>
|
|
516
|
-
<Tab label="Angular">
|
|
505
|
+
<Tab label="Angular" value="angular">
|
|
517
506
|
#### خدمة `IntlayerMarkdownService`
|
|
518
507
|
عرض سلسلة HTML باستخدام الخدمة.
|
|
519
508
|
|
|
@@ -32,48 +32,12 @@ history:
|
|
|
32
32
|
|
|
33
33
|
يدعم Intlayer محتوى النصوص الغنية المحدد باستخدام صيغة Markdown. يتيح لك ذلك كتابة وصيانة المحتوى بسهولة مع تنسيق غني، مثل المدونات والمقالات والمزيد.
|
|
34
34
|
|
|
35
|
-
## كيف يعمل Markdown
|
|
36
|
-
|
|
37
|
-
يقوم Intlayer v8 بذكاء باكتشاف صيغة Markdown داخل سلاسل المحتوى الخاصة بك. إذا تم التعرف على السلسلة كـ Markdown، فسيتم تحويلها تلقائيًا إلى عقدة Markdown.
|
|
38
|
-
|
|
39
|
-
<Columns>
|
|
40
|
-
<Column title="سلوك v7 (التغليف اليدوي)">
|
|
41
|
-
|
|
42
|
-
```typescript fileName="markdownDictionary.content.ts"
|
|
43
|
-
import { md } from "intlayer";
|
|
44
|
-
|
|
45
|
-
export default {
|
|
46
|
-
key: "app",
|
|
47
|
-
content: {
|
|
48
|
-
text: md("## عنواني \n\nLorem Ipsum"),
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
</Column>
|
|
54
|
-
<Column title="سلوك v8 (الكشف التلقائي)">
|
|
55
|
-
|
|
56
|
-
```typescript fileName="markdownDictionary.content.ts"
|
|
57
|
-
export default {
|
|
58
|
-
key: "app",
|
|
59
|
-
contentAutoTransformation: true, // تفعيل الكشف التلقائي لمحتوى Markdown - يمكن ضبطه عالميًا في intlayer.config.ts
|
|
60
|
-
content: {
|
|
61
|
-
text: "## عنواني \n\nLorem Ipsum",
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
</Column>
|
|
67
|
-
</Columns>
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
35
|
## الجزء الأول: إعلان محتوى Markdown
|
|
72
36
|
|
|
73
37
|
يمكنك تعريف محتوى Markdown باستخدام الدالة `md` أو ببساطة كسلسلة نصية (إذا كانت تحتوي على صيغة Markdown).
|
|
74
38
|
|
|
75
39
|
<Tabs>
|
|
76
|
-
<Tab label="التغليف اليدوي">
|
|
40
|
+
<Tab label="التغليف اليدوي" value="manual-wrapping">
|
|
77
41
|
استخدم الدالة `md` لتعريف محتوى Markdown صراحة. هذا مفيد إذا كنت تريد ضمان معاملة السلسلة كـ Markdown حتى لو لم تكن تحتوي على صيغة واضحة.
|
|
78
42
|
|
|
79
43
|
```typescript fileName="markdownDictionary.content.ts"
|
|
@@ -90,7 +54,7 @@ history:
|
|
|
90
54
|
```
|
|
91
55
|
|
|
92
56
|
</Tab>
|
|
93
|
-
<Tab label="الكشف التلقائي">
|
|
57
|
+
<Tab label="الكشف التلقائي" value="automatic-detection">
|
|
94
58
|
إذا كانت السلسلة تحتوي على مؤشرات Markdown شائعة (مثل العناوين، القوائم، الروابط، إلخ)، فسيقوم Intlayer بتحويلها تلقائيًا.
|
|
95
59
|
|
|
96
60
|
```typescript fileName="markdownDictionary.content.ts"
|
|
@@ -104,7 +68,7 @@ history:
|
|
|
104
68
|
```
|
|
105
69
|
|
|
106
70
|
</Tab>
|
|
107
|
-
<Tab label="ملفات خارجية">
|
|
71
|
+
<Tab label="ملفات خارجية" value="external-files">
|
|
108
72
|
استورد ملفات `.md` مباشرة باستخدام الدالة `file`.
|
|
109
73
|
|
|
110
74
|
```typescript fileName="markdownDictionary.content.ts"
|
|
@@ -135,7 +99,7 @@ history:
|
|
|
135
99
|
عند الوصول إلى المحتوى عبر `useIntlayer`، تكون عقد Markdown جاهزة بالفعل للعرض.
|
|
136
100
|
|
|
137
101
|
<Tabs group="framework">
|
|
138
|
-
<Tab label="React / Next.js">
|
|
102
|
+
<Tab label="React / Next.js" value="react">
|
|
139
103
|
يمكن عرض عقد Markdown مباشرةً كـ JSX.
|
|
140
104
|
|
|
141
105
|
```tsx fileName="App.tsx"
|
|
@@ -156,7 +120,7 @@ history:
|
|
|
156
120
|
```
|
|
157
121
|
|
|
158
122
|
</Tab>
|
|
159
|
-
<Tab label="Vue">
|
|
123
|
+
<Tab label="Vue" value="vue">
|
|
160
124
|
في Vue، يمكن عرض محتوى Markdown باستخدام العنصر المدمج `component` أو مباشرة كعقدة.
|
|
161
125
|
|
|
162
126
|
```vue fileName="App.vue"
|
|
@@ -171,7 +135,7 @@ history:
|
|
|
171
135
|
```
|
|
172
136
|
|
|
173
137
|
</Tab>
|
|
174
|
-
<Tab label="Svelte">
|
|
138
|
+
<Tab label="Svelte" value="svelte">
|
|
175
139
|
يقوم Svelte بعرض Markdown كسلسلة HTML افتراضيًا. استخدم `{@html}` لعرضها.
|
|
176
140
|
|
|
177
141
|
```svelte
|
|
@@ -184,7 +148,7 @@ history:
|
|
|
184
148
|
```
|
|
185
149
|
|
|
186
150
|
</Tab>
|
|
187
|
-
<Tab label="Preact">
|
|
151
|
+
<Tab label="Preact" value="preact">
|
|
188
152
|
يدعم Preact عقد Markdown مباشرة داخل JSX.
|
|
189
153
|
|
|
190
154
|
```tsx fileName="App.tsx"
|
|
@@ -197,7 +161,7 @@ history:
|
|
|
197
161
|
```
|
|
198
162
|
|
|
199
163
|
</Tab>
|
|
200
|
-
<Tab label="Solid">
|
|
164
|
+
<Tab label="Solid" value="solid">
|
|
201
165
|
يدعم Solid عقد Markdown مباشرة داخل JSX.
|
|
202
166
|
|
|
203
167
|
```tsx fileName="App.tsx"
|
|
@@ -210,7 +174,7 @@ history:
|
|
|
210
174
|
```
|
|
211
175
|
|
|
212
176
|
</Tab>
|
|
213
|
-
<Tab label="Angular">
|
|
177
|
+
<Tab label="Angular" value="angular">
|
|
214
178
|
يستخدم Angular توجيه `[innerHTML]` لعرض محتوى Markdown.
|
|
215
179
|
|
|
216
180
|
```typescript fileName="app.component.ts"
|
|
@@ -242,7 +206,7 @@ history:
|
|
|
242
206
|
إذا كنت بحاجة إلى عرض سلاسل Markdown خام أو التحكم بشكل أكبر في عملية العرض، فاستخدم الأدوات التالية.
|
|
243
207
|
|
|
244
208
|
<Tabs group="framework">
|
|
245
|
-
<Tab label="React / Next.js">
|
|
209
|
+
<Tab label="React / Next.js" value="react">
|
|
246
210
|
|
|
247
211
|
#### المكوّن `<MarkdownRenderer />`
|
|
248
212
|
|
|
@@ -281,7 +245,7 @@ history:
|
|
|
281
245
|
```
|
|
282
246
|
|
|
283
247
|
</Tab>
|
|
284
|
-
<Tab label="Vue">
|
|
248
|
+
<Tab label="Vue" value="vue">
|
|
285
249
|
|
|
286
250
|
#### المكوّن `<MarkdownRenderer />`
|
|
287
251
|
|
|
@@ -296,7 +260,7 @@ history:
|
|
|
296
260
|
```
|
|
297
261
|
|
|
298
262
|
</Tab>
|
|
299
|
-
<Tab label="Svelte">
|
|
263
|
+
<Tab label="Svelte" value="svelte">
|
|
300
264
|
|
|
301
265
|
#### المكوّن `<MarkdownRenderer />`
|
|
302
266
|
|
|
@@ -330,7 +294,7 @@ history:
|
|
|
330
294
|
```
|
|
331
295
|
|
|
332
296
|
</Tab>
|
|
333
|
-
<Tab label="Preact">
|
|
297
|
+
<Tab label="Preact" value="preact">
|
|
334
298
|
#### المكوّن `<MarkdownRenderer />`
|
|
335
299
|
|
|
336
300
|
```tsx
|
|
@@ -360,7 +324,7 @@ history:
|
|
|
360
324
|
```
|
|
361
325
|
|
|
362
326
|
</Tab>
|
|
363
|
-
<Tab label="Solid">
|
|
327
|
+
<Tab label="Solid" value="solid">
|
|
364
328
|
#### المكوّن `<MarkdownRenderer />`
|
|
365
329
|
|
|
366
330
|
```tsx
|
|
@@ -390,7 +354,7 @@ history:
|
|
|
390
354
|
```
|
|
391
355
|
|
|
392
356
|
</Tab>
|
|
393
|
-
<Tab label="Angular">
|
|
357
|
+
<Tab label="Angular" value="angular">
|
|
394
358
|
#### خدمة `IntlayerMarkdownService`
|
|
395
359
|
عرض سلسلة Markdown باستخدام الخدمة.
|
|
396
360
|
|
|
@@ -416,7 +380,7 @@ history:
|
|
|
416
380
|
يمكنك تكوين عرض Markdown على مستوى التطبيق بأكمله. هذا يغنيك عن تمرير نفس الخصائص لكل renderer.
|
|
417
381
|
|
|
418
382
|
<Tabs group="framework">
|
|
419
|
-
<Tab label="React / Next.js">
|
|
383
|
+
<Tab label="React / Next.js" value="react">
|
|
420
384
|
|
|
421
385
|
```tsx fileName="AppProvider.tsx"
|
|
422
386
|
import { MarkdownProvider } from "react-intlayer";
|
|
@@ -436,7 +400,7 @@ history:
|
|
|
436
400
|
```
|
|
437
401
|
|
|
438
402
|
</Tab>
|
|
439
|
-
<Tab label="Vue">
|
|
403
|
+
<Tab label="Vue" value="vue">
|
|
440
404
|
|
|
441
405
|
```typescript fileName="main.ts"
|
|
442
406
|
import { createApp } from "vue";
|
|
@@ -461,7 +425,7 @@ history:
|
|
|
461
425
|
```
|
|
462
426
|
|
|
463
427
|
</Tab>
|
|
464
|
-
<Tab label="Svelte">
|
|
428
|
+
<Tab label="Svelte" value="svelte">
|
|
465
429
|
|
|
466
430
|
```svelte fileName="App.svelte"
|
|
467
431
|
<script lang="ts">
|
|
@@ -481,7 +445,7 @@ history:
|
|
|
481
445
|
```
|
|
482
446
|
|
|
483
447
|
</Tab>
|
|
484
|
-
<Tab label="Preact">
|
|
448
|
+
<Tab label="Preact" value="preact">
|
|
485
449
|
|
|
486
450
|
```tsx fileName="AppProvider.tsx"
|
|
487
451
|
import { MarkdownProvider } from "preact-intlayer";
|
|
@@ -500,7 +464,7 @@ history:
|
|
|
500
464
|
```
|
|
501
465
|
|
|
502
466
|
</Tab>
|
|
503
|
-
<Tab label="Solid">
|
|
467
|
+
<Tab label="Solid" value="solid">
|
|
504
468
|
|
|
505
469
|
```tsx fileName="AppProvider.tsx"
|
|
506
470
|
import { MarkdownProvider } from "solid-intlayer";
|
|
@@ -519,7 +483,7 @@ history:
|
|
|
519
483
|
```
|
|
520
484
|
|
|
521
485
|
</Tab>
|
|
522
|
-
<Tab label="Angular">
|
|
486
|
+
<Tab label="Angular" value="angular">
|
|
523
487
|
|
|
524
488
|
```typescript fileName="app.config.ts"
|
|
525
489
|
import { createIntlayerMarkdownProvider } from "angular-intlayer";
|
package/docs/ar/releases/v8.md
CHANGED
|
@@ -12,6 +12,7 @@ keywords:
|
|
|
12
12
|
- Next.js
|
|
13
13
|
- JavaScript
|
|
14
14
|
- TypeScript
|
|
15
|
+
youtubeVideo: https://www.youtube.com/watch?v=ia6JmVf-kkU
|
|
15
16
|
slugs:
|
|
16
17
|
- doc
|
|
17
18
|
- releases
|
|
@@ -22,6 +23,14 @@ slugs:
|
|
|
22
23
|
|
|
23
24
|
مرحبًا بك في Intlayer v8! يركز هذا الإصدار على تعزيز تجربة المطور من خلال اكتشاف المحتوى التلقائي، وضمان سلامة البيانات عبر التحقق من صحة المخططات، وتوفير مزيد من التحكم في إدارة القواميس.
|
|
24
25
|
|
|
26
|
+
<iframe
|
|
27
|
+
src="https://www.youtube.com/embed/ia6JmVf-kkU"
|
|
28
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
29
|
+
title="Demo Video - New Intlayer v8 - What's new?"
|
|
30
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
31
|
+
loading="lazy"
|
|
32
|
+
/>
|
|
33
|
+
|
|
25
34
|
## جدول المحتويات
|
|
26
35
|
|
|
27
36
|
<TOC levels={[2]} maxDepth={1} />
|
|
@@ -1198,8 +1207,8 @@ export default {
|
|
|
1198
1207
|
|
|
1199
1208
|
### تغييرات التكوين
|
|
1200
1209
|
|
|
1201
|
-
- **خاصية `live`**:
|
|
1202
|
-
-
|
|
1210
|
+
- **خاصية `live`**: تمت إزالة خاصية `live` من القواميس. استخدم `importMode: 'fetch'` بدلاً منها.
|
|
1211
|
+
- **importMode**: تم إهمال خاصية `build.importMode` في التكوين. استخدم `dictionary.importMode` بدلاً منها.
|
|
1203
1212
|
- **`contentDir` و `codeDir`**: أصبح `contentDir` مخصّصًا الآن لملفات المحتوى. تمت إضافة خاصية جديدة `codeDir` لتحويل الكود. إذا لم يتم تعيين `codeDir`، فسيقوم Intlayer بالرجوع إلى `contentDir` وتسجيل تحذير.
|
|
1204
1213
|
- **التحقق من المخطط (Schema Validation)**: لاستخدام ميزة `schema` الجديدة، تأكد من تثبيت `zod` في مشروعك.
|
|
1205
1214
|
|