@intlayer/docs 8.4.5 → 8.4.6

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.
Files changed (48) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +20 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +20 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +1 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/configuration.md +520 -722
  8. package/docs/ar/intlayer_with_storybook.md +521 -0
  9. package/docs/bn/configuration.md +922 -0
  10. package/docs/bn/intlayer_with_hono.md +428 -0
  11. package/docs/de/configuration.md +369 -743
  12. package/docs/de/intlayer_with_storybook.md +521 -0
  13. package/docs/en/configuration.md +181 -507
  14. package/docs/en/intlayer_with_storybook.md +521 -0
  15. package/docs/en-GB/configuration.md +456 -657
  16. package/docs/en-GB/intlayer_with_storybook.md +521 -0
  17. package/docs/es/configuration.md +379 -754
  18. package/docs/es/intlayer_with_storybook.md +521 -0
  19. package/docs/fr/configuration.md +376 -757
  20. package/docs/fr/intlayer_with_storybook.md +521 -0
  21. package/docs/hi/configuration.md +532 -728
  22. package/docs/hi/intlayer_with_storybook.md +521 -0
  23. package/docs/id/configuration.md +371 -684
  24. package/docs/id/intlayer_with_storybook.md +521 -0
  25. package/docs/it/configuration.md +397 -775
  26. package/docs/it/intlayer_with_storybook.md +521 -0
  27. package/docs/ja/configuration.md +525 -724
  28. package/docs/ja/intlayer_with_storybook.md +521 -0
  29. package/docs/ko/configuration.md +525 -724
  30. package/docs/ko/intlayer_with_storybook.md +521 -0
  31. package/docs/pl/configuration.md +430 -734
  32. package/docs/pl/intlayer_with_storybook.md +521 -0
  33. package/docs/pt/configuration.md +375 -746
  34. package/docs/pt/intlayer_with_storybook.md +521 -0
  35. package/docs/ru/configuration.md +532 -701
  36. package/docs/ru/intlayer_with_storybook.md +521 -0
  37. package/docs/tr/configuration.md +527 -719
  38. package/docs/tr/intlayer_with_storybook.md +521 -0
  39. package/docs/uk/configuration.md +425 -744
  40. package/docs/uk/intlayer_with_storybook.md +521 -0
  41. package/docs/ur/configuration.md +922 -0
  42. package/docs/ur/intlayer_with_hono.md +428 -0
  43. package/docs/vi/configuration.md +412 -753
  44. package/docs/vi/intlayer_with_storybook.md +521 -0
  45. package/docs/zh/configuration.md +521 -714
  46. package/docs/zh/intlayer_with_storybook.md +521 -0
  47. package/package.json +6 -6
  48. package/src/generated/docs.entry.ts +20 -0
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-03-12
4
- title: التهيئة
5
- description: تعلّم كيفية تهيئة Intlayer لتطبيقك. فهم الإعدادات والخيارات المختلفة المتاحة لتخصيص Intlayer حسب احتياجاتك.
3
+ updatedAt: 2026-03-20
4
+ title: التكوين (Configuration)
5
+ description: تعرف على كيفية تكوين Intlayer لتطبيقك. افهم الإعدادات والخيارات المتنوعة المتاحة لتخصيص Intlayer وفقًا لاحتياجاتك.
6
6
  keywords:
7
- - التهيئة
7
+ - التكوين
8
8
  - الإعدادات
9
9
  - التخصيص
10
10
  - Intlayer
@@ -14,27 +14,39 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 8.4.0
18
+ date: 2026-03-20
19
+ changes: تمت إضافة تدوين الكائن لكل لغة لـ 'compiler.output' و 'dictionary.fill'
17
20
  - version: 8.3.0
18
21
  date: 2026-03-11
19
22
  changes: نقل 'baseDir' من تكوين 'content' إلى تكوين 'system'
20
23
  - version: 8.2.0
21
24
  date: 2026-03-09
22
- changes: تحديث خيارات المترجم، وإضافة دعم لـ 'output' و 'noMetadata'
25
+ changes: تحديث خيارات المترجم (compiler)، وإضافة دعم لـ 'output' و 'noMetadata'
23
26
  - version: 8.1.7
24
27
  date: 2026-02-25
25
28
  changes: تحديث خيارات المترجم
29
+ - version: 8.1.5
30
+ date: 2026-02-23
31
+ changes: إضافة خيار المترجم 'build-only' وبادئة القاموس
26
32
  - version: 8.0.6
27
33
  date: 2026-02-12
28
- changes: إضافة دعم لمقدمي Open Router و Alibaba و Amazon و Google Vertex Bedrock و Fireworks و Groq و Hugging Face و Together.ai
34
+ changes: إضافة دعم لمزودي Open Router و Alibaba و Amazon و Google Vertex Bedrock و Fireworks و Groq و Hugging Face و Together.ai
29
35
  - version: 8.0.5
30
36
  date: 2026-02-06
31
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`.
32
44
  - version: 8.0.0
33
45
  date: 2026-01-22
34
- changes: نقل تكوين بناء importMode إلى تكوين القاموس.
46
+ changes: إضافة خيار `rewrite` لتكوين التوجيه
35
47
  - version: 8.0.0
36
48
  date: 2026-01-18
37
- changes: فصل تكوين النظام عن تكوين المحتوى. نقل المسارات الداخلية إلى خاصية `system`. إضافة `codeDir` لفصل ملفات المحتوى عن تحويل الكود.
49
+ changes: فصل تكوين النظام عن تكوين المحتوى. نقل المسارات الداخلية إلى خاصية `system`. إضافة `codeDir` لفصل ملفات المحتوى وتحويل الكود.
38
50
  - version: 8.0.0
39
51
  date: 2026-01-18
40
52
  changes: إضافة خيارات القاموس `location` و `schema`
@@ -44,6 +56,24 @@ history:
44
56
  - version: 7.5.0
45
57
  date: 2025-12-17
46
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`
47
77
  - version: 6.0.0
48
78
  date: 2025-09-16
49
79
  changes: إضافة وضع الاستيراد `live`
@@ -55,17 +85,17 @@ history:
55
85
  changes: استبدال `activateDynamicImport` بخيار `importMode`
56
86
  - version: 5.6.0
57
87
  date: 2025-07-13
58
- changes: تغيير الدليل الافتراضي للمحتوى من `['src']` إلى `['.']`
88
+ changes: تغيير `contentDir` الافتراضي من `['src']` إلى `['.']`
59
89
  - version: 5.5.11
60
90
  date: 2025-06-29
61
91
  changes: إضافة أوامر `docs`
62
92
  ---
63
93
 
64
- # وثائق تهيئة Intlayer
94
+ # توثيق تكوين Intlayer
65
95
 
66
96
  ## نظرة عامة
67
97
 
68
- تتيح ملفات تهيئة Intlayer تخصيص جوانب مختلفة من الإضافة، مثل التدويل، والوسائط الوسيطة، والتعامل مع المحتوى. يوفر هذا المستند وصفًا تفصيليًا لكل خاصية في التهيئة.
98
+ تسمح لك ملفات تكوين Intlayer بتخصيص جوانب مختلفة من البرنامج المساعد، مثل التدويل (internationalization)، والبرامج الوسيطة (middleware)، ومعالجة المحتوى. يوفر هذا التوثيق وصفًا تفصيليًا لكل خاصية في التكوين.
69
99
 
70
100
  ---
71
101
 
@@ -75,9 +105,9 @@ history:
75
105
 
76
106
  ---
77
107
 
78
- ## دعم ملفات التهيئة
108
+ ## تنسيقات ملفات التكوين المدعومة
79
109
 
80
- يدعم Intlayer تنسيقات ملفات التهيئة JSON و JS و MJS و TS:
110
+ يقبل Intlayer تنسيقات ملفات التكوين JSON و JS و MJS و TS:
81
111
 
82
112
  - `intlayer.config.ts`
83
113
  - `intlayer.config.js`
@@ -90,7 +120,7 @@ history:
90
120
 
91
121
  ---
92
122
 
93
- ## مثال على ملف التهيئة
123
+ ## مثال على ملف التكوين
94
124
 
95
125
  ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
96
126
  import { Locales, type IntlayerConfig } from "intlayer";
@@ -98,108 +128,108 @@ import { nextjsRewrite } from "intlayer/routing";
98
128
  import { z } from "zod";
99
129
 
100
130
  /**
101
- * Example Intlayer configuration file showing all available options.
131
+ * مثال على ملف تكوين Intlayer يعرض جميع الخيارات المتاحة.
102
132
  */
