@intlayer/docs 6.0.0 → 6.0.2-canary.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/dist/cjs/blog.cjs.map +1 -1
- package/dist/cjs/common.cjs +6 -5
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +318 -1863
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +1317 -6282
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +197 -1182
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +43 -84
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/blog.mjs.map +1 -1
- package/dist/esm/common.mjs +2 -5
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +318 -1863
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +1317 -6282
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +197 -1182
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +43 -84
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/blog.d.ts +1 -1
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/common.d.ts +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_CMS.md +261 -85
- package/docs/ar/releases/v6.md +273 -0
- package/docs/ar/roadmap.md +1 -3
- package/docs/ar/vs_code_extension.md +94 -63
- package/docs/de/intlayer_CMS.md +247 -65
- package/docs/de/releases/v6.md +298 -0
- package/docs/de/roadmap.md +1 -3
- package/docs/de/vs_code_extension.md +89 -58
- package/docs/en/configuration.md +9 -2
- package/docs/en/intlayer_CMS.md +205 -23
- package/docs/en/intlayer_cli.md +4 -4
- package/docs/en/intlayer_visual_editor.md +7 -6
- package/docs/en/intlayer_with_nextjs_14.md +17 -1
- package/docs/en/intlayer_with_nextjs_15.md +17 -1
- package/docs/en/releases/v6.md +268 -0
- package/docs/en/roadmap.md +1 -3
- package/docs/en/vs_code_extension.md +79 -49
- package/docs/en-GB/intlayer_CMS.md +216 -52
- package/docs/en-GB/releases/v6.md +297 -0
- package/docs/en-GB/roadmap.md +1 -3
- package/docs/en-GB/vs_code_extension.md +79 -48
- package/docs/es/intlayer_CMS.md +257 -84
- package/docs/es/releases/v6.md +274 -0
- package/docs/es/roadmap.md +1 -3
- package/docs/es/vs_code_extension.md +90 -60
- package/docs/fr/intlayer_CMS.md +250 -68
- package/docs/fr/releases/v6.md +274 -0
- package/docs/fr/roadmap.md +1 -3
- package/docs/fr/vs_code_extension.md +94 -63
- package/docs/hi/intlayer_CMS.md +253 -77
- package/docs/hi/releases/v6.md +273 -0
- package/docs/hi/roadmap.md +1 -3
- package/docs/hi/vs_code_extension.md +92 -61
- package/docs/it/intlayer_CMS.md +251 -73
- package/docs/it/releases/v6.md +273 -0
- package/docs/it/roadmap.md +1 -3
- package/docs/it/vs_code_extension.md +94 -63
- package/docs/ja/intlayer_CMS.md +282 -97
- package/docs/ja/releases/v6.md +273 -0
- package/docs/ja/roadmap.md +1 -3
- package/docs/ja/vs_code_extension.md +99 -68
- package/docs/ko/intlayer_CMS.md +267 -93
- package/docs/ko/releases/v6.md +273 -0
- package/docs/ko/roadmap.md +1 -3
- package/docs/ko/vs_code_extension.md +88 -57
- package/docs/pt/intlayer_CMS.md +261 -83
- package/docs/pt/releases/v6.md +273 -0
- package/docs/pt/roadmap.md +1 -3
- package/docs/pt/vs_code_extension.md +89 -58
- package/docs/ru/intlayer_CMS.md +240 -65
- package/docs/ru/releases/v6.md +274 -0
- package/docs/ru/roadmap.md +1 -1
- package/docs/ru/vs_code_extension.md +83 -52
- package/docs/tr/intlayer_CMS.md +278 -96
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_tanstack.md +3 -0
- package/docs/tr/releases/v6.md +273 -0
- package/docs/tr/roadmap.md +1 -1
- package/docs/tr/vs_code_extension.md +100 -71
- package/docs/zh/intlayer_CMS.md +257 -76
- package/docs/zh/releases/v6.md +273 -0
- package/docs/zh/roadmap.md +1 -3
- package/docs/zh/vs_code_extension.md +99 -68
- package/package.json +9 -8
- package/src/blog.ts +1 -1
- package/src/common.ts +2 -6
- package/src/generated/blog.entry.ts +323 -1864
- package/src/generated/docs.entry.ts +1317 -6278
- package/src/generated/frequentQuestions.entry.ts +202 -1183
- package/src/generated/legal.entry.ts +48 -85
package/docs/ar/intlayer_CMS.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-08-23
|
|
3
3
|
updatedAt: 2025-08-23
|
|
4
|
-
title: نظام إدارة المحتوى Intlayer |
|
|
5
|
-
description:
|
|
4
|
+
title: نظام إدارة المحتوى Intlayer | إخراج محتواك إلى نظام إدارة المحتوى Intlayer
|
|
5
|
+
description: إخراج محتواك إلى نظام إدارة المحتوى Intlayer لتفويض إدارة المحتوى إلى فريقك.
|
|
6
6
|
keywords:
|
|
7
7
|
- نظام إدارة المحتوى
|
|
8
|
-
- محرر
|
|
9
|
-
-
|
|
10
|
-
-
|
|
8
|
+
- محرر بصري
|
|
9
|
+
- التدويل
|
|
10
|
+
- التوثيق
|
|
11
11
|
- Intlayer
|
|
12
12
|
- Next.js
|
|
13
|
-
-
|
|
13
|
+
- جافا سكريبت
|
|
14
14
|
- React
|
|
15
15
|
slugs:
|
|
16
16
|
- doc
|
|
@@ -19,29 +19,29 @@ slugs:
|
|
|
19
19
|
youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
# توثيق نظام إدارة المحتوى (CMS)
|
|
22
|
+
# توثيق نظام إدارة المحتوى Intlayer (CMS)
|
|
23
23
|
|
|
24
|
-
<iframe title="
|
|
24
|
+
<iframe title="المحرر البصري + نظام إدارة المحتوى لتطبيق الويب الخاص بك: شرح Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
25
25
|
|
|
26
|
-
نظام إدارة المحتوى Intlayer هو تطبيق
|
|
26
|
+
نظام إدارة المحتوى Intlayer هو تطبيق يسمح لك بإخراج محتواك من مشروع Intlayer.
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
لهذا، قدم Intlayer مفهوم "القواميس البعيدة".
|
|
29
29
|
|
|
30
30
|

