@intlayer/docs 5.7.2 → 5.7.3

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 +82 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +82 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +2 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/dictionary/gender.md +275 -0
  8. package/docs/ar/how_works_intlayer.md +1 -1
  9. package/docs/ar/locale_mapper.md +246 -0
  10. package/docs/de/dictionary/gender.md +316 -0
  11. package/docs/de/how_works_intlayer.md +1 -1
  12. package/docs/de/locale_mapper.md +244 -0
  13. package/docs/en/dictionary/gender.md +275 -0
  14. package/docs/en/how_works_intlayer.md +1 -1
  15. package/docs/en/index.md +3 -0
  16. package/docs/en/locale_mapper.md +244 -0
  17. package/docs/en-GB/dictionary/gender.md +275 -0
  18. package/docs/en-GB/how_works_intlayer.md +1 -1
  19. package/docs/en-GB/locale_mapper.md +244 -0
  20. package/docs/es/dictionary/gender.md +275 -0
  21. package/docs/es/how_works_intlayer.md +1 -1
  22. package/docs/es/locale_mapper.md +244 -0
  23. package/docs/fr/dictionary/gender.md +276 -0
  24. package/docs/fr/how_works_intlayer.md +1 -1
  25. package/docs/fr/locale_mapper.md +244 -0
  26. package/docs/hi/dictionary/gender.md +276 -0
  27. package/docs/hi/how_works_intlayer.md +1 -1
  28. package/docs/hi/locale_mapper.md +244 -0
  29. package/docs/it/dictionary/gender.md +275 -0
  30. package/docs/it/how_works_intlayer.md +1 -1
  31. package/docs/it/locale_mapper.md +244 -0
  32. package/docs/ja/dictionary/gender.md +275 -0
  33. package/docs/ja/how_works_intlayer.md +1 -1
  34. package/docs/ja/locale_mapper.md +244 -0
  35. package/docs/ko/dictionary/gender.md +275 -0
  36. package/docs/ko/how_works_intlayer.md +1 -1
  37. package/docs/ko/locale_mapper.md +244 -0
  38. package/docs/pt/dictionary/gender.md +275 -0
  39. package/docs/pt/how_works_intlayer.md +1 -1
  40. package/docs/pt/locale_mapper.md +244 -0
  41. package/docs/ru/dictionary/gender.md +275 -0
  42. package/docs/ru/how_works_intlayer.md +1 -1
  43. package/docs/ru/locale_mapper.md +244 -0
  44. package/docs/zh/dictionary/gender.md +275 -0
  45. package/docs/zh/how_works_intlayer.md +1 -1
  46. package/docs/zh/locale_mapper.md +244 -0
  47. package/package.json +12 -12
  48. package/src/generated/docs.entry.ts +82 -0