103
133
  const config: IntlayerConfig = {
104
134
  /**
105
- * Configuration for internationalization settings.
135
+ * تكوين إعدادات التدويل.
106
136
  */
107
137
  internationalization: {
108
138
  /**
109
- * List of supported locales in the application.
110
- * Default: [Locales.ENGLISH]
139
+ * قائمة اللغات (locales) المدعومة في التطبيق.
140
+ * الافتراضي: [Locales.ENGLISH]
111
141
  */
112
142
  locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
113
143
 
114
144
  /**
115
- * List of required locales that must be defined in every dictionary.
116
- * If empty, all locales are required in `strict` mode.
117
- * Default: []
145
+ * قائمة اللغات الإلزامية التي يجب تعريفها في كل قاموس.
146
+ * إذا كانت فارغة، فستكون جميع اللغات إلزامية في وضع `strict`.
147
+ * الافتراضي: []
118
148
  */
119
149
  requiredLocales: [Locales.ENGLISH],
120
150
 
121
151
  /**
122
- * Strictness level for internationalized content.
123
- * - "strict": Errors if any declared locale is missing or undeclared.
124
- * - "inclusive": Warnings if a declared locale is missing.
125
- * - "loose": Accepts any existing locale.
126
- * Default: "inclusive"
152
+ * مستوى الصرامة للمحتوى المدوّل.
153
+ * - "strict": خطأ إذا كانت أي لغة معلنة مفقودة أو غير معلنة.
154
+ * - "inclusive": تحذير إذا كانت اللغة المعلنة مفقودة.
155
+ * - "loose": قبول أي لغة موجودة.
156
+ * الافتراضي: "inclusive"
127
157
  */
128
158
  strictMode: "inclusive",
129
159
 
130
160
  /**
131
- * Default locale used as a fallback if the requested locale is not found.
132
- * Default: Locales.ENGLISH
161
+ * اللغة الافتراضية المستخدمة كبديل في حالة عدم العثور على اللغة المطلوبة.
162
+ * الافتراضي: Locales.ENGLISH
133
163
  */
134
164
  defaultLocale: Locales.ENGLISH,
135
165
  },
136
166
 
137
167
  /**
138
- * Settings that control dictionary operations and fallback behavior.
168
+ * الإعدادات التي تتحكم في عمليات القاموس وسلوك البدائل.
139
169
  */
140
170
  dictionary: {
141
171
  /**
142
- * Controls how dictionaries are imported.
143
- * - "static": Statically imported at build time.
144
- * - "dynamic": Dynamically imported using Suspense.
145
- * - "fetch": Fetched dynamically via the live sync API.
146
- * Default: "static"
172
+ * يتحكم في كيفية استيراد القواميس.
173
+ * - "static": يتم استيراده بشكل ثابت في وقت البناء.
174
+ * - "dynamic": يتم استيراده بشكل ديناميكي باستخدام Suspense.
175
+ * - "fetch": يتم جلبه ديناميكيًا عبر واجهة برمجة تطبيقات Live Sync.
176
+ * الافتراضي: "static"
147
177
  */
148
178
  importMode: "static",
149
179
 
150
180
  /**
151
- * Strategy for auto-filling missing translations using AI.
152
- * Can be a boolean or a path pattern to store filled content.
153
- * Default: true
181
+ * استراتيجية ملء الترجمات المفقودة تلقائيًا باستخدام الذكاء الاصطناعي.
182
+ * يمكن أن تكون قيمة منطقية أو نمط مسار لحفظ المحتوى المملوء.
183
+ * الافتراضي: true
154
184
  */
155
185
  fill: true,
156
186
 
157
187
  /**
158
- * Physical location of the dictionary files.
159
- * - "local": Stored in the local filesystem.
160
- * - "remote": Stored in the Intlayer CMS.
161
- * - "hybrid": Stored in the local filesystem and the Intlayer CMS.
162
- * - "plugin" (or any custom string): Provided by a plugin or a custom source.
163
- * Default: "local"
188
+ * الموقع الفعلي لملفات القاموس.
189
+ * - "local": مخزن في نظام الملفات المحلي.
190
+ * - "remote": مخزن في Intlayer CMS.
191
+ * - "hybrid": مخزن محليًا وفي Intlayer CMS.
192
+ * - "plugin" (أو أي سلسلة مخصصة): يتم توفيره بواسطة مكون إضافي أو مصدر مخصص.
193
+ * الافتراضي: "local"
164
194
  */
165
195
  location: "local",
166
196
 
167
197
  /**
168
- * Whether to automatically transform content (e.g., Markdown to HTML).
169
- * Default: false
198
+ * ما إذا كان يجب تحويل المحتوى تلقائيًا (مثل Markdown إلى HTML).
199
+ * الافتراضي: false
170
200
  */
171
201
  contentAutoTransformation: false,
172
202
  },
173
203
 
174
204
  /**
175
- * Routing and middleware configuration.
205
+ * تكوين التوجيه والبرامج الوسيطة.
176
206
  */
177
207
  routing: {
178
208
  /**
179
- * Locale routing strategy.
180
- * - "prefix-no-default": Prefix all except the default locale (e.g., /dashboard, /fr/dashboard).
181
- * - "prefix-all": Prefix all locales (e.g., /en/dashboard, /fr/dashboard).
182
- * - "no-prefix": No locale in the URL.
183
- * - "search-params": Use ?locale=...
184
- * Default: "prefix-no-default"
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"
185
215
  */
186
216
  mode: "prefix-no-default",
187
217
 
188
218
  /**
189
- * Where to store the user's selected locale.
190
- * Options: 'cookie', 'localStorage', 'sessionStorage', 'header', or an array of these.
191
- * Default: ['cookie', 'header']
219
+ * مكان تخزين اللغة المختارة من قبل المستخدم.
220
+ * الخيارات: 'cookie' أو 'localStorage' أو 'sessionStorage' أو 'header' أو مصفوفة منها.
221
+ * الافتراضي: ['cookie', 'header']
192
222
  */
193
223
  storage: ["cookie", "header"],
194
224
 
195
225
  /**
196
- * Base path for the application URLs.
197
- * Default: ""
226
+ * المسار الأساسي لعناوين URL للتطبيق.
227
+ * الافتراضي: ""
198
228
  */
199
229
  basePath: "",
200
230
 
201
231
  /**
202
- * Custom URL rewriting rules for locale-specific paths.
232
+ * قواعد إعادة كتابة URL مخصصة لمسارات محددة لكل لغة.
203
233
  */
204
234
  rewrite: nextjsRewrite({
205
235
  "/[locale]/about": {
@@ -210,130 +240,130 @@ const config: IntlayerConfig = {
210
240
  },
211
241
 
212
242
  /**
213
- * Settings for finding and processing content files.
243
+ * الإعدادات المتعلقة بالبحث عن ملفات المحتوى ومعالجتها.
214
244
  */
215
245
  content: {
216
246
  /**
217
- * File extensions to scan for dictionaries.
218
- * Default: ['.content.ts', '.content.js', '.content.json', etc.]
247
+ * امتدادات الملفات لمسح القواميس.
248
+ * الافتراضي: ['.content.ts', '.content.js', '.content.json' وغيرها]
219
249
  */
220
250
  fileExtensions: [".content.ts", ".content.js", ".content.json"],
221
251
 
222
252
  /**
223
- * Directories where .content files are located.
224
- * Default: ["."]
253
+ * المجلدات التي توجد بها ملفات .content.
254
+ * الافتراضي: ["."]
225
255
  */
226
256
  contentDir: ["src"],
227
257
 
228
258
  /**
229
- * Directories where source code is located.
230
- * Used for build optimization and code transformation.
231
- * Default: ["."]
259
+ * مكان وجود الكود المصدري.
260
+ * يستخدم لتحسين البناء وتحويل الكود.
261
+ * الافتراضي: ["."]
232
262
  */
233
263
  codeDir: ["src"],
234
264
 
235
265
  /**
236
- * Patterns to exclude from scanning.
237
- * Default: ['node_modules', '.intlayer', etc.]
266
+ * الأنماط المستبعدة من المسح.
267
+ * الافتراضي: ['node_modules', '.intlayer' وغيرها]
238
268
  */
239
269
  excludedPath: ["node_modules"],
240
270
 
241
271
  /**
242
- * Whether to watch for changes and rebuild dictionaries in development.
243
- * Default: true in development
272
+ * ما إذا كان يجب مراقبة التغييرات وإعادة بناء القواميس أثناء التطوير.
273
+ * الافتراضي: true في وضع التطوير
244
274
  */
245
275
  watch: true,
246
276
 
247
277
  /**
248
- * Command to format newly created / updated .content files.
278
+ * الأمر المستخدم لتنسيق ملفات .content المنشأة حديثًا / المحدثة.
249
279
  */
250
280
  formatCommand: 'npx prettier --write "{{file}}"',
251
281
  },
252
282
 
253
283
  /**
254
- * Visual Editor configuration.
284
+ * تكوين المحرر المرئي (Visual Editor).
255
285
  */
256
286
  editor: {
257
287
  /**
258
- * Whether the visual editor is enabled.
259
- * Default: false
288
+ * ما إذا كان المحرر المرئي ممكناً.
289
+ * الافتراضي: false
260
290
  */
261
291
  enabled: true,
262
292
 
263
293
  /**
264
- * URL of your application for origin validation.
265
- * Default: ""
294
+ * عنوان URL لتطبيقك للتحقق من المصدر (origin validation).
295
+ * الافتراضي: ""
266
296
  */
267
297
  applicationURL: "http://localhost:3000",
268
298
 
269
299
  /**
270
- * Port for the local editor server.
271
- * Default: 8000
300
+ * منفذ خادم المحرر المحلي.
301
+ * الافتراضي: 8000
272
302
  */
273
303
  port: 8000,
274
304
 
275
305
  /**
276
- * Public URL for the editor.
277
- * Default: "http://localhost:8000"
306
+ * عنوان URL العام للمحرر.
307
+ * الافتراضي: "http://localhost:8000"
278
308
  */
279
309
  editorURL: "http://localhost:8000",
280
310
 
281
311
  /**
282
- * Intlayer CMS URL.
283
- * Default: "https://app.intlayer.org"
312
+ * عنوان URL لـ Intlayer CMS.
313
+ * الافتراضي: "https://app.intlayer.org"
284
314
  */
285
315
  cmsURL: "https://app.intlayer.org",
286
316
 
287
317
  /**
288
- * Backend API URL.
289
- * Default: "https://back.intlayer.org"
318
+ * عنوان URL لواجهة برمجة تطبيقات الخلفية (Backend API).
319
+ * الافتراضي: "https://back.intlayer.org"
290
320
  */
291
321
  backendURL: "https://back.intlayer.org",
292
322
 
293
323
  /**
294
- * Whether to enable real-time content synchronization.
295
- * Default: false
324
+ * ما إذا كان يجب تمكين مزامنة المحتوى في الوقت الفعلي.
325
+ * الافتراضي: false
296
326
  */
297
327
  liveSync: true,
298
328
  },
299
329
 
300
330
  /**
301
- * AI-powered translation and generation settings.
331
+ * إعدادات الترجمة والبناء القائم على الذكاء الاصطناعي.
302
332
  */
303
333
  ai: {
304
334
  /**
305
- * AI provider to use.
306
- * Options: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
307
- * Default: 'openai'
335
+ * مزود الذكاء الاصطناعي المراد استخدامه.
336
+ * الخيارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
337
+ * الافتراضي: 'openai'
308
338
  */
309
339
  provider: "openai",
310
340
 
311
341
  /**
312
- * Model to use from the selected provider.
342
+ * نموذج المزود المختار المراد استخدامه.
313
343
  */
314
344
  model: "gpt-4o",
315
345
 
316
346
  /**
317
- * Provider API key.
347
+ * مفتاح واجهة برمجة تطبيقات المزود.
318
348
  */
319
349
  apiKey: process.env.OPENAI_API_KEY,
320
350
 
321
351
  /**
322
- * Global context to guide the AI in generating translations.
352
+ * سياق عالمي لتوجيه الذكاء الاصطناعي عند بناء الترجمات.
323
353
  */
324
- applicationContext: "This is a travel booking application.",
354
+ applicationContext: "هذا تطبيق لحجز الرحلات.",
325
355
 
326
356
  /**
327
- * Base URL for the AI API.
357
+ * عنوان URL للمسار الأساسي لواجهة برمجة تطبيقات الذكاء الاصطناعي.
328
358
  */
329
359
  baseURL: "http://localhost:3000",
330
360
 
331
361
  /**
332
- * تسلسل البيانات
362
+ * تسلسل البيانات (Data Serialization)
333
363
  *
334
364
  * الخيارات:
335
- * - "json": معيار ، موثوق ؛ يستخدم المزيد من الرموز.
336
- * - "toon": عدد أقل من الرموز المميزة ، أقل اتساقا من JSON.
365
+ * - "json": افتراضي، قوي؛ يستهلك المزيد من التوكنات.
366
+ * - "toon": يستهلك توكنات أقل، قد لا يكون متسقًا مثل JSON.
337
367
  *
338
368
  * الافتراضي: "json"
339
369
  */
@@ -341,126 +371,126 @@ const config: IntlayerConfig = {
341
371
  },
342
372
 
343
373
  /**
344
- * Build and optimization settings.
374
+ * إعدادات البناء والتحسين.
345
375
  */
346
376
  build: {
347
377
  /**
348
- * Build execution mode.
349
- * - "auto": Automatic build during app build.
350
- * - "manual": Requires explicit build command.
351
- * Default: "auto"
378
+ * وضع تنفيذ البناء.
379
+ * - "auto": يتم البناء تلقائيًا أثناء بناء التطبيق.
380
+ * - "manual": يتطلب أمر بناء صريح.
381
+ * الافتراضي: "auto"
352
382
  */
353
383
  mode: "auto",
354
384
 
355
385
  /**
356
- * Whether to optimize the final bundle by pruning unused dictionaries.
357
- * Default: true in production
386
+ * ما إذا كان يجب تحسين الحزمة النهائية عن طريق إزالة القواميس غير المستخدمة.
387
+ * الافتراضي: true في الإنتاج
358
388
  */
359
389
  optimize: true,
360
390
 
361
391
  /**
362
- * Output format for generated dictionary files.
363
- * Default: ['esm', 'cjs']
392
+ * تنسيق الإخراج لملفات القاموس المنشأة.
393
+ * الافتراضي: ['cjs', 'esm']
364
394
  */
365
- outputFormat: ["esm"],
395
+ outputFormat: ["cjs", "esm"],
366
396
 
367
397
  /**
368
- * Indicates if the build should check TypeScript types.
369
- * Default: false
398
+ * يحدد ما إذا كان ينبغي للبناء التحقق من أنواع TypeScript.
399
+ * الافتراضي: false
370
400
  */
371
401
  checkTypes: false,
372
402
  },
373
403
 
374
404
  /**
375
- * Logger configuration.
405
+ * تكوين المسجل (Logger).
376
406
  */
377
407
  log: {
378
408
  /**
379
- * Logging level.
380
- * - "default": Standard logging.
381
- * - "verbose": Detailed debug logging.
382
- * - "disabled": No logging.
383
- * Default: "default"
409
+ * مستوى تسجيل البيانات.
410
+ * - "default": تسجيل البيانات القياسي.
411
+ * - "verbose": تسجيل بيانات تصحيح الأخطاء بعمق.
412
+ * - "disabled": تعطيل تسجيل البيانات.
413
+ * الافتراضي: "default"
384
414
  */
385
415
  mode: "default",
386
416
 
387
417
  /**
388
- * Prefix for all log messages.
389
- * Default: "[intlayer]"
418
+ * البادئة لجميع رسائل السجل.
419
+ * الافتراضي: "[intlayer]"
390
420
  */
391
421
  prefix: "[intlayer]",
392
422
  },
393
423
 
394
424
  /**
395
- * System configuration (Advanced use cases)
425
+ * تكوين النظام (للاستخدام المتقدم)
396
426
  */
397
427
  system: {
398
428
  /**
399
- * Directory for storing localization dictionaries.
429
+ * المجلد لتخزين القواميس المترجمة.
400
430
  */
401
431
  dictionariesDir: ".intlayer/dictionary",
402
432
 
403
433
  /**
404
- * Directory for module augmentation.
434
+ * المجلد لزيادة وحدات TypeScript (module augmentation).
405
435
  */
406
436
  moduleAugmentationDir: ".intlayer/types",
407
437
 
408
438
  /**
409
- * Directory for storing unmerged dictionaries.
439
+ * المجلد لتخزين القواميس غير المدمجة (unmerged).
410
440
  */
411
441
  unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
412
442
 
413
443
  /**
414
- * Directory for storing dictionary types.
444
+ * المجلد لتخزين أنواع القواميس.
415
445
  */
416
446
  typesDir: ".intlayer/types",
417
447
 
418
448
  /**
419
- * Directory where main application files are stored.
449
+ * المجلد الذي يتم فيه تخزين ملفات التطبيق الرئيسية.
420
450
  */
421
451
  mainDir: ".intlayer/main",
422
452
 
423
453
  /**
424
- * Directory where the configuration files are stored.
454
+ * المجلد الذي يتم فيه تخزين ملفات التكوين.
425
455
  */
426
456
  configDir: ".intlayer/config",
427
457
 
428
458
  /**
429
- * Directory where the cache files are stored.
459
+ * المجلد الذي يتم فيه تخزين ملفات التخزين المؤقت.
430
460
  */
431
461
  cacheDir: ".intlayer/cache",
432
462
  },
433
463
 
434
464
  /**
435
- * Compiler configuration (Advanced use cases)
465
+ * تكوين المترجم (للاستخدام المتقدم)
436
466
  */
437
467
  compiler: {
438
468
  /**
439
- * يشير إلى ما إذا كان يجب تمكين المجمّع.
469
+ * يحدد ما إذا كان ينبغي تمكين المترجم.
440
470
  *
441
- * - false : تعطيل المجمّع.
442
- * - true : تمكين المجمّع.
443
- * - "build-only" : تخطي المجمّع أثناء التطوير لتسريع أوقات التشغيل.
471
+ * - false: تعطيل المترجم.
472
+ * - true: تمكين المترجم.
473
+ * - "build-only": يتخطى المترجم أثناء التطوير ويسرع وقت البدء.
444
474
  *
445
- * الافتراضي : false
475
+ * الافتراضي: false
446
476
  */
447
477
  enabled: true,
448
478
 
449
479
  /**
450
- * يحدد مسار ملفات الإخراج. يستبدل `outputDir`.
480
+ * يحدد المسار لملفات الإخراج. يستبدل `outputDir`.
451
481
  *
452
- * - المسارات التي تبدأ بـ `./` يتم حلها بالنسبة لدليل المكون.
453
- * - المسارات التي تبدأ بـ `/` يتم حلها بالنسبة لجذر المشروع (`baseDir`).
482
+ * - يتم حل المسارات التي تبدأ بـ `./` بالنسبة لمجلد المكون.
483
+ * - يتم حل المسارات التي تبدأ بـ `/` بالنسبة لجذر المشروع (`baseDir`).
454
484
  *
455
- * - تضمين متغير `{{locale}}` في المسار سيمكن توليد قواميس منفصلة لكل لغة.
485
+ * - سيؤدي تضمين متغير `{{locale}}` في المسار إلى إنشاء قواميس منفصلة لكل لغة.
456
486
  *
457
- * أمثلة:
487
+ * مثال:
458
488
  * ```ts
459
489
  * {
460
- * // إنشاء ملف .content.ts متعدد اللغات بجانب المكون
490
+ * // إنشاء ملفات .content.ts متعددة اللغات بجوار المكون
461
491
  * output: ({ fileName, extension }) => `./${fileName}${extension}`,
462
492
  *
463
- * // output: './{{fileName}}{{extension}}', // تعبير مكافئ باستخدام قالب السلسلة
493
+ * // output: './{{fileName}}{{extension}}', // مكافئ باستخدام سلسلة قالب
464
494
  * }
465
495
  * ```
466
496
  *
@@ -469,7 +499,7 @@ const config: IntlayerConfig = {
469
499
  * // إنشاء ملفات JSON مركزية لكل لغة في جذر المشروع
470
500
  * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
471
501
  *
472
- * // output: '/locales/{{locale}}/{{key}}.content.json', // تعبير مكافئ باستخدام قالب السلسلة
502
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // مكافئ باستخدام سلسلة قالب
473
503
  * }
474
504
  * ```
475
505
  *
@@ -482,29 +512,29 @@ const config: IntlayerConfig = {
482
512
  * - `componentExtension`: امتداد ملف المكون.
483
513
  * - `format`: تنسيق القاموس.
484
514
  * - `componentFormat`: تنسيق قاموس المكون.
485
- * - `componentDirPath`: مسار دليل المكون.
515
+ * - `componentDirPath`: مسار مجلد المكون.
486
516
  */
487
517
  output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
488
518
 
489
519
  /**
490
- * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها.
491
- * بهذه الطريقة، يمكن تشغيل المجمّع مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
520
+ * يحدد ما إذا كانت المكونات يجب أن تحفظ بعد تحويلها.
521
+ * بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة فقط لتحويل التطبيق ثم حذفه.
492
522
  */
493
523
  saveComponents: false,
494
524
 
495
525
  /**
496
- * أدخل المحتوى فقط في الملف الذي تم إنشاؤه. مفيد لمخرجات JSON i18next أو ICU MessageFormat لكل لغة.
526
+ * إدراج المحتوى فقط في الملف المنشأ. مفيد لإخراج JSON لكل لغة لـ i18next أو ICU MessageFormat.
497
527
  */
498
528
  noMetadata: false,
499
529
 
500
530
  /**
501
531
  * بادئة مفتاح القاموس
502
532
  */
503
- dictionaryKeyPrefix: "", // إضافة بادئة اختيارية لمفاتيح القاموس المستخرجة
533
+ dictionaryKeyPrefix: "", // أضف بادئة اختيارية لمفاتيح القواميس المستخرجة
504
534
  },
505
535
 
506
536
  /**
507
- * Custom schemas to validate the dictionaries content.
537
+ * مخططات مخصصة (Schemas) للتحقق من صحة محتوى القاموس.
508
538
  */
509
539
  schemas: {
510
540
  "my-schema": z.object({
@@ -513,7 +543,7 @@ const config: IntlayerConfig = {
513
543
  },
514
544
 
515
545
  /**
516
- * Plugins configuration.
546
+ * تكوين المكونات الإضافية (Plugins).
517
547
  */
518
548
  plugins: [],
519
549
  };
@@ -521,604 +551,372 @@ const config: IntlayerConfig = {
521
551
  export default config;
522
552
  ````
523
553
 
524
- ## مرجع التهيئة
554
+ ---
555
+
556
+ ## مرجع التكوين (Configuration Reference)
525
557
 
526
- تصف الأقسام التالية إعدادات التهيئة المختلفة المتاحة لـ Intlayer.
558
+ تصف الأقسام التالية خيارات التكوين المختلفة المتاحة في Intlayer.
527
559
 
528
560
  ---
529
561
 
530
- ### تهيئة التدويل
531
-
532
- تعريف الإعدادات المتعلقة بالتدويل، بما في ذلك اللغات المتاحة واللغة الافتراضية للتطبيق.
533
-
534
- #### الخصائص
535
-
536
- - **locales**:
537
- - _النوع_: `string[]`
538
- - _الافتراضي_: `['en']`
539
- - _الوصف_: قائمة اللغات المدعومة في التطبيق.
540
- - _مثال_: `['en', 'fr', 'es']`
541
-
542
- - **requiredLocales**:
543
- - _النوع_: `string[]`
544
- - _الافتراضي_: `[]`
545
- - _الوصف_: قائمة اللغات المطلوبة في التطبيق.
546
- - _مثال_: `[]`
547
- - _ملاحظة_: إذا كانت فارغة، فكل اللغات مطلوبة في وضع `strict`.
548
- - _ملاحظة_: تأكد من أن اللغات المطلوبة معرفة أيضًا في حقل `locales`.
549
- - **strictMode**:
550
- - _النوع_: `string`
551
- - _الافتراضي_: `inclusive`
552
- - _الوصف_: ضمان تنفيذ قوي للمحتوى الدولي باستخدام typescript.
553
- - _ملاحظة_: إذا تم تعيينها إلى "strict"، فإن دالة الترجمة `t` ستتطلب تعريف كل اللغات المعلنة. إذا كانت لغة مفقودة، أو إذا لم يتم إعلان لغة في التهيئة الخاصة بك، فسيتم رمي خطأ.
554
- - _ملاحظة_: إذا تم تعيينها إلى "inclusive"، فإن دالة الترجمة `t` ستتطلب تعريف كل اللغات المعلنة. إذا كانت لغة مفقودة، فستصدر تحذيرًا. لكنها ستقبل إذا كانت اللغة غير معلنة في التهيئة الخاصة بك، لكنها موجودة.
555
- - _ملاحظة_: إذا تم تعيينها إلى "loose"، فإن دالة الترجمة `t` ستقبل أي لغة موجودة.
556
-
557
- - **defaultLocale**:
558
- - _النوع_: `string`
559
- - _الافتراضي_: `'en'`
560
- - _الوصف_: اللغة الافتراضية المستخدمة كخيار احتياطي إذا لم يتم العثور على اللغة المطلوبة.
561
- - _مثال_: `'en'`
562
- - _ملاحظة_: يُستخدم هذا لتحديد اللغة عندما لا يتم تحديد أي لغة في عنوان URL أو ملف تعريف الارتباط أو الرأس.
562
+ ### تكوين التدويل (Internationalization Configuration)
563
563
 
564
- ---
564
+ يعرف الإعدادات المتعلقة بالتدويل، بما في ذلك اللغات المتاحة واللغة الافتراضية للتطبيق.
565
565
 
566
- ### تكوين المحرر
567
-
568
- يحدد الإعدادات المتعلقة بالمحرر المتكامل، بما في ذلك منفذ الخادم وحالة التفعيل.
569
-
570
- #### الخصائص
571
-
572
- - **applicationURL**:
573
- - _النوع_: `string`
574
- - _الافتراضي_: `http://localhost:3000`
575
- - _الوصف_: عنوان URL الخاص بالتطبيق. يُستخدم لتقييد أصل المحرر لأسباب أمنية.
576
- - _مثال_:
577
- - `'http://localhost:3000'`
578
- - `'https://example.com'`
579
- - `process.env.INTLAYER_EDITOR_URL`
580
- - _ملاحظة_: عنوان URL الخاص بالتطبيق. يُستخدم لتقييد أصل المحرر لأسباب أمنية. إذا تم تعيينه إلى `'*'`، يكون المحرر متاحًا من أي أصل.
581
-
582
- - **port**:
583
- - _النوع_: `number`
584
- - _الافتراضي_: `8000`
585
- - _الوصف_: المنفذ المستخدم من قبل خادم المحرر المرئي.
586
-
587
- - **editorURL**:
588
- - _النوع_: `string`
589
- - _الافتراضي_: `'http://localhost:8000'`
590
- - _الوصف_: عنوان URL الخاص بخادم المحرر. يُستخدم لتقييد أصل المحرر لأسباب أمنية.
591
- - `'http://localhost:3000'`
592
- - `'https://example.com'`
593
- - `process.env.INTLAYER_EDITOR_URL`
594
- - _ملاحظة_: عنوان URL الخاص بخادم المحرر الذي يتم الوصول إليه من التطبيق. يُستخدم لتقييد الأصول التي يمكنها التفاعل مع التطبيق لأسباب أمنية. إذا تم تعيينه إلى `'*'`، يكون المحرر متاحًا من أي أصل. يجب تعيينه إذا تم تغيير المنفذ، أو إذا كان المحرر مستضافًا على نطاق مختلف.
595
-
596
- - **cmsURL**:
597
- - _النوع_: `string`
598
- - _الافتراضي_: `'https://intlayer.org'`
599
- - _الوصف_: عنوان URL الخاص بنظام إدارة المحتوى Intlayer.
600
- - _مثال_: `'https://intlayer.org'`
601
- - _ملاحظة_: عنوان URL الخاص بنظام إدارة المحتوى Intlayer.
602
-
603
- - **backendURL**:
604
- - _النوع_: `string`
605
- - _الافتراضي_: `https://back.intlayer.org`
606
- - _الوصف_: عنوان URL الخاص بخادم الواجهة الخلفية.
607
- - _مثال_: `http://localhost:4000`
608
-
609
- - **enabled**:
610
- - _النوع_: `boolean`
611
- - _الافتراضي_: `true`
612
- - _الوصف_: يشير إلى ما إذا كان التطبيق يتفاعل مع المحرر المرئي.
613
- - _مثال_: `process.env.NODE_ENV !== 'production'`
614
- - _ملاحظة_: إذا كانت القيمة صحيحة، سيتمكن المحرر من التفاعل مع التطبيق. إذا كانت خاطئة، فلن يتمكن المحرر من التفاعل مع التطبيق. في جميع الأحوال، يمكن تمكين المحرر فقط من خلال المحرر المرئي. تعطيل المحرر لبيئات محددة هو وسيلة لتعزيز الأمان.
615
-
616
- - **clientId**:
617
- - _النوع_: `string` | `undefined`
618
- - _الافتراضي_: `undefined`
619
- - _الوصف_: يسمح كل من clientId و clientSecret لحزم intlayer بالمصادقة مع الخادم الخلفي باستخدام مصادقة oAuth2. يتم استخدام رمز وصول للمصادقة على المستخدم المرتبط بالمشروع. للحصول على رمز وصول، انتقل إلى https://app.intlayer.org/project وأنشئ حسابًا.
620
- - _مثال_: `true`
621
- - _ملاحظة_: مهم: يجب الحفاظ على سرية clientId و clientSecret وعدم مشاركتهما علنًا. يرجى التأكد من الاحتفاظ بهما في مكان آمن، مثل متغيرات البيئة.
622
-
623
- - **clientSecret**:
624
- - _النوع_: `string` | `undefined`
625
- - _الافتراضي_: `undefined`
626
- - _الوصف_: يسمح كل من clientId و clientSecret لحزم intlayer بالمصادقة مع الخادم الخلفي باستخدام مصادقة oAuth2. يتم استخدام رمز وصول للمصادقة على المستخدم المرتبط بالمشروع. للحصول على رمز وصول، انتقل إلى https://app.intlayer.org/project وأنشئ حسابًا.
627
- - _مثال_: `true`
628
- - _ملاحظة_: مهم: يجب الحفاظ على سرية clientId و clientSecret وعدم مشاركتهما علنًا. يرجى التأكد من الاحتفاظ بهما في مكان آمن، مثل متغيرات البيئة.
629
-
630
- - **dictionaryPriorityStrategy**:
631
- - _النوع_: `string`
632
- - _الافتراضي_: `'local_first'`
633
- - _الوصف_: الاستراتيجية لتحديد أولوية القواميس في حالة وجود كل من القواميس المحلية والقواميس البعيدة. إذا تم تعيينها إلى `'distant_first'`، ستعطي التطبيق أولوية للقواميس البعيدة على القواميس المحلية. إذا تم تعيينها إلى `'local_first'`، ستعطي التطبيق أولوية للقواميس المحلية على القواميس البعيدة.
634
- - _مثال_: `'distant_first'`
635
-
636
- - **liveSync**:
637
- - _النوع_: `boolean`
638
- - _الافتراضي_: `false`
639
- - _الوصف_: يشير إلى ما إذا كان يجب على خادم التطبيق إعادة تحميل محتوى التطبيق تلقائيًا عند اكتشاف تغيير في نظام إدارة المحتوى / المحرر المرئي / الخلفية.
640
- - _مثال_: `true`
641
- - _ملاحظة_: على سبيل المثال، عندما يتم إضافة قاموس جديد أو تحديثه، سيقوم التطبيق بتحديث المحتوى ليتم عرضه في الصفحة.
642
- - _ملاحظة_: تحتاج المزامنة الحية إلى تعريض محتوى التطبيق على خادم آخر. هذا يعني أنه قد يؤثر قليلاً على أداء التطبيق. للحد من ذلك، نوصي باستضافة التطبيق وخادم المزامنة الحية على نفس الجهاز. أيضًا، يمكن أن يؤدي الجمع بين المزامنة الحية و`optimize` إلى تطبيق عدد كبير من الطلبات على خادم المزامنة الحية. اعتمادًا على البنية التحتية الخاصة بك، نوصي باختبار كلا الخيارين وتركيبتهما.
643
-
644
- - **liveSyncPort**:
645
- - _النوع_: `number`
646
- - _الافتراضي_: `4000`
647
- - _الوصف_: منفذ خادم المزامنة الحية.
648
- - _مثال_: `4000`
649
- - _ملاحظة_: منفذ خادم المزامنة الحية.
650
-
651
- - **liveSyncURL**:
652
- - _النوع_: `string`
653
- - _الافتراضي_: `'http://localhost:{liveSyncPort}'`
654
- - _الوصف_: عنوان URL الخاص بخادم المزامنة الحية.
655
- - _مثال_: `'https://example.com'`
656
- - _ملاحظة_: يشير إلى localhost بشكل افتراضي ولكن يمكن تغييره إلى أي عنوان URL في حالة وجود خادم مزامنة حية عن بُعد.
657
-
658
- ### تكوين الوسيط
659
-
660
- الإعدادات التي تتحكم في سلوك الوسيط، بما في ذلك كيفية تعامل التطبيق مع ملفات تعريف الارتباط، والرؤوس، والبادئات في عناوين URL لإدارة اللغة.
661
-
662
- #### الخصائص
663
-
664
- - **headerName**:
665
- - _النوع_: `string`
666
- - _الافتراضي_: `'x-intlayer-locale'`
667
- - _الوصف_: اسم رأس HTTP المستخدم لتحديد اللغة.
668
- - _مثال_: `'x-custom-locale'`
669
- - _ملاحظة_: هذا مفيد لتحديد اللغة بناءً على واجهة برمجة التطبيقات (API).
670
-
671
- - **cookieName**:
672
- - _النوع_: `string`
673
- - _الافتراضي_: `'intlayer-locale'`
674
- - _الوصف_: اسم ملف تعريف الارتباط المستخدم لتخزين اللغة.
675
- - _مثال_: `'custom-locale'`
676
- - _ملاحظة_: يُستخدم للحفاظ على اللغة عبر الجلسات.
677
-
678
- - **prefixDefault**:
679
- - _النوع_: `boolean`
680
- - _الافتراضي_: `false`
681
- - _الوصف_: ما إذا كان يجب تضمين اللغة الافتراضية في عنوان URL.
682
- - _مثال_: `true`
683
- - _ملاحظة_:
684
- - إذا كانت القيمة `true` و `defaultLocale = 'en'`: المسار = `/en/dashboard` أو `/fr/dashboard`
685
- - إذا كانت القيمة `false` و `defaultLocale = 'en'`: المسار = `/dashboard` أو `/fr/dashboard`
686
-
687
- - **basePath**:
688
- - _النوع_: `string`
689
- - _الافتراضي_: `''`
690
- - _الوصف_: المسار الأساسي لعناوين URL الخاصة بالتطبيق.
691
- - _مثال_: `'/my-app'`
692
- - _ملاحظة_:
693
- - إذا كان التطبيق مستضافًا على `https://example.com/my-app`
694
- - يكون المسار الأساسي هو `'/my-app'`
695
- - سيكون عنوان URL هو `https://example.com/my-app/en`
696
- - إذا لم يتم تعيين المسار الأساسي، سيكون عنوان URL هو `https://example.com/en`
697
-
698
- - **rewrite**:
699
- - _النوع_: `Record<string, StrictModeLocaleMap<string>>`
700
- - _الافتراضي_: `undefined`
701
- - _الوصف_: قواعد إعادة كتابة URL المخصصة التي تتجاوز وضع التوجيه الافتراضي لمسارات محددة. يسمح بتعريف مسارات محددة حسب اللغة تختلف عن سلوك التوجيه القياسي. يدعم معاملات المسار الديناميكية باستخدام بناء الجملة `[param]`.
702
- - _مثال_:
703
- ```typescript
704
- routing: {
705
- mode: "prefix-no-default", // استراتيجية احتياطية
706
- rewrite: nextjsRewrite({
707
- "/[locale]/about": {
708
- en: "/[locale]/about",
709
- fr: "/[locale]/a-propos",
710
- },
711
- "/[locale]/product/[slug]": {
712
- en: "/[locale]/product/[slug]",
713
- fr: "/[locale]/produit/[slug]",
714
- },
715
- "/[locale]/blog/[category]/[id]": {
716
- en: "/[locale]/blog/[category]/[id]",
717
- fr: "/[locale]/journal/[category]/[id]",
718
- },
719
- }),
720
- }
721
- ```
722
- - _ملاحظة_: قواعد إعادة الكتابة لها الأولوية على سلوك `mode` الافتراضي. إذا تطابق مسار مع قاعدة إعادة كتابة، سيتم استخدام المسار المترجم من تكوين إعادة الكتابة بدلاً من بادئة اللغة القياسية.
723
- - _ملاحظة_: معاملات المسار الديناميكية مدعومة باستخدام ترميز الأقواس (على سبيل المثال، `[slug]`، `[id]`). يتم استخراج قيم المعاملات تلقائيًا من URL وإدراجها في المسار المعاد كتابته.
724
- - _ملاحظة_: يعمل مع تطبيقات Next.js و Vite. ستعيد البرمجية الوسيطة/الوكيل كتابة الطلبات الواردة تلقائيًا لتطابق بنية المسار الداخلية.
725
- - _ملاحظة_: عند إنشاء عناوين URL باستخدام `getLocalizedUrl()`، يتم تطبيق قواعد إعادة الكتابة تلقائيًا إذا تطابقت مع المسار المقدم.
726
- - _Reference_ : لمزيد من المعلومات، راجع [إعادة كتابة عناوين URL المخصصة](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/custom_url_rewrites.md).
727
-
728
- - **serverSetCookie**:
729
- - _النوع_: `string`
730
- - _الافتراضي_: `'always'`
731
- - _الوصف_: قاعدة تعيين ملف تعريف الارتباط للغة على الخادم.
732
- - _الخيارات_: `'always'`، `'never'`
733
- - _مثال_: `'never'`
734
- - _ملاحظة_: تتحكم فيما إذا كان يتم تعيين ملف تعريف الارتباط للغة عند كل طلب أو لا يتم تعيينه أبدًا.
735
-
736
- - **noPrefix**:
737
- - _النوع_: `boolean`
738
- - _الافتراضي_: `false`
739
- - _الوصف_: ما إذا كان يجب حذف بادئة اللغة من عناوين URL.
740
- - _مثال_: `true`
741
- - _ملاحظة_:
742
- - إذا كانت القيمة `true`: لا توجد بادئة في عنوان URL
743
- - إذا كانت القيمة `false`: توجد بادئة في عنوان URL
744
- - مثال مع `basePath = '/my-app'`:
745
- - إذا كانت `noPrefix = false`: سيكون عنوان URL هو `https://example.com/my-app/en`
746
- - إذا كانت `noPrefix = true`: سيكون عنوان URL هو `https://example.com`
566
+ | الحقل | النوع | الوصف | مثال | ملاحظة |
567
+ | ----------------- | ---------- | --------------------------------------------------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
568
+ | `locales` | `string[]` | قائمة اللغات المدعومة في التطبيق. الافتراضي: `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
569
+ | `requiredLocales` | `string[]` | قائمة اللغات الإلزامية في التطبيق. الافتراضي: `[]` | `[]` | إذا كانت فارغة، فستكون جميع اللغات إلزامية في وضع `strict`. تأكد من تعريف اللغات الإلزامية أيضًا في حقل `locales`. |
570
+ | `strictMode` | `string` | يضمن تنفيذًا قويًا للمحتوى المدوّل باستخدام TypeScript. الافتراضي: `inclusive` | | إذا كان `"strict"`: تتطلب وظيفة `t` تعريف كل لغة معلنة - يطرح خطأ إذا كانت أي منها مفقودة أو غير معلنة. إذا كان `"inclusive"`: يحذر من اللغات المفقودة ولكنه يقبل اللغات غير المعلنة الموجودة. إذا كان `"loose"`: يقبل أي لغة موجودة. |
571
+ | `defaultLocale` | `string` | اللغة الافتراضية المستخدمة كبديل إذا لم يتم العثور على اللغة المطلوبة. الافتراضي: `Locales.ENGLISH` | `'en'` | يستخدم لتحديد اللغة عندما لا يتم تحديد أي لغة في عنوان URL أو ملف تعريف الارتباط أو الرأس. |
747
572
 
748
573
  ---
749
574
 
750
- ### تكوين المحتوى
751
-
752
- إعدادات تتعلق بمعالجة المحتوى داخل التطبيق، بما في ذلك أسماء الدلائل، امتدادات الملفات، والتكوينات المشتقة.
753
-
754
- #### الخصائص
755
-
756
- - **autoFill**:
757
- - _النوع_: `boolean | string | FilePathPattern | { [key in Locales]?: string }`
758
- - _الافتراضي_: `undefined`
759
- - _الوصف_: يشير إلى كيفية ملء المحتوى تلقائيًا باستخدام الذكاء الاصطناعي. يمكن الإعلان عنه عالميًا في ملف `intlayer.config.ts`.
760
- - _مثال_: true
761
- - _مثال_: `'./{{fileName}}.content.json'`
762
- - _مثال_: `{ fr: './{{fileName}}.fr.content.json', es: './{{fileName}}.es.content.json' }`
763
- - _ملاحظة_: تكوين الملء التلقائي. يمكن أن يكون:
764
- - boolean: تمكين الملء التلقائي لجميع اللغات
765
- - string: مسار إلى ملف واحد أو قالب مع متغيرات
766
- - object: مسارات ملفات لكل لغة
767
-
768
- - **watch**:
769
- - _النوع_: `boolean`
770
- - _الافتراضي_: `process.env.NODE_ENV === 'development'`
771
- - _الوصف_: يشير إلى ما إذا كان يجب على Intlayer مراقبة التغييرات في ملفات إعلان المحتوى داخل التطبيق لإعادة بناء القواميس ذات الصلة.
772
-
773
- - **fileExtensions**:
774
- - _النوع_: `string[]`
775
- - _الافتراضي_: `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']`
776
- - _الوصف_: امتدادات الملفات التي يجب البحث عنها عند بناء القواميس.
777
- - _مثال_: `['.data.ts', '.data.js', '.data.json']`
778
- - _ملاحظة_: تخصيص امتدادات الملفات يمكن أن يساعد في تجنب التعارضات.
779
-
780
- - **dictionaryOutput**:
781
- - _النوع_: `string[]`
782
- - _الافتراضي_: `['intlayer']`
783
- - _الوصف_: نوع إخراج القاموس المستخدم، مثل `'intlayer'` أو `'i18next'`.
784
-
785
- - **contentDir**:
786
- - _النوع_: `string[]`
787
- - _الافتراضي_: `['.']`
788
- - _مثال_: `['src', '../../ui-library', require.resolve("@my-package/content")]`
789
- - _الوصف_: مسار الدليل حيث يتم تخزين ملفات تعريف المحتوى (`.content.*`).
790
- - _ملاحظة_: يُستخدم هذا لمراقبة ملفات المحتوى لإعادة بناء القواميس.
791
-
792
- - **codeDir**:
793
- - _النوع_: `string[]`
794
- - _الافتراضي_: `['.']`
795
- - _مثال_: `['src', '../../ui-library']`
796
- - _الوصف_: مسار الدليل حيث يتم تخزين الكود، بالنسبة إلى الدليل الأساسي.
797
- - _ملاحظة_: يُستخدم هذا لمراقبة ملفات الكود للتحويل (التقليم، التحسين). يمكن أن يؤدي الحفاظ على هذا منفصلاً عن `contentDir` إلى تحسين أداء البناء من خلال تجنب عمليات المسح غير الضرورية لملفات المحتوى.
798
-
799
- - **dictionariesDir**:
800
- - _النوع_: `string`
801
- - _الافتراضي_: `'.intlayer/dictionaries'`
802
- - _الوصف_: مسار الدليل لتخزين النتائج الوسيطة أو الناتجة.
803
-
804
- - **moduleAugmentationDir**:
805
- - _النوع_: `string`
806
- - _الافتراضي_: `'.intlayer/types'`
807
- - _الوصف_: دليل لتوسيع الوحدات، مما يسمح بتحسين اقتراحات IDE وفحص الأنواع.
808
- - _مثال_: `'intlayer-types'`
809
- - _ملاحظة_: تأكد من تضمين هذا في `tsconfig.json`.
810
-
811
- - **unmergedDictionariesDir**:
812
- - _النوع_: `string`
813
- - _الافتراضي_: `'.intlayer/unmerged_dictionary'`
814
- - _الوصف_: الدليل لتخزين القواميس غير المدمجة.
815
- - _مثال_: `'translations'`
816
-
817
- - **dictionariesDir**:
818
- - _النوع_: `string`
819
- - _الافتراضي_: `'.intlayer/dictionary'`
820
- - _الوصف_: الدليل لتخزين قواميس التوطين.
821
- - _مثال_: `'translations'`
822
-
823
- - **i18nextResourcesDir**:
824
- - _النوع_: `string`
825
- - _الافتراضي_: `'i18next_dictionary'`
826
- - _الوصف_: الدليل لتخزين قواميس i18n.
827
- - _مثال_: `'translations'`
828
- - _ملاحظة_: تأكد من تكوين هذا الدليل لنوع الإخراج i18next.
829
-
830
- - **typesDir**:
831
- - _النوع_: `string`
832
- - _الافتراضي_: `'types'`
833
- - _الوصف_: الدليل لتخزين أنواع القواميس.
834
- - _مثال_: `'intlayer-types'`
835
-
836
- - **mainDir**:
837
- - _النوع_: `string`
838
- - _الافتراضي_: `'main'`
839
- - _الوصف_: الدليل الذي تُخزن فيه ملفات التطبيق الرئيسية.
840
- - _مثال_: `'intlayer-main'`
841
-
842
- - **excludedPath**:
843
- - _النوع_: `string[]`
844
- - _الافتراضي_: `['node_modules']`
845
- - _الوصف_: الأدلة المستبعدة من البحث في المحتوى.
846
- - _ملاحظة_: هذا الإعداد غير مستخدم حالياً، لكنه مخطط لتطبيقه في المستقبل.
575
+ ### تكوين المحرر (Editor Configuration)
576
+
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 &#124; undefined` | يسمح لحزم intlayer بالمصادقة مع الخلفية باستخدام oAuth2. للحصول على توكن وصول، انتقل إلى [intlayer.org/project](https://app.intlayer.org/project). الافتراضي: `undefined` | | ابقِهِ سريًا؛ قم بتخزينه في متغيرات البيئة. |
588
+ | `clientSecret` | `string &#124; 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 بشكل افتراضي؛ يمكن تغييره إلى خادم مزامنة حية بعيد. |
593
+
594
+ ### تكوين التوجيه (Routing Configuration)
595
+
596
+ الإعدادات التي تتحكم في سلوك التوجيه، بما في ذلك بنية URL، وتخزين اللغات، ومعالجة البرامج الوسيطة.
597
+
598
+ | الحقل | النوع | الوصف | مثال | ملاحظة |
599
+ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
600
+ | `mode` | `'prefix-no-default' &#124; 'prefix-all' &#124; 'no-prefix' &#124; 'search-params'` | وضع توجيه URL لمعالجة اللغات. الافتراضي: `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) أو `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: تتم معالجة اللغة بوسائل أخرى. `'search-params'`: يستخدم `/dashboard?locale=fr` | لا يؤثر على إدارة ملفات تعريف الارتباط أو تخزين اللغات. |
601
+ | `storage` | `false &#124; 'cookie' &#124; 'localStorage' &#124; 'sessionStorage' &#124; 'header' &#124; CookiesAttributes &#124; StorageAttributes &#124; Array` | تكوين لتخزين اللغة على العميل. الافتراضي: `['cookie', 'header']` | `'localStorage'`, `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | راجع جدول خيارات التخزين أدناه. |
602
+ | `basePath` | `string` | المسار الأساسي لعناوين URL للتطبيق. الافتراضي: `''` | `'/my-app'` | إذا كان التطبيق على `https://example.com/my-app` ، فإن basePath هو `'/my-app'` وتصبح عناوين URL مثل `https://example.com/my-app/en`. |
603
+ | `rewrite` | `Record<string, StrictModeLocaleMap<string>>` | قواعد إعادة كتابة URL مخصصة تتجاوز وضع التوجيه الافتراضي لمسارات محددة. يدعم المعلمات الديناميكية `[param]`. الافتراضي: `undefined` | انظر المثال أدناه | قواعد إعادة الكتابة لها الأولوية على `mode`. تعمل مع Next.js و Vite. تقوم `getLocalizedUrl()` بتطبيق القواعد المطابقة تلقائيًا. انظر [عمليات إعادة كتابة URL المخصصة](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/custom_url_rewrites.md). |
604
+
605
+ **مثال على `rewrite`**:
606
+
607
+ ```typescript
608
+ routing: {
609
+ mode: "prefix-no-default", // استراتيجية التراجع
610
+ rewrite: nextjsRewrite({
611
+ "/about": {
612
+ en: "/about",
613
+ fr: "/a-propos",
614
+ },
615
+ "/product/[slug]": {
616
+ en: "/product/[slug]",
617
+ fr: "/produit/[slug]",
618
+ },
619
+ "/blog/[category]/[id]": {
620
+ en: "/blog/[category]/[id]",
621
+ fr: "/journal/[category]/[id]",
622
+ },
623
+ }),
624
+ }
625
+ ```
626
+
627
+ #### خيارات التخزين (Storage Options)
628
+
629
+ | القيمة | الوصف | ملاحظة |
630
+ | ------------------ | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
631
+ | `'cookie'` | يخزن اللغة في ملفات تعريف الارتباط - يمكن الوصول إليها من جانبي العميل والخادم. | للامتثال للقانون العام لحماية البيانات (GDPR) ، تأكد من الحصول على موافقة المستخدم المناسبة. قابلة للتخصيص عبر `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). |
632
+ | `'localStorage'` | يخزن اللغة في المتصفح بدون تاريخ انتهاء - جانب العميل فقط. | لا تنتهي صلاحيتها إلا إذا تم مسحها صراحة. لا يمكن لبروكسي Intlayer الوصول إليها. قابلة للتخصيص عبر `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). |
633
+ | `'sessionStorage'` | يخزن اللغة طوال مدة جلسة الصفحة - جانب العميل فقط. | يتم مسحها عند إغلاق علامة التبويب/النافذة. لا يمكن لبروكسي Intlayer الوصول إليها. قابلة للتخصيص عبر `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). |
634
+ | `'header'` | يخزن أو ينقل اللغة عبر رؤوس HTTP - جانب الخادم فقط. | مفيد لمكالمات واجهة برمجة التطبيقات. لا يمكن لجانب العميل الوصول إليه. قابلة للتخصيص عبر `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). |
635
+
636
+ #### سمات ملف تعريف الارتباط (Cookie Attributes)
637
+
638
+ عند استخدام التخزين عبر ملفات تعريف الارتباط ، يمكنك تكوين سمات إضافية:
639
+
640
+ | الحقل | النوع | الوصف |
641
+ | ---------- | ------------------------------------- | ----------------------------------------------------------- |
642
+ | `name` | `string` | اسم ملف تعريف الارتباط. الافتراضي: `'INTLAYER_LOCALE'` |
643
+ | `domain` | `string` | مجال ملف تعريف الارتباط. الافتراضي: `undefined` |
644
+ | `path` | `string` | مسار ملف تعريف الارتباط. الافتراضي: `undefined` |
645
+ | `secure` | `boolean` | يتطلب HTTPS. الافتراضي: `undefined` |
646
+ | `httpOnly` | `boolean` | علم HTTP-only. الافتراضي: `undefined` |
647
+ | `sameSite` | `'strict' &#124; 'lax' &#124; 'none'` | سياسة SameSite. |
648
+ | `expires` | `Date &#124; number` | تاريخ انتهاء الصلاحية أو عدد الأيام. الافتراضي: `undefined` |
649
+
650
+ #### سمات تخزين اللغة (Locale Storage Attributes)
651
+
652
+ عند استخدام localStorage أو sessionStorage:
653
+
654
+ | الحقل | النوع | الوصف |
655
+ | ------ | ---------------------------------------- | ------------------------------------------------- |
656
+ | `type` | `'localStorage' &#124; 'sessionStorage'` | نوع التخزين. |
657
+ | `name` | `string` | اسم مفتاح التخزين. الافتراضي: `'INTLAYER_LOCALE'` |
658
+
659
+ #### أمثلة التكوين
660
+
661
+ إليك بعض أمثلة التكوين الشائعة لبنية التوجيه الجديدة v7:
662
+
663
+ **التكوين الأساسي (افتراضي)**:
664
+
665
+ ```typescript
666
+ import { Locales, type IntlayerConfig } from "intlayer";
667
+ // intlayer.config.ts
668
+ const config: IntlayerConfig = {
669
+ internationalization: {
670
+ locales: ["en", "fr", "es"],
671
+ defaultLocale: "en",
672
+ },
673
+ routing: {
674
+ mode: "prefix-no-default",
675
+ storage: "localStorage",
676
+ basePath: "",
677
+ },
678
+ };
679
+
680
+ export default config;
681
+ ```
682
+
683
+ **تكوين متوافق مع GDPR**:
684
+
685
+ ```typescript
686
+ import { Locales, type IntlayerConfig } from "intlayer";
687
+ // intlayer.config.ts
688
+ const config: IntlayerConfig = {
689
+ internationalization: {
690
+ locales: ["en", "fr", "es"],
691
+ defaultLocale: "en",
692
+ },
693
+ routing: {
694
+ mode: "prefix-no-default",
695
+ storage: [
696
+ {
697
+ type: "localStorage",
698
+ name: "user-locale",
699
+ },
700
+ {
701
+ type: "cookie",
702
+ name: "user-locale",
703
+ secure: true,
704
+ sameSite: "strict",
705
+ httpOnly: false,
706
+ },
707
+ ],
708
+ basePath: "",
709
+ },
710
+ };
711
+
712
+ export default config;
713
+ ```
714
+
715
+ **وضع معلمات البحث (Search Parameters Mode)**:
716
+
717
+ ```typescript
718
+ import { Locales, type IntlayerConfig } from "intlayer";
719
+ // intlayer.config.ts
720
+ const config: IntlayerConfig = {
721
+ internationalization: {
722
+ locales: ["en", "fr", "es"],
723
+ defaultLocale: "en",
724
+ },
725
+ routing: {
726
+ mode: "search-params",
727
+ storage: "localStorage",
728
+ basePath: "",
729
+ },
730
+ };
731
+
732
+ export default config;
733
+ ```
734
+
735
+ **وضع بدون بادئة (No Prefix Mode) مع تخزين مخصص**:
736
+
737
+ ```typescript
738
+ import { Locales, type IntlayerConfig } from "intlayer";
739
+ // intlayer.config.ts
740
+ const config: IntlayerConfig = {
741
+ internationalization: {
742
+ locales: ["en", "fr", "es"],
743
+ defaultLocale: "en",
744
+ },
745
+ routing: {
746
+ mode: "no-prefix",
747
+ storage: {
748
+ type: "sessionStorage",
749
+ name: "app-locale",
750
+ },
751
+ basePath: "/my-app",
752
+ },
753
+ };
754
+
755
+ export default config;
756
+ ```
757
+
758
+ **إعادة كتابة URL مخصص مع مسارات ديناميكية**:
759
+
760
+ ```typescript
761
+ // intlayer.config.ts
762
+ import { nextjsRewrite } from "intlayer/routing";
763
+
764
+ const config: IntlayerConfig = {
765
+ internationalization: {
766
+ locales: ["en", "fr"],
767
+ defaultLocale: "en",
768
+ },
769
+ routing: {
770
+ mode: "prefix-no-default", // استراتيجية التراجع للمسارات غير المعاد كتابتها
771
+ storage: "cookie",
772
+ rewrite: nextjsRewrite({
773
+ "/about": {
774
+ en: "/about",
775
+ fr: "/a-propos",
776
+ },
777
+ "/product/[slug]": {
778
+ en: "/product/[slug]",
779
+ fr: "/produit/[slug]",
780
+ },
781
+ "/blog/[category]/[id]": {
782
+ en: "/blog/[category]/[id]",
783
+ fr: "/journal/[category]/[id]",
784
+ },
785
+ }),
786
+ },
787
+ };
788
+
789
+ export default config;
790
+ ```
847
791
 
848
792
  ---
849
793
 
850
- ### تكوين النظام
794
+ ### تكوين المحتوى (Content Configuration)
851
795
 
852
- الإعدادات المتعلقة بالمسارات الداخلية ونتائج الإخراج لـ Intlayer. عادة ما تكون هذه الإعدادات داخلية ولا يجب تعديلها من قبل المستخدم.
796
+ الإعدادات المتعلقة بمعالجة المحتوى داخل التطبيق (أسماء المجلدات ، امتدادات الملفات ، والتكوينات المشتقة).
853
797
 
854
- #### الخصائص
798
+ | الحقل | النوع | الوصف | مثال | ملاحظة |
799
+ | ---------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------- |
800
+ | `watch` | `boolean` | يحدد ما إذا كان يجب على Intlayer مراقبة التغييرات في ملفات إعلان المحتوى لإعادة بناء القواميس. الافتراضي: `process.env.NODE_ENV === 'development'` | | |
801
+ | `fileExtensions` | `string[]` | امتدادات الملفات المستخدمة لمسح ملفات إعلان المحتوى. الافتراضي: `['.content.ts', '.content.js', '.content.mjs', '.content.cjs', '.content.json', '.content.json5', '.content.jsonc']` | `['.content.ts', '.content.js']` | |
802
+ | `contentDir` | `string[]` | مسارات المجلدات التي توجد بها ملفات إعلان المحتوى. الافتراضي: `['.']` | `['src/content']` | |
803
+ | `codeDir` | `string[]` | مسارات المجلدات التي توجد بها ملفات الكود المصدري لتطبيقك. الافتراضي: `['.']` | `['src']` | يستخدم لتحسين البناء وضمان تطبيق تحويل الكود وإعادة التحميل الحراري فقط على الملفات الضرورية. |
804
+ | `excludedPath` | `string[]` | المسارات المستبعدة من مسح المحتوى. الافتراضي: `['node_modules', '.intlayer', '.next', 'dist', 'build']` | `['src/styles']` | |
805
+ | `formatCommand` | `string` | الأمر الذي سيتم تشغيله لتنسيق ملفات المحتوى المنشأة حديثًا أو المحدثة. الافتراضي: `undefined` | `'npx prettier --write "{{file}}"'` | يستخدم أثناء استخراج المحتوى أو عبر المحرر المرئي. |
855
806
 
856
- - **baseDir**:
857
- - _النوع_: `string`
858
- - _الافتراضي_: `process.cwd()`
859
- - _الوصف_: الدليل الأساسي للمشروع.
860
- - _مثال_: `'/path/to/project'`
861
- - _ملاحظة_: يُستخدم هذا لحل جميع الدلائل المتعلقة بـ Intlayer.
807
+ ---
862
808
 
863
- ### تكوين القاموس
809
+ ### تكوين القاموس (Dictionary Configuration)
864
810
 
865
- الإعدادات التي تتحكم في عمليات القاموس، بما في ذلك سلوك التعبئة التلقائية وإنشاء المحتوى.
811
+ الإعدادات التي تتحكم في عمليات القواميس، بما في ذلك سلوك الملء التلقائي وإنشاء المحتوى.
866
812
 
867
813
  يخدم تكوين القاموس هذا غرضين رئيسيين:
868
814
 
869
- 1. **القيم الافتراضية**: تحديد القيم الافتراضية عند إنشاء ملفات إعلان المحتوى
870
- 2. **سلوك الاحتياطي**: توفير قيم احتياطية عندما لا تكون الحقول المحددة معرّفة، مما يسمح لك بتعريف سلوك عمليات القاموس بشكل عام
871
-
872
- لمزيد من المعلومات حول ملفات إعلان المحتوى وكيفية تطبيق قيم التكوين، راجع [وثائق ملف المحتوى](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/content_file.md).
873
-
874
- #### الخصائص
875
-
876
- - **fill**
877
- - **description**
878
- - **locale**
879
- - **location**
880
- - **importMode**:
881
- - _ملاحظة_: **Deprecated**: Use `dictionary.importMode` instead.
882
- - _النوع_: `'static' | 'dynamic' | 'fetch'`
883
- - _الافتراضي_: `'static'`
884
- - _الوصف_: Controls how dictionaries are imported.
885
- - _مثال_: `'dynamic'`
886
- - **priority**
887
- - **live**
888
- - **schema**
889
- - **title**
890
- - **tags**
891
- - **version**
815
+ 1. **القيم الافتراضية**: تحديد القيم الافتراضية عند إنشاء ملفات إعلان المحتوى.
816
+ 2. **سلوك البدائل (Fallback)**: توفير قيم بديلة عندما لا يتم تعريف حقول محددة، مما يسمح لك بتعريف سلوك عمليات القاموس بشكل عالمي.
817
+
818
+ لمزيد من المعلومات حول ملفات إعلان المحتوى وكيفية تطبيق قيم التكوين، راجع [توثيق ملفات المحتوى](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/content_file.md).
819
+
820
+ | الحقل | النوع | الوصف | مثال | ملاحظة |
821
+ | --------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
822
+ | `fill` | `boolean &#124; FilePathPattern &#124; Partial<Record<Locale, boolean &#124; FilePathPattern>>` | يتحكم في كيفية إنشاء ملفات إخراج الملء التلقائي (الترجمة بالذكاء الاصطناعي). الافتراضي: `true` | انظر المثال أدناه | `true`: المسار الافتراضي (نفس ملف المصدر). `false`: معطل. تنشئ قوالب السلسلة/الوظيفة ملفات لكل لغة. كائن لكل لغة: يتم تعيين كل لغة لنمطها الخاص؛ يؤدي `false` لتخطي تلك اللغة. يؤدي تضمين `{{locale}}` إلى بدء الإنشاء لكل لغة. الـ `fill` على مستوى القاموس له الأولوية دائماً على هذا التكوين العالمي. |
823
+ | `importMode` | `'static' &#124; 'dynamic' &#124; 'fetch'` | يتحكم في كيفية استيراد القواميس. الافتراضي: `'static'` | `'dynamic'` | `'static'`: يتم استيراده بشكل ثابت. `'dynamic'`: يتم استيراده بشكل ديناميكي عبر Suspense. `'fetch'`: يتم جلبه ديناميكيًا عبر واجهة برمجة تطبيقات Live Sync. لا يؤثر على `getIntlayer` أو `getDictionary` أو `useDictionary` وما إلى ذلك. |
824
+ | `location` | `'local' &#124; 'remote' &#124; 'hybrid' &#124; string` | مكان تخزين القواميس. الافتراضي: `'local'` | `'remote'` | `'local'`: نظام الملفات. `'remote'`: Intlayer CMS. `'hybrid'`: كلاهما. |
825
+ | `contentAutoTransformation` | `boolean` | يحدد ما إذا كان يجب تحويل ملفات المحتوى تلقائيًا (مثل من Markdown إلى HTML). الافتراضي: `false` | `true` | مفيد لمعالجة حقول Markdown عبر @intlayer/markdown. |
826
+
827
+ **مثال على `fill`**:
828
+
829
+ ```ts
830
+ dictionary: {
831
+ fill: {
832
+ en: '/locales/en/{{key}}.content.json',
833
+ fr: ({ key }) => `/locales/fr/${key}.content.json`,
834
+ es: false,
835
+ }
836
+ }
837
+ ```
838
+
839
+ ---
840
+
841
+ ### تكوين الذكاء الاصطناعي (AI Configuration)
842
+
843
+ يعرف الإعدادات لميزات Intlayer التي تعمل بالذكاء الاصطناعي ، مثل بناء الترجمة.
844
+
845
+ | الحقل | النوع | الوصف | مثال | ملاحظة |
846
+ | -------------------- | ---------------------- | ------------------------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------------------------------- |
847
+ | `provider` | `string` | مزود الذكاء الاصطناعي المراد استخدامه. | `'openai'`، `'anthropic'`، `'googlevertex'` | |
848
+ | `model` | `string` | نموذج الذكاء الاصطناعي المراد استخدامه. | `'gpt-4o'`، `'claude-3-5-sonnet-20240620'` | |
849
+ | `apiKey` | `string` | مفتاح واجهة برمجة التطبيقات للمزود المختار. | `process.env.OPENAI_API_KEY` | |
850
+ | `applicationContext` | `string` | سياق إضافي حول تطبيقك لتحسين دقة ترجمة الذكاء الاصطناعي. | `'منصة تعليمية للأطفال.'` | |
851
+ | `baseURL` | `string` | عنوان URL اختياري للمسار الأساسي لمكالمات واجهة برمجة التطبيقات. | | مفيد إذا كنت تستخدم بروكسي أو نشر ذكاء اصطناعي محلي. |
852
+ | `dataSerialization` | `'json' &#124; 'toon'` | يحدد كيفية إرسال البيانات إلى الذكاء الاصطناعي. الافتراضي: `'json'` | `'json'` | `'json'`: أكثر قوة ودقة. `'toon'`: يستهلك توكنات أقل ولكنه قد يكون أقل استقرارًا. |
853
+
854
+ ---
855
+
856
+ ### تكوين البناء (Build Configuration)
857
+
858
+ إعدادات عملية بناء وتحسين Intlayer.
859
+
860
+ | الحقل | النوع | الوصف | مثال | ملاحظة |
861
+ | -------------- | ------------------------ | ------------------------------------------------------------------------------------------------ | ---- | ------ |
862
+ | `mode` | `'auto' &#124; 'manual'` | يحدد ما إذا كان يجب تشغيل Intlayer تلقائيًا أثناء خطوات ما قبل بناء التطبيق. الافتراضي: `'auto'` | | |
863
+ | `optimize` | `boolean` | يحدد ما إذا كان يجب تحسين القواميس المجمعة لوقت التشغيل. الافتراضي: `true` في الإنتاج | | |
864
+ | `outputFormat` | `('cjs' &#124; 'esm')[]` | تنسيق الإخراج لملفات القاموس المنشأة. الافتراضي: `['cjs', 'esm']` | | |
865
+ | `checkTypes` | `boolean` | يحدد ما إذا كان يجب على Intlayer التحقق من الأنواع في الملفات المنشأة. الافتراضي: `false` | | |
866
+
867
+ ---
868
+
869
+ ### تكوين النظام (System Configuration)
870
+
871
+ هذه الإعدادات مخصصة لحالات الاستخدام المتقدمة والتكوين الداخلي لـ Intlayer.
872
+
873
+ | الحقل | النوع | الوصف | الافتراضي |
874
+ | ------------------------- | -------- | ---------------------------- | --------------------------------- |
875
+ | `dictionariesDir` | `string` | مجلد القواميس المجمعة. | `'.intlayer/dictionary'` |
876
+ | `moduleAugmentationDir` | `string` | مجلد زيادة وحدات TypeScript. | `'.intlayer/types'` |
877
+ | `unmergedDictionariesDir` | `string` | مجلد القواميس غير المدمجة. | `'.intlayer/unmerged_dictionary'` |
878
+ | `typesDir` | `string` | مجلد الأنواع المنشأة. | `'.intlayer/types'` |
879
+ | `mainDir` | `string` | مجلد ملف Intlayer الرئيسي. | `'.intlayer/main'` |
880
+ | `configDir` | `string` | مجلد ملفات التكوين المجمعة. | `'.intlayer/config'` |
881
+ | `cacheDir` | `string` | مجلد ملفات التخزين المؤقت. | `'.intlayer/cache'` |
892
882
 
893
883
  ---
894
884
 
895
- ### إعدادات المسجل (Logger)
896
-
897
- الإعدادات التي تتحكم في المسجل، بما في ذلك البادئة التي تُستخدم.
898
-
899
- #### الخصائص
900
-
901
- - **mode**:
902
- - _النوع_: `string`
903
- - _الافتراضي_: `default`
904
- - _الوصف_: يشير إلى وضع المسجل.
905
- - _الخيارات_: `default`، `verbose`، `disabled`
906
- - _مثال_: `default`
907
- - _ملاحظة_: وضع المسجل. الوضع المفصل (verbose) يسجل معلومات أكثر، ويمكن استخدامه لأغراض التصحيح. الوضع المعطل (disabled) يعطل المسجل.
908
-
909
- - **prefix**:
910
- - _النوع_: `string`
911
- - _الافتراضي_: `'[intlayer] '`
912
- - _الوصف_: بادئة المسجل.
913
- - _مثال_: `'[my custom prefix] '`
914
- - _ملاحظة_: بادئة المسجل.
915
-
916
- ### تكوين الذكاء الاصطناعي
917
-
918
- الإعدادات التي تتحكم في ميزات الذكاء الاصطناعي في Intlayer، بما في ذلك المزود، النموذج، ومفتاح API.
919
-
920
- هذا التكوين اختياري إذا كنت مسجلاً في [لوحة تحكم Intlayer](https://app.intlayer.org/project) باستخدام مفتاح وصول. ستدير Intlayer تلقائيًا الحل الأكثر كفاءة وفعالية من حيث التكلفة لاحتياجاتك في الذكاء الاصطناعي. يضمن استخدام الخيارات الافتراضية صيانة أفضل على المدى الطويل حيث تقوم Intlayer بالتحديث المستمر لاستخدام النماذج الأكثر ملاءمة.
921
-
922
- إذا كنت تفضل استخدام مفتاح API الخاص بك أو نموذج معين، يمكنك تعريف تكوين الذكاء الاصطناعي المخصص الخاص بك.
923
- سيتم استخدام تكوين الذكاء الاصطناعي هذا على مستوى بيئة Intlayer الخاصة بك بشكل عام. ستستخدم أوامر CLI هذه الإعدادات كقيم افتراضية للأوامر (مثل `fill`)، وكذلك SDK، والمحرر المرئي، ونظام إدارة المحتوى (CMS). يمكنك تجاوز هذه القيم الافتراضية لحالات استخدام محددة باستخدام معلمات الأوامر.
924
-
925
- يدعم Intlayer عدة مزودي ذكاء اصطناعي لزيادة المرونة والاختيار. المزودون المدعومون حاليًا هم:
926
-
927
- - **OpenAI** (الافتراضي)
928
- - **Anthropic Claude**
929
- - **Mistral AI**
930
- - **DeepSeek**
931
- - **Google Gemini**
932
- - **Meta Llama**
933
- - **Ollama**
934
- - **OpenRouter**
935
- - **Alibaba Cloud**
936
- - **Fireworks**
937
- - **Hugging Face**
938
- - **Groq**
939
- - **Amazon Bedrock**
940
- - **Google AI Studio**
941
- - **Google Vertex**
942
- - **Together.ai**
943
- - **ollama**
944
-
945
- #### الخصائص
946
-
947
- - **provider**:
948
- - _النوع_: `string`
949
- - _الافتراضي_: `'openai'`
950
- - _الوصف_: المزود المستخدم لميزات الذكاء الاصطناعي في Intlayer.
951
- - _الخيارات_:`'openai'`, `'anthropic'`, `'mistral'`, `'deepseek'`, `'gemini'`, `'ollama'`, `'openrouter'`, `'alibaba'`, `'fireworks'`, `'groq'`, `'huggingface'`, `'bedrock'`, `'googleaistudio'`, `'googlevertex'`, `'togetherai'`
952
- - _مثال_: `'anthropic'`
953
- - _ملاحظة_: قد تتطلب مزودات مختلفة مفاتيح API مختلفة ولها نماذج تسعير مختلفة.
954
-
955
- - **model**:
956
- - _النوع_: `string`
957
- - _الافتراضي_: لا شيء
958
- - _الوصف_: النموذج المستخدم لميزات الذكاء الاصطناعي في Intlayer.
959
- - _مثال_: `'gpt-4o-2024-11-20'`
960
- - _ملاحظة_: يختلف النموذج المحدد المستخدم حسب المزود.
961
-
962
- - **temperature**:
963
- - _النوع_: `number`
964
- - _الافتراضي_: لا شيء
965
- - _الوصف_: تتحكم درجة الحرارة في عشوائية استجابات الذكاء الاصطناعي.
966
- - _مثال_: `0.1`
967
- - _ملاحظة_: درجة حرارة أعلى تجعل الذكاء الاصطناعي أكثر إبداعًا وأقل قابلية للتنبؤ.
968
-
969
- - **apiKey**:
970
- - _النوع_: `string`
971
- - _الافتراضي_: لا شيء
972
- - _الوصف_: مفتاح API الخاص بك للمزود المحدد.
973
- - _مثال_: `process.env.OPENAI_API_KEY`
974
- - _ملاحظة_: مهم: يجب الحفاظ على سرية مفاتيح API وعدم مشاركتها علنًا. يرجى التأكد من الاحتفاظ بها في مكان آمن، مثل متغيرات البيئة.
975
-
976
- - **applicationContext**:
977
- - _النوع_: `string`
978
- - _الافتراضي_: لا شيء
979
- - _الوصف_: يوفر سياقًا إضافيًا حول تطبيقك لنموذج الذكاء الاصطناعي، مما يساعده على توليد ترجمات أكثر دقة وملاءمة للسياق. يمكن أن يشمل ذلك معلومات حول مجال تطبيقك، الجمهور المستهدف، النغمة، أو المصطلحات الخاصة.
980
-
981
- - **baseURL**:
982
- - _النوع_: `string`
983
- - _الافتراضي_: لا شيء
984
- - _الوصف_: عنوان URL الأساسي لواجهة برمجة تطبيقات الذكاء الاصطناعي.
985
- - _مثال_: `'https://api.openai.com/v1'`
986
- - _ملاحظة_: يمكن استخدامه للإشارة إلى نقطة نهاية واجهة برمجة تطبيقات الذكاء الاصطناعي المحلية أو المخصصة.
987
-
988
- - **dataSerialization**:
989
- - _النوع_: `'json' | 'toon'`
990
- - _الافتراضي_: `'json'`
991
- - _الوصف_: تنسيق تسلسل البيانات لاستخدامه في ميزات الذكاء الاصطناعي لـ Intlayer.
992
- - _مثال_: `'toon'`
993
- - _ملاحظة_: `json`: قياسي وموثوق؛ يستهلك رموزًا أكثر. `toon`: رموز أقل، ولكنه أقل اتساقًا من JSON.
994
-
995
- ### إعدادات البناء
996
-
997
- الإعدادات التي تتحكم في كيفية تحسين Intlayer وبناء التدويل في تطبيقك.
998
-
999
- تنطبق خيارات البناء على الإضافات `@intlayer/babel` و `@intlayer/swc`.
1000
-
1001
- > في وضع التطوير، يستخدم Intlayer الاستيراد الثابت للقواميس لتبسيط تجربة التطوير.
1002
-
1003
- > عند التهيئة للتحسين، سيقوم Intlayer باستبدال استدعاءات القواميس لتحسين تقسيم الحزم، بحيث يقوم الحزمة النهائية باستيراد القواميس التي يتم استخدامها فقط.
1004
-
1005
- #### الخصائص
1006
-
1007
- - **mode**:
1008
- - _النوع_: `'auto' | 'manual'`
1009
- - _الافتراضي_: `'auto'`
1010
- - _الوصف_: يتحكم في وضع البناء.
1011
- - _المثال_: `'manual'`
1012
- - _ملاحظة_: إذا كان 'auto'، سيتم تفعيل البناء تلقائيًا عند بناء التطبيق.
1013
- - _ملاحظة_: إذا كان 'manual'، سيتم تعيين البناء فقط عند تنفيذ أمر البناء.
1014
- - _ملاحظة_: يمكن استخدامه لتعطيل بناء القواميس، على سبيل المثال عندما يجب تجنب التنفيذ في بيئة Node.js.
1015
-
1016
- - **checkTypes**:
1017
- - _النوع_: `boolean`
1018
- - _الافتراضي_: `false`
1019
- - _الوصف_: يشير إلى ما إذا كان البناء يجب أن يتحقق من أنواع TypeScript ويسجل الأخطاء.
1020
- - _ملاحظة_: هذا يمكن أن يبطئ عملية البناء.
1021
-
1022
- - **optimize**:
1023
- - _النوع_: `boolean`
1024
- - _الافتراضي_: `process.env.NODE_ENV === 'production'`
1025
- - _الوصف_: يتحكم فيما إذا كان يجب تحسين عملية البناء.
1026
- - _المثال_: `true`
1027
- - _ملاحظة_: عند التفعيل، سيقوم Intlayer باستبدال جميع استدعاءات القواميس لتحسين تقسيم الحزم. بهذه الطريقة، ستقوم الحزمة النهائية باستيراد القواميس المستخدمة فقط. ستبقى جميع الاستيرادات استيرادًا ثابتًا لتجنب المعالجة غير المتزامنة عند تحميل القواميس.
1028
- - _ملاحظة_: سيقوم Intlayer باستبدال جميع استدعاءات `useIntlayer` بالنمط المحدد بواسطة خيار `importMode` و`getIntlayer` بـ `getDictionary`.
1029
- - _ملاحظة_: يعتمد هذا الخيار على الإضافات `@intlayer/babel` و `@intlayer/swc`.
1030
- - _ملاحظة_: تأكد من إعلان جميع المفاتيح بشكل ثابت في استدعاءات `useIntlayer`، على سبيل المثال `useIntlayer('navbar')`.
1031
-
1032
- - **outputFormat**:
1033
- - _النوع_: `'esm' | 'cjs'`
1034
- - _الافتراضي_: `'esm'`
1035
- - _الوصف_: يتحكم في تنسيق إخراج القواميس.
1036
- - _المثال_: `'cjs'`
1037
- - _ملاحظة_: تنسيق إخراج القواميس.
1038
-
1039
- - **traversePattern**:
1040
- - _النوع_: `string[]`
1041
- - _الافتراضي_: `['**\/*.{js,ts,mjs,cjs,jsx,tsx}', '!**\/node_modules/**']`
1042
- - _الوصف_: أنماط تحدد الملفات التي يجب استعراضها أثناء التحسين.
1043
- - _مثال_: `['src/**\/*.{ts,tsx}', '../ui-library/**\/*.{ts,tsx}', '!**/node_modules/**']`
1044
- - _ملاحظة_: استخدم هذا لتحديد التحسين لملفات الكود ذات الصلة وتحسين أداء البناء.
1045
- - _ملاحظة_: سيتم تجاهل هذا الخيار إذا تم تعطيل `optimize`.
1046
- - _ملاحظة_: استخدم نمط glob.
885
+ ### تكوين المترجم (Compiler Configuration)
886
+
887
+ إعدادات مترجم Intlayer (`intlayer compiler`).
888
+
889
+ | الحقل | النوع | الوصف | الافتراضي |
890
+ | --------------------- | ------------------------ | -------------------------------------------------------------------- | --------- |
891
+ | `enabled` | `boolean` | يحدد ما إذا كان المترجم نشطًا. | `false` |
892
+ | `output` | `string &#124; Function` | مسار الإخراج للقواميس المستخرجة. | |
893
+ | `saveComponents` | `boolean` | يحدد ما إذا كان يجب استبدال ملفات المصدر الأصلية بالإصدارات المحولة. | `false` |
894
+ | `noMetadata` | `boolean` | إذا كان `true` ، فلن يدرج المترجم بيانات وصفية في الملفات المنشأة. | `false` |
895
+ | `dictionaryKeyPrefix` | `string` | بادئة مفتاح قاموس اختيارية. | `''` |
1047
896
 
1048
897
  ---
1049
898
 
1050
- ### تكوين المترجم
1051
-
1052
- الإعدادات التي تتحكم في مترجم Intlayer، الذي يستخرج القواميس مباشرة من مكوناتك.
1053
-
1054
- #### الخصائص
1055
-
1056
- - **enabled**:
1057
- - _النوع_: `boolean | 'build-only'`
1058
- - _الافتراضي_: `true`
1059
- - _الوصف_: يشير إلى ما إذا كان يجب تمكين المترجم لاستخراج القواميس.
1060
- - _المثال_: `'build-only'`
1061
- - _ملاحظة_: تعيينه إلى `'build-only'` سيؤدي إلى تخطي المترجم أثناء وضع التطوير لتسريع أوقات البناء. سيعمل فقط مع أوامر البناء.
1062
-
1063
- - **dictionaryKeyPrefix**:
1064
- - _النوع_: `string`
1065
- - _الافتراضي_: `''`
1066
- - _الوصف_: بادئة لمفاتيح القاموس المستخرجة.
1067
- - _المثال_: `'my-key-'`
1068
- - _ملاحظة_: عند استخراج القواميس، يتم إنشاء المفتاح بناءً على اسم الملف. يتم إضافة هذه البادئة إلى المفتاح الذي تم إنشاؤه لمنع التضارب.
1069
-
1070
- - **saveComponents**:
1071
- - _النوع_: `boolean`
1072
- - _الافتراضي_: `false`
1073
- - _الوصف_: يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها.
1074
- - _ملاحظة_: إذا كان صحيحًا، سيقوم المترجم باستبدال الملفات الأصلية بالملفات المحولة. بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
1075
-
1076
- - **transformPattern**:
1077
- - _النوع_: `string | string[]`
1078
- - _الافتراضي_: `['**/*.{ts,tsx,jsx,js,cjs,mjs,svelte,vue}', '!**/node_modules/**']`
1079
- - _الوصف_: الأنماط التي تحدد الملفات التي يجب استعراضها أثناء التحسين.
1080
- - _المثال_: `['src/**/*.{ts,tsx}', '!**/node_modules/**']`
1081
- - _ملاحظة_: استخدم هذا لتحديد التحسين لملفات الكود ذات الصلة وتحسين أداء البناء.
1082
-
1083
- - **excludePattern**:
1084
- - _النوع_: `string | string[]`
1085
- - _الافتراضي_: `['**/node_modules/**']`
1086
- - _الوصف_: الأنماط التي تحدد الملفات التي يجب استبعادها أثناء التحسين.
1087
- - _المثال_: `['**/node_modules/**', '!**/node_modules/react/**']`
1088
-
1089
- - **output**:
1090
- - _النوع_: `FilePathPattern`
1091
- - _الافتراضي_: `undefined`
1092
- - _الوصف_: يحدد مسار ملفات الإخراج. يستبدل `outputDir`. يدعم المتغيرات الديناميكية عبر قالب سلسلة أو دالة. المتغيرات المدعومة: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}`, `{{componentDirPath}}`.
1093
- - _ملاحظة_: يتم حل المسارات التي تبدأ بـ `./` بالنسبة لدليل المكون. يتم حل المسارات التي تبدأ بـ `/` بالنسبة لجذر المشروع (`baseDir`).
1094
- - _ملاحظة_: تضمين المتغير `{{locale}}` في المسار سيمكن من توليد قواميس منفصلة حسب اللغة.
1095
- - _مثال_:
1096
- - **إنشاء ملفات متعددة اللغات بجانب المكون**:
1097
- - سلسلة: `'./{{fileName}}{{extension}}'`
1098
- - دالة: `({ fileName, extension }) => \`./${fileName}${extension}\``
1099
-
1100
- - **إخراج ملفات JSON مركزية حسب اللغة**:
1101
- - سلسلة: `'/locales/{{locale}}/{{key}}.content.json'`
1102
- - دالة: `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``
1103
-
1104
- - **noMetadata**:
1105
- - _النوع_: `boolean`
1106
- - _الافتراضي_: `false`
1107
- - _الوصف_: يشير إلى ما إذا كان سيتم حفظ البيانات الوصفية في الملف. إذا كان صحيحا، فلن يحفظ المجمّع البيانات الوصفية للقواميس (المفتاح، غلاف المحتوى). مفيد لمخرجات JSON i18next أو ICU MessageFormat لكل لغة.
1108
- - _ملاحظة_: مفيد إذا تم استخدامه مع إضافة `loadJSON`.
1109
- - _مثال_:
1110
- إذا كان `true`:
1111
- ```json
1112
- {
1113
- "key": "value"
1114
- }
1115
- ```
1116
- إذا كان `false`:
1117
- ```json
1118
- {
1119
- "key": "value",
1120
- "content": {
1121
- "key": "value"
1122
- }
1123
- }
1124
- ```
899
+ ### تكوين المسجل (Logger Configuration)
900
+
901
+ إعدادات لتخصيص إخراج سجل Intlayer.
902
+
903
+ | الحقل | النوع | الوصف | الافتراضي |
904
+ | -------- | ---------------------------------------------- | --------------------- | -------------- |
905
+ | `mode` | `'default' &#124; 'verbose' &#124; 'disabled'` | وضع تسجيل البيانات. | `'default'` |
906
+ | `prefix` | `string` | البادئة لرسائل السجل. | `'[intlayer]'` |
907
+
908
+ ---
909
+
910
+ ### المخططات المخصصة (Custom Schemas)
911
+
912
+ | الحقل | النوع | الوصف |
913
+ | --------- | --------------------------- | ------------------------------------------------- |
914
+ | `schemas` | `Record<string, ZodSchema>` | يسمح لك بتعريف مخططات Zod للتحقق من بنية قواميسك. |
915
+
916
+ ---
917
+
918
+ ### المكونات الإضافية (Plugins)
919
+
920
+ | الحقل | النوع | الوصف |
921
+ | --------- | ------------------ | ---------------------------------------------- |
922
+ | `plugins` | `IntlayerPlugin[]` | قائمة مكونات Intlayer الإضافية المراد تفعيلها. |