@intlayer/docs 8.4.6 → 8.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/docs/en/configuration.md +115 -137
- package/docs/es/configuration.md +14 -6
- package/docs/fr/configuration.md +14 -6
- package/package.json +6 -6
- package/docs/ar/configuration.md +0 -922
- package/docs/bn/configuration.md +0 -922
- package/docs/de/configuration.md +0 -922
- package/docs/en-GB/configuration.md +0 -922
- package/docs/hi/configuration.md +0 -922
- package/docs/id/configuration.md +0 -922
- package/docs/it/configuration.md +0 -923
- package/docs/ja/configuration.md +0 -922
- package/docs/ko/configuration.md +0 -922
- package/docs/pl/configuration.md +0 -922
- package/docs/pt/configuration.md +0 -922
- package/docs/ru/configuration.md +0 -943
- package/docs/tr/configuration.md +0 -922
- package/docs/uk/configuration.md +0 -922
- package/docs/ur/configuration.md +0 -922
- package/docs/vi/configuration.md +0 -922
- package/docs/zh/configuration.md +0 -922
package/docs/ar/configuration.md
DELETED
|
@@ -1,922 +0,0 @@
|
|
|
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: تحديث خيارات المترجم (compiler)، وإضافة دعم لـ '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 بتخصيص جوانب مختلفة من البرنامج المساعد، مثل التدويل (internationalization)، والبرامج الوسيطة (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
|
-
* تكوين إعدادات التدويل.
|
|
136
|
-
*/
|
|
137
|
-
internationalization: {
|
|
138
|
-
/**
|
|
139
|
-
* قائمة اللغات (locales) المدعومة في التطبيق.
|
|
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.
|
|
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
|
-
* المسار الأساسي لعناوين URL للتطبيق.
|
|
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
|
-
* تكوين المحرر المرئي (Visual Editor).
|
|
285
|
-
*/
|
|
286
|
-
editor: {
|
|
287
|
-
/**
|
|
288
|
-
* ما إذا كان المحرر المرئي ممكناً.
|
|
289
|
-
* الافتراضي: false
|
|
290
|
-
*/
|
|
291
|
-
enabled: true,
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* عنوان URL لتطبيقك للتحقق من المصدر (origin validation).
|
|
295
|
-
* الافتراضي: ""
|
|
296
|
-
*/
|
|
297
|
-
applicationURL: "http://localhost:3000",
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* منفذ خادم المحرر المحلي.
|
|
301
|
-
* الافتراضي: 8000
|
|
302
|
-
*/
|
|
303
|
-
port: 8000,
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* عنوان URL العام للمحرر.
|
|
307
|
-
* الافتراضي: "http://localhost:8000"
|
|
308
|
-
*/
|
|
309
|
-
editorURL: "http://localhost:8000",
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* عنوان URL لـ Intlayer CMS.
|
|
313
|
-
* الافتراضي: "https://app.intlayer.org"
|
|
314
|
-
*/
|
|
315
|
-
cmsURL: "https://app.intlayer.org",
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* عنوان URL لواجهة برمجة تطبيقات الخلفية (Backend 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
|
-
* مفتاح واجهة برمجة تطبيقات المزود.
|
|
348
|
-
*/
|
|
349
|
-
apiKey: process.env.OPENAI_API_KEY,
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* سياق عالمي لتوجيه الذكاء الاصطناعي عند بناء الترجمات.
|
|
353
|
-
*/
|
|
354
|
-
applicationContext: "هذا تطبيق لحجز الرحلات.",
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* عنوان URL للمسار الأساسي لواجهة برمجة تطبيقات الذكاء الاصطناعي.
|
|
358
|
-
*/
|
|
359
|
-
baseURL: "http://localhost:3000",
|
|
360
|
-
|
|
361
|
-
/**
|
|
362
|
-
* تسلسل البيانات (Data Serialization)
|
|
363
|
-
*
|
|
364
|
-
* الخيارات:
|
|
365
|
-
* - "json": افتراضي، قوي؛ يستهلك المزيد من التوكنات.
|
|
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
|
-
* المجلد لزيادة وحدات TypeScript (module augmentation).
|
|
435
|
-
*/
|
|
436
|
-
moduleAugmentationDir: ".intlayer/types",
|
|
437
|
-
|
|
438
|
-
/**
|
|
439
|
-
* المجلد لتخزين القواميس غير المدمجة (unmerged).
|
|
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
|
-
* المجلد الذي يتم فيه تخزين ملفات التخزين المؤقت.
|
|
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
|
-
* إدراج المحتوى فقط في الملف المنشأ. مفيد لإخراج JSON لكل لغة لـ i18next أو ICU MessageFormat.
|
|
527
|
-
*/
|
|
528
|
-
noMetadata: false,
|
|
529
|
-
|
|
530
|
-
/**
|
|
531
|
-
* بادئة مفتاح القاموس
|
|
532
|
-
*/
|
|
533
|
-
dictionaryKeyPrefix: "", // أضف بادئة اختيارية لمفاتيح القواميس المستخرجة
|
|
534
|
-
},
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* مخططات مخصصة (Schemas) للتحقق من صحة محتوى القاموس.
|
|
538
|
-
*/
|
|
539
|
-
schemas: {
|
|
540
|
-
"my-schema": z.object({
|
|
541
|
-
title: z.string(),
|
|
542
|
-
}),
|
|
543
|
-
},
|
|
544
|
-
|
|
545
|
-
/**
|
|
546
|
-
* تكوين المكونات الإضافية (Plugins).
|
|
547
|
-
*/
|
|
548
|
-
plugins: [],
|
|
549
|
-
};
|
|
550
|
-
|
|
551
|
-
export default config;
|
|
552
|
-
````
|
|
553
|
-
|
|
554
|
-
---
|
|
555
|
-
|
|
556
|
-
## مرجع التكوين (Configuration Reference)
|
|
557
|
-
|
|
558
|
-
تصف الأقسام التالية خيارات التكوين المختلفة المتاحة في Intlayer.
|
|
559
|
-
|
|
560
|
-
---
|
|
561
|
-
|
|
562
|
-
### تكوين التدويل (Internationalization Configuration)
|
|
563
|
-
|
|
564
|
-
يعرف الإعدادات المتعلقة بالتدويل، بما في ذلك اللغات المتاحة واللغة الافتراضية للتطبيق.
|
|
565
|
-
|
|
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 أو ملف تعريف الارتباط أو الرأس. |
|
|
572
|
-
|
|
573
|
-
---
|
|
574
|
-
|
|
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 | undefined` | يسمح لحزم intlayer بالمصادقة مع الخلفية باستخدام oAuth2. للحصول على توكن وصول، انتقل إلى [intlayer.org/project](https://app.intlayer.org/project). الافتراضي: `undefined` | | ابقِهِ سريًا؛ قم بتخزينه في متغيرات البيئة. |
|
|
588
|
-
| `clientSecret` | `string | undefined` | يسمح لحزم intlayer بالمصادقة مع الخلفية باستخدام oAuth2. للحصول على توكن وصول، انتقل إلى [intlayer.org/project](https://app.intlayer.org/project). الافتراضي: `undefined` | | ابقِهِ سريًا؛ قم بتخزينه في متغيرات البيئة. |
|
|
589
|
-
| `dictionaryPriorityStrategy` | `string` | استراتيجية تحديد أولويات القواميس عند وجود قواميس محلية وعن بُعد. الافتراضي: `'local_first'` | `'distant_first'` | `'distant_first'`: يعطي الأولوية للبعيد على المحلي. `'local_first'`: يعطي الأولوية للمحلي على البعيد. |
|
|
590
|
-
| `liveSync` | `boolean` | يحدد ما إذا كان يجب على خادم التطبيق إعادة تحميل المحتوى حرارياً عند اكتشاف تغيير في CMS / المحرر المرئي / الخلفية. الافتراضي: `true` | `true` | عند إضافة/تحديث قاموس، يقوم التطبيق بتحديث محتوى الصفحة. يقوم المزامنة الحية (Live sync) بالاستعانة بمصادر خارجية للمحتوى لخادم آخر، مما قد يؤثر قليلاً على الأداء. يوصى باستضافة كليهما على نفس الجهاز. |
|
|
591
|
-
| `liveSyncPort` | `number` | منفذ خادم المزامنة الحية. الافتراضي: `4000` | `4000` | |
|
|
592
|
-
| `liveSyncURL` | `string` | عنوان URL لخادم المزامنة الحية. الافتراضي: `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | يشير إلى localhost بشكل افتراضي؛ يمكن تغييره إلى خادم مزامنة حية بعيد. |
|
|
593
|
-
|
|
594
|
-
### تكوين التوجيه (Routing Configuration)
|
|
595
|
-
|
|
596
|
-
الإعدادات التي تتحكم في سلوك التوجيه، بما في ذلك بنية URL، وتخزين اللغات، ومعالجة البرامج الوسيطة.
|
|
597
|
-
|
|
598
|
-
| الحقل | النوع | الوصف | مثال | ملاحظة |
|
|
599
|
-
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
600
|
-
| `mode` | `'prefix-no-default' | 'prefix-all' | 'no-prefix' | '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 | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | 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' | 'lax' | 'none'` | سياسة SameSite. |
|
|
648
|
-
| `expires` | `Date | number` | تاريخ انتهاء الصلاحية أو عدد الأيام. الافتراضي: `undefined` |
|
|
649
|
-
|
|
650
|
-
#### سمات تخزين اللغة (Locale Storage Attributes)
|
|
651
|
-
|
|
652
|
-
عند استخدام localStorage أو sessionStorage:
|
|
653
|
-
|
|
654
|
-
| الحقل | النوع | الوصف |
|
|
655
|
-
| ------ | ---------------------------------------- | ------------------------------------------------- |
|
|
656
|
-
| `type` | `'localStorage' | '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
|
-
```
|
|
791
|
-
|
|
792
|
-
---
|
|
793
|
-
|
|
794
|
-
### تكوين المحتوى (Content Configuration)
|
|
795
|
-
|
|
796
|
-
الإعدادات المتعلقة بمعالجة المحتوى داخل التطبيق (أسماء المجلدات ، امتدادات الملفات ، والتكوينات المشتقة).
|
|
797
|
-
|
|
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}}"'` | يستخدم أثناء استخراج المحتوى أو عبر المحرر المرئي. |
|
|
806
|
-
|
|
807
|
-
---
|
|
808
|
-
|
|
809
|
-
### تكوين القاموس (Dictionary Configuration)
|
|
810
|
-
|
|
811
|
-
الإعدادات التي تتحكم في عمليات القواميس، بما في ذلك سلوك الملء التلقائي وإنشاء المحتوى.
|
|
812
|
-
|
|
813
|
-
يخدم تكوين القاموس هذا غرضين رئيسيين:
|
|
814
|
-
|
|
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 | FilePathPattern | Partial<Record<Locale, boolean | FilePathPattern>>` | يتحكم في كيفية إنشاء ملفات إخراج الملء التلقائي (الترجمة بالذكاء الاصطناعي). الافتراضي: `true` | انظر المثال أدناه | `true`: المسار الافتراضي (نفس ملف المصدر). `false`: معطل. تنشئ قوالب السلسلة/الوظيفة ملفات لكل لغة. كائن لكل لغة: يتم تعيين كل لغة لنمطها الخاص؛ يؤدي `false` لتخطي تلك اللغة. يؤدي تضمين `{{locale}}` إلى بدء الإنشاء لكل لغة. الـ `fill` على مستوى القاموس له الأولوية دائماً على هذا التكوين العالمي. |
|
|
823
|
-
| `importMode` | `'static' | 'dynamic' | 'fetch'` | يتحكم في كيفية استيراد القواميس. الافتراضي: `'static'` | `'dynamic'` | `'static'`: يتم استيراده بشكل ثابت. `'dynamic'`: يتم استيراده بشكل ديناميكي عبر Suspense. `'fetch'`: يتم جلبه ديناميكيًا عبر واجهة برمجة تطبيقات Live Sync. لا يؤثر على `getIntlayer` أو `getDictionary` أو `useDictionary` وما إلى ذلك. |
|
|
824
|
-
| `location` | `'local' | 'remote' | 'hybrid' | string` | مكان تخزين القواميس. الافتراضي: `'local'` | `'remote'` | `'local'`: نظام الملفات. `'remote'`: Intlayer CMS. `'hybrid'`: كلاهما. |
|
|
825
|
-
| `contentAutoTransformation` | `boolean` | يحدد ما إذا كان يجب تحويل ملفات المحتوى تلقائيًا (مثل من Markdown إلى HTML). الافتراضي: `false` | `true` | مفيد لمعالجة حقول Markdown عبر @intlayer/markdown. |
|
|
826
|
-
|
|
827
|
-
**مثال على `fill`**:
|
|
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' | 'toon'` | يحدد كيفية إرسال البيانات إلى الذكاء الاصطناعي. الافتراضي: `'json'` | `'json'` | `'json'`: أكثر قوة ودقة. `'toon'`: يستهلك توكنات أقل ولكنه قد يكون أقل استقرارًا. |
|
|
853
|
-
|
|
854
|
-
---
|
|
855
|
-
|
|
856
|
-
### تكوين البناء (Build Configuration)
|
|
857
|
-
|
|
858
|
-
إعدادات عملية بناء وتحسين Intlayer.
|
|
859
|
-
|
|
860
|
-
| الحقل | النوع | الوصف | مثال | ملاحظة |
|
|
861
|
-
| -------------- | ------------------------ | ------------------------------------------------------------------------------------------------ | ---- | ------ |
|
|
862
|
-
| `mode` | `'auto' | 'manual'` | يحدد ما إذا كان يجب تشغيل Intlayer تلقائيًا أثناء خطوات ما قبل بناء التطبيق. الافتراضي: `'auto'` | | |
|
|
863
|
-
| `optimize` | `boolean` | يحدد ما إذا كان يجب تحسين القواميس المجمعة لوقت التشغيل. الافتراضي: `true` في الإنتاج | | |
|
|
864
|
-
| `outputFormat` | `('cjs' | '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'` |
|
|
882
|
-
|
|
883
|
-
---
|
|
884
|
-
|
|
885
|
-
### تكوين المترجم (Compiler Configuration)
|
|
886
|
-
|
|
887
|
-
إعدادات مترجم Intlayer (`intlayer compiler`).
|
|
888
|
-
|
|
889
|
-
| الحقل | النوع | الوصف | الافتراضي |
|
|
890
|
-
| --------------------- | ------------------------ | -------------------------------------------------------------------- | --------- |
|
|
891
|
-
| `enabled` | `boolean` | يحدد ما إذا كان المترجم نشطًا. | `false` |
|
|
892
|
-
| `output` | `string | Function` | مسار الإخراج للقواميس المستخرجة. | |
|
|
893
|
-
| `saveComponents` | `boolean` | يحدد ما إذا كان يجب استبدال ملفات المصدر الأصلية بالإصدارات المحولة. | `false` |
|
|
894
|
-
| `noMetadata` | `boolean` | إذا كان `true` ، فلن يدرج المترجم بيانات وصفية في الملفات المنشأة. | `false` |
|
|
895
|
-
| `dictionaryKeyPrefix` | `string` | بادئة مفتاح قاموس اختيارية. | `''` |
|
|
896
|
-
|
|
897
|
-
---
|
|
898
|
-
|
|
899
|
-
### تكوين المسجل (Logger Configuration)
|
|
900
|
-
|
|
901
|
-
إعدادات لتخصيص إخراج سجل Intlayer.
|
|
902
|
-
|
|
903
|
-
| الحقل | النوع | الوصف | الافتراضي |
|
|
904
|
-
| -------- | ---------------------------------------------- | --------------------- | -------------- |
|
|
905
|
-
| `mode` | `'default' | 'verbose' | '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 الإضافية المراد تفعيلها. |
|