@intlayer/docs 8.4.7 → 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.
@@ -0,0 +1,958 @@
1
+ ---
2
+ createdAt: 2024-08-13
3
+ updatedAt: 2026-03-20
4
+ title: الإعدادات (Configuration)
5
+ description: تعرف على كيفية إعداد Intlayer لتطبيقك. افهم الإعدادات والخيارات المختلفة المتاحة لتخصيص Intlayer وفقًا لاحتياجاتك.
6
+ keywords:
7
+ - الإعدادات
8
+ - الإعداد
9
+ - التخصيص
10
+ - Intlayer
11
+ - الخيارات
12
+ slugs:
13
+ - doc
14
+ - concept
15
+ - configuration
16
+ history:
17
+ - version: 8.4.0
18
+ date: 2026-03-20
19
+ changes: إضافة تمثيل الكائن لكل لغة لـ 'compiler.output' و 'dictionary.fill'
20
+ - version: 8.3.0
21
+ date: 2026-03-11
22
+ changes: نقل 'baseDir' من إعدادات 'content' إلى إعدادات 'system'
23
+ - version: 8.2.0
24
+ date: 2026-03-09
25
+ changes: تحديث خيارات المترجم، إضافة دعم لـ 'output' و 'noMetadata'
26
+ - version: 8.1.7
27
+ date: 2026-02-25
28
+ changes: تحديث خيارات المترجم
29
+ - version: 8.1.5
30
+ date: 2026-02-23
31
+ changes: إضافة خيار المترجم 'build-only' وبادئة القاموس
32
+ - version: 8.0.6
33
+ date: 2026-02-12
34
+ changes: إضافة دعم لمزودي Open Router و Alibaba و Amazon و Google Vertex Bedrock و Fireworks و Groq و Hugging Face و Together.ai
35
+ - version: 8.0.5
36
+ date: 2026-02-06
37
+ changes: إضافة `dataSerialization` إلى إعدادات الذكاء الاصطناعي
38
+ - version: 8.0.0
39
+ date: 2026-01-24
40
+ changes: تم تغيير اسم وضع الاستيراد `live` إلى `fetch` لوصف الآلية الأساسية بشكل أفضل.
41
+ - version: 8.0.0
42
+ date: 2026-01-22
43
+ changes: تم نقل إعدادات البناء `importMode` إلى إعدادات `dictionary`.
44
+ - version: 8.0.0
45
+ date: 2026-01-22
46
+ changes: إضافة خيار `rewrite` إلى إعدادات التوجيه
47
+ - version: 8.0.0
48
+ date: 2026-01-18
49
+ changes: فصل إعدادات النظام عن إعدادات المحتوى. نقل المسارات الداخلية إلى خاصية `system`. إضافة `codeDir` لفصل ملفات المحتوى عن تحويل الكود.
50
+ - version: 8.0.0
51
+ date: 2026-01-18
52
+ changes: إضافة خيارات القاموس `location` و `schema`
53
+ - version: 7.5.1
54
+ date: 2026-01-10
55
+ changes: إضافة دعم لصيغ ملفات JSON5 و JSONC
56
+ - version: 7.5.0
57
+ date: 2025-12-17
58
+ changes: إضافة خيار `buildMode`
59
+ - version: 7.0.0
60
+ date: 2025-10-25
61
+ changes: إضافة إعدادات `dictionary`
62
+ - version: 7.0.0
63
+ date: 2025-10-21
64
+ changes: استبدال `middleware` بإعدادات `routing`
65
+ - version: 7.0.0
66
+ date: 2025-10-12
67
+ changes: إضافة خيار `formatCommand`
68
+ - version: 6.2.0
69
+ date: 2025-10-12
70
+ changes: تحديث خيار `excludedPath`
71
+ - version: 6.0.2
72
+ date: 2025-09-23
73
+ changes: إضافة خيار `outputFormat`
74
+ - version: 6.0.0
75
+ date: 2025-09-21
76
+ changes: إزالة حقول `dictionaryOutput` و `i18nextResourcesDir`
77
+ - version: 6.0.0
78
+ date: 2025-09-16
79
+ changes: إضافة وضع الاستيراد `live`
80
+ - version: 6.0.0
81
+ date: 2025-09-04
82
+ changes: استبدال حقل `hotReload` بـ `liveSync` وإضافة حقول `liveSyncPort` و `liveSyncURL`
83
+ - version: 5.6.1
84
+ date: 2025-07-25
85
+ changes: استبدال `activateDynamicImport` بخيار `importMode`
86
+ - version: 5.6.0
87
+ date: 2025-07-13
88
+ changes: تغيير `contentDir` الافتراضي من `['src']` إلى `['.']`
89
+ - version: 5.5.11
90
+ date: 2025-06-29
91
+ changes: إضافة أوامر `docs`
92
+ ---
93
+
94
+ # توثيق إعدادات Intlayer
95
+
96
+ ## نظرة عامة
97
+
98
+ تسمح لك ملفات إعدادات Intlayer بتخصيص جوانب مختلفة من الإضافة، مثل تدويل التطبيق (i18n)، والبرمجيات الوسيطة (middleware)، وإدارة المحتوى. يوفر هذا المستند وصفاً مفصلاً لكل خاصية في الإعدادات.
99
+
100
+ ---
101
+
102
+ ## جدول المحتويات
103
+
104
+ <TOC/>
105
+
106
+ ---
107
+
108
+ ## دعم ملفات الإعدادات
109
+
110
+ يقبل Intlayer صيغ ملفات الإعدادات التالية: JSON، JS، MJS، و TS:
111
+
112
+ - `intlayer.config.ts`
113
+ - `intlayer.config.js`
114
+ - `intlayer.config.json`
115
+ - `intlayer.config.json5`
116
+ - `intlayer.config.jsonc`
117
+ - `intlayer.config.cjs`
118
+ - `intlayer.config.mjs`
119
+ - `.intlayerrc`
120
+
121
+ ---
122
+
123
+ ## مثال لملف الإعدادات
124
+
125
+ ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
126
+ import { Locales, type IntlayerConfig } from "intlayer";
127
+ import { nextjsRewrite } from "intlayer/routing";
128
+ import { z } from "zod";
129
+
130
+ /**
131
+ * مثال لملف إعدادات Intlayer مع جميع الخيارات المتاحة.
132
+ */
133
+ const config: IntlayerConfig = {
134
+ /**
135
+ * إعدادات التدويل (Internationalization).
136
+ */
137
+ internationalization: {
138
+ /**
139
+ * قائمة اللغات المدعومة في التطبيق.
140
+ * الافتراضي: [Locales.ENGLISH]
141
+ */
142
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
143
+
144
+ /**
145
+ * قائمة اللغات المطلوبة التي يجب تعريفها في كل قاموس.
146
+ * إذا كانت فارغة، فستكون جميع اللغات مطلوبة في وضع `strict`.
147
+ * الافتراضي: []
148
+ */
149
+ requiredLocales: [Locales.ENGLISH],
150
+
151
+ /**
152
+ * مستوى الصرامة للمحتوى المترجم.
153
+ * - "strict": يلقي خطأ إذا كانت اللغة المعلنة مفقودة أو غير معلنة.
154
+ * - "inclusive": يلقي تحذيراً إذا كانت اللغة المعلنة مفقودة.
155
+ * - "loose": يقبل أي لغة موجودة.
156
+ * الافتراضي: "inclusive"
157
+ */
158
+ strictMode: "inclusive",
159
+
160
+ /**
161
+ * اللغة الافتراضية المستخدمة كاحتياطي في حالة عدم العثور على اللغة المطلوبة.
162
+ * الافتراضي: Locales.ENGLISH
163
+ */
164
+ defaultLocale: Locales.ENGLISH,
165
+ },
166
+
167
+ /**
168
+ * الإعدادات التي تتحكم في عمليات القاموس والسلوك عند فقدان المحتوى.
169
+ */
170
+ dictionary: {
171
+ /**
172
+ * يتحكم في طريقة استيراد القواميس.
173
+ * - "static": استيراد ثابت أثناء البناء.
174
+ * - "dynamic": استيراد ديناميكي باستخدام Suspense.
175
+ * - "fetch": جلب ديناميكي عبر Live Sync API.
176
+ * الافتراضي: "static"
177
+ */
178
+ importMode: "static",
179
+
180
+ /**
181
+ * إستراتيجية الملء التلقائي للترجمات المفقودة باستخدام الذكاء الاصطناعي.
182
+ * يمكن أن تكون قيمة منطقية أو نمط مسار لحفظ المحتوى المملوء.
183
+ * الافتراضي: true
184
+ */
185
+ fill: true,
186
+
187
+ /**
188
+ * الموقع الفعلي لملفات القاموس.
189
+ * - "local": مخزنة في نظام الملفات المحلي.
190
+ * - "remote": مخزنة في Intlayer CMS.
191
+ * - "hybrid": مخزنة محلياً وفي Intlayer CMS.
192
+ * - "plugin" (أو أي سلسلة مخصصة): يتم توفيرها بواسطة إضافة أو مصدر مخصص.
193
+ * الافتراضي: "local"
194
+ */
195
+ location: "local",
196
+
197
+ /**
198
+ * ما إذا كان سيتم تحويل المحتوى تلقائياً (مثلMarkdown إلى HTML).
199
+ * الافتراضي: false
200
+ */
201
+ contentAutoTransformation: false,
202
+ },
203
+
204
+ /**
205
+ * إعدادات التوجيه والبرمجيات الوسيطة.
206
+ */
207
+ routing: {
208
+ /**
209
+ * إستراتيجية التوجيه حسب اللغة.
210
+ * - "prefix-no-default": بادئة لجميع اللغات باستثناء الافتراضية (مثلاً: /dashboard، /fr/dashboard).
211
+ * - "prefix-all": بادئة لجميع اللغات (مثلاً: /en/dashboard، /fr/dashboard).
212
+ * - "no-prefix": لا توجد لغة في رابط URL.
213
+ * - "search-params": استخدام ?locale=...
214
+ * الافتراضي: "prefix-no-default"
215
+ */
216
+ mode: "prefix-no-default",
217
+
218
+ /**
219
+ * أين يتم تخزين اللغة التي يختارها المستخدم.
220
+ * الخيارات: 'cookie' أو 'localStorage' أو 'sessionStorage' أو 'header' أو مصفوفة منها.
221
+ * الافتراضي: ['cookie', 'header']
222
+ */
223
+ storage: ["cookie", "header"],
224
+
225
+ /**
226
+ * المسار الأساسي لروابط التطبيق.
227
+ * الافتراضي: ""
228
+ */
229
+ basePath: "",
230
+
231
+ /**
232
+ * قواعد إعادة كتابة رابط URL مخصصة للمسارات في لغات معينة.
233
+ */
234
+ rewrite: nextjsRewrite({
235
+ "/[locale]/about": {
236
+ en: "/[locale]/about",
237
+ fr: "/[locale]/a-propos",
238
+ },
239
+ }),
240
+ },
241
+
242
+ /**
243
+ * إعدادات البحث ومعالجة ملفات المحتوى.
244
+ */
245
+ content: {
246
+ /**
247
+ * امتدادات الملفات لفحص القواميس.
248
+ * الافتراضي: ['.content.ts', '.content.js', '.content.json', إلخ]
249
+ */
250
+ fileExtensions: [".content.ts", ".content.js", ".content.json"],
251
+
252
+ /**
253
+ * المجلدات التي توجد بها ملفات .content.
254
+ * الافتراضي: ["."]
255
+ */
256
+ contentDir: ["src"],
257
+
258
+ /**
259
+ * مجلد كود المصدر.
260
+ * يستخدم لتحسينات البناء وتحويل الكود.
261
+ * الافتراضي: ["."]
262
+ */
263
+ codeDir: ["src"],
264
+
265
+ /**
266
+ * الأنماط المستبعدة من الفحص.
267
+ * الافتراضي: ['node_modules', '.intlayer', إلخ]
268
+ */
269
+ excludedPath: ["node_modules"],
270
+
271
+ /**
272
+ * ما إذا كان سيتم مراقبة التغييرات وإعادة توليد القواميس أثناء التطوير.
273
+ * الافتراضي: true في وضع التطوير
274
+ */
275
+ watch: true,
276
+
277
+ /**
278
+ * أمر لتنسيق ملفات .content المنشأة/المحدثة حديثاً.
279
+ */
280
+ formatCommand: 'npx prettier --write "{{file}}"',
281
+ },
282
+
283
+ /**
284
+ * إعدادات المحرر المرئي.
285
+ */
286
+ editor: {
287
+ /**
288
+ * ما إذا كان المحرر المرئي مفعلاً.
289
+ * الافتراضي: false
290
+ */
291
+ enabled: true,
292
+
293
+ /**
294
+ * رابط تطبيقك للتحقق من المصدر (origin).
295
+ * الافتراضي: ""
296
+ */
297
+ applicationURL: "http://localhost:3000",
298
+
299
+ /**
300
+ * المنفذ لخادم المحرر المحلي.
301
+ * الافتراضي: 8000
302
+ */
303
+ port: 8000,
304
+
305
+ /**
306
+ * الرابط العام للمحرر.
307
+ * الافتراضي: "http://localhost:8000"
308
+ */
309
+ editorURL: "http://localhost:8000",
310
+
311
+ /**
312
+ * رابط Intlayer CMS.
313
+ * الافتراضي: "https://app.intlayer.org"
314
+ */
315
+ cmsURL: "https://app.intlayer.org",
316
+
317
+ /**
318
+ * رابط خادم واجهة برمجة التطبيقات (API) الخلفي.
319
+ * الافتراضي: "https://back.intlayer.org"
320
+ */
321
+ backendURL: "https://back.intlayer.org",
322
+
323
+ /**
324
+ * ما إذا كان سيتم تفعيل مزامنة المحتوى في الوقت الفعلي.
325
+ * الافتراضي: false
326
+ */
327
+ liveSync: true,
328
+ },
329
+
330
+ /**
331
+ * إعدادات الترجمة والتوليد باستخدام الذكاء الاصطناعي.
332
+ */
333
+ ai: {
334
+ /**
335
+ * مزود الذكاء الاصطناعي المستخدم.
336
+ * الخيارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
337
+ * الافتراضي: 'openai'
338
+ */
339
+ provider: "openai",
340
+
341
+ /**
342
+ * النموذج المستخدم من المزود المختار.
343
+ */
344
+ model: "gpt-4o",
345
+
346
+ /**
347
+ * مفتاح واجهة برمجة التطبيقات (API key) للمزود.
348
+ */
349
+ apiKey: process.env.OPENAI_API_KEY,
350
+
351
+ /**
352
+ * السياق العام لتوجيه الذكاء الاصطناعي عند توليد الترجمات.
353
+ */
354
+ applicationContext: "هذا تطبيق لحجز السفر.",
355
+
356
+ /**
357
+ * الرابط الأساسي لواجهة برمجة تطبيقات الذكاء الاصطناعي.
358
+ */
359
+ baseURL: "http://localhost:3000",
360
+
361
+ /**
362
+ * تسلسل البيانات
363
+ *
364
+ * الخيارات:
365
+ * - "json": افتراضي، موثوق؛ يستهلك المزيد من الوحدات (tokens).
366
+ * - "toon": حات سريعة، استهلاك أقل للوحدات، أقل استقراراً من JSON.
367
+ *
368
+ * الافتراضي: "json"
369
+ */
370
+ dataSerialization: "json",
371
+ },
372
+
373
+ /**
374
+ * إعدادات البناء والتحسين.
375
+ */
376
+ build: {
377
+ /**
378
+ * وضع تنفيذ البناء.
379
+ * - "auto": بناء تلقائي أثناء بناء التطبيق.
380
+ * - "manual": يتطلب أمر بناء صريح.
381
+ * الافتراضي: "auto"
382
+ */
383
+ mode: "auto",
384
+
385
+ /**
386
+ * ما إذا كان سيتم تحسين الحزمة الناتجة عن طريق إزالة القواميس غير المستخدمة.
387
+ * الافتراضي: true في الإنتاج
388
+ */
389
+ optimize: true,
390
+
391
+ /**
392
+ * صيغة الإخراج لملفات القاموس المولدة.
393
+ * الافتراضي: ['cjs', 'esm']
394
+ */
395
+ outputFormat: ["cjs", "esm"],
396
+
397
+ /**
398
+ * ما إذا كان ينبغي للبناء التحقق من أنواع TypeScript.
399
+ * الافتراضي: false
400
+ */
401
+ checkTypes: false,
402
+ },
403
+
404
+ /**
405
+ * إعدادات السجل (Logger).
406
+ */
407
+ log: {
408
+ /**
409
+ * مستوى السجل.
410
+ * - "default": تسجيل قياسي.
411
+ * - "verbose": تسجيل تصحيح مفصل.
412
+ * - "disabled": لا يوجد تسجيل.
413
+ * الافتراضي: "default"
414
+ */
415
+ mode: "default",
416
+
417
+ /**
418
+ * بادئة لجميع الرسائل في السجل.
419
+ * الافتراضي: "[intlayer]"
420
+ */
421
+ prefix: "[intlayer]",
422
+ },
423
+
424
+ /**
425
+ * إعدادات النظام (حالات الاستخدام المتقدمة)
426
+ */
427
+ system: {
428
+ /**
429
+ * المجلد لتخزين القواميس المترجمة.
430
+ */
431
+ dictionariesDir: ".intlayer/dictionary",
432
+
433
+ /**
434
+ * المجلد لتوسيع الوحدات (module augmentation).
435
+ */
436
+ moduleAugmentationDir: ".intlayer/types",
437
+
438
+ /**
439
+ * المجلد لتخزين القواميس غير المدمجة.
440
+ */
441
+ unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
442
+
443
+ /**
444
+ * المجلد لتخزين أنواع القواميس.
445
+ */
446
+ typesDir: ".intlayer/types",
447
+
448
+ /**
449
+ * المجلد حيث يتم الاحتفاظ بملفات التطبيق الرئيسية.
450
+ */
451
+ mainDir: ".intlayer/main",
452
+
453
+ /**
454
+ * المجلد حيث يتم الاحتفاظ بملفات الإعدادات المحولة برمجياً.
455
+ */
456
+ configDir: ".intlayer/config",
457
+
458
+ /**
459
+ * المجلد لملفات التخزين المؤقت (cache).
460
+ */
461
+ cacheDir: ".intlayer/cache",
462
+ },
463
+
464
+ /**
465
+ * إعدادات المترجم (حالات الاستخدام المتقدمة)
466
+ */
467
+ compiler: {
468
+ /**
469
+ * ما إذا كان سيتم تفعيل المترجم.
470
+ *
471
+ * - false: تعطيل المترجم.
472
+ * - true: تفعيل المترجم.
473
+ * - "build-only": تخطي المترجم أثناء التطوير لبدء أسرع.
474
+ *
475
+ * الافتراضي: false
476
+ */
477
+ enabled: true,
478
+
479
+ /**
480
+ * يحدد المسار لملفات الإخراج. يستبدل `outputDir`.
481
+ *
482
+ * - يتم حل المسارات التي تبدأ بـ `./` بالنسبة لمجلد المكون.
483
+ * - يتم حل المسارات التي تبدأ بـ `/` بالنسبة لمجلد المشروع الأساسي (`baseDir`).
484
+ *
485
+ * - وجود متغير `{{locale}}` في المسار يفعل توليد قواميس منفصلة لكل لغة.
486
+ *
487
+ * مثال:
488
+ * ```ts
489
+ * {
490
+ * // إنشاء ملفات .content.ts متعددة اللغات بجانب المكون
491
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
492
+ *
493
+ * // output: './{{fileName}}{{extension}}', // مكافئ عبر سلسلة قالب
494
+ * }
495
+ * ```
496
+ *
497
+ * ```ts
498
+ * {
499
+ * // إنشاء ملفات JSON مركزية حسب اللغة في مجلد المشروع الأساسي
500
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
501
+ *
502
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // مكافئ عبر سلسلة قالب
503
+ * }
504
+ * ```
505
+ *
506
+ * قائمة المتغيرات:
507
+ * - `fileName`: اسم الملف.
508
+ * - `key`: مفتاح المحتوى.
509
+ * - `locale`: لغة المحتوى.
510
+ * - `extension`: امتداد الملف.
511
+ * - `componentFileName`: اسم ملف المكون.
512
+ * - `componentExtension`: امتداد ملف المكون.
513
+ * - `format`: صيغة القاموس.
514
+ * - `componentFormat`: صيغة قاموس المكون.
515
+ * - `componentDirPath`: المسار إلى مجلد المكون.
516
+ */
517
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
518
+
519
+ /**
520
+ * ما إذا كان سيتم حفظ المكونات بعد تحويلها.
521
+ * بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة لتحويل التطبيق ثم إزالته.
522
+ */
523
+ saveComponents: false,
524
+
525
+ /**
526
+ * وضع المحتوى فقط في الملف المولد. مفيد لمخرجات بصيغة i18next أو ICU MessageFormat JSON حسب اللغة.
527
+ */
528
+ noMetadata: false,
529
+
530
+ /**
531
+ * بادئة لمفتاح القاموس
532
+ */
533
+ dictionaryKeyPrefix: "", // إضافة بادئة اختيارية لمفاتيح القواميس المستخرجة
534
+ },
535
+
536
+ /**
537
+ * مخططات مخصصة للتحقق من صحة محتوى القاموس.
538
+ */
539
+ schemas: {
540
+ "my-schema": z.object({
541
+ title: z.string(),
542
+ }),
543
+ },
544
+
545
+ /**
546
+ * إعدادات الإضافات.
547
+ */
548
+ plugins: [],
549
+ };
550
+
551
+ export default config;
552
+ ````
553
+
554
+ ---
555
+
556
+ ## مرجع دليل الإعدادات
557
+
558
+ يوضح ما يلي معالم الإعدادات المختلفة المتاحة في Intlayer.
559
+
560
+ ---
561
+
562
+ ### إعدادات التدويل (Internationalization)
563
+
564
+ تحدد الإعدادات المتعلقة بتدويل التطبيق، بما في ذلك اللغات المتاحة واللغة الافتراضية.
565
+
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
+
573
+ ---
574
+
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` &#124; <br/> `undefined` | `undefined` | | يجب الحفاظ على سريته؛ استخدم متغيرات البيئة. |
588
+ | `clientSecret` | يسمح لحزم intlayer بالتحقق من الهوية على الخادم الخلفي عبر oAuth2. انتقل إلى [intlayer.org/project](https://app.intlayer.org/project) للحصول على رمز الوصول الخاص بك. | `string` &#124; <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؛ يمكن تغييره ليشير إلى خادم مزامنة حية بعيد. |
593
+
594
+ ---
595
+
596
+ ### إعدادات التوجيه (Routing)
597
+
598
+ الإعدادات التي تتحكم في سلوك التوجيه، بما في ذلك بنية رابط URL، وتخزين اللغة، وإدارة البرمجيات الوسيطة.
599
+
600
+ | الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
601
+ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
602
+ | `mode` | وضع توجيه رابط URL لإدارة اللغات. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <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` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <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). |
606
+
607
+ **مثال لـ `rewrite`**:
608
+
609
+ ```typescript
610
+ routing: {
611
+ mode: "prefix-no-default", // إستراتيجية احتياطية
612
+ rewrite: nextjsRewrite({
613
+ "/about": {
614
+ en: "/about",
615
+ fr: "/a-propos",
616
+ },
617
+ "/product/[slug]": {
618
+ en: "/product/[slug]",
619
+ fr: "/produit/[slug]",
620
+ },
621
+ "/blog/[category]/[id]": {
622
+ en: "/blog/[category]/[id]",
623
+ fr: "/journal/[category]/[id]",
624
+ },
625
+ }),
626
+ }
627
+ ```
628
+
629
+ #### معالم التخزين (Storage)
630
+
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 — من جانب الخادم فقط. |
637
+
638
+ #### سمات الكوكيز (Cookies Attributes)
639
+
640
+ عند استخدام التخزين في الكوكيز، يمكن تعيين سمات إضافية:
641
+
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'` &#124; <br/> `'lax'` &#124; <br/> `'none'` |
650
+ | `expires` | تاريخ الانتهاء أو عدد الأيام. الافتراضي: `undefined` | `Date` &#124; <br/> `number` |
651
+
652
+ #### سمات التخزين (Storage Attributes)
653
+
654
+ عند استخدام localStorage أو sessionStorage:
655
+
656
+ | الحقل | الوصف | النوع |
657
+ | ------ | ----------------------------------------------- | ------------------------------------------------ |
658
+ | `type` | نوع التخزين. | `'localStorage'` &#124; <br/> `'sessionStorage'` |
659
+ | `name` | اسم المفتاح في التخزين. الافتراضي: `'INTLAYER_LOCALE'` | `string` |
660
+
661
+ #### أمثلة للإعدادات
662
+
663
+ فيما يلي بعض الأمثلة الشائعة للإعدادات لهيكل التوجيه v7 الجديد:
664
+
665
+ **الإعدادات الأساسية (الافتراضية)**:
666
+
667
+ ```typescript
668
+ import { Locales, type IntlayerConfig } from "intlayer";
669
+ // intlayer.config.ts
670
+ const config: IntlayerConfig = {
671
+ internationalization: {
672
+ locales: ["en", "fr", "es"],
673
+ defaultLocale: "en",
674
+ },
675
+ routing: {
676
+ mode: "prefix-no-default",
677
+ storage: "localStorage",
678
+ basePath: "",
679
+ },
680
+ };
681
+
682
+ export default config;
683
+ ```
684
+
685
+ **الإعدادات مع الامتثال لـ GDPR**:
686
+
687
+ ```typescript
688
+ import { Locales, type IntlayerConfig } from "intlayer";
689
+ // intlayer.config.ts
690
+ const config: IntlayerConfig = {
691
+ internationalization: {
692
+ locales: ["en", "fr", "es"],
693
+ defaultLocale: "en",
694
+ },
695
+ routing: {
696
+ mode: "prefix-no-default",
697
+ storage: [
698
+ {
699
+ type: "localStorage",
700
+ name: "user-locale",
701
+ },
702
+ {
703
+ type: "cookie",
704
+ name: "user-locale",
705
+ secure: true,
706
+ sameSite: "strict",
707
+ httpOnly: false,
708
+ },
709
+ ],
710
+ basePath: "",
711
+ },
712
+ };
713
+
714
+ export default config;
715
+ ```
716
+
717
+ **وضع معاملات البحث (Search Params)**:
718
+
719
+ ```typescript
720
+ import { Locales, type IntlayerConfig } from "intlayer";
721
+ // intlayer.config.ts
722
+ const config: IntlayerConfig = {
723
+ internationalization: {
724
+ locales: ["en", "fr", "es"],
725
+ defaultLocale: "en",
726
+ },
727
+ routing: {
728
+ mode: "search-params",
729
+ storage: "localStorage",
730
+ basePath: "",
731
+ },
732
+ };
733
+
734
+ export default config;
735
+ ```
736
+
737
+ **وضع بدون بادئة مع تخزين مخصص**:
738
+
739
+ ```typescript
740
+ import { Locales, type IntlayerConfig } from "intlayer";
741
+ // intlayer.config.ts
742
+ const config: IntlayerConfig = {
743
+ internationalization: {
744
+ locales: ["en", "fr", "es"],
745
+ defaultLocale: "en",
746
+ },
747
+ routing: {
748
+ mode: "no-prefix",
749
+ storage: {
750
+ type: "sessionStorage",
751
+ name: "app-locale",
752
+ },
753
+ basePath: "/my-app",
754
+ },
755
+ };
756
+
757
+ export default config;
758
+ ```
759
+
760
+ **إعادة كتابة روابط URL مخصصة مع مسارات ديناميكية**:
761
+
762
+ ```typescript
763
+ // intlayer.config.ts
764
+ import { nextjsRewrite } from "intlayer/routing";
765
+
766
+ const config: IntlayerConfig = {
767
+ internationalization: {
768
+ locales: ["en", "fr"],
769
+ defaultLocale: "en",
770
+ },
771
+ routing: {
772
+ mode: "prefix-no-default", // احتياطي للمسارات غير المعاد كتابتها
773
+ storage: "cookie",
774
+ rewrite: nextjsRewrite({
775
+ "/about": {
776
+ en: "/about",
777
+ fr: "/a-propos",
778
+ },
779
+ "/product/[slug]": {
780
+ en: "/product/[slug]",
781
+ fr: "/produit/[slug]",
782
+ },
783
+ "/blog/[category]/[id]": {
784
+ en: "/blog/[category]/[id]",
785
+ fr: "/journal/[category]/[id]",
786
+ },
787
+ }),
788
+ },
789
+ };
790
+
791
+ export default config;
792
+ ```
793
+
794
+ ---
795
+
796
+ ### إعدادات المحتوى (Content)
797
+
798
+ الإعدادات المتعلقة بكيفية إدارة المحتوى في التطبيق، بما في ذلك أسماء المجلدات، وامتدادات الملفات، والإعدادات المشتقة.
799
+
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). |
808
+
809
+ ---
810
+
811
+ ### إعدادات القاموس (Dictionary)
812
+
813
+ المعالم التي تتحكم في عمليات القاموس، بما في ذلك سلوك الملء التلقائي وتوليد المحتوى.
814
+
815
+ | الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
816
+ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
817
+ | `fill` | يتحكم في كيفية توليد ملفات مخرجات الملء التلقائي (ترجمة الذكاء الاصطناعي). | `boolean` &#124; <br/> `FilePathPattern` &#124; <br/> `Partial<Record<Locale, boolean &#124; 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` &#124; <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'` &#124; <br/> `'remote'` &#124; <br/> `'hybrid'` &#124; <br/> `'plugin'` &#124; <br/> `string` | `'local'` | `'hybrid'` | • `'local'`: إدارة محلية فقط. <br/> • `'remote'`: إدارة عن بعد فقط (CMS). <br/> • `'hybrid'`: إدارة محلية وعن بعد معاً. <br/> • `'plugin'` أو سلسلة مخصصة: إدارة بواسطة إضافة أو مصدر مخصص. |
822
+ | `importMode` | يتحكم في طريقة استيراد القواميس. | `'static'` &#124; <br/> `'dynamic'` &#124; <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/> • لا تقم بتحريره محلياً. |
829
+
830
+ **مثال لـ `fill`**:
831
+
832
+ ```ts
833
+ dictionary: {
834
+ fill: {
835
+ en: "/locales/en/{{key}}.content.json",
836
+ fr: ({ key }) => `/locales/fr/${key}.content.json`,
837
+ es: false,
838
+ },
839
+ };
840
+ ```
841
+
842
+ ---
843
+
844
+ ### إعدادات السجل (Log)
845
+
846
+ المعالم لتخصيص مخرجات سجل Intlayer.
847
+
848
+ | الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
849
+ | -------- | ----------------------------------- | -------------------------------------------------------------- | ----------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------- |
850
+ | `mode` | يشير إلى وضع السجل. | `'default'` &#124; <br/> `'verbose'` &#124; <br/> `'disabled'` | `'default'` | `'verbose'` | • `'verbose'`: يسجل المزيد من المعلومات لتصحيح الأخطاء. <br/> • `'disabled'`: يوقف السجل تماماً. |
851
+ | `prefix` | بادئة لجميع الرسائل في السجل. | `string` | `'[intlayer] '` | `'[my prefix] '` | |
852
+
853
+ ---
854
+
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'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <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'` &#124; <br/> `'toon'` | `undefined`| `'toon'` | • `'json'`: افتراضي، موثوق؛ يستهلك المزيد من الوحدات. <br/> • `'toon'`: وحدات أقل، أقل استقراراً. <br/> • يتم تمرير المعاملات الإضافية إلى النموذج كسياق (جهد التفكير إلخ). |
892
+
893
+ ---
894
+
895
+ ### إعدادات البناء (Build)
896
+
897
+ المعالم التي تتحكم في كيفية قيام Intlayer بتحسين وترجمة تدويل تطبيقك.
898
+
899
+ يتم تطبيق خيارات البناء على إضافات `@intlayer/babel` و `@intlayer/swc`.
900
+
901
+ > في وضع التطوير، يستخدم Intlayer استيراداً ثابتاً للقواميس لتبسيط عملية التطوير.
902
+
903
+ > أثناء التحسين، سيقوم Intlayer باستبدال استدعاءات القواميس لتحسين تقسيم الكود (chunking) بحيث تستورد الحزمة الناتجة القواميس المستخدمة فعلياً فقط.
904
+
905
+ | الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
906
+ | ----------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
907
+ | `mode` | يتحكم في وضع البناء. | `'auto'` &#124; <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' &#124; '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. |
912
+
913
+ ---
914
+
915
+ ### إعدادات النظام (System)
916
+
917
+ هذه الإعدادات مخصصة لحالات الاستخدام المتقدمة والإعدادات الداخلية لـ Intlayer.
918
+
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'` | | |
928
+
929
+ ---
930
+
931
+ ### إعدادات المترجم (Compiler)
932
+
933
+ الإعدادات التي تتحكم في مترجم Intlayer، الذي يستخرج القواميس مباشرة من مكوناتك.
934
+
935
+ | الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
936
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
937
+ | `enabled` | يشير إلى ما إذا كان ينبغي تفعيل المترجم لاستخراج القواميس. | `boolean` &#124; <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` &#124; <br/> `FilePathPattern` &#124; <br/> `Partial<Record<Locale, boolean &#124; 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` | `''` | | إضافة بادئة اختيارية لمفاتيح القواميس المستخرجة |
943
+
944
+ ---
945
+
946
+ ### مخططات مخصصة (Custom Schemas)
947
+
948
+ | الحقل | الوصف | النوع |
949
+ | --------- | ------------------------------------------------------------------------------ | --------------------------- |
950
+ | `schemas` | يسمح لك بتعريف مخططات Zod للتحقق من صحة هيكل قواميسك. | `Record<string, ZodSchema>` |
951
+
952
+ ---
953
+
954
+ ### الإضافات (Plugins)
955
+
956
+ | الحقل | الوصف | النوع |
957
+ | --------- | ----------------------------------------- | ------------------ |
958
+ | `plugins` | قائمة إضافات Intlayer لإدراجها. | `IntlayerPlugin[]` |