@@ -8,6 +8,7 @@ export declare const docsEntry: {
8
8
  readonly './docs/en/dictionary/enumeration.md': Record<LocalesValues, Promise<string>>;
9
9
  readonly './docs/en/dictionary/file.md': Record<LocalesValues, Promise<string>>;
10
10
  readonly './docs/en/dictionary/function_fetching.md': Record<LocalesValues, Promise<string>>;
11
+ readonly './docs/en/dictionary/gender.md': Record<LocalesValues, Promise<string>>;
11
12
  readonly './docs/en/dictionary/get_started.md': Record<LocalesValues, Promise<string>>;
12
13
  readonly './docs/en/dictionary/insertion.md': Record<LocalesValues, Promise<string>>;
13
14
  readonly './docs/en/dictionary/markdown.md': Record<LocalesValues, Promise<string>>;
@@ -34,6 +35,7 @@ export declare const docsEntry: {
34
35
  readonly './docs/en/intlayer_with_vite+svelte.md': Record<LocalesValues, Promise<string>>;
35
36
  readonly './docs/en/intlayer_with_vite+vue.md': Record<LocalesValues, Promise<string>>;
36
37
  readonly './docs/en/introduction.md': Record<LocalesValues, Promise<string>>;
38
+ readonly './docs/en/locale_mapper.md': Record<LocalesValues, Promise<string>>;
37
39
  readonly './docs/en/mcp_server.md': Record<LocalesValues, Promise<string>>;
38
40
  readonly './docs/en/packages/@intlayer/api/index.md': Record<LocalesValues, Promise<string>>;
39
41
  readonly './docs/en/packages/@intlayer/chokidar/index.md': Record<LocalesValues, Promise<string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"docs.entry.d.ts","sourceRoot":"","sources":["../../../src/generated/docs.entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs.entry.d.ts","sourceRoot":"","sources":["../../../src/generated/docs.entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ ---
2
+ createdAt: 2025-07-27
3
+ updatedAt: 2025-07-27
4
+ title: المحتوى القائم على النوع الاجتماعي
5
+ description: تعلّم كيفية استخدام المحتوى القائم على النوع الاجتماعي في Intlayer لعرض المحتوى ديناميكيًا بناءً على النوع. اتبع هذا التوثيق لتنفيذ المحتوى الخاص بالنوع بكفاءة في مشروعك.
6
+ keywords:
7
+ - المحتوى القائم على النوع الاجتماعي
8
+ - العرض الديناميكي
9
+ - التوثيق
10
+ - Intlayer
11
+ - Next.js
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - content
18
+ - gender
19
+ ---
20
+
21
+ # المحتوى القائم على النوع الاجتماعي / النوع في Intlayer
22
+
23
+ ## كيف يعمل النوع الاجتماعي
24
+
25
+ في Intlayer، يتم تحقيق المحتوى القائم على النوع الاجتماعي من خلال دالة `gender`، التي تربط قيم النوع المحددة ('male'، 'female') بالمحتوى المقابل لها. تتيح لك هذه الطريقة اختيار المحتوى ديناميكيًا بناءً على النوع المعطى. عند التكامل مع React Intlayer أو Next Intlayer، يتم اختيار المحتوى المناسب تلقائيًا وفقًا للنوع المقدم أثناء وقت التشغيل.
26
+
27
+ ## إعداد المحتوى القائم على النوع الاجتماعي
28
+
29
+ لإعداد المحتوى القائم على النوع الاجتماعي في مشروع Intlayer الخاص بك، قم بإنشاء وحدة محتوى تتضمن تعريفات النوع الخاصة بك. فيما يلي أمثلة بصيغ مختلفة.
30
+
31
+ ```typescript fileName="**/*.content.ts" contentDeclarationFormat="typescript"
32
+ import { gender, type Dictionary } from "intlayer";
33
+
34
+ const myGenderContent = {
35
+ key: "my_key",
36
+ content: {
37
+ myGender: gender({
38
+ male: "محتواي للمستخدمين الذكور",
39
+ female: "محتواي للمستخدمين الإناث",
40
+ fallback: "محتواي عندما لا يتم تحديد النوع", // اختياري
41
+ }),
42
+ },
43
+ } satisfies Dictionary;
44
+
45
+ export default myGenderContent;
46
+ ```
47
+
48
+ ```javascript fileName="**/*.content.mjs" contentDeclarationFormat="esm"
49
+ import { gender } from "intlayer";
50
+
51
+ /** @type {import('intlayer').Dictionary} */
52
+ const myGenderContent = {
53
+ key: "my_key",
54
+ content: {
55
+ myGender: gender({
56
+ male: "محتواي للمستخدمين الذكور",
57
+ female: "محتواي للمستخدمين الإناث",
58
+ fallback: "محتواي عندما لا يتم تحديد النوع", // اختياري
59
+ }),
60
+ },
61
+ };
62
+
63
+ export default myGenderContent;
64
+ ```
65
+
66
+ ```javascript fileName="**/*.content.cjs" contentDeclarationFormat="commonjs"
67
+ const { gender } = require("intlayer");
68
+
69
+ /** @type {import('intlayer').Dictionary} */
70
+ const myGenderContent = {
71
+ key: "my_key",
72
+ content: {
73
+ myGender: gender({
74
+ male: "محتواي للمستخدمين الذكور",
75
+ female: "محتواي للمستخدمين الإناث",
76
+ fallback: "محتواي عندما لا يتم تحديد النوع", // اختياري
77
+ }),
78
+ },
79
+ };
80
+
81
+ module.exports = myGenderContent;
82
+ ```
83
+
84
+ ```json5 fileName="**/*.content.json" contentDeclarationFormat="json"
85
+ {
86
+ "$schema": "https://intlayer.org/schema.json",
87
+ "key": "my_key",
88
+ "content": {
89
+ "myGender": {
90
+ "nodeType": "gender",
91
+ "gender": {
92
+ "male": "محتواي للمستخدمين الذكور",
93
+ "female": "محتواي للمستخدمين الإناث",
94
+ "fallback": "محتواي عندما لا يتم تحديد النوع", // اختياري
95
+ },
96
+ },
97
+ },
98
+ }
99
+ ```
100
+
101
+ > إذا لم يتم إعلان قيمة بديلة، فسيتم أخذ آخر مفتاح معلن كقيمة بديلة إذا لم يتم تحديد النوع أو لم يتطابق مع أي نوع معرف.
102
+
103
+ ## استخدام المحتوى المعتمد على النوع مع React Intlayer
104
+
105
+ لاستخدام المحتوى المعتمد على النوع داخل مكون React، قم باستيراد واستخدام الخطاف `useIntlayer` من حزمة `react-intlayer`. يقوم هذا الخطاف بجلب المحتوى للمفتاح المحدد ويسمح لك بتمرير النوع لاختيار المخرجات المناسبة.
106
+
107
+ ```tsx fileName="**/*.tsx" codeFormat="typescript"
108
+ import type { FC } from "react";
109
+ import { useIntlayer } from "react-intlayer";
110
+
111
+ const GenderComponent: FC = () => {
112
+ const { myGender } = useIntlayer("my_key");
113
+
114
+ return (
115
+ <div>
116
+ <p>
117
+ {
118
+ /* المخرجات: محتواي للمستخدمين الذكور */
119
+ myGender("male")
120
+ }
121
+ </p>
122
+ <p>
123
+ {
124
+ /* المخرجات: محتواي للمستخدمين الإناث */
125
+ myGender("female")
126
+ }
127
+ </p>
128
+ <p>
129
+ {
130
+ /* المخرجات: محتواي للمستخدمين الذكور */
131
+ myGender("m")
132
+ }
133
+ </p>
134
+ <p>
135
+ {
136
+ /* المخرجات: محتواي للمستخدمين الإناث */
137
+ myGender("f")
138
+ }
139
+ </p>
140
+ <p>
141
+ {
142
+ /* المخرجات: محتواي عندما لا يتم تحديد النوع */
143
+ myGender("")
144
+ }
145
+ </p>
146
+ <p>
147
+ {
148
+ /* المخرجات: محتواي عندما لا يتم تحديد النوع */
149
+ myGender(undefined)
150
+ }
151
+ </p>
152
+ </div>
153
+ );
154
+ };
155
+
156
+ export default GenderComponent;
157
+ ```
158
+
159
+ ```javascript fileName="**/*.mjx" codeFormat="esm"
160
+ import { useIntlayer } from "react-intlayer";
161
+
162
+ const GenderComponent = () => {
163
+ const { myGender } = useIntlayer("my_key");
164
+
165
+ return (
166
+ <div>
167
+ <p>
168
+ {
169
+ /* المخرجات: محتواي للمستخدمين الذكور */
170
+ myGender("male")
171
+ }
172
+ </p>
173
+ <p>
174
+ {
175
+ /* المخرجات: محتواي للمستخدمين الإناث */
176
+ myGender("female")
177
+ }
178
+ </p>
179
+ <p>
180
+ {
181
+ /* المخرجات: محتواي للمستخدمين الذكور */
182
+ myGender("m")
183
+ }
184
+ </p>
185
+ <p>
186
+ {
187
+ /* المخرجات: محتواي للمستخدمين الإناث */
188
+ myGender("f")
189
+ }
190
+ </p>
191
+ <p>
192
+ {
193
+ /* المخرجات: محتواي عندما لا يتم تحديد النوع */
194
+ myGender("")
195
+ }
196
+ </p>
197
+ <p>
198
+ {
199
+ /* المخرجات: محتواي عندما لا يتم تحديد النوع */
200
+ myGender(undefined)
201
+ }
202
+ </p>
203
+ </div>
204
+ );
205
+ };
206
+
207
+ export default GenderComponent;
208
+ ```
209
+
210
+ ```javascript fileName="**/*.cjs" codeFormat="commonjs"
211
+ const { useIntlayer } = require("react-intlayer");
212
+
213
+ const GenderComponent = () => {
214
+ const { myGender } = useIntlayer("my_key");
215
+
216
+ return (
217
+ <div>
218
+ <p>
219
+ {
220
+ /* المخرجات: محتواي للمستخدمين الذكور */
221
+ myGender("male")
222
+ }
223
+ </p>
224
+ <p>
225
+ {
226
+ /* المخرجات: محتواي للمستخدمين الإناث */
227
+ myGender("female")
228
+ }
229
+ </p>
230
+ <p>
231
+ {
232
+ /* المخرجات: محتواي للمستخدمين الذكور */
233
+ myGender("m")
234
+ }
235
+ </p>
236
+ <p>
237
+ {
238
+ /* المخرجات: محتواي للمستخدمين الإناث */
239
+ myGender("f")
240
+ }
241
+ </p>
242
+ <p>
243
+ {
244
+ /* المخرجات: محتواي عندما لا يتم تحديد الجنس */
245
+ myGender("")
246
+ }
247
+ </p>
248
+ <p>
249
+ {
250
+ /* المخرجات: محتواي عندما لا يتم تحديد الجنس */
251
+ myGender(undefined)
252
+ }
253
+ </p>
254
+ </div>
255
+ );
256
+ };
257
+
258
+ module.exports = GenderComponent;
259
+ ```
260
+
261
+ ## موارد إضافية
262
+
263
+ لمزيد من المعلومات التفصيلية حول التهيئة والاستخدام، يرجى الرجوع إلى الموارد التالية:
264
+
265
+ - [توثيق Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_cli.md)
266
+ - [توثيق React Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_with_create_react_app.md)
267
+ - [توثيق Next Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_with_nextjs_15.md)
268
+
269
+ توفر هذه الموارد رؤى إضافية حول إعداد واستخدام Intlayer عبر بيئات وأُطُر عمل مختلفة.
270
+
271
+ ## تاريخ الوثيقة
272
+
273
+ | الإصدار | التاريخ | التغييرات |
274
+ | ------- | ---------- | ------------------------------- |
275
+ | 5.7.2 | 2025-07-27 | تقديم المحتوى المعتمد على الجنس |
@@ -93,7 +93,7 @@ const MyComponent = () => {
93
93
 
94
94
  - الخادم هو تطبيق Express بسيط يستمع إلى الطلبات من العميل ويسترجع محتوى تطبيقك، مثل `dictionaries` والتكوين لجعله متاحًا على جانب العميل.
95
95
  - من ناحية أخرى، العميل هو تطبيق React يُستخدم للتفاعل مع المحتوى الخاص بك باستخدام واجهة مرئية.
96
- عندما تستدعي المحتوى الخاص بك باستخدام `useIntlayer` ويكون المحرر مفعّلًا، فإنه يلف تلقائيًا سلاسل النصوص الخاصة بك بكائن Proxy يُسمى `IntlayerNode`. يستخدم هذا الكائن `window.sendMessage` للتواصل مع iframe مغلف يحتوي على واجهة المحرر المرئي.
96
+ عندما تستدعي المحتوى الخاص بك باستخدام `useIntlayer` ويكون المحرر مفعّلًا، فإنه يلف تلقائيًا سلاسل النصوص الخاصة بك بكائن Proxy يُسمى `IntlayerNode`. يستخدم هذا الكائن `window.postMessage` للتواصل مع iframe مغلف يحتوي على واجهة المحرر المرئي.
97
97
  على جانب المحرر، يستمع المحرر إلى هذه الرسائل ويُحاكي التفاعل الحقيقي مع المحتوى الخاص بك، مما يتيح لك تحرير النص مباشرة في سياق تطبيقك.
98
98
 
99
99
  ## تحسين بناء التطبيق
@@ -0,0 +1,246 @@
1
+ ---
2
+ createdAt: 2025-07-27
3
+ updatedAt: 2025-07-27
4
+ title: موجه اللغة
5
+ description: اكتشف كيف يعمل موجه اللغة. شاهد الخطوات التي يستخدمها موجه اللغة في تطبيقك. تعرف على ما تفعله الحزم المختلفة.
6
+ keywords:
7
+ - موجه اللغة
8
+ - البدء
9
+ - Intlayer
10
+ - التطبيق
11
+ - الحزم
12
+ slugs:
13
+ - doc
14
+ - locale-mapper
15
+ ---
16
+
17
+ # موجه اللغة
18
+
19
+ موجه اللغة هو أداة قوية تساعدك على العمل مع بيانات التدويل في تطبيق Intlayer الخاص بك. يوفر ثلاث وظائف رئيسية لتحويل وتنظيم البيانات الخاصة بكل لغة: `localeMap`، و `localeFlatMap`، و `localeRecord`.
20
+
21
+ ## كيف يعمل موجه اللغة
22
+
23
+ يعمل موجه اللغة على كائن `LocaleData` يحتوي على جميع المعلومات اللازمة حول اللغة:
24
+
25
+ ```typescript
26
+ type LocaleData = {
27
+ locale: LocalesValues; // رمز اللغة الحالي (مثل 'en'، 'fr')
28
+ defaultLocale: LocalesValues; // رمز اللغة الافتراضية
29
+ isDefault: boolean; // هل هذه هي اللغة الافتراضية
30
+ locales: LocalesValues[]; // مصفوفة بجميع اللغات المتاحة
31
+ urlPrefix: string; // بادئة URL لهذه اللغة (مثل '/fr' أو '')
32
+ };
33
+ ```
34
+
35
+ تقوم دوال الموجه بإنشاء هذه البيانات تلقائيًا لكل لغة في تكوينك، مع مراعاة:
36
+
37
+ - قائمة اللغات التي قمت بتكوينها
38
+ - إعداد اللغة الافتراضية
39
+ - ما إذا كان يجب إضافة بادئة اللغة الافتراضية في عناوين URL
40
+
41
+ ## الوظائف الأساسية
42
+
43
+ ### `localeMap`
44
+
45
+ تحول كل لغة إلى كائن واحد باستخدام دالة موجهة.
46
+
47
+ ```typescript
48
+ localeMap<T>(
49
+ mapper: (locale: LocaleData) => T,
50
+ locales?: LocalesValues[],
51
+ defaultLocale?: LocalesValues,
52
+ prefixDefault?: boolean
53
+ ): T[]
54
+ ```
55
+
56
+ **مثال: إنشاء كائنات المسارات**
57
+
58
+ ```typescript
59
+ import { localeMap } from "intlayer";
60
+
61
+ const routes = localeMap((localizedData) => ({
62
+ path: localizedData.urlPrefix,
63
+ name: localizedData.locale,
64
+ isDefault: localizedData.isDefault,
65
+ locales: localizedData.locales,
66
+ defaultLocale: localizedData.defaultLocale,
67
+ }));
68
+
69
+ // النتيجة:
70
+ // [
71
+ // { path: '/', name: 'en', isDefault: true, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },
72
+ // { path: '/fr', name: 'fr', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },
73
+ // { path: '/es', name: 'es', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' }
74
+ // ]
75
+ ```
76
+
77
+ ### `localeFlatMap`
78
+
79
+ مشابه لـ `localeMap`، ولكن دالة التحويل تُرجع مصفوفة من الكائنات التي يتم تسويتها إلى مصفوفة واحدة.
80
+
81
+ ```typescript
82
+ localeFlatMap<T>(
83
+ mapper: (locale: LocaleData) => T[],
84
+ locales?: LocalesValues[],
85
+ defaultLocale?: LocalesValues,
86
+ prefixDefault?: boolean
87
+ ): T[]
88
+ ```
89
+
90
+ **مثال: إنشاء مسارات متعددة لكل لغة**
91
+
92
+ ```typescript
93
+ import { localeFlatMap } from "intlayer";
94
+
95
+ const routes = localeFlatMap((localizedData) => [
96
+ {
97
+ path: localizedData.urlPrefix,
98
+ name: localizedData.locale,
99
+ isDefault: localizedData.isDefault,
100
+ },
101
+ {
102
+ path: `${localizedData.urlPrefix}/about`,
103
+ name: `${localizedData.locale}-about`,
104
+ isDefault: localizedData.isDefault,
105
+ },
106
+ ]);
107
+
108
+ // النتيجة:
109
+ // [
110
+ // { path: '/', name: 'en', isDefault: true },
111
+ // { path: '/about', name: 'en-about', isDefault: true },
112
+ // { path: '/fr', name: 'fr', isDefault: false },
113
+ // { path: '/fr/about', name: 'fr-about', isDefault: false },
114
+ // { path: '/es', name: 'es', isDefault: false },
115
+ // { path: '/es/about', name: 'es-about', isDefault: false }
116
+ // ]
117
+ ```
118
+
119
+ ### `localeRecord`
120
+
121
+ ينشئ كائن سجل حيث تكون كل لغة مفتاحًا يشير إلى قيمة تم تحويلها بواسطة دالة الماب.
122
+
123
+ ```typescript
124
+ localeRecord<T>(
125
+ mapper: (locale: LocaleData) => T,
126
+ locales?: Locales[],
127
+ defaultLocale?: Locales,
128
+ prefixDefault?: boolean
129
+ ): Record<Locales, T>
130
+ ```
131
+
132
+ **مثال: تحميل ملفات الترجمة**
133
+
134
+ ```typescript
135
+ import { localeRecord } from "intlayer";
136
+
137
+ const translations = localeRecord(({ locale }) =>
138
+ require(`./translations/${locale}.json`)
139
+ );
140
+
141
+ // النتيجة:
142
+ // {
143
+ // en: { welcome: 'Welcome', hello: 'Hello' },
144
+ // fr: { welcome: 'Bienvenue', hello: 'Bonjour' },
145
+ // es: { welcome: 'Bienvenido', hello: 'Hola' }
146
+ // }
147
+ ```
148
+
149
+ ## إعداد ماب اللغة
150
+
151
+ يستخدم ماب اللغة تلقائيًا تكوين Intlayer الخاص بك، ولكن يمكنك تجاوز الإعدادات الافتراضية بتمرير معلمات:
152
+
153
+ ### استخدام التكوين الافتراضي
154
+
155
+ ```typescript
156
+ import { localeMap } from "intlayer";
157
+
158
+ // يستخدم التكوين من intlayer.config.ts
159
+ const routes = localeMap((data) => ({
160
+ path: data.urlPrefix,
161
+ locale: data.locale,
162
+ }));
163
+ ```
164
+
165
+ ### تجاوز التكوين
166
+
167
+ ```typescript
168
+ import { localeMap } from "intlayer";
169
+
170
+ // تجاوز اللغات واللغة الافتراضية
171
+ const customRoutes = localeMap(
172
+ (data) => ({ path: data.urlPrefix, locale: data.locale }),
173
+ ["en", "fr", "de"], // اللغات المخصصة
174
+ "en", // اللغة الافتراضية المخصصة
175
+ true // إضافة بادئة اللغة الافتراضية في عناوين URL
176
+ );
177
+ ```
178
+
179
+ ## أمثلة على الاستخدام المتقدم
180
+
181
+ ### إنشاء قوائم التنقل
182
+
183
+ ```typescript
184
+ import { localeMap } from "intlayer";
185
+
186
+ const navigationItems = localeMap((data) => ({
187
+ label: data.locale.toUpperCase(),
188
+ href: data.urlPrefix || "/",
189
+ isActive: data.isDefault,
190
+ flag: `/flags/${data.locale}.svg`,
191
+ }));
192
+ ```
193
+
194
+ ### توليد بيانات خريطة الموقع
195
+
196
+ ```typescript
197
+ import { localeFlatMap } from "intlayer";
198
+
199
+ const sitemapUrls = localeFlatMap((data) => [
200
+ {
201
+ url: `${data.urlPrefix}/`,
202
+ lastmod: new Date().toISOString(),
203
+ changefreq: "daily",
204
+ priority: data.isDefault ? 1.0 : 0.8,
205
+ },
206
+ {
207
+ url: `${data.urlPrefix}/about`,
208
+ lastmod: new Date().toISOString(),
209
+ changefreq: "شهريًا",
210
+ priority: data.isDefault ? 0.8 : 0.6,
211
+ },
212
+ ]);
213
+ ```
214
+
215
+ ### تحميل الترجمة الديناميكي
216
+
217
+ ```typescript
218
+ import { localeRecord } from "intlayer";
219
+
220
+ const translationModules = localeRecord(({ locale }) => ({
221
+ messages: import(`./locales/${locale}/messages.json`),
222
+ validation: import(`./locales/${locale}/validation.json`),
223
+ metadata: {
224
+ locale,
225
+ direction: ["ar", "he", "fa"].includes(locale)
226
+ ? "من اليمين إلى اليسار"
227
+ : "من اليسار إلى اليمين",
228
+ },
229
+ }));
230
+ ```
231
+
232
+ ## تكامل التهيئة
233
+
234
+ يتكامل موجه اللغات بسلاسة مع تهيئة Intlayer الخاصة بك:
235
+
236
+ - **اللغات**: يستخدم تلقائيًا `configuration.internationalization.locales`
237
+ - **اللغة الافتراضية**: يستخدم `configuration.internationalization.defaultLocale`
238
+ - **بادئة عنوان URL**: يحترم `configuration.middleware.prefixDefault`
239
+
240
+ هذا يضمن الاتساق عبر تطبيقك ويقلل من تكرار التهيئة.
241
+
242
+ ## تاريخ الوثيقة
243
+
244
+ | الإصدار | التاريخ | التغييرات |
245
+ | ------- | ---------- | ----------------------- |
246
+ | 5.7.2 | 2025-07-27 | إضافة توثيق موجه اللغات |