|
|
31
31
|
|
|
32
32
|
## فهم القواميس البعيدة
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
يفرق Intlayer بين القواميس "المحلية" و"البعيدة".
|
|
35
35
|
|
|
36
|
-
- القاموس "المحلي" هو قاموس يتم
|
|
36
|
+
- القاموس "المحلي" هو قاموس يتم إعلانه داخل مشروع Intlayer الخاص بك. مثل ملف إعلان زر، أو شريط التنقل الخاص بك. إخراج المحتوى الخاص بك لا معنى له في هذه الحالة لأن هذا المحتوى من المفترض ألا يتغير كثيرًا.
|
|
37
37
|
|
|
38
|
-
- القاموس "البعيد" هو قاموس يتم إدارته من خلال نظام إدارة المحتوى Intlayer.
|
|
38
|
+
- القاموس "البعيد" هو قاموس يتم إدارته من خلال نظام إدارة المحتوى Intlayer CMS. قد يكون مفيدًا للسماح لفريقك بإدارة المحتوى مباشرة على موقعك الإلكتروني، ويهدف أيضًا إلى استخدام ميزات اختبار A/B والتحسين التلقائي لمحركات البحث (SEO).
|
|
39
39
|
|
|
40
|
-
## المحرر
|
|
40
|
+
## المحرر المرئي مقابل نظام إدارة المحتوى (CMS)
|
|
41
41
|
|
|
42
|
-
[
|
|
42
|
+
محرر [Intlayer Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_visual_editor.md) هو أداة تتيح لك إدارة المحتوى الخاص بك في محرر مرئي للقواميس المحلية. بمجرد إجراء تغيير، سيتم استبدال المحتوى في قاعدة الشيفرة. هذا يعني أن التطبيق سيتم إعادة بنائه وستتم إعادة تحميل الصفحة لعرض المحتوى الجديد.
|
|
43
43
|
|
|
44
|
-
على النقيض من ذلك، فإن نظام إدارة المحتوى Intlayer هو أداة تتيح لك إدارة المحتوى في محرر
|
|
44
|
+
على النقيض من ذلك، فإن نظام إدارة المحتوى Intlayer CMS هو أداة تتيح لك إدارة المحتوى الخاص بك في محرر مرئي للقواميس البعيدة. بمجرد إجراء تغيير، لن يؤثر المحتوى على قاعدة الشيفرة الخاصة بك. وسيعرض الموقع تلقائيًا المحتوى المُعدل.
|
|
45
45
|
|
|
46
46
|
## التكامل
|
|
47
47
|
|
|
@@ -49,8 +49,6 @@ youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
|
49
49
|
|
|
50
50
|
### التكامل مع Next.js
|
|
51
51
|
|
|
52
|
-
### التكامل مع Next.js
|
|
53
|
-
|
|
54
52
|
للتكامل مع Next.js، راجع [دليل الإعداد](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_with_nextjs_15.md).
|
|
55
53
|
|
|
56
54
|
### التكامل مع Create React App
|
|
@@ -61,30 +59,30 @@ youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
|
61
59
|
|
|
62
60
|
للتكامل مع Vite + React، راجع [دليل الإعداد](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_with_vite+react.md).
|
|
63
61
|
|
|
64
|
-
##
|
|
62
|
+
## التهيئة
|
|
65
63
|
|
|
66
|
-
في ملف
|
|
64
|
+
في ملف تهيئة Intlayer الخاص بك، يمكنك تخصيص إعدادات نظام إدارة المحتوى:
|
|
67
65
|
|
|
68
66
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
69
67
|
import type { IntlayerConfig } from "intlayer";
|
|
70
68
|
|
|
71
69
|
const config: IntlayerConfig = {
|
|
72
|
-
// ... إعدادات
|
|
70
|
+
// ... إعدادات التهيئة الأخرى
|
|
73
71
|
editor: {
|
|
74
72
|
/**
|
|
75
73
|
* مطلوب
|
|
76
74
|
*
|
|
77
|
-
* عنوان URL
|
|
78
|
-
* هذا هو
|
|
75
|
+
* عنوان URL الخاص بالتطبيق.
|
|
76
|
+
* هذا هو العنوان الذي يستهدفه المحرر المرئي.
|
|
79
77
|
*/
|
|
80
78
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
81
79
|
|
|
82
80
|
/**
|
|
83
81
|
* مطلوب
|
|
84
82
|
*
|
|
85
|
-
* معرف العميل والسر
|
|
83
|
+
* معرف العميل والسر السري للعميل مطلوبان لتمكين المحرر.
|
|
86
84
|
* يسمحان بتحديد هوية المستخدم الذي يقوم بتحرير المحتوى.
|
|
87
|
-
* يمكن الحصول عليهما
|
|
85
|
+
* يمكن الحصول عليهما بإنشاء عميل جديد في لوحة تحكم Intlayer - المشاريع (https://intlayer.org/dashboard/projects).
|
|
88
86
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
89
87
|
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
90
88
|
*/
|
|
@@ -94,9 +92,9 @@ const config: IntlayerConfig = {
|
|
|
94
92
|
/**
|
|
95
93
|
* اختياري
|
|
96
94
|
*
|
|
97
|
-
* في
|
|
95
|
+
* في حال كنت تستضيف نظام إدارة المحتوى Intlayer بنفسك، يمكنك تعيين عنوان URL الخاص بنظام إدارة المحتوى.
|
|
98
96
|
*
|
|
99
|
-
* عنوان URL
|
|
97
|
+
* عنوان URL الخاص بنظام إدارة المحتوى Intlayer.
|
|
100
98
|
* بشكل افتراضي، يتم تعيينه إلى https://intlayer.org
|
|
101
99
|
*/
|
|
102
100
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
@@ -104,9 +102,9 @@ const config: IntlayerConfig = {
|
|
|
104
102
|
/**
|
|
105
103
|
* اختياري
|
|
106
104
|
*
|
|
107
|
-
* في
|
|
105
|
+
* في حال كنت تستضيف نظام إدارة المحتوى Intlayer بنفسك، يمكنك تعيين عنوان URL الخاص بالواجهة الخلفية.
|
|
108
106
|
*
|
|
109
|
-
* عنوان URL
|
|
107
|
+
* عنوان URL الخاص بنظام إدارة المحتوى Intlayer.
|
|
110
108
|
* بشكل افتراضي، يتم تعيينه إلى https://back.intlayer.org
|
|
111
109
|
*/
|
|
112
110
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
@@ -124,17 +122,19 @@ const config = {
|
|
|
124
122
|
/**
|
|
125
123
|
* مطلوب
|
|
126
124
|
*
|
|
127
|
-
* عنوان URL
|
|
128
|
-
* هذا هو عنوان URL المستهدف من قبل المحرر
|
|
125
|
+
* عنوان URL الخاص بالتطبيق.
|
|
126
|
+
* هذا هو عنوان URL المستهدف من قبل المحرر المرئي.
|
|
129
127
|
*/
|
|
130
128
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
131
129
|
|
|
132
130
|
/**
|
|
133
131
|
* مطلوب
|
|
134
132
|
*
|
|
135
|
-
* معرف العميل والسر
|
|
133
|
+
* معرف العميل والسر السري للعميل مطلوبان لتمكين المحرر.
|
|
136
134
|
* يسمحان بتحديد هوية المستخدم الذي يقوم بتحرير المحتوى.
|
|
137
135
|
* يمكن الحصول عليهما عن طريق إنشاء عميل جديد في لوحة تحكم Intlayer - المشاريع (https://intlayer.org/dashboard/projects).
|
|
136
|
+
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
137
|
+
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
138
138
|
*/
|
|
139
139
|
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
140
140
|
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
@@ -142,9 +142,9 @@ const config = {
|
|
|
142
142
|
/**
|
|
143
143
|
* اختياري
|
|
144
144
|
*
|
|
145
|
-
* في
|
|
145
|
+
* في حال كنت تستضيف نظام إدارة المحتوى Intlayer بنفسك، يمكنك تعيين عنوان URL الخاص بنظام إدارة المحتوى.
|
|
146
146
|
*
|
|
147
|
-
* عنوان URL
|
|
147
|
+
* عنوان URL الخاص بنظام إدارة محتوى Intlayer.
|
|
148
148
|
* بشكل افتراضي، يتم تعيينه إلى https://intlayer.org
|
|
149
149
|
*/
|
|
150
150
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
@@ -152,9 +152,9 @@ const config = {
|
|
|
152
152
|
/**
|
|
153
153
|
* اختياري
|
|
154
154
|
*
|
|
155
|
-
* في
|
|
155
|
+
* في حال كنت تستضيف نظام إدارة محتوى Intlayer بنفسك، يمكنك تعيين عنوان URL الخاص بالواجهة الخلفية.
|
|
156
156
|
*
|
|
157
|
-
* عنوان URL
|
|
157
|
+
* عنوان URL الخاص بنظام إدارة محتوى Intlayer.
|
|
158
158
|
* بشكل افتراضي، يتم تعيينه إلى https://back.intlayer.org
|
|
159
159
|
*/
|
|
160
160
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
@@ -172,17 +172,19 @@ const config = {
|
|
|
172
172
|
/**
|
|
173
173
|
* مطلوب
|
|
174
174
|
*
|
|
175
|
-
* عنوان URL
|
|
176
|
-
* هذا هو
|
|
175
|
+
* عنوان URL الخاص بالتطبيق.
|
|
176
|
+
* هذا هو العنوان الذي يستهدفه المحرر المرئي.
|
|
177
177
|
*/
|
|
178
178
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
179
179
|
|
|
180
180
|
/**
|
|
181
181
|
* مطلوب
|
|
182
182
|
*
|
|
183
|
-
* معرف العميل والسر
|
|
183
|
+
* معرف العميل والسر السري للعميل مطلوبان لتمكين المحرر.
|
|
184
184
|
* يسمحان بتحديد هوية المستخدم الذي يقوم بتحرير المحتوى.
|
|
185
185
|
* يمكن الحصول عليهما عن طريق إنشاء عميل جديد في لوحة تحكم Intlayer - المشاريع (https://intlayer.org/dashboard/projects).
|
|
186
|
+
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
187
|
+
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
186
188
|
*/
|
|
187
189
|
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
188
190
|
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
@@ -190,9 +192,9 @@ const config = {
|
|
|
190
192
|
/**
|
|
191
193
|
* اختياري
|
|
192
194
|
*
|
|
193
|
-
* في
|
|
195
|
+
* في حال كنت تستضيف نظام إدارة محتوى Intlayer بنفسك، يمكنك تعيين عنوان URL الخاص بنظام إدارة المحتوى.
|
|
194
196
|
*
|
|
195
|
-
* عنوان URL
|
|
197
|
+
* عنوان URL الخاص بنظام إدارة محتوى Intlayer.
|
|
196
198
|
* بشكل افتراضي، يتم تعيينه إلى https://intlayer.org
|
|
197
199
|
*/
|
|
198
200
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
@@ -200,9 +202,9 @@ const config = {
|
|
|
200
202
|
/**
|
|
201
203
|
* اختياري
|
|
202
204
|
*
|
|
203
|
-
* في
|
|
205
|
+
* في حال كنت تستضيف نظام إدارة محتوى Intlayer بنفسك، يمكنك تعيين عنوان URL الخاص بالخادم الخلفي.
|
|
204
206
|
*
|
|
205
|
-
* عنوان URL
|
|
207
|
+
* عنوان URL الخاص بنظام إدارة محتوى Intlayer.
|
|
206
208
|
* بشكل افتراضي، يتم تعيينه إلى https://back.intlayer.org
|
|
207
209
|
*/
|
|
208
210
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
@@ -212,54 +214,55 @@ const config = {
|
|
|
212
214
|
module.exports = config;
|
|
213
215
|
```
|
|
214
216
|
|
|
215
|
-
> إذا لم يكن لديك معرف
|
|
217
|
+
> إذا لم يكن لديك معرف عميل وسر عميل، يمكنك الحصول عليهما بإنشاء عميل جديد في [لوحة تحكم Intlayer - المشاريع](https://intlayer.org/dashboard/projects).
|
|
216
218
|
|
|
217
|
-
> لرؤية جميع المعلمات المتاحة، راجع [
|
|
219
|
+
> لرؤية جميع المعلمات المتاحة، راجع [توثيق التهيئة](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md).
|
|
218
220
|
|
|
219
221
|
## استخدام نظام إدارة المحتوى
|
|
220
222
|
|
|
221
|
-
### دفع
|
|
223
|
+
### دفع التهيئة الخاصة بك
|
|
222
224
|
|
|
223
|
-
لتكوين نظام إدارة
|
|
225
|
+
لتكوين نظام إدارة محتوى Intlayer، يمكنك استخدام أوامر [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ar/intlayer_cli.md).
|
|
224
226
|
|
|
225
227
|
```bash
|
|
226
228
|
npx intlayer config push
|
|
227
229
|
```
|
|
228
230
|
|
|
229
|
-
> إذا كنت تستخدم متغيرات البيئة في ملف
|
|
231
|
+
> إذا كنت تستخدم متغيرات البيئة في ملف التهيئة `intlayer.config.ts`، يمكنك تحديد البيئة المطلوبة باستخدام الوسيطة `--env`:
|
|
230
232
|
|
|
231
233
|
```bash
|
|
232
234
|
npx intlayer config push --env production
|
|
233
235
|
```
|
|
234
236
|
|
|
235
|
-
يقوم هذا الأمر
|
|
237
|
+
يقوم هذا الأمر برفع تهيئتك إلى نظام إدارة محتوى Intlayer.
|
|
236
238
|
|
|
237
239
|
### دفع قاموس
|
|
238
240
|
|
|
239
|
-
لتحويل
|
|
241
|
+
لتحويل قواميس اللغة المحلية الخاصة بك إلى قاموس بعيد، يمكنك استخدام أوامر [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ar/intlayer_cli.md).
|
|
240
242
|
|
|
241
243
|
```bash
|
|
242
244
|
npx intlayer dictionary push -d my-first-dictionary-key
|
|
243
245
|
```
|
|
244
246
|
|
|
245
|
-
> إذا كنت تستخدم متغيرات البيئة في ملف
|
|
247
|
+
> إذا كنت تستخدم متغيرات البيئة في ملف التهيئة `intlayer.config.ts` الخاص بك، يمكنك تحديد البيئة المطلوبة باستخدام الوسيطة `--env`:
|
|
246
248
|
|
|
247
249
|
```bash
|
|
248
250
|
npx intlayer dictionary push -d my-first-dictionary-key --env production
|
|
249
251
|
```
|
|
250
252
|
|
|
251
|
-
يقوم هذا الأمر
|
|
253
|
+
يقوم هذا الأمر برفع قواميس المحتوى الأولية الخاصة بك، مما يجعلها متاحة للتحميل والتحرير غير المتزامن عبر منصة Intlayer.
|
|
252
254
|
|
|
253
255
|
### تحرير القاموس
|
|
254
256
|
|
|
255
|
-
بعد ذلك، ستتمكن من رؤية وإدارة
|
|
257
|
+
بعد ذلك، ستتمكن من رؤية وإدارة قاموسك في [نظام إدارة محتوى Intlayer](https://intlayer.org/dashboard/content).
|
|
258
|
+
|
|
259
|
+
## التزامن الحي
|
|
256
260
|
|
|
257
|
-
|
|
261
|
+
يتيح التزامن الحي لتطبيقك عكس تغييرات محتوى نظام إدارة المحتوى أثناء وقت التشغيل. لا حاجة لإعادة البناء أو إعادة النشر. عند التمكين، يتم بث التحديثات إلى خادم التزامن الحي الذي يقوم بتحديث القواميس التي يقرأها تطبيقك.
|
|
258
262
|
|
|
259
|
-
|
|
263
|
+
> يتطلب التزامن الحي اتصالًا مستمرًا بالخادم وهو متاح في خطة المؤسسات.
|
|
260
264
|
|
|
261
|
-
|
|
262
|
-
من خلال تفعيل إعداد [`liveSync`](https://intlayer.org/doc/concept/configuration#editor-configuration)، سيقوم التطبيق تلقائيًا باستبدال المحتوى المحدث عند اكتشافه.
|
|
265
|
+
قم بتمكين التزامن الحي عن طريق تحديث تكوين Intlayer الخاص بك:
|
|
263
266
|
|
|
264
267
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
265
268
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -267,18 +270,32 @@ import type { IntlayerConfig } from "intlayer";
|
|
|
267
270
|
const config: IntlayerConfig = {
|
|
268
271
|
// ... إعدادات التكوين الأخرى
|
|
269
272
|
editor: {
|
|
270
|
-
// ... إعدادات التكوين الأخرى
|
|
271
|
-
|
|
272
273
|
/**
|
|
273
|
-
*
|
|
274
|
-
* على سبيل المثال، عند إضافة أو
|
|
274
|
+
* يُمكّن إعادة تحميل التكوينات المحلية تلقائيًا عند اكتشاف تغييرات.
|
|
275
|
+
* على سبيل المثال، عند إضافة قاموس أو تحديثه، يقوم التطبيق بتحديث
|
|
276
|
+
* المحتوى المعروض على الصفحة.
|
|
275
277
|
*
|
|
276
|
-
* لأن إعادة التحميل
|
|
278
|
+
* نظرًا لأن إعادة التحميل الساخن تتطلب اتصالًا مستمرًا بالخادم،
|
|
279
|
+
* فهي متاحة فقط لعملاء خطة `enterprise`.
|
|
277
280
|
*
|
|
278
281
|
* الافتراضي: false
|
|
279
282
|
*/
|
|
280
283
|
liveSync: true,
|
|
281
284
|
},
|
|
285
|
+
build: {
|
|
286
|
+
/**
|
|
287
|
+
* يتحكم في كيفية استيراد القواميس:
|
|
288
|
+
*
|
|
289
|
+
* - "live": يتم جلب القواميس ديناميكيًا باستخدام واجهة برمجة تطبيقات المزامنة الحية (Live Sync API).
|
|
290
|
+
* يستبدل useIntlayer بـ useDictionaryDynamic.
|
|
291
|
+
*
|
|
292
|
+
* ملاحظة: يستخدم الوضع الحي (Live) واجهة برمجة تطبيقات المزامنة الحية لجلب القواميس. إذا فشل استدعاء الواجهة،
|
|
293
|
+
* يتم استيراد القواميس ديناميكيًا.
|
|
294
|
+
* ملاحظة: فقط القواميس التي تحتوي على محتوى عن بُعد وعلامة "live" تستخدم الوضع الحي.
|
|
295
|
+
* القواميس الأخرى تستخدم الوضع الديناميكي لأداء أفضل.
|
|
296
|
+
*/
|
|
297
|
+
importMode: "live",
|
|
298
|
+
},
|
|
282
299
|
};
|
|
283
300
|
|
|
284
301
|
export default config;
|
|
@@ -289,18 +306,31 @@ export default config;
|
|
|
289
306
|
const config = {
|
|
290
307
|
// ... إعدادات التكوين الأخرى
|
|
291
308
|
editor: {
|
|
292
|
-
// ... إعدادات التكوين الأخرى
|
|
293
|
-
|
|
294
309
|
/**
|
|
295
|
-
*
|
|
296
|
-
* على سبيل المثال، عند إضافة أو
|
|
310
|
+
* يُمكّن إعادة التحميل السريع لتكوينات اللغة عند اكتشاف تغييرات.
|
|
311
|
+
* على سبيل المثال، عند إضافة قاموس أو تحديثه، يقوم التطبيق بتحديث
|
|
312
|
+
* المحتوى المعروض على الصفحة.
|
|
297
313
|
*
|
|
298
|
-
* لأن إعادة التحميل
|
|
314
|
+
* نظرًا لأن إعادة التحميل السريع تتطلب اتصالًا مستمرًا بالخادم، فهي
|
|
315
|
+
* متاحة فقط لعملاء خطة `enterprise`.
|
|
299
316
|
*
|
|
300
317
|
* الافتراضي: false
|
|
301
318
|
*/
|
|
302
319
|
liveSync: true,
|
|
303
320
|
},
|
|
321
|
+
build: {
|
|
322
|
+
/**
|
|
323
|
+
* يتحكم في كيفية استيراد القواميس:
|
|
324
|
+
*
|
|
325
|
+
* - "live": يتم جلب القواميس ديناميكيًا باستخدام واجهة برمجة تطبيقات المزامنة الحية (Live Sync API).
|
|
326
|
+
* يستبدل useIntlayer بـ useDictionaryDynamic.
|
|
327
|
+
*
|
|
328
|
+
* ملاحظة: يستخدم الوضع الحي واجهة برمجة تطبيقات المزامنة الحية لجلب القواميس. إذا فشل استدعاء الواجهة
|
|
329
|
+
* ملاحظة: فقط القواميس التي تحتوي على محتوى عن بُعد وعلامات "live" تستخدم الوضع الحي.
|
|
330
|
+
* يستخدم الآخرون الوضع الديناميكي من أجل الأداء.
|
|
331
|
+
*/
|
|
332
|
+
importMode: "live",
|
|
333
|
+
},
|
|
304
334
|
};
|
|
305
335
|
|
|
306
336
|
export default config;
|
|
@@ -311,45 +341,191 @@ export default config;
|
|
|
311
341
|
const config = {
|
|
312
342
|
// ... إعدادات التكوين الأخرى
|
|
313
343
|
editor: {
|
|
314
|
-
// ... إعدادات التكوين الأخرى
|
|
315
|
-
|
|
316
344
|
/**
|
|
317
|
-
*
|
|
318
|
-
* على سبيل المثال، عند إضافة أو
|
|
345
|
+
* يُمكّن إعادة التحميل السريع لتكوينات اللغة عند اكتشاف تغييرات.
|
|
346
|
+
* على سبيل المثال، عند إضافة قاموس أو تحديثه، يقوم التطبيق بتحديث
|
|
347
|
+
* المحتوى المعروض على الصفحة.
|
|
319
348
|
*
|
|
320
|
-
* لأن إعادة التحميل
|
|
349
|
+
* نظرًا لأن إعادة التحميل السريع تتطلب اتصالًا مستمرًا بالخادم، فهي
|
|
350
|
+
* متاحة فقط لعملاء خطة `enterprise`.
|
|
321
351
|
*
|
|
322
352
|
* الافتراضي: false
|
|
323
353
|
*/
|
|
324
354
|
liveSync: true,
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* منفذ خادم المزامنة الحية.
|
|
358
|
+
*
|
|
359
|
+
* الافتراضي: 4000
|
|
360
|
+
*/
|
|
361
|
+
liveSyncPort: 4000,
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* عنوان URL الخاص بخادم المزامنة الحية.
|
|
365
|
+
*
|
|
366
|
+
* الافتراضي: http://localhost:{liveSyncPort}
|
|
367
|
+
*/
|
|
368
|
+
liveSyncURL: "https://live.example.com",
|
|
369
|
+
},
|
|
370
|
+
build: {
|
|
371
|
+
/**
|
|
372
|
+
* يتحكم في كيفية استيراد القواميس:
|
|
373
|
+
*
|
|
374
|
+
* - "live": يتم جلب القواميس ديناميكيًا باستخدام واجهة برمجة تطبيقات المزامنة الحية.
|
|
375
|
+
* يستبدل useIntlayer بـ useDictionaryDynamic.
|
|
376
|
+
*
|
|
377
|
+
* ملاحظة: يستخدم الوضع الحي واجهة برمجة تطبيقات المزامنة الحية لجلب القواميس. إذا فشل استدعاء API،
|
|
378
|
+
* يتم استيراد القواميس ديناميكيًا.
|
|
379
|
+
* ملاحظة: فقط القواميس التي تحتوي على محتوى عن بُعد وعلامات "live" تستخدم الوضع الحي.
|
|
380
|
+
* القواميس الأخرى تستخدم الوضع الديناميكي لأداء أفضل.
|
|
381
|
+
*/
|
|
382
|
+
importMode: "live",
|
|
383
|
+
},
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
module.exports = config;
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
ابدأ خادم المزامنة الحية لتغليف تطبيقك:
|
|
390
|
+
|
|
391
|
+
مثال باستخدام Next.js:
|
|
392
|
+
|
|
393
|
+
```json5 fileName="package.json"
|
|
394
|
+
{
|
|
395
|
+
"scripts": {
|
|
396
|
+
// ... سكريبتات أخرى
|
|
397
|
+
"build": "next build",
|
|
398
|
+
"dev": "next dev",
|
|
399
|
+
"start": "npx intlayer live --process 'next start'",
|
|
400
|
+
},
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
مثال باستخدام Vite:
|
|
405
|
+
|
|
406
|
+
```json5 fileName="package.json"
|
|
407
|
+
{
|
|
408
|
+
"scripts": {
|
|
409
|
+
// ... سكريبتات أخرى
|
|
410
|
+
"build": "vite build",
|
|
411
|
+
"dev": "vite dev",
|
|
412
|
+
"start": "npx intlayer live --process 'vite start'",
|
|
413
|
+
},
|
|
414
|
+
}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
يقوم خادم المزامنة الحية بتغليف تطبيقك ويطبق المحتوى المحدث تلقائيًا عند وصوله.
|
|
418
|
+
|
|
419
|
+
لتلقي إشعارات التغيير من نظام إدارة المحتوى (CMS)، يحافظ خادم المزامنة الحية على اتصال SSE مع الخادم الخلفي. عندما يتغير المحتوى في نظام إدارة المحتوى، يقوم الخادم الخلفي بإرسال التحديث إلى خادم المزامنة الحية، الذي يقوم بكتابة القواميس الجديدة. سيعكس تطبيقك التحديث في التنقل التالي أو عند إعادة تحميل المتصفح — دون الحاجة لإعادة بناء التطبيق.
|
|
420
|
+
|
|
421
|
+
مخطط التدفق (نظام إدارة المحتوى/الخادم الخلفي -> خادم المزامنة الحية -> خادم التطبيق -> الواجهة الأمامية):
|
|
422
|
+
|
|
423
|
+

|
|
424
|
+
|
|
425
|
+
كيف يعمل:
|
|
426
|
+
|
|
427
|
+

|
|
428
|
+
|
|
429
|
+
### سير عمل التطوير (محلي)
|
|
430
|
+
|
|
431
|
+
- في بيئة التطوير، يتم جلب جميع القواميس البعيدة عند بدء تشغيل التطبيق، بحيث يمكنك اختبار التحديثات بسرعة.
|
|
432
|
+
- لاختبار المزامنة الحية محليًا مع Next.js، قم بتغليف خادم التطوير الخاص بك:
|
|
433
|
+
|
|
434
|
+
```json5 fileName="package.json"
|
|
435
|
+
{
|
|
436
|
+
"scripts": {
|
|
437
|
+
// ... سكريبتات أخرى
|
|
438
|
+
"dev": "npx intlayer live --process 'next dev'",
|
|
439
|
+
// "dev": "npx intlayer live --process 'vite dev'", // لـ Vite
|
|
440
|
+
},
|
|
441
|
+
}
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
قم بتمكين التحسين حتى يطبق Intlayer تحولات الاستيراد الحي أثناء التطوير:
|
|
445
|
+
|
|
446
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
447
|
+
import type { IntlayerConfig } from "intlayer";
|
|
448
|
+
|
|
449
|
+
const config: IntlayerConfig = {
|
|
450
|
+
editor: {
|
|
451
|
+
applicationURL: "http://localhost:5173",
|
|
452
|
+
liveSyncURL: "http://localhost:4000",
|
|
453
|
+
liveSync: true,
|
|
454
|
+
},
|
|
455
|
+
build: {
|
|
456
|
+
optimize: true,
|
|
457
|
+
importMode: "live",
|
|
458
|
+
},
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
export default config;
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
465
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
466
|
+
// تكوين Intlayer مع إعدادات المزامنة الحية
|
|
467
|
+
const config = {
|
|
468
|
+
editor: {
|
|
469
|
+
applicationURL: "http://localhost:5173",
|
|
470
|
+
liveSyncURL: "http://localhost:4000",
|
|
471
|
+
liveSync: true,
|
|
472
|
+
},
|
|
473
|
+
build: {
|
|
474
|
+
optimize: true,
|
|
475
|
+
importMode: "live",
|
|
476
|
+
},
|
|
477
|
+
};
|
|
478
|
+
|
|
479
|
+
export default config;
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
483
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
484
|
+
// تكوين Intlayer مع إعدادات المزامنة الحية
|
|
485
|
+
const config = {
|
|
486
|
+
editor: {
|
|
487
|
+
applicationURL: "http://localhost:5173",
|
|
488
|
+
liveSyncURL: "http://localhost:4000",
|
|
489
|
+
liveSync: true,
|
|
490
|
+
},
|
|
491
|
+
build: {
|
|
492
|
+
optimize: true,
|
|
493
|
+
importMode: "live",
|
|
325
494
|
},
|
|
326
495
|
};
|
|
327
496
|
|
|
328
497
|
module.exports = config;
|
|
329
498
|
```
|
|
330
499
|
|
|
331
|
-
|
|
500
|
+
يقوم هذا الإعداد بتغليف خادم التطوير الخاص بك مع خادم المزامنة الحية، ويجلب القواميس البعيدة عند بدء التشغيل، ويقوم ببث التحديثات من نظام إدارة المحتوى عبر SSE. قم بتحديث الصفحة لرؤية التغييرات.
|
|
332
501
|
|
|
333
|
-
|
|
334
|
-
- على جانب العميل، تتيح إعادة التحميل الفوري للتطبيق إعادة تحميل المحتوى في المتصفح دون الحاجة إلى إعادة تحميل الصفحة. ومع ذلك، هذه الميزة متاحة فقط لمكونات العملاء.
|
|
502
|
+
ملاحظات وقيود:
|
|
335
503
|
|
|
336
|
-
|
|
504
|
+
- أضف مصدر المزامنة الحية إلى سياسة أمان موقعك (CSP). تأكد من السماح بعنوان URL الخاص بالمزامنة الحية في `connect-src` (و `frame-ancestors` إذا كان ذلك مناسبًا).
|
|
505
|
+
- لا تعمل المزامنة الحية مع المخرجات الثابتة. بالنسبة لـ Next.js، يجب أن تكون الصفحة ديناميكية لتلقي التحديثات أثناء وقت التشغيل (على سبيل المثال، استخدم `generateStaticParams`، `generateMetadata`، `getServerSideProps`، أو `getStaticProps` بشكل مناسب لتجنب القيود الخاصة بالمحتوى الثابت فقط).
|
|
506
|
+
- في نظام إدارة المحتوى (CMS)، يحتوي كل قاموس على علامة `live`. يتم جلب القواميس التي تحمل العلامة `live=true` فقط عبر واجهة برمجة تطبيقات المزامنة الحية؛ أما القواميس الأخرى فتُستورد ديناميكيًا وتظل دون تغيير أثناء وقت التشغيل.
|
|
507
|
+
- يتم تقييم علامة `live` لكل قاموس أثناء وقت البناء. إذا لم يتم وسم المحتوى البعيد بعلامة `live=true` أثناء البناء، يجب عليك إعادة البناء لتمكين المزامنة الحية لذلك القاموس.
|
|
508
|
+
- يجب أن يكون خادم المزامنة الحية قادرًا على الكتابة إلى `.intlayer`. في الحاويات، تأكد من وجود صلاحية الكتابة إلى `/.intlayer`.
|
|
337
509
|
|
|
338
|
-
##
|
|
510
|
+
## تصحيح الأخطاء
|
|
339
511
|
|
|
340
|
-
إذا واجهت أي مشاكل مع نظام إدارة
|
|
512
|
+
إذا واجهت أي مشاكل مع نظام إدارة المحتوى (CMS)، تحقق من الأمور التالية:
|
|
341
513
|
|
|
342
514
|
- التطبيق يعمل.
|
|
343
515
|
|
|
344
|
-
- تم
|
|
516
|
+
- تم إعداد تكوين [`المحرر`](https://intlayer.org/doc/concept/configuration#editor-configuration) بشكل صحيح في ملف تكوين Intlayer الخاص بك.
|
|
345
517
|
- الحقول المطلوبة:
|
|
346
|
-
- يجب أن يتطابق عنوان URL
|
|
347
|
-
- عنوان URL
|
|
518
|
+
- يجب أن يتطابق عنوان URL الخاص بالتطبيق مع العنوان الذي قمت بتعيينه في تكوين المحرر (`applicationURL`).
|
|
519
|
+
- عنوان URL الخاص بنظام إدارة المحتوى (CMS)
|
|
348
520
|
|
|
349
|
-
- تأكد من أن تكوين المشروع تم دفعه إلى نظام إدارة
|
|
521
|
+
- تأكد من أن تكوين المشروع تم دفعه إلى نظام إدارة محتوى Intlayer.
|
|
350
522
|
|
|
351
|
-
- يستخدم المحرر
|
|
523
|
+
- يستخدم المحرر المرئي إطار iframe لعرض موقعك الإلكتروني. تأكد من أن سياسة أمان المحتوى (CSP) لموقعك تسمح بعنوان URL الخاص بنظام إدارة المحتوى كـ `frame-ancestors` ('https://intlayer.org' بشكل افتراضي). تحقق من وحدة تحكم المحرر لأي أخطاء.
|
|
352
524
|
|
|
353
|
-
##
|
|
525
|
+
## تاريخ الوثيقة
|
|
354
526
|
|
|
355
|
-
|
|
527
|
+
| الإصدار | التاريخ | التغييرات |
|
|
528
|
+
| ------- | ---------- | ------------------------------------- |
|
|
529
|
+
| 6.0.1 | 2025-09-22 | إضافة توثيق المزامنة الحية |
|
|
530
|
+
| 6.0.0 | 2025-09-04 | استبدال حقل `hotReload` بـ `liveSync` |
|
|
531
|
+
| 5.5.10 | 2025-06-29 | بدء السجل |
|