@intlayer/docs 8.4.6 → 8.4.8
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/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/docs/ar/configuration.md +300 -264
- package/docs/cs/configuration.md +958 -0
- package/docs/de/configuration.md +285 -249
- package/docs/en/configuration.md +115 -137
- package/docs/en-GB/configuration.md +272 -237
- package/docs/es/configuration.md +161 -125
- package/docs/fr/configuration.md +137 -101
- package/docs/it/configuration.md +294 -259
- package/docs/ja/configuration.md +269 -233
- package/docs/nl/configuration.md +958 -0
- package/docs/pt/configuration.md +311 -275
- package/docs/ru/configuration.md +287 -272
- package/docs/tr/configuration.md +265 -229
- package/package.json +6 -6
- package/docs/bn/configuration.md +0 -922
- package/docs/hi/configuration.md +0 -922
- package/docs/id/configuration.md +0 -922
- package/docs/ko/configuration.md +0 -922
- package/docs/pl/configuration.md +0 -922
- package/docs/uk/configuration.md +0 -922
- package/docs/ur/configuration.md +0 -922
- package/docs/vi/configuration.md +0 -922
- package/docs/zh/configuration.md +0 -922
package/docs/ar/configuration.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
3
|
updatedAt: 2026-03-20
|
|
4
|
-
title:
|
|
5
|
-
description: تعرف على كيفية
|
|
4
|
+
title: الإعدادات (Configuration)
|
|
5
|
+
description: تعرف على كيفية إعداد Intlayer لتطبيقك. افهم الإعدادات والخيارات المختلفة المتاحة لتخصيص Intlayer وفقًا لاحتياجاتك.
|
|
6
6
|
keywords:
|
|
7
|
-
- التكوين
|
|
8
7
|
- الإعدادات
|
|
8
|
+
- الإعداد
|
|
9
9
|
- التخصيص
|
|
10
10
|
- Intlayer
|
|
11
11
|
- الخيارات
|
|
@@ -16,13 +16,13 @@ slugs:
|
|
|
16
16
|
history:
|
|
17
17
|
- version: 8.4.0
|
|
18
18
|
date: 2026-03-20
|
|
19
|
-
changes:
|
|
19
|
+
changes: إضافة تمثيل الكائن لكل لغة لـ 'compiler.output' و 'dictionary.fill'
|
|
20
20
|
- version: 8.3.0
|
|
21
21
|
date: 2026-03-11
|
|
22
|
-
changes: نقل 'baseDir' من
|
|
22
|
+
changes: نقل 'baseDir' من إعدادات 'content' إلى إعدادات 'system'
|
|
23
23
|
- version: 8.2.0
|
|
24
24
|
date: 2026-03-09
|
|
25
|
-
changes: تحديث خيارات
|
|
25
|
+
changes: تحديث خيارات المترجم، إضافة دعم لـ 'output' و 'noMetadata'
|
|
26
26
|
- version: 8.1.7
|
|
27
27
|
date: 2026-02-25
|
|
28
28
|
changes: تحديث خيارات المترجم
|
|
@@ -34,34 +34,34 @@ history:
|
|
|
34
34
|
changes: إضافة دعم لمزودي Open Router و Alibaba و Amazon و Google Vertex Bedrock و Fireworks و Groq و Hugging Face و Together.ai
|
|
35
35
|
- version: 8.0.5
|
|
36
36
|
date: 2026-02-06
|
|
37
|
-
changes: إضافة `dataSerialization` إلى
|
|
37
|
+
changes: إضافة `dataSerialization` إلى إعدادات الذكاء الاصطناعي
|
|
38
38
|
- version: 8.0.0
|
|
39
39
|
date: 2026-01-24
|
|
40
|
-
changes:
|
|
40
|
+
changes: تم تغيير اسم وضع الاستيراد `live` إلى `fetch` لوصف الآلية الأساسية بشكل أفضل.
|
|
41
41
|
- version: 8.0.0
|
|
42
42
|
date: 2026-01-22
|
|
43
|
-
changes: نقل
|
|
43
|
+
changes: تم نقل إعدادات البناء `importMode` إلى إعدادات `dictionary`.
|
|
44
44
|
- version: 8.0.0
|
|
45
45
|
date: 2026-01-22
|
|
46
|
-
changes: إضافة خيار `rewrite`
|
|
46
|
+
changes: إضافة خيار `rewrite` إلى إعدادات التوجيه
|
|
47
47
|
- version: 8.0.0
|
|
48
48
|
date: 2026-01-18
|
|
49
|
-
changes: فصل
|
|
49
|
+
changes: فصل إعدادات النظام عن إعدادات المحتوى. نقل المسارات الداخلية إلى خاصية `system`. إضافة `codeDir` لفصل ملفات المحتوى عن تحويل الكود.
|
|
50
50
|
- version: 8.0.0
|
|
51
51
|
date: 2026-01-18
|
|
52
52
|
changes: إضافة خيارات القاموس `location` و `schema`
|
|
53
53
|
- version: 7.5.1
|
|
54
54
|
date: 2026-01-10
|
|
55
|
-
changes: إضافة دعم
|
|
55
|
+
changes: إضافة دعم لصيغ ملفات JSON5 و JSONC
|
|
56
56
|
- version: 7.5.0
|
|
57
57
|
date: 2025-12-17
|
|
58
58
|
changes: إضافة خيار `buildMode`
|
|
59
59
|
- version: 7.0.0
|
|
60
60
|
date: 2025-10-25
|
|
61
|
-
changes: إضافة
|
|
61
|
+
changes: إضافة إعدادات `dictionary`
|
|
62
62
|
- version: 7.0.0
|
|
63
63
|
date: 2025-10-21
|
|
64
|
-
changes: استبدال `middleware`
|
|
64
|
+
changes: استبدال `middleware` بإعدادات `routing`
|
|
65
65
|
- version: 7.0.0
|
|
66
66
|
date: 2025-10-12
|
|
67
67
|
changes: إضافة خيار `formatCommand`
|
|
@@ -73,13 +73,13 @@ history:
|
|
|
73
73
|
changes: إضافة خيار `outputFormat`
|
|
74
74
|
- version: 6.0.0
|
|
75
75
|
date: 2025-09-21
|
|
76
|
-
changes: إزالة
|
|
76
|
+
changes: إزالة حقول `dictionaryOutput` و `i18nextResourcesDir`
|
|
77
77
|
- version: 6.0.0
|
|
78
78
|
date: 2025-09-16
|
|
79
79
|
changes: إضافة وضع الاستيراد `live`
|
|
80
80
|
- version: 6.0.0
|
|
81
81
|
date: 2025-09-04
|
|
82
|
-
changes: استبدال حقل `hotReload` بـ `liveSync` وإضافة
|
|
82
|
+
changes: استبدال حقل `hotReload` بـ `liveSync` وإضافة حقول `liveSyncPort` و `liveSyncURL`
|
|
83
83
|
- version: 5.6.1
|
|
84
84
|
date: 2025-07-25
|
|
85
85
|
changes: استبدال `activateDynamicImport` بخيار `importMode`
|
|
@@ -91,11 +91,11 @@ history:
|
|
|
91
91
|
changes: إضافة أوامر `docs`
|
|
92
92
|
---
|
|
93
93
|
|
|
94
|
-
# توثيق
|
|
94
|
+
# توثيق إعدادات Intlayer
|
|
95
95
|
|
|
96
96
|
## نظرة عامة
|
|
97
97
|
|
|
98
|
-
تسمح لك ملفات
|
|
98
|
+
تسمح لك ملفات إعدادات Intlayer بتخصيص جوانب مختلفة من الإضافة، مثل تدويل التطبيق (i18n)، والبرمجيات الوسيطة (middleware)، وإدارة المحتوى. يوفر هذا المستند وصفاً مفصلاً لكل خاصية في الإعدادات.
|
|
99
99
|
|
|
100
100
|
---
|
|
101
101
|
|
|
@@ -105,9 +105,9 @@ history:
|
|
|
105
105
|
|
|
106
106
|
---
|
|
107
107
|
|
|
108
|
-
##
|
|
108
|
+
## دعم ملفات الإعدادات
|
|
109
109
|
|
|
110
|
-
يقبل Intlayer
|
|
110
|
+
يقبل Intlayer صيغ ملفات الإعدادات التالية: JSON، JS، MJS، و TS:
|
|
111
111
|
|
|
112
112
|
- `intlayer.config.ts`
|
|
113
113
|
- `intlayer.config.js`
|
|
@@ -120,7 +120,7 @@ history:
|
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
|
|
123
|
-
## مثال
|
|
123
|
+
## مثال لملف الإعدادات
|
|
124
124
|
|
|
125
125
|
````typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
126
126
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -128,57 +128,57 @@ import { nextjsRewrite } from "intlayer/routing";
|
|
|
128
128
|
import { z } from "zod";
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
|
-
* مثال
|
|
131
|
+
* مثال لملف إعدادات Intlayer مع جميع الخيارات المتاحة.
|
|
132
132
|
*/
|
|
133
133
|
const config: IntlayerConfig = {
|
|
134
134
|
/**
|
|
135
|
-
*
|
|
135
|
+
* إعدادات التدويل (Internationalization).
|
|
136
136
|
*/
|
|
137
137
|
internationalization: {
|
|
138
138
|
/**
|
|
139
|
-
* قائمة اللغات
|
|
139
|
+
* قائمة اللغات المدعومة في التطبيق.
|
|
140
140
|
* الافتراضي: [Locales.ENGLISH]
|
|
141
141
|
*/
|
|
142
142
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
|
-
* قائمة اللغات
|
|
146
|
-
* إذا كانت فارغة، فستكون جميع اللغات
|
|
145
|
+
* قائمة اللغات المطلوبة التي يجب تعريفها في كل قاموس.
|
|
146
|
+
* إذا كانت فارغة، فستكون جميع اللغات مطلوبة في وضع `strict`.
|
|
147
147
|
* الافتراضي: []
|
|
148
148
|
*/
|
|
149
149
|
requiredLocales: [Locales.ENGLISH],
|
|
150
150
|
|
|
151
151
|
/**
|
|
152
|
-
* مستوى الصرامة للمحتوى
|
|
153
|
-
* - "strict": خطأ إذا كانت
|
|
154
|
-
* - "inclusive":
|
|
155
|
-
* - "loose":
|
|
152
|
+
* مستوى الصرامة للمحتوى المترجم.
|
|
153
|
+
* - "strict": يلقي خطأ إذا كانت اللغة المعلنة مفقودة أو غير معلنة.
|
|
154
|
+
* - "inclusive": يلقي تحذيراً إذا كانت اللغة المعلنة مفقودة.
|
|
155
|
+
* - "loose": يقبل أي لغة موجودة.
|
|
156
156
|
* الافتراضي: "inclusive"
|
|
157
157
|
*/
|
|
158
158
|
strictMode: "inclusive",
|
|
159
159
|
|
|
160
160
|
/**
|
|
161
|
-
* اللغة الافتراضية المستخدمة
|
|
161
|
+
* اللغة الافتراضية المستخدمة كاحتياطي في حالة عدم العثور على اللغة المطلوبة.
|
|
162
162
|
* الافتراضي: Locales.ENGLISH
|
|
163
163
|
*/
|
|
164
164
|
defaultLocale: Locales.ENGLISH,
|
|
165
165
|
},
|
|
166
166
|
|
|
167
167
|
/**
|
|
168
|
-
* الإعدادات التي تتحكم في عمليات القاموس
|
|
168
|
+
* الإعدادات التي تتحكم في عمليات القاموس والسلوك عند فقدان المحتوى.
|
|
169
169
|
*/
|
|
170
170
|
dictionary: {
|
|
171
171
|
/**
|
|
172
|
-
* يتحكم في
|
|
173
|
-
* - "static":
|
|
174
|
-
* - "dynamic":
|
|
175
|
-
* - "fetch":
|
|
172
|
+
* يتحكم في طريقة استيراد القواميس.
|
|
173
|
+
* - "static": استيراد ثابت أثناء البناء.
|
|
174
|
+
* - "dynamic": استيراد ديناميكي باستخدام Suspense.
|
|
175
|
+
* - "fetch": جلب ديناميكي عبر Live Sync API.
|
|
176
176
|
* الافتراضي: "static"
|
|
177
177
|
*/
|
|
178
178
|
importMode: "static",
|
|
179
179
|
|
|
180
180
|
/**
|
|
181
|
-
*
|
|
181
|
+
* إستراتيجية الملء التلقائي للترجمات المفقودة باستخدام الذكاء الاصطناعي.
|
|
182
182
|
* يمكن أن تكون قيمة منطقية أو نمط مسار لحفظ المحتوى المملوء.
|
|
183
183
|
* الافتراضي: true
|
|
184
184
|
*/
|
|
@@ -186,50 +186,50 @@ const config: IntlayerConfig = {
|
|
|
186
186
|
|
|
187
187
|
/**
|
|
188
188
|
* الموقع الفعلي لملفات القاموس.
|
|
189
|
-
* - "local":
|
|
190
|
-
* - "remote":
|
|
191
|
-
* - "hybrid":
|
|
192
|
-
* - "plugin" (أو أي سلسلة مخصصة): يتم
|
|
189
|
+
* - "local": مخزنة في نظام الملفات المحلي.
|
|
190
|
+
* - "remote": مخزنة في Intlayer CMS.
|
|
191
|
+
* - "hybrid": مخزنة محلياً وفي Intlayer CMS.
|
|
192
|
+
* - "plugin" (أو أي سلسلة مخصصة): يتم توفيرها بواسطة إضافة أو مصدر مخصص.
|
|
193
193
|
* الافتراضي: "local"
|
|
194
194
|
*/
|
|
195
195
|
location: "local",
|
|
196
196
|
|
|
197
197
|
/**
|
|
198
|
-
* ما إذا كان
|
|
198
|
+
* ما إذا كان سيتم تحويل المحتوى تلقائياً (مثلMarkdown إلى HTML).
|
|
199
199
|
* الافتراضي: false
|
|
200
200
|
*/
|
|
201
201
|
contentAutoTransformation: false,
|
|
202
202
|
},
|
|
203
203
|
|
|
204
204
|
/**
|
|
205
|
-
*
|
|
205
|
+
* إعدادات التوجيه والبرمجيات الوسيطة.
|
|
206
206
|
*/
|
|
207
207
|
routing: {
|
|
208
208
|
/**
|
|
209
|
-
*
|
|
210
|
-
* - "prefix-no-default":
|
|
211
|
-
* - "prefix-all":
|
|
212
|
-
* - "no-prefix": لا توجد لغة في
|
|
213
|
-
* - "search-params":
|
|
209
|
+
* إستراتيجية التوجيه حسب اللغة.
|
|
210
|
+
* - "prefix-no-default": بادئة لجميع اللغات باستثناء الافتراضية (مثلاً: /dashboard، /fr/dashboard).
|
|
211
|
+
* - "prefix-all": بادئة لجميع اللغات (مثلاً: /en/dashboard، /fr/dashboard).
|
|
212
|
+
* - "no-prefix": لا توجد لغة في رابط URL.
|
|
213
|
+
* - "search-params": استخدام ?locale=...
|
|
214
214
|
* الافتراضي: "prefix-no-default"
|
|
215
215
|
*/
|
|
216
216
|
mode: "prefix-no-default",
|
|
217
217
|
|
|
218
218
|
/**
|
|
219
|
-
*
|
|
219
|
+
* أين يتم تخزين اللغة التي يختارها المستخدم.
|
|
220
220
|
* الخيارات: 'cookie' أو 'localStorage' أو 'sessionStorage' أو 'header' أو مصفوفة منها.
|
|
221
221
|
* الافتراضي: ['cookie', 'header']
|
|
222
222
|
*/
|
|
223
223
|
storage: ["cookie", "header"],
|
|
224
224
|
|
|
225
225
|
/**
|
|
226
|
-
* المسار الأساسي
|
|
226
|
+
* المسار الأساسي لروابط التطبيق.
|
|
227
227
|
* الافتراضي: ""
|
|
228
228
|
*/
|
|
229
229
|
basePath: "",
|
|
230
230
|
|
|
231
231
|
/**
|
|
232
|
-
* قواعد إعادة كتابة URL مخصصة
|
|
232
|
+
* قواعد إعادة كتابة رابط URL مخصصة للمسارات في لغات معينة.
|
|
233
233
|
*/
|
|
234
234
|
rewrite: nextjsRewrite({
|
|
235
235
|
"/[locale]/about": {
|
|
@@ -240,12 +240,12 @@ const config: IntlayerConfig = {
|
|
|
240
240
|
},
|
|
241
241
|
|
|
242
242
|
/**
|
|
243
|
-
*
|
|
243
|
+
* إعدادات البحث ومعالجة ملفات المحتوى.
|
|
244
244
|
*/
|
|
245
245
|
content: {
|
|
246
246
|
/**
|
|
247
|
-
* امتدادات الملفات
|
|
248
|
-
* الافتراضي: ['.content.ts', '.content.js', '.content.json'
|
|
247
|
+
* امتدادات الملفات لفحص القواميس.
|
|
248
|
+
* الافتراضي: ['.content.ts', '.content.js', '.content.json', إلخ]
|
|
249
249
|
*/
|
|
250
250
|
fileExtensions: [".content.ts", ".content.js", ".content.json"],
|
|
251
251
|
|
|
@@ -256,114 +256,114 @@ const config: IntlayerConfig = {
|
|
|
256
256
|
contentDir: ["src"],
|
|
257
257
|
|
|
258
258
|
/**
|
|
259
|
-
*
|
|
260
|
-
* يستخدم
|
|
259
|
+
* مجلد كود المصدر.
|
|
260
|
+
* يستخدم لتحسينات البناء وتحويل الكود.
|
|
261
261
|
* الافتراضي: ["."]
|
|
262
262
|
*/
|
|
263
263
|
codeDir: ["src"],
|
|
264
264
|
|
|
265
265
|
/**
|
|
266
|
-
* الأنماط المستبعدة من
|
|
267
|
-
* الافتراضي: ['node_modules', '.intlayer'
|
|
266
|
+
* الأنماط المستبعدة من الفحص.
|
|
267
|
+
* الافتراضي: ['node_modules', '.intlayer', إلخ]
|
|
268
268
|
*/
|
|
269
269
|
excludedPath: ["node_modules"],
|
|
270
270
|
|
|
271
271
|
/**
|
|
272
|
-
* ما إذا كان
|
|
272
|
+
* ما إذا كان سيتم مراقبة التغييرات وإعادة توليد القواميس أثناء التطوير.
|
|
273
273
|
* الافتراضي: true في وضع التطوير
|
|
274
274
|
*/
|
|
275
275
|
watch: true,
|
|
276
276
|
|
|
277
277
|
/**
|
|
278
|
-
*
|
|
278
|
+
* أمر لتنسيق ملفات .content المنشأة/المحدثة حديثاً.
|
|
279
279
|
*/
|
|
280
280
|
formatCommand: 'npx prettier --write "{{file}}"',
|
|
281
281
|
},
|
|
282
282
|
|
|
283
283
|
/**
|
|
284
|
-
*
|
|
284
|
+
* إعدادات المحرر المرئي.
|
|
285
285
|
*/
|
|
286
286
|
editor: {
|
|
287
287
|
/**
|
|
288
|
-
* ما إذا كان المحرر المرئي
|
|
288
|
+
* ما إذا كان المحرر المرئي مفعلاً.
|
|
289
289
|
* الافتراضي: false
|
|
290
290
|
*/
|
|
291
291
|
enabled: true,
|
|
292
292
|
|
|
293
293
|
/**
|
|
294
|
-
*
|
|
294
|
+
* رابط تطبيقك للتحقق من المصدر (origin).
|
|
295
295
|
* الافتراضي: ""
|
|
296
296
|
*/
|
|
297
297
|
applicationURL: "http://localhost:3000",
|
|
298
298
|
|
|
299
299
|
/**
|
|
300
|
-
*
|
|
300
|
+
* المنفذ لخادم المحرر المحلي.
|
|
301
301
|
* الافتراضي: 8000
|
|
302
302
|
*/
|
|
303
303
|
port: 8000,
|
|
304
304
|
|
|
305
305
|
/**
|
|
306
|
-
*
|
|
306
|
+
* الرابط العام للمحرر.
|
|
307
307
|
* الافتراضي: "http://localhost:8000"
|
|
308
308
|
*/
|
|
309
309
|
editorURL: "http://localhost:8000",
|
|
310
310
|
|
|
311
311
|
/**
|
|
312
|
-
*
|
|
312
|
+
* رابط Intlayer CMS.
|
|
313
313
|
* الافتراضي: "https://app.intlayer.org"
|
|
314
314
|
*/
|
|
315
315
|
cmsURL: "https://app.intlayer.org",
|
|
316
316
|
|
|
317
317
|
/**
|
|
318
|
-
*
|
|
318
|
+
* رابط خادم واجهة برمجة التطبيقات (API) الخلفي.
|
|
319
319
|
* الافتراضي: "https://back.intlayer.org"
|
|
320
320
|
*/
|
|
321
321
|
backendURL: "https://back.intlayer.org",
|
|
322
322
|
|
|
323
323
|
/**
|
|
324
|
-
* ما إذا كان
|
|
324
|
+
* ما إذا كان سيتم تفعيل مزامنة المحتوى في الوقت الفعلي.
|
|
325
325
|
* الافتراضي: false
|
|
326
326
|
*/
|
|
327
327
|
liveSync: true,
|
|
328
328
|
},
|
|
329
329
|
|
|
330
330
|
/**
|
|
331
|
-
* إعدادات الترجمة
|
|
331
|
+
* إعدادات الترجمة والتوليد باستخدام الذكاء الاصطناعي.
|
|
332
332
|
*/
|
|
333
333
|
ai: {
|
|
334
334
|
/**
|
|
335
|
-
* مزود الذكاء الاصطناعي
|
|
335
|
+
* مزود الذكاء الاصطناعي المستخدم.
|
|
336
336
|
* الخيارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
337
337
|
* الافتراضي: 'openai'
|
|
338
338
|
*/
|
|
339
339
|
provider: "openai",
|
|
340
340
|
|
|
341
341
|
/**
|
|
342
|
-
*
|
|
342
|
+
* النموذج المستخدم من المزود المختار.
|
|
343
343
|
*/
|
|
344
344
|
model: "gpt-4o",
|
|
345
345
|
|
|
346
346
|
/**
|
|
347
|
-
* مفتاح واجهة برمجة
|
|
347
|
+
* مفتاح واجهة برمجة التطبيقات (API key) للمزود.
|
|
348
348
|
*/
|
|
349
349
|
apiKey: process.env.OPENAI_API_KEY,
|
|
350
350
|
|
|
351
351
|
/**
|
|
352
|
-
*
|
|
352
|
+
* السياق العام لتوجيه الذكاء الاصطناعي عند توليد الترجمات.
|
|
353
353
|
*/
|
|
354
|
-
applicationContext: "هذا تطبيق لحجز
|
|
354
|
+
applicationContext: "هذا تطبيق لحجز السفر.",
|
|
355
355
|
|
|
356
356
|
/**
|
|
357
|
-
*
|
|
357
|
+
* الرابط الأساسي لواجهة برمجة تطبيقات الذكاء الاصطناعي.
|
|
358
358
|
*/
|
|
359
359
|
baseURL: "http://localhost:3000",
|
|
360
360
|
|
|
361
361
|
/**
|
|
362
|
-
* تسلسل البيانات
|
|
362
|
+
* تسلسل البيانات
|
|
363
363
|
*
|
|
364
364
|
* الخيارات:
|
|
365
|
-
* - "json": افتراضي،
|
|
366
|
-
* - "toon":
|
|
365
|
+
* - "json": افتراضي، موثوق؛ يستهلك المزيد من الوحدات (tokens).
|
|
366
|
+
* - "toon": حات سريعة، استهلاك أقل للوحدات، أقل استقراراً من JSON.
|
|
367
367
|
*
|
|
368
368
|
* الافتراضي: "json"
|
|
369
369
|
*/
|
|
@@ -376,53 +376,53 @@ const config: IntlayerConfig = {
|
|
|
376
376
|
build: {
|
|
377
377
|
/**
|
|
378
378
|
* وضع تنفيذ البناء.
|
|
379
|
-
* - "auto":
|
|
379
|
+
* - "auto": بناء تلقائي أثناء بناء التطبيق.
|
|
380
380
|
* - "manual": يتطلب أمر بناء صريح.
|
|
381
381
|
* الافتراضي: "auto"
|
|
382
382
|
*/
|
|
383
383
|
mode: "auto",
|
|
384
384
|
|
|
385
385
|
/**
|
|
386
|
-
* ما إذا كان
|
|
386
|
+
* ما إذا كان سيتم تحسين الحزمة الناتجة عن طريق إزالة القواميس غير المستخدمة.
|
|
387
387
|
* الافتراضي: true في الإنتاج
|
|
388
388
|
*/
|
|
389
389
|
optimize: true,
|
|
390
390
|
|
|
391
391
|
/**
|
|
392
|
-
*
|
|
392
|
+
* صيغة الإخراج لملفات القاموس المولدة.
|
|
393
393
|
* الافتراضي: ['cjs', 'esm']
|
|
394
394
|
*/
|
|
395
395
|
outputFormat: ["cjs", "esm"],
|
|
396
396
|
|
|
397
397
|
/**
|
|
398
|
-
*
|
|
398
|
+
* ما إذا كان ينبغي للبناء التحقق من أنواع TypeScript.
|
|
399
399
|
* الافتراضي: false
|
|
400
400
|
*/
|
|
401
401
|
checkTypes: false,
|
|
402
402
|
},
|
|
403
403
|
|
|
404
404
|
/**
|
|
405
|
-
*
|
|
405
|
+
* إعدادات السجل (Logger).
|
|
406
406
|
*/
|
|
407
407
|
log: {
|
|
408
408
|
/**
|
|
409
|
-
* مستوى
|
|
410
|
-
* - "default": تسجيل
|
|
411
|
-
* - "verbose": تسجيل
|
|
412
|
-
* - "disabled":
|
|
409
|
+
* مستوى السجل.
|
|
410
|
+
* - "default": تسجيل قياسي.
|
|
411
|
+
* - "verbose": تسجيل تصحيح مفصل.
|
|
412
|
+
* - "disabled": لا يوجد تسجيل.
|
|
413
413
|
* الافتراضي: "default"
|
|
414
414
|
*/
|
|
415
415
|
mode: "default",
|
|
416
416
|
|
|
417
417
|
/**
|
|
418
|
-
*
|
|
418
|
+
* بادئة لجميع الرسائل في السجل.
|
|
419
419
|
* الافتراضي: "[intlayer]"
|
|
420
420
|
*/
|
|
421
421
|
prefix: "[intlayer]",
|
|
422
422
|
},
|
|
423
423
|
|
|
424
424
|
/**
|
|
425
|
-
*
|
|
425
|
+
* إعدادات النظام (حالات الاستخدام المتقدمة)
|
|
426
426
|
*/
|
|
427
427
|
system: {
|
|
428
428
|
/**
|
|
@@ -431,12 +431,12 @@ const config: IntlayerConfig = {
|
|
|
431
431
|
dictionariesDir: ".intlayer/dictionary",
|
|
432
432
|
|
|
433
433
|
/**
|
|
434
|
-
* المجلد
|
|
434
|
+
* المجلد لتوسيع الوحدات (module augmentation).
|
|
435
435
|
*/
|
|
436
436
|
moduleAugmentationDir: ".intlayer/types",
|
|
437
437
|
|
|
438
438
|
/**
|
|
439
|
-
* المجلد لتخزين القواميس غير
|
|
439
|
+
* المجلد لتخزين القواميس غير المدمجة.
|
|
440
440
|
*/
|
|
441
441
|
unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
|
|
442
442
|
|
|
@@ -446,31 +446,31 @@ const config: IntlayerConfig = {
|
|
|
446
446
|
typesDir: ".intlayer/types",
|
|
447
447
|
|
|
448
448
|
/**
|
|
449
|
-
* المجلد
|
|
449
|
+
* المجلد حيث يتم الاحتفاظ بملفات التطبيق الرئيسية.
|
|
450
450
|
*/
|
|
451
451
|
mainDir: ".intlayer/main",
|
|
452
452
|
|
|
453
453
|
/**
|
|
454
|
-
* المجلد
|
|
454
|
+
* المجلد حيث يتم الاحتفاظ بملفات الإعدادات المحولة برمجياً.
|
|
455
455
|
*/
|
|
456
456
|
configDir: ".intlayer/config",
|
|
457
457
|
|
|
458
458
|
/**
|
|
459
|
-
* المجلد
|
|
459
|
+
* المجلد لملفات التخزين المؤقت (cache).
|
|
460
460
|
*/
|
|
461
461
|
cacheDir: ".intlayer/cache",
|
|
462
462
|
},
|
|
463
463
|
|
|
464
464
|
/**
|
|
465
|
-
*
|
|
465
|
+
* إعدادات المترجم (حالات الاستخدام المتقدمة)
|
|
466
466
|
*/
|
|
467
467
|
compiler: {
|
|
468
468
|
/**
|
|
469
|
-
*
|
|
469
|
+
* ما إذا كان سيتم تفعيل المترجم.
|
|
470
470
|
*
|
|
471
471
|
* - false: تعطيل المترجم.
|
|
472
|
-
* - true:
|
|
473
|
-
* - "build-only":
|
|
472
|
+
* - true: تفعيل المترجم.
|
|
473
|
+
* - "build-only": تخطي المترجم أثناء التطوير لبدء أسرع.
|
|
474
474
|
*
|
|
475
475
|
* الافتراضي: false
|
|
476
476
|
*/
|
|
@@ -480,26 +480,26 @@ const config: IntlayerConfig = {
|
|
|
480
480
|
* يحدد المسار لملفات الإخراج. يستبدل `outputDir`.
|
|
481
481
|
*
|
|
482
482
|
* - يتم حل المسارات التي تبدأ بـ `./` بالنسبة لمجلد المكون.
|
|
483
|
-
* - يتم حل المسارات التي تبدأ بـ `/` بالنسبة
|
|
483
|
+
* - يتم حل المسارات التي تبدأ بـ `/` بالنسبة لمجلد المشروع الأساسي (`baseDir`).
|
|
484
484
|
*
|
|
485
|
-
* -
|
|
485
|
+
* - وجود متغير `{{locale}}` في المسار يفعل توليد قواميس منفصلة لكل لغة.
|
|
486
486
|
*
|
|
487
487
|
* مثال:
|
|
488
488
|
* ```ts
|
|
489
489
|
* {
|
|
490
|
-
* // إنشاء ملفات .content.ts متعددة اللغات
|
|
490
|
+
* // إنشاء ملفات .content.ts متعددة اللغات بجانب المكون
|
|
491
491
|
* output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
492
492
|
*
|
|
493
|
-
* // output: './{{fileName}}{{extension}}', // مكافئ
|
|
493
|
+
* // output: './{{fileName}}{{extension}}', // مكافئ عبر سلسلة قالب
|
|
494
494
|
* }
|
|
495
495
|
* ```
|
|
496
496
|
*
|
|
497
497
|
* ```ts
|
|
498
498
|
* {
|
|
499
|
-
* // إنشاء ملفات JSON مركزية
|
|
499
|
+
* // إنشاء ملفات JSON مركزية حسب اللغة في مجلد المشروع الأساسي
|
|
500
500
|
* output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
|
|
501
501
|
*
|
|
502
|
-
* // output: '/locales/{{locale}}/{{key}}.content.json', // مكافئ
|
|
502
|
+
* // output: '/locales/{{locale}}/{{key}}.content.json', // مكافئ عبر سلسلة قالب
|
|
503
503
|
* }
|
|
504
504
|
* ```
|
|
505
505
|
*
|
|
@@ -510,31 +510,31 @@ const config: IntlayerConfig = {
|
|
|
510
510
|
* - `extension`: امتداد الملف.
|
|
511
511
|
* - `componentFileName`: اسم ملف المكون.
|
|
512
512
|
* - `componentExtension`: امتداد ملف المكون.
|
|
513
|
-
* - `format`:
|
|
514
|
-
* - `componentFormat`:
|
|
515
|
-
* - `componentDirPath`:
|
|
513
|
+
* - `format`: صيغة القاموس.
|
|
514
|
+
* - `componentFormat`: صيغة قاموس المكون.
|
|
515
|
+
* - `componentDirPath`: المسار إلى مجلد المكون.
|
|
516
516
|
*/
|
|
517
517
|
output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
|
|
518
518
|
|
|
519
519
|
/**
|
|
520
|
-
*
|
|
521
|
-
* بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة
|
|
520
|
+
* ما إذا كان سيتم حفظ المكونات بعد تحويلها.
|
|
521
|
+
* بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة لتحويل التطبيق ثم إزالته.
|
|
522
522
|
*/
|
|
523
523
|
saveComponents: false,
|
|
524
524
|
|
|
525
525
|
/**
|
|
526
|
-
*
|
|
526
|
+
* وضع المحتوى فقط في الملف المولد. مفيد لمخرجات بصيغة i18next أو ICU MessageFormat JSON حسب اللغة.
|
|
527
527
|
*/
|
|
528
528
|
noMetadata: false,
|
|
529
529
|
|
|
530
530
|
/**
|
|
531
|
-
* بادئة
|
|
531
|
+
* بادئة لمفتاح القاموس
|
|
532
532
|
*/
|
|
533
|
-
dictionaryKeyPrefix: "", //
|
|
533
|
+
dictionaryKeyPrefix: "", // إضافة بادئة اختيارية لمفاتيح القواميس المستخرجة
|
|
534
534
|
},
|
|
535
535
|
|
|
536
536
|
/**
|
|
537
|
-
* مخططات مخصصة
|
|
537
|
+
* مخططات مخصصة للتحقق من صحة محتوى القاموس.
|
|
538
538
|
*/
|
|
539
539
|
schemas: {
|
|
540
540
|
"my-schema": z.object({
|
|
@@ -543,7 +543,7 @@ const config: IntlayerConfig = {
|
|
|
543
543
|
},
|
|
544
544
|
|
|
545
545
|
/**
|
|
546
|
-
*
|
|
546
|
+
* إعدادات الإضافات.
|
|
547
547
|
*/
|
|
548
548
|
plugins: [],
|
|
549
549
|
};
|
|
@@ -553,60 +553,62 @@ export default config;
|
|
|
553
553
|
|
|
554
554
|
---
|
|
555
555
|
|
|
556
|
-
## مرجع
|
|
556
|
+
## مرجع دليل الإعدادات
|
|
557
557
|
|
|
558
|
-
|
|
558
|
+
يوضح ما يلي معالم الإعدادات المختلفة المتاحة في Intlayer.
|
|
559
559
|
|
|
560
560
|
---
|
|
561
561
|
|
|
562
|
-
###
|
|
562
|
+
### إعدادات التدويل (Internationalization)
|
|
563
563
|
|
|
564
|
-
|
|
564
|
+
تحدد الإعدادات المتعلقة بتدويل التطبيق، بما في ذلك اللغات المتاحة واللغة الافتراضية.
|
|
565
565
|
|
|
566
|
-
| الحقل | النوع
|
|
567
|
-
| ----------------- | ---------- |
|
|
568
|
-
| `locales` |
|
|
569
|
-
| `requiredLocales`
|
|
570
|
-
| `strictMode` |
|
|
571
|
-
| `defaultLocale` |
|
|
566
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
567
|
+
| ----------------- | -------------------------------------------------------------------------------------------------- | ---------- | ------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
568
|
+
| `locales` | قائمة اللغات المدعومة في التطبيق. | `string[]` | `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
|
|
569
|
+
| `requiredLocales` | قائمة اللغات المطلوبة في التطبيق. | `string[]` | `[]` | `[]` | • إذا كانت فارغة، فستكون جميع اللغات مطلوبة في وضع `strict`. <br/> • تأكد من تعريف اللغات المطلوبة أيضاً في حقل `locales`. |
|
|
570
|
+
| `strictMode` | يضمن تنفيذاً قوياً للمحتوى المترجم باستخدام TypeScript. | `string` | `'inclusive'` | | • إذا كان `"strict"`: تطلب الدالة `t` تعريف كل لغة معلنة — يلقي خطأ إذا كانت إحداها مفقودة أو غير معلنة. <br/> • إذا كان `"inclusive"`: يحذر من اللغات المفقودة ولكنه يسمح باستخدام اللغات الموجودة غير المعلنة. <br/> • إذا كان `"loose"`: يقبل أي لغة موجودة. |
|
|
571
|
+
| `defaultLocale` | اللغة الافتراضية المستخدمة كاحتياطي في حالة عدم العثور على اللغة المطلوبة. | `string` | `Locales.ENGLISH` | `'en'` | تُستخدم لتحديد اللغة عندما لا يتم تحديدها في رابط URL أو الكوكيز أو الهيدر. |
|
|
572
572
|
|
|
573
573
|
---
|
|
574
574
|
|
|
575
|
-
###
|
|
575
|
+
### إعدادات المحرر (Editor)
|
|
576
|
+
|
|
577
|
+
تحدد إعدادات المحرر المرئي المدمج، بما في ذلك منفذ الخادم وحالة التفعيل.
|
|
578
|
+
|
|
579
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
580
|
+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
581
|
+
| `applicationURL` | رابط التطبيق. | `string` | `undefined` | `'http://localhost:3000'` <br/> `'https://example.com'` <br/> `process.env.INTLAYER_EDITOR_URL` | • يُستخدم لتقييد مصدر (origin) المحرر لأسباب أمنية. <br/> • إذا تم تعيينه على `'*'`، يمكن الوصول إلى المحرر من أي مصدر. |
|
|
582
|
+
| `port` | المنفذ المستخدم بواسطة خادم المحرر المرئي. | `number` | `8000` | | |
|
|
583
|
+
| `editorURL` | رابط خادم المحرر. | `string` | `'http://localhost:8000'` | `'http://localhost:3000'` <br/> `'https://example.com'` <br/> `process.env.INTLAYER_EDITOR_URL` | • يُستخدم لتقييد المصادر التي يمكنها التواصل مع التطبيق. <br/> • إذا تم تعيينه على `'*'`، يمكن الوصول إليه من أي مصدر. <br/> • يجب تعيينه إذا تم تغيير المنفذ أو استضافة المحرر على نطاق مختلف. |
|
|
584
|
+
| `cmsURL` | رابط Intlayer CMS. | `string` | `'https://app.intlayer.org'` | `'https://app.intlayer.org'` | |
|
|
585
|
+
| `backendURL` | رابط الخادم الخلفي. | `string` | `https://back.intlayer.org` | `http://localhost:4000` | |
|
|
586
|
+
| `enabled` | ما إذا كان ينبغي للتطبيق التواصل مع المحرر المرئي. | `boolean` | `false` | `process.env.NODE_ENV !== 'production'` | • إذا كان `false` ، فلا يمكن للمحرر التواصل مع التطبيق. <br/> • يؤدي تعطيله لبيئات معينة إلى زيادة الأمان. |
|
|
587
|
+
| `clientId` | يسمح لحزم intlayer بالتحقق من الهوية على الخادم الخلفي عبر oAuth2. انتقل إلى [intlayer.org/project](https://app.intlayer.org/project) للحصول على رمز الوصول الخاص بك. | `string` | <br/> `undefined` | `undefined` | | يجب الحفاظ على سريته؛ استخدم متغيرات البيئة. |
|
|
588
|
+
| `clientSecret` | يسمح لحزم intlayer بالتحقق من الهوية على الخادم الخلفي عبر oAuth2. انتقل إلى [intlayer.org/project](https://app.intlayer.org/project) للحصول على رمز الوصول الخاص بك. | `string` | <br/> `undefined` | `undefined` | | يجب الحفاظ على سريته؛ استخدم متغيرات البيئة. |
|
|
589
|
+
| `dictionaryPriorityStrategy` | إستراتيجية أولوية القواميس عند وجود قواميس محلية وعن بعد معاً. | `string` | `'local_first'` | `'distant_first'` | • `'distant_first'`: يعطي الأولوية للقواميس البعيدة على المحلية. <br/> • `'local_first'`: يعطي الأولوية للقواميس المحلية على البعيدة. |
|
|
590
|
+
| `liveSync` | ما إذا كان ينبغي لخادم التطبيق إعادة تحميل المحتوى فوراً عند اكتشاف تغييرات في CMS <br/> المحرر المرئي <br/> الخادم الخلفي. | `boolean` | `true` | `true` | • عند إضافة/تحديث قاموس، سيقوم التطبيق بتحديث محتوى الصفحة. <br/> • تستهلك المزامنة الحية المحتوى في خادم آخر، مما قد يؤثر قليلاً على الأداء. <br/> • يوصى باستضافة كليهما على نفس الجهاز. |
|
|
591
|
+
| `liveSyncPort` | منفذ خادم المزامنة الحية. | `number` | `4000` | `4000` | |
|
|
592
|
+
| `liveSyncURL` | رابط خادم المزامنة الحية. | `string` | `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | يشير افتراضياً إلى localhost؛ يمكن تغييره ليشير إلى خادم مزامنة حية بعيد. |
|
|
576
593
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
| الحقل | النوع | الوصف | مثال | ملاحظة |
|
|
580
|
-
| ---------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
581
|
-
| `applicationURL` | `string` | عنوان URL لتطبيقك. الافتراضي: `''` | `'http://localhost:3000'`، `'https://example.com'`، `process.env.INTLAYER_EDITOR_URL` | يستخدم لتقييد مصادر (origin) المحرر لأسباب أمنية. إذا تم تعيينه على `'*'`، يمكن الوصول إلى المحرر من أي مصدر. |
|
|
582
|
-
| `port` | `number` | المنفذ المستخدم من قبل خادم المحرر المرئي. الافتراضي: `8000` | | |
|
|
583
|
-
| `editorURL` | `string` | عنوان URL لخادم المحرر. الافتراضي: `'http://localhost:8000'` | `'http://localhost:3000'`، `'https://example.com'`، `process.env.INTLAYER_EDITOR_URL` | يستخدم لتقييد المصادر التي يمكنها التفاعل مع التطبيق. إذا تم تعيينه على `'*'`، يمكن الوصول إليه من أي مصدر. يجب تعيينه عند تغيير المنفذ أو إذا تم استضافة المحرر في مجال مختلف. |
|
|
584
|
-
| `cmsURL` | `string` | عنوان URL لـ Intlayer CMS. الافتراضي: `'https://intlayer.org'` | `'https://intlayer.org'` | |
|
|
585
|
-
| `backendURL` | `string` | عنوان URL لخادم الخلفية. الافتراضي: `https://back.intlayer.org` | `http://localhost:4000` | |
|
|
586
|
-
| `enabled` | `boolean` | يحدد ما إذا كان التطبيق سيتفاعل مع المحرر المرئي. الافتراضي: `true` | `process.env.NODE_ENV !== 'production'` | إذا كان `false`، لا يمكن للمحرر التفاعل مع التطبيق. يؤدي تعطيله لبيئات معينة إلى تعزيز الأمان. |
|
|
587
|
-
| `clientId` | `string | undefined` | يسمح لحزم intlayer بالمصادقة مع الخلفية باستخدام oAuth2. للحصول على توكن وصول، انتقل إلى [intlayer.org/project](https://app.intlayer.org/project). الافتراضي: `undefined` | | ابقِهِ سريًا؛ قم بتخزينه في متغيرات البيئة. |
|
|
588
|
-
| `clientSecret` | `string | undefined` | يسمح لحزم intlayer بالمصادقة مع الخلفية باستخدام oAuth2. للحصول على توكن وصول، انتقل إلى [intlayer.org/project](https://app.intlayer.org/project). الافتراضي: `undefined` | | ابقِهِ سريًا؛ قم بتخزينه في متغيرات البيئة. |
|
|
589
|
-
| `dictionaryPriorityStrategy` | `string` | استراتيجية تحديد أولويات القواميس عند وجود قواميس محلية وعن بُعد. الافتراضي: `'local_first'` | `'distant_first'` | `'distant_first'`: يعطي الأولوية للبعيد على المحلي. `'local_first'`: يعطي الأولوية للمحلي على البعيد. |
|
|
590
|
-
| `liveSync` | `boolean` | يحدد ما إذا كان يجب على خادم التطبيق إعادة تحميل المحتوى حرارياً عند اكتشاف تغيير في CMS / المحرر المرئي / الخلفية. الافتراضي: `true` | `true` | عند إضافة/تحديث قاموس، يقوم التطبيق بتحديث محتوى الصفحة. يقوم المزامنة الحية (Live sync) بالاستعانة بمصادر خارجية للمحتوى لخادم آخر، مما قد يؤثر قليلاً على الأداء. يوصى باستضافة كليهما على نفس الجهاز. |
|
|
591
|
-
| `liveSyncPort` | `number` | منفذ خادم المزامنة الحية. الافتراضي: `4000` | `4000` | |
|
|
592
|
-
| `liveSyncURL` | `string` | عنوان URL لخادم المزامنة الحية. الافتراضي: `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | يشير إلى localhost بشكل افتراضي؛ يمكن تغييره إلى خادم مزامنة حية بعيد. |
|
|
594
|
+
---
|
|
593
595
|
|
|
594
|
-
###
|
|
596
|
+
### إعدادات التوجيه (Routing)
|
|
595
597
|
|
|
596
|
-
الإعدادات التي تتحكم في سلوك التوجيه، بما في ذلك بنية URL، وتخزين
|
|
598
|
+
الإعدادات التي تتحكم في سلوك التوجيه، بما في ذلك بنية رابط URL، وتخزين اللغة، وإدارة البرمجيات الوسيطة.
|
|
597
599
|
|
|
598
|
-
| الحقل | النوع
|
|
599
|
-
| ---------- |
|
|
600
|
-
| `mode` | `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
|
|
601
|
-
| `storage` | `false | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | Array` |
|
|
602
|
-
| `basePath` |
|
|
603
|
-
| `rewrite` |
|
|
600
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
601
|
+
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
602
|
+
| `mode` | وضع توجيه رابط URL لإدارة اللغات. | `'prefix-no-default'` | <br/> `'prefix-all'` | <br/> `'no-prefix'` | <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (الإنجليزية) أو `/fr/dashboard` (الفرنسية). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: تتم إدارة اللغة بوسائل أخرى. `'search-params'`: `/dashboard?locale=fr` | لا يؤثر على إدارة الكوكيز أو تخزين اللغات. |
|
|
603
|
+
| `storage` | إعدادات تخزين اللغة على العميل. | `false` | <br/> `'cookie'` | <br/> `'localStorage'` | <br/> `'sessionStorage'` | <br/> `'header'` | <br/> `CookiesAttributes` | <br/> `StorageAttributes` | <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | انظر جدول معالم التخزين أدناه. |
|
|
604
|
+
| `basePath` | المسار الأساسي لروابط التطبيق. | `string` | `''` | `'/my-app'` | إذا كان التطبيق يعمل على العنوان `https://example.com/my-app` ، فإن الـ basePath هو `'/my-app'` وتصبح الروابط `https://example.com/my-app/en`. |
|
|
605
|
+
| `rewrite` | قواعد إعادة كتابة رابط URL مخصصة تتجاوز وضع التوجيه الافتراضي لمسارات معينة. تدعم المعاملات الديناميكية `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | انظر المثال أدناه | • لقواعد إعادة الكتابة أولوية على `mode`. <br/> • يعمل مع Next.js و Vite. <br/> • تقوم `getLocalizedUrl()` بتطبيق القواعد المناسبة تلقائياً. <br/> • انظر [إعادة كتابة روابط URL المخصصة](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md). |
|
|
604
606
|
|
|
605
|
-
**مثال
|
|
607
|
+
**مثال لـ `rewrite`**:
|
|
606
608
|
|
|
607
609
|
```typescript
|
|
608
610
|
routing: {
|
|
609
|
-
mode: "prefix-no-default", //
|
|
611
|
+
mode: "prefix-no-default", // إستراتيجية احتياطية
|
|
610
612
|
rewrite: nextjsRewrite({
|
|
611
613
|
"/about": {
|
|
612
614
|
en: "/about",
|
|
@@ -624,43 +626,43 @@ routing: {
|
|
|
624
626
|
}
|
|
625
627
|
```
|
|
626
628
|
|
|
627
|
-
####
|
|
629
|
+
#### معالم التخزين (Storage)
|
|
628
630
|
|
|
629
|
-
| القيمة |
|
|
630
|
-
| ------------------ |
|
|
631
|
-
| `'cookie'` |
|
|
632
|
-
| `'localStorage'` |
|
|
633
|
-
| `'sessionStorage'` |
|
|
634
|
-
| `'header'` |
|
|
631
|
+
| القيمة | ملاحظة | الوصف |
|
|
632
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
633
|
+
| `'cookie'` | • للامتثال للقانون العام لحماية البيانات (GDPR)، تأكد من الحصول على موافقة المستخدم بشكل صحيح. <br/> • قابل للتخصيص عبر `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). | يخزن اللغة في الكوكيز — يمكن الوصول إليها على كل من العميل والخادم. |
|
|
634
|
+
| `'localStorage'` | • لا تنتهي صلاحيته إلا إذا تم مسحه صراحة. <br/> • لا يمكن لـ Intlayer Proxy الوصول إليه. <br/> • قابل للتخصيص عبر `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). | يخزن اللغة في المتصفح دون حد زمني — من جانب العميل فقط. |
|
|
635
|
+
| `'sessionStorage'` | • يتم مسحه عند إغلاق التبويب/النافذة. <br/> • لا يمكن لـ Intlayer Proxy الوصول إليه. <br/> • قابل للتخصيص عبر `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). | يخزن اللغة طوال مدة جلسة الصفحة — من جانب العميل فقط. |
|
|
636
|
+
| `'header'` | • مفيد لطلبات واجهة برمجة التطبيقات (API). <br/> • لا يمكن لجانب العميل الوصول إليه. <br/> • قابل للتخصيص عبر `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). | يخزن أو يمرر اللغة عبر ترويسات HTTP — من جانب الخادم فقط. |
|
|
635
637
|
|
|
636
|
-
#### سمات
|
|
638
|
+
#### سمات الكوكيز (Cookies Attributes)
|
|
637
639
|
|
|
638
|
-
عند استخدام التخزين
|
|
640
|
+
عند استخدام التخزين في الكوكيز، يمكن تعيين سمات إضافية:
|
|
639
641
|
|
|
640
|
-
| الحقل |
|
|
641
|
-
| ---------- |
|
|
642
|
-
| `name` |
|
|
643
|
-
| `domain` |
|
|
644
|
-
| `path` |
|
|
645
|
-
| `secure` |
|
|
646
|
-
| `httpOnly` |
|
|
647
|
-
| `sameSite` | `'strict' | 'lax' | 'none'` |
|
|
648
|
-
| `expires` |
|
|
642
|
+
| الحقل | الوصف | النوع |
|
|
643
|
+
| ---------- | ------------------------------------------- | ---------------------------------------------------- |
|
|
644
|
+
| `name` | اسم الكوكيز. الافتراضي: `'INTLAYER_LOCALE'` | `string` |
|
|
645
|
+
| `domain` | نطاق الكوكيز. الافتراضي: `undefined` | `string` |
|
|
646
|
+
| `path` | مسار الكوكيز. الافتراضي: `undefined` | `string` |
|
|
647
|
+
| `secure` | يتطلب HTTPS. الافتراضي: `undefined` | `boolean` |
|
|
648
|
+
| `httpOnly` | علامة HTTP-only. الافتراضي: `undefined` | `boolean` |
|
|
649
|
+
| `sameSite` | سياسة SameSite. | `'strict'` | <br/> `'lax'` | <br/> `'none'` |
|
|
650
|
+
| `expires` | تاريخ الانتهاء أو عدد الأيام. الافتراضي: `undefined` | `Date` | <br/> `number` |
|
|
649
651
|
|
|
650
|
-
#### سمات
|
|
652
|
+
#### سمات التخزين (Storage Attributes)
|
|
651
653
|
|
|
652
654
|
عند استخدام localStorage أو sessionStorage:
|
|
653
655
|
|
|
654
|
-
| الحقل
|
|
655
|
-
| ------ |
|
|
656
|
-
| `type` | `'localStorage' | 'sessionStorage'` |
|
|
657
|
-
| `name` |
|
|
656
|
+
| الحقل | الوصف | النوع |
|
|
657
|
+
| ------ | ----------------------------------------------- | ------------------------------------------------ |
|
|
658
|
+
| `type` | نوع التخزين. | `'localStorage'` | <br/> `'sessionStorage'` |
|
|
659
|
+
| `name` | اسم المفتاح في التخزين. الافتراضي: `'INTLAYER_LOCALE'` | `string` |
|
|
658
660
|
|
|
659
|
-
#### أمثلة
|
|
661
|
+
#### أمثلة للإعدادات
|
|
660
662
|
|
|
661
|
-
|
|
663
|
+
فيما يلي بعض الأمثلة الشائعة للإعدادات لهيكل التوجيه v7 الجديد:
|
|
662
664
|
|
|
663
|
-
|
|
665
|
+
**الإعدادات الأساسية (الافتراضية)**:
|
|
664
666
|
|
|
665
667
|
```typescript
|
|
666
668
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -680,7 +682,7 @@ const config: IntlayerConfig = {
|
|
|
680
682
|
export default config;
|
|
681
683
|
```
|
|
682
684
|
|
|
683
|
-
|
|
685
|
+
**الإعدادات مع الامتثال لـ GDPR**:
|
|
684
686
|
|
|
685
687
|
```typescript
|
|
686
688
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -712,7 +714,7 @@ const config: IntlayerConfig = {
|
|
|
712
714
|
export default config;
|
|
713
715
|
```
|
|
714
716
|
|
|
715
|
-
**وضع
|
|
717
|
+
**وضع معاملات البحث (Search Params)**:
|
|
716
718
|
|
|
717
719
|
```typescript
|
|
718
720
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -732,7 +734,7 @@ const config: IntlayerConfig = {
|
|
|
732
734
|
export default config;
|
|
733
735
|
```
|
|
734
736
|
|
|
735
|
-
**وضع بدون بادئة
|
|
737
|
+
**وضع بدون بادئة مع تخزين مخصص**:
|
|
736
738
|
|
|
737
739
|
```typescript
|
|
738
740
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -755,7 +757,7 @@ const config: IntlayerConfig = {
|
|
|
755
757
|
export default config;
|
|
756
758
|
```
|
|
757
759
|
|
|
758
|
-
**إعادة كتابة URL
|
|
760
|
+
**إعادة كتابة روابط URL مخصصة مع مسارات ديناميكية**:
|
|
759
761
|
|
|
760
762
|
```typescript
|
|
761
763
|
// intlayer.config.ts
|
|
@@ -767,7 +769,7 @@ const config: IntlayerConfig = {
|
|
|
767
769
|
defaultLocale: "en",
|
|
768
770
|
},
|
|
769
771
|
routing: {
|
|
770
|
-
mode: "prefix-no-default", //
|
|
772
|
+
mode: "prefix-no-default", // احتياطي للمسارات غير المعاد كتابتها
|
|
771
773
|
storage: "cookie",
|
|
772
774
|
rewrite: nextjsRewrite({
|
|
773
775
|
"/about": {
|
|
@@ -791,132 +793,166 @@ export default config;
|
|
|
791
793
|
|
|
792
794
|
---
|
|
793
795
|
|
|
794
|
-
###
|
|
796
|
+
### إعدادات المحتوى (Content)
|
|
795
797
|
|
|
796
|
-
الإعدادات المتعلقة
|
|
798
|
+
الإعدادات المتعلقة بكيفية إدارة المحتوى في التطبيق، بما في ذلك أسماء المجلدات، وامتدادات الملفات، والإعدادات المشتقة.
|
|
797
799
|
|
|
798
|
-
| الحقل
|
|
799
|
-
|
|
|
800
|
-
| `watch` |
|
|
801
|
-
| `fileExtensions` |
|
|
802
|
-
| `contentDir` |
|
|
803
|
-
| `codeDir` |
|
|
804
|
-
| `excludedPath` |
|
|
805
|
-
| `formatCommand` | `string` |
|
|
800
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
801
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
802
|
+
| `watch` | يشير إلى ما إذا كان ينبغي لـ Intlayer مراقبة التغييرات في ملفات الإعلان عن المحتوى لإعادة توليد القواميس. | `boolean` | `true` | | |
|
|
803
|
+
| `fileExtensions` | امتدادات الملفات للفحص أثناء تجميع القواميس. | `string[]` | `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.json5', '.content.jsonc', '.content.tsx', '.content.jsx']` | `['.data.ts', '.data.js', '.data.json']` | يساعد التخصيص في تجنب التعارضات. |
|
|
804
|
+
| `contentDir` | المسار إلى المجلد حيث يتم الاحتفاظ بملفات تعريف المحتوى (`.content.*`). | `string[]` | `['.']` | `['src', '../../ui-library', require.resolve("@my-package/content")]` | يُستخدم لمراقبة ملفات المحتوى وإعادة توليد القواميس. |
|
|
805
|
+
| `codeDir` | المسار إلى المجلد حيث يتم الاحتفاظ بالكود، بالنسبة لمجلد المشروع الأساسي. | `string[]` | `['.']` | `['src', '../../ui-library']` | • يُستخدم لمراقبة ملفات الكود للتحويل (إزالة الأجزاء غير الضرورية، التحسين). <br/> • يمكن أن يؤدي فصله عن `contentDir` إلى تحسين الأداء. |
|
|
806
|
+
| `excludedPath` | المجلدات المستبعدة من فحص المحتوى. | `string[]` | `['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**']` | | غير مستخدم حالياً؛ مخطط له في المستقبل. |
|
|
807
|
+
| `formatCommand` | أمر لتنسيق ملفات المحتوى عند كتابتها محلياً بواسطة Intlayer. | `string` | `undefined` | `'npx prettier --write "{{file}}" --log-level silent'` (Prettier), `'npx biome format "{{file}}" --write --log-level none'` (Biome), `'npx eslint --fix "{{file}}" --quiet'` (ESLint) | • سيتم استبدال `{{file}}` بمسار الملف. <br/> • إذا لم يتم تعريفه، فسيقوم Intlayer بالتحديد تلقائياً (يختبر prettier و biome و eslint). |
|
|
806
808
|
|
|
807
809
|
---
|
|
808
810
|
|
|
809
|
-
###
|
|
810
|
-
|
|
811
|
-
الإعدادات التي تتحكم في عمليات القواميس، بما في ذلك سلوك الملء التلقائي وإنشاء المحتوى.
|
|
811
|
+
### إعدادات القاموس (Dictionary)
|
|
812
812
|
|
|
813
|
-
|
|
813
|
+
المعالم التي تتحكم في عمليات القاموس، بما في ذلك سلوك الملء التلقائي وتوليد المحتوى.
|
|
814
814
|
|
|
815
|
-
|
|
816
|
-
|
|
815
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
816
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
817
|
+
| `fill` | يتحكم في كيفية توليد ملفات مخرجات الملء التلقائي (ترجمة الذكاء الاصطناعي). | `boolean` | <br/> `FilePathPattern` | <br/> `Partial<Record<Locale, boolean | FilePathPattern>>` | `true` | `{ en: '/locales/en/{{key}}.json', fr: ({ key }) => '/locales/fr/${key}.json', es: false }` | • `true`: المسار الافتراضي (نفس ملف المصدر). <br/> • `false`: تعطيل. <br/> • تولد سلسلة القالب/الدالة ملفات حسب اللغة. <br/> • كائن حسب اللغة: كل لغة تقابل قالبها؛ `false` يتجاهل هذه اللغة. <br/> • إدراج `{{locale}}` يفعل التوليد حسب اللغة. <br/> • الـ `fill` على مستوى القاموس دائماً له الأولوية على هذا الإعداد العام. |
|
|
818
|
+
| `description` | يساعد المحرر و CMS على فهم الغرض من القاموس. يُستخدم أيضاً كسياق لتوليد الترجمات باستخدام الذكاء الاصطناعي. | `string` | `undefined` | `'User profile section'` | |
|
|
819
|
+
| `locale` | يحول القاموس إلى صيغة خاصة بلغة محددة. تصبح كل حقل معلن عقدة ترجمة. إذا غاب، يُعتبر القاموس متعدد اللغات. | `LocalesValues` | `undefined` | `'en'` | استخدم هذا إذا كان القاموس مخصصاً للغة واحدة معينة، بدلاً من ترجمات متعددة. |
|
|
820
|
+
| `contentAutoTransformation` | يحول سلاسل المحتوى تلقائياً إلى عقد ذات أنواع (markdown أو HTML أو إدراج). | `boolean` | <br/> `{ markdown?: boolean; html?: boolean; insertion?: boolean }` | `false` | `true` | • Markdown : `### Title` → `md('### Title')`. <br/> • HTML : `<div>Title</div>` → `html('<div>Title</div>')`. <br/> • إدراج : `Hello {{name}}` → `insert('Hello {{name}}')`. |
|
|
821
|
+
| `location` | يشير إلى مكان تخزين ملفات القاموس وكيفية مزامنتها مع CMS. | `'local'` | <br/> `'remote'` | <br/> `'hybrid'` | <br/> `'plugin'` | <br/> `string` | `'local'` | `'hybrid'` | • `'local'`: إدارة محلية فقط. <br/> • `'remote'`: إدارة عن بعد فقط (CMS). <br/> • `'hybrid'`: إدارة محلية وعن بعد معاً. <br/> • `'plugin'` أو سلسلة مخصصة: إدارة بواسطة إضافة أو مصدر مخصص. |
|
|
822
|
+
| `importMode` | يتحكم في طريقة استيراد القواميس. | `'static'` | <br/> `'dynamic'` | <br/> `'fetch'` | `'static'` | `'dynamic'` | • `'static'`: استيراد ثابت. <br/> • `'dynamic'`: استيراد ديناميكي عبر Suspense. <br/> • `'fetch'`: جلب عبر Live Sync API؛ التراجع إلى `'dynamic'` عند الفشل. <br/> • يتطلب إضافات `@intlayer/babel` و `@intlayer/swc`. <br/> • يجب الإعلان عن المفاتيح بشكل ثابت. <br/> • يتم تجاهله إذا تم إيقاف `optimize`. <br/> • لا يؤثر على `getIntlayer` أو `getDictionary` إلخ. |
|
|
823
|
+
| `priority` | أولوية القاموس. تفوز القيم الأعلى على القيم الأدنى عند حل التعارضات بين القواميس. | `number` | `undefined` | `1` | |
|
|
824
|
+
| `live` | ملغي — استخدم `importMode: 'fetch'`. كان يشير إلى ما إذا كان ينبغي جلب محتوى القاموس ديناميكياً عبر Live Sync API. | `boolean` | `undefined` | | تم تغيير اسمه إلى `importMode: 'fetch'` في v8.0.0. |
|
|
825
|
+
| `schema` | يتم توليده تلقائياً بواسطة Intlayer للتحقق من صحة JSON schema. | `'https://intlayer.org/schema.json'` | توليد تلقائي | | لا تقم بتحريره يدوياً. |
|
|
826
|
+
| `title` | يساعد في التعرف على القاموس في المحرر و CMS. | `string` | `undefined` | `'User Profile'` | |
|
|
827
|
+
| `tags` | يصنف القواميس ويوفر سياقاً أو تعليمات للمحرر والذكاء الاصطناعي. | `string[]` | `undefined` | `['user', 'profile']` | |
|
|
828
|
+
| `version` | إصدار القاموس البعيد؛ يساعد في تتبع النسخة المستخدمة حالياً. | `string` | `undefined` | `'1.0.0'` | • تتم إدارته في CMS. <br/> • لا تقم بتحريره محلياً. |
|
|
817
829
|
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
| الحقل | النوع | الوصف | مثال | ملاحظة |
|
|
821
|
-
| --------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
822
|
-
| `fill` | `boolean | FilePathPattern | Partial<Record<Locale, boolean | FilePathPattern>>` | يتحكم في كيفية إنشاء ملفات إخراج الملء التلقائي (الترجمة بالذكاء الاصطناعي). الافتراضي: `true` | انظر المثال أدناه | `true`: المسار الافتراضي (نفس ملف المصدر). `false`: معطل. تنشئ قوالب السلسلة/الوظيفة ملفات لكل لغة. كائن لكل لغة: يتم تعيين كل لغة لنمطها الخاص؛ يؤدي `false` لتخطي تلك اللغة. يؤدي تضمين `{{locale}}` إلى بدء الإنشاء لكل لغة. الـ `fill` على مستوى القاموس له الأولوية دائماً على هذا التكوين العالمي. |
|
|
823
|
-
| `importMode` | `'static' | 'dynamic' | 'fetch'` | يتحكم في كيفية استيراد القواميس. الافتراضي: `'static'` | `'dynamic'` | `'static'`: يتم استيراده بشكل ثابت. `'dynamic'`: يتم استيراده بشكل ديناميكي عبر Suspense. `'fetch'`: يتم جلبه ديناميكيًا عبر واجهة برمجة تطبيقات Live Sync. لا يؤثر على `getIntlayer` أو `getDictionary` أو `useDictionary` وما إلى ذلك. |
|
|
824
|
-
| `location` | `'local' | 'remote' | 'hybrid' | string` | مكان تخزين القواميس. الافتراضي: `'local'` | `'remote'` | `'local'`: نظام الملفات. `'remote'`: Intlayer CMS. `'hybrid'`: كلاهما. |
|
|
825
|
-
| `contentAutoTransformation` | `boolean` | يحدد ما إذا كان يجب تحويل ملفات المحتوى تلقائيًا (مثل من Markdown إلى HTML). الافتراضي: `false` | `true` | مفيد لمعالجة حقول Markdown عبر @intlayer/markdown. |
|
|
826
|
-
|
|
827
|
-
**مثال على `fill`**:
|
|
830
|
+
**مثال لـ `fill`**:
|
|
828
831
|
|
|
829
832
|
```ts
|
|
830
833
|
dictionary: {
|
|
831
834
|
fill: {
|
|
832
|
-
en:
|
|
835
|
+
en: "/locales/en/{{key}}.content.json",
|
|
833
836
|
fr: ({ key }) => `/locales/fr/${key}.content.json`,
|
|
834
837
|
es: false,
|
|
835
|
-
}
|
|
836
|
-
}
|
|
838
|
+
},
|
|
839
|
+
};
|
|
837
840
|
```
|
|
838
841
|
|
|
839
842
|
---
|
|
840
843
|
|
|
841
|
-
###
|
|
844
|
+
### إعدادات السجل (Log)
|
|
842
845
|
|
|
843
|
-
|
|
846
|
+
المعالم لتخصيص مخرجات سجل Intlayer.
|
|
844
847
|
|
|
845
|
-
| الحقل
|
|
846
|
-
|
|
|
847
|
-
| `
|
|
848
|
-
| `
|
|
849
|
-
| `apiKey` | `string` | مفتاح واجهة برمجة التطبيقات للمزود المختار. | `process.env.OPENAI_API_KEY` | |
|
|
850
|
-
| `applicationContext` | `string` | سياق إضافي حول تطبيقك لتحسين دقة ترجمة الذكاء الاصطناعي. | `'منصة تعليمية للأطفال.'` | |
|
|
851
|
-
| `baseURL` | `string` | عنوان URL اختياري للمسار الأساسي لمكالمات واجهة برمجة التطبيقات. | | مفيد إذا كنت تستخدم بروكسي أو نشر ذكاء اصطناعي محلي. |
|
|
852
|
-
| `dataSerialization` | `'json' | 'toon'` | يحدد كيفية إرسال البيانات إلى الذكاء الاصطناعي. الافتراضي: `'json'` | `'json'` | `'json'`: أكثر قوة ودقة. `'toon'`: يستهلك توكنات أقل ولكنه قد يكون أقل استقرارًا. |
|
|
848
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
849
|
+
| -------- | ----------------------------------- | -------------------------------------------------------------- | ----------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
|
850
|
+
| `mode` | يشير إلى وضع السجل. | `'default'` | <br/> `'verbose'` | <br/> `'disabled'` | `'default'` | `'verbose'` | • `'verbose'`: يسجل المزيد من المعلومات لتصحيح الأخطاء. <br/> • `'disabled'`: يوقف السجل تماماً. |
|
|
851
|
+
| `prefix` | بادئة لجميع الرسائل في السجل. | `string` | `'[intlayer] '` | `'[my prefix] '` | |
|
|
853
852
|
|
|
854
853
|
---
|
|
855
854
|
|
|
856
|
-
###
|
|
855
|
+
### إعدادات الذكاء الاصطناعي (AI)
|
|
856
|
+
|
|
857
|
+
الإعدادات التي تتحكم في ميزات الذكاء الاصطناعي في Intlayer، بما في ذلك المزود، والنموذج، ومفتاح واجهة برمجة التطبيقات.
|
|
858
|
+
|
|
859
|
+
هذه الإعدادات اختيارية إذا كنت مسجلاً في [لوحة تحكم Intlayer](https://app.intlayer.org/project) بمفتاح وصول. سيقوم Intlayer تلقائياً بإدارة حل الذكاء الاصطناعي الأكثر كفاءة وملاءمة للتكاليف لاحتياجاتك. استخدام الخيارات الافتراضية يضمن أفضل دعم طويل الأمد حيث يتم تحديث Intlayer باستمرار لاستخدام أحدث النماذج.
|
|
860
|
+
|
|
861
|
+
إذا كنت تفضل استخدام مفتاح واجهة برمجة تطبيقات خاص بك أو نموذج محدد، يمكنك تعريف إعدادات الذكاء الاصطناعي الخاصة بك.
|
|
862
|
+
سيتم استخدام إعدادات الذكاء الاصطناعي هذه عالمياً في بيئة Intlayer الخاصة بك. ستستخدم أوامر CLI هذه الإعدادات افتراضياً لأوامر مثل `fill` ، وكذلك SDK ، والمحرر المرئي ، و CMS. يمكنك تجاوز هذه القيم الافتراضية لحالات استخدام معينة عبر معاملات الأوامر.
|
|
863
|
+
|
|
864
|
+
يدعم Intlayer العديد من مزودي الذكاء الاصطناعي لتحقيق أقصى قدر من المرونة. حالياً، المزودون المدعومون هم:
|
|
865
|
+
|
|
866
|
+
- **OpenAI** (الافتراضي)
|
|
867
|
+
- **Anthropic Claude**
|
|
868
|
+
- **Mistral AI**
|
|
869
|
+
- **DeepSeek**
|
|
870
|
+
- **Google Gemini**
|
|
871
|
+
- **Google AI Studio**
|
|
872
|
+
- **Google Vertex**
|
|
873
|
+
- **Meta Llama**
|
|
874
|
+
- **Ollama**
|
|
875
|
+
- **OpenRouter**
|
|
876
|
+
- **Alibaba Cloud**
|
|
877
|
+
- **Fireworks**
|
|
878
|
+
- **Hugging Face**
|
|
879
|
+
- **Groq**
|
|
880
|
+
- **Amazon Bedrock**
|
|
881
|
+
- **Together.ai**
|
|
882
|
+
|
|
883
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
884
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
885
|
+
| `provider` | المزود المستخدم لميزات الذكاء الاصطناعي في Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | `undefined`| `'anthropic'` | يحتاج المزودون المختلفون إلى مفاتيح واجهة برمجة تطبيقات مختلفة ولهم أسعار مختلفة. |
|
|
886
|
+
| `model` | النموذج المستخدم لميزات الذكاء الاصطناعي. | `string` | لا يوجد | `'gpt-4o-2024-11-20'` | يعتمد النموذج المحدد على المزود. |
|
|
887
|
+
| `temperature` | يتحكم في عشوائية ردود الذكاء الاصطناعي. | `number` | لا يوجد | `0.1` | درجة حرارة أعلى = أكثر إبداعاً وأقل قابلية للتنبؤ. |
|
|
888
|
+
| `apiKey` | مفتاح واجهة برمجة التطبيقات الخاص بك للمزود المختار. | `string` | لا يوجد | `process.env.OPENAI_API_KEY` | يجب الحفاظ على سريته؛ استخدم متغيرات البيئة. |
|
|
889
|
+
| `applicationContext` | سياق إضافي حول تطبيقك لمساعدة الذكاء الاصطناعي في توليد ترجمات أكثر دقة (المجال، الجمهور المستهدف، النبرة، المصطلحات). | `string` | لا يوجد | `'سياق تطبيقي الخاص'` | يمكن استخدامه لإضافة قواعد (مثلاً: `"لا يجب عليك تحويل روابط URL"`). |
|
|
890
|
+
| `baseURL` | الرابط الأساسي لواجهة برمجة تطبيقات الذكاء الاصطناعي. | `string` | لا يوجد | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | يمكن أن يشير إلى نقطة نهاية محلية أو مخصصة لواجهة برمجة تطبيقات الذكاء الاصطناعي. |
|
|
891
|
+
| `dataSerialization` | صيغة تسلسل البيانات لميزات الذكاء الاصطناعي. | `'json'` | <br/> `'toon'` | `undefined`| `'toon'` | • `'json'`: افتراضي، موثوق؛ يستهلك المزيد من الوحدات. <br/> • `'toon'`: وحدات أقل، أقل استقراراً. <br/> • يتم تمرير المعاملات الإضافية إلى النموذج كسياق (جهد التفكير إلخ). |
|
|
857
892
|
|
|
858
|
-
|
|
893
|
+
---
|
|
859
894
|
|
|
860
|
-
|
|
861
|
-
| -------------- | ------------------------ | ------------------------------------------------------------------------------------------------ | ---- | ------ |
|
|
862
|
-
| `mode` | `'auto' | 'manual'` | يحدد ما إذا كان يجب تشغيل Intlayer تلقائيًا أثناء خطوات ما قبل بناء التطبيق. الافتراضي: `'auto'` | | |
|
|
863
|
-
| `optimize` | `boolean` | يحدد ما إذا كان يجب تحسين القواميس المجمعة لوقت التشغيل. الافتراضي: `true` في الإنتاج | | |
|
|
864
|
-
| `outputFormat` | `('cjs' | 'esm')[]` | تنسيق الإخراج لملفات القاموس المنشأة. الافتراضي: `['cjs', 'esm']` | | |
|
|
865
|
-
| `checkTypes` | `boolean` | يحدد ما إذا كان يجب على Intlayer التحقق من الأنواع في الملفات المنشأة. الافتراضي: `false` | | |
|
|
895
|
+
### إعدادات البناء (Build)
|
|
866
896
|
|
|
867
|
-
|
|
897
|
+
المعالم التي تتحكم في كيفية قيام Intlayer بتحسين وترجمة تدويل تطبيقك.
|
|
898
|
+
|
|
899
|
+
يتم تطبيق خيارات البناء على إضافات `@intlayer/babel` و `@intlayer/swc`.
|
|
868
900
|
|
|
869
|
-
|
|
901
|
+
> في وضع التطوير، يستخدم Intlayer استيراداً ثابتاً للقواميس لتبسيط عملية التطوير.
|
|
870
902
|
|
|
871
|
-
|
|
903
|
+
> أثناء التحسين، سيقوم Intlayer باستبدال استدعاءات القواميس لتحسين تقسيم الكود (chunking) بحيث تستورد الحزمة الناتجة القواميس المستخدمة فعلياً فقط.
|
|
872
904
|
|
|
873
|
-
| الحقل
|
|
874
|
-
|
|
|
875
|
-
| `
|
|
876
|
-
| `
|
|
877
|
-
| `
|
|
878
|
-
| `
|
|
879
|
-
| `
|
|
880
|
-
| `configDir` | `string` | مجلد ملفات التكوين المجمعة. | `'.intlayer/config'` |
|
|
881
|
-
| `cacheDir` | `string` | مجلد ملفات التخزين المؤقت. | `'.intlayer/cache'` |
|
|
905
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
906
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
907
|
+
| `mode` | يتحكم في وضع البناء. | `'auto'` | <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: يتم تشغيل البناء تلقائياً أثناء بناء التطبيق. <br/> • `'manual'`: يتم تنفيذه فقط عند استدعاء أمر بناء صريح. <br/> • يمكن استخدامه لإيقاف بناء القواميس (مثلاً لتجنب الجري في بيئات Node.js). |
|
|
908
|
+
| `optimize` | يتحكم في ما إذا كان ينبغي إجراء تحسينات البناء. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • إذا لم يتم تعريفه، فسيتم تشغيل التحسين عند بناء إطار العمل (Vite/Next.js). <br/> • `true` يفرض التحسين حتى في وضع التطوير. <br/> • `false` يعطله. <br/> • عند تشغيله، يستبدل استدعاءات القواميس لتحسين الـ chunking. <br/> • يتطلب إضافات `@intlayer/babel` و `@intlayer/swc`. |
|
|
909
|
+
| `checkTypes` | يشير إلى ما إذا كان ينبغي للبناء التحقق من أنواع TypeScript وتسجيل الأخطاء. | `boolean` | `false` | | قد يبطئ عملية البناء. |
|
|
910
|
+
| `outputFormat` | يتحكم في صيغة إخراج القواميس. | `('esm' | 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
|
|
911
|
+
| `traversePattern` | الأنماط التي تحدد الملفات التي يتم فحصها أثناء التحسين. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • قيد التحسين على الملفات ذات الصلة لزيادة أداء البناء. <br/> • سيتم تجاهله إذا توقف `optimize`. <br/> • يستخدم أنماط glob. |
|
|
882
912
|
|
|
883
913
|
---
|
|
884
914
|
|
|
885
|
-
###
|
|
915
|
+
### إعدادات النظام (System)
|
|
886
916
|
|
|
887
|
-
|
|
917
|
+
هذه الإعدادات مخصصة لحالات الاستخدام المتقدمة والإعدادات الداخلية لـ Intlayer.
|
|
888
918
|
|
|
889
|
-
| الحقل
|
|
890
|
-
|
|
|
891
|
-
| `
|
|
892
|
-
| `
|
|
893
|
-
| `
|
|
894
|
-
| `
|
|
895
|
-
| `
|
|
919
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
920
|
+
| ------------------------- | ---------------------------------------------------- | -------- | --------------------------------- | ------ | ---------- |
|
|
921
|
+
| `dictionariesDir` | المجلد للقواميس المحولة برمجياً. | `string` | `'.intlayer/dictionary'` | | |
|
|
922
|
+
| `moduleAugmentationDir` | المجلد لتوسيع وحدات TypeScript. | `string` | `'.intlayer/types'` | | |
|
|
923
|
+
| `unmergedDictionariesDir` | المجلد لتخزين القواميس غير المدمجة. | `string` | `'.intlayer/unmerged_dictionary'` | | |
|
|
924
|
+
| `typesDir` | المجلد للأنواع المولدة. | `string` | `'.intlayer/types'` | | |
|
|
925
|
+
| `mainDir` | المجلد لملف Intlayer الرئيسي. | `string` | `'.intlayer/main'` | | |
|
|
926
|
+
| `configDir` | المجلد لملفات الإعدادات المحولة برمجياً. | `string` | `'.intlayer/config'` | | |
|
|
927
|
+
| `cacheDir` | المجلد لملفات التخزين المؤقت. | `string` | `'.intlayer/cache'` | | |
|
|
896
928
|
|
|
897
929
|
---
|
|
898
930
|
|
|
899
|
-
###
|
|
931
|
+
### إعدادات المترجم (Compiler)
|
|
900
932
|
|
|
901
|
-
|
|
933
|
+
الإعدادات التي تتحكم في مترجم Intlayer، الذي يستخرج القواميس مباشرة من مكوناتك.
|
|
902
934
|
|
|
903
|
-
| الحقل
|
|
904
|
-
|
|
|
905
|
-
| `
|
|
906
|
-
| `
|
|
935
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
936
|
+
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
937
|
+
| `enabled` | يشير إلى ما إذا كان ينبغي تفعيل المترجم لاستخراج القواميس. | `boolean` | <br/> `'build-only'` | `true` | `'build-only'` | `'build-only'` يتخطى المترجم أثناء التطوير لبناء أسرع؛ يتم تنفيذه فقط عند أوامر البناء. |
|
|
938
|
+
| `dictionaryKeyPrefix` | بادئة لمفاتيح القواميس المستخرجة. | `string` | `''` | `'my-prefix-'` | تتم إضافتها إلى المفتاح المولد (بناءً على اسم الملف) لتجنب التعارضات. |
|
|
939
|
+
| `saveComponents` | ما إذا كان ينبغي حفظ المكونات بعد تحويلها. | `boolean` | `false` | | • إذا كان `true` ، فسيتم استبدال الملفات الأصلية بنسخها المحولة. <br/> • يمكن إزالة المترجم بعد تشغيله مرة واحدة. |
|
|
940
|
+
| `output` | يحدد المسار لملفات الإخراج. يستبدل `outputDir`. يدعم قوالب المتغيرات: `{{fileName}}`, <br/> `{{key}}`, <br/> `{{locale}}`, <br/> `{{extension}}`, <br/> `{{componentFileName}}`, <br/> `{{componentExtension}}`, <br/> `{{format}}`, <br/> `{{componentFormat}}`, <br/> `{{componentDirPath}}`. | `boolean` | <br/> `FilePathPattern` | <br/> `Partial<Record<Locale, boolean | FilePathPattern>>` | `undefined` | `'./{{fileName}}{{extension}}'` <br/> `'/locales/{{locale}}/{{key}}.json'` <br/> `{ en: ({ key }) => './locales/en/${key}.json', fr: '...', es: false }` | • يتم حل مسارات `./` بالنسبة لمجلد المكون. <br/> • مسارات `/` بالنسبة للمشروع الأساسي. <br/> • `{{locale}}` يتضمن التوليد حسب اللغة. <br/> • يدعم تمثيل الكائن لكل لغة. |
|
|
941
|
+
| `noMetadata` | إذا كان `true` ، فسيقوم المترجم بحذف بيانات ميتا القاموس (المفتاح، غلاف المحتوى) من المخرجات. | `boolean` | `false` | `false` → `{"key":"my-key","content":{"key":"value"}}` <br/> `true` → `{"key":"value"}` | • مفيد لمخرجات بصيغة i18next أو ICU MessageFormat JSON. <br/> • يعمل جيداً مع إضافة `loadJSON`. |
|
|
942
|
+
| `dictionaryKeyPrefix` | بادئة لمفتاح القاموس | `string` | `''` | | إضافة بادئة اختيارية لمفاتيح القواميس المستخرجة |
|
|
907
943
|
|
|
908
944
|
---
|
|
909
945
|
|
|
910
|
-
###
|
|
946
|
+
### مخططات مخصصة (Custom Schemas)
|
|
911
947
|
|
|
912
|
-
| الحقل
|
|
913
|
-
| --------- |
|
|
914
|
-
| `schemas` |
|
|
948
|
+
| الحقل | الوصف | النوع |
|
|
949
|
+
| --------- | ------------------------------------------------------------------------------ | --------------------------- |
|
|
950
|
+
| `schemas` | يسمح لك بتعريف مخططات Zod للتحقق من صحة هيكل قواميسك. | `Record<string, ZodSchema>` |
|
|
915
951
|
|
|
916
952
|
---
|
|
917
953
|
|
|
918
|
-
###
|
|
954
|
+
### الإضافات (Plugins)
|
|
919
955
|
|
|
920
|
-
| الحقل
|
|
921
|
-
| --------- |
|
|
922
|
-
| `plugins` |
|
|
956
|
+
| الحقل | الوصف | النوع |
|
|
957
|
+
| --------- | ----------------------------------------- | ------------------ |
|
|
958
|
+
| `plugins` | قائمة إضافات Intlayer لإدراجها. | `IntlayerPlugin[]` |
|