@intlayer/docs 9.0.0-canary.7 → 9.0.0-canary.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/generated/docs.entry.cjs +0 -20
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +0 -20
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +0 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/dynamic_dictionaries/index.md +24 -18
- package/docs/ar/dynamic_dictionaries/variants.md +280 -22
- package/docs/ar/plugins/sync-json.md +0 -1
- package/docs/ar/releases/v9.md +35 -12
- package/docs/de/dynamic_dictionaries/index.md +22 -22
- package/docs/de/dynamic_dictionaries/variants.md +272 -14
- package/docs/de/plugins/sync-json.md +0 -1
- package/docs/de/releases/v9.md +35 -12
- package/docs/en/dynamic_dictionaries/index.md +20 -14
- package/docs/en/dynamic_dictionaries/variants.md +266 -8
- package/docs/en/plugins/sync-json.md +0 -1
- package/docs/en/releases/v9.md +35 -12
- package/docs/en-GB/dynamic_dictionaries/index.md +21 -15
- package/docs/en-GB/dynamic_dictionaries/variants.md +268 -10
- package/docs/en-GB/plugins/sync-json.md +0 -1
- package/docs/en-GB/releases/v9.md +35 -12
- package/docs/es/dynamic_dictionaries/index.md +25 -19
- package/docs/es/dynamic_dictionaries/variants.md +275 -17
- package/docs/es/plugins/sync-json.md +0 -1
- package/docs/es/releases/v9.md +35 -12
- package/docs/fr/dynamic_dictionaries/index.md +26 -20
- package/docs/fr/dynamic_dictionaries/variants.md +273 -15
- package/docs/fr/plugins/sync-json.md +0 -1
- package/docs/fr/releases/v9.md +35 -12
- package/docs/hi/dynamic_dictionaries/index.md +28 -22
- package/docs/hi/dynamic_dictionaries/variants.md +282 -24
- package/docs/hi/plugins/sync-json.md +0 -1
- package/docs/hi/releases/v9.md +35 -12
- package/docs/id/dynamic_dictionaries/index.md +25 -19
- package/docs/id/dynamic_dictionaries/variants.md +274 -16
- package/docs/id/plugins/sync-json.md +0 -1
- package/docs/id/releases/v9.md +35 -12
- package/docs/it/dynamic_dictionaries/index.md +26 -20
- package/docs/it/dynamic_dictionaries/variants.md +273 -15
- package/docs/it/plugins/sync-json.md +0 -1
- package/docs/it/releases/v9.md +35 -12
- package/docs/ja/dynamic_dictionaries/index.md +27 -21
- package/docs/ja/dynamic_dictionaries/variants.md +276 -18
- package/docs/ja/plugins/sync-json.md +0 -1
- package/docs/ja/releases/v9.md +35 -12
- package/docs/ko/dynamic_dictionaries/index.md +23 -17
- package/docs/ko/dynamic_dictionaries/variants.md +273 -15
- package/docs/ko/plugins/sync-json.md +0 -1
- package/docs/ko/releases/v9.md +35 -12
- package/docs/pl/dynamic_dictionaries/index.md +26 -20
- package/docs/pl/dynamic_dictionaries/variants.md +275 -17
- package/docs/pl/plugins/sync-json.md +0 -1
- package/docs/pl/releases/v9.md +35 -12
- package/docs/pt/dynamic_dictionaries/index.md +25 -19
- package/docs/pt/dynamic_dictionaries/variants.md +276 -18
- package/docs/pt/plugins/sync-json.md +0 -1
- package/docs/pt/releases/v9.md +35 -12
- package/docs/ru/dynamic_dictionaries/index.md +25 -19
- package/docs/ru/dynamic_dictionaries/variants.md +277 -19
- package/docs/ru/plugins/sync-json.md +0 -1
- package/docs/ru/releases/v9.md +35 -12
- package/docs/tr/dynamic_dictionaries/index.md +27 -21
- package/docs/tr/dynamic_dictionaries/variants.md +274 -16
- package/docs/tr/plugins/sync-json.md +0 -1
- package/docs/tr/releases/v9.md +35 -12
- package/docs/uk/dynamic_dictionaries/index.md +25 -19
- package/docs/uk/dynamic_dictionaries/variants.md +277 -19
- package/docs/uk/plugins/sync-json.md +0 -1
- package/docs/uk/releases/v9.md +35 -12
- package/docs/vi/dynamic_dictionaries/index.md +28 -22
- package/docs/vi/dynamic_dictionaries/variants.md +278 -20
- package/docs/vi/plugins/sync-json.md +0 -1
- package/docs/vi/releases/v9.md +35 -12
- package/docs/zh/dynamic_dictionaries/index.md +24 -18
- package/docs/zh/dynamic_dictionaries/variants.md +274 -16
- package/docs/zh/plugins/sync-json.md +0 -1
- package/docs/zh/releases/v9.md +35 -12
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +0 -20
- package/docs/ar/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/de/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/en/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/en-GB/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/es/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/fr/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/hi/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/id/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/it/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/ja/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/ko/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/pl/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/pt/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/ru/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/tr/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/uk/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/vi/dynamic_dictionaries/dynamic_content.md +0 -271
- package/docs/zh/dynamic_dictionaries/dynamic_content.md +0 -271
|
@@ -68,7 +68,6 @@ declare const docsEntry: {
|
|
|
68
68
|
readonly './docs/en/dictionary/plurial.md': Record<LocalesValues, Promise<string>>;
|
|
69
69
|
readonly './docs/en/dictionary/translation.md': Record<LocalesValues, Promise<string>>;
|
|
70
70
|
readonly './docs/en/dynamic_dictionaries/collections.md': Record<LocalesValues, Promise<string>>;
|
|
71
|
-
readonly './docs/en/dynamic_dictionaries/dynamic_content.md': Record<LocalesValues, Promise<string>>;
|
|
72
71
|
readonly './docs/en/dynamic_dictionaries/index.md': Record<LocalesValues, Promise<string>>;
|
|
73
72
|
readonly './docs/en/dynamic_dictionaries/variants.md': Record<LocalesValues, Promise<string>>;
|
|
74
73
|
readonly './docs/en/formatters.md': Record<LocalesValues, Promise<string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.entry.d.ts","names":[],"sources":["../../../src/generated/docs.entry.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"docs.entry.d.ts","names":[],"sources":["../../../src/generated/docs.entry.ts"],"mappings":"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"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-12
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-26
|
|
4
4
|
title: القواميس الديناميكية
|
|
5
|
-
description: نظرة عامة على ميزات
|
|
5
|
+
description: نظرة عامة على ميزات القواميس الديناميكية في Intlayer — المجموعات والمتغيرات — لبناء محتوى i18n مرن ومُوجَّه في وقت التشغيل.
|
|
6
6
|
keywords:
|
|
7
7
|
- القواميس الديناميكية
|
|
8
8
|
- المجموعات
|
|
9
9
|
- المتغيرات
|
|
10
|
-
- السجلات الديناميكية
|
|
11
10
|
- Intlayer
|
|
12
|
-
-
|
|
11
|
+
- التدويل
|
|
13
12
|
slugs:
|
|
14
13
|
- doc
|
|
15
14
|
- concept
|
|
@@ -18,31 +17,38 @@ history:
|
|
|
18
17
|
- version: 9.0.0
|
|
19
18
|
date: 2026-06-12
|
|
20
19
|
changes: "إصدار ميزة القواميس الديناميكية"
|
|
20
|
+
- version: 9.1.0
|
|
21
|
+
date: 2026-06-26
|
|
22
|
+
changes: "دمج السجلات الديناميكية في المتغيرات — أصبح `variant` يقبل سلسلة نصية أو كائنًا"
|
|
21
23
|
author: aymericzip
|
|
22
24
|
---
|
|
23
25
|
|
|
24
26
|
# القواميس الديناميكية
|
|
25
27
|
|
|
26
|
-
يدعم Intlayer
|
|
28
|
+
يدعم Intlayer آليتين للتعبير عن محتوى يتجاوز قاموسًا ثابتًا واحدًا لكل مفتاح. تُعلَن كل منهما عبر **حقل بيانات وصفية على المستوى الأعلى** في ملف المحتوى؛ ولا حاجة إلى دالة تغليف.
|
|
27
29
|
|
|
28
|
-
| الميزة
|
|
29
|
-
|
|
|
30
|
-
| [المجموعات](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/collections.md)
|
|
31
|
-
| [المتغيرات](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/variants.md)
|
|
32
|
-
| [السجلات الديناميكية](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/dynamic_content.md) | `meta: { id, … }` | `{ id, … }` |
|
|
30
|
+
| الميزة | حقل البيانات الوصفية | المُحدِّد في `useIntlayer` |
|
|
31
|
+
| -------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------- |
|
|
32
|
+
| [المجموعات](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/collections.md) | `item: N` | `{ item: N }` |
|
|
33
|
+
| [المتغيرات](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/variants.md) | `variant: "name"` _أو_ `variant: { … }` | `{ variant: "name" }` _أو_ `{ variant: { … } }` |
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
كلاهما يتكامل مع وسيط locale ويدعم التحميل الانتقائي / المؤجل عبر `importMode`.
|
|
35
36
|
|
|
36
|
-
## متى تستخدم
|
|
37
|
+
## متى تستخدم أيًّا منها
|
|
37
38
|
|
|
38
|
-
- **المجموعات** — قائمة مرتبة من العناصر
|
|
39
|
-
- **المتغيرات** — بدائل محتوى
|
|
40
|
-
-
|
|
39
|
+
- **المجموعات** — قائمة مرتبة من العناصر تُدار في ملفات منفصلة (مدخلات الأسئلة الشائعة، منشورات المدونة، المنتجات).
|
|
40
|
+
- **المتغيرات** — بدائل محتوى مُسمّاة أو منظّمة:
|
|
41
|
+
- متغير **نصي** لاختبارات A/B، أو اللافتات الموسمية، أو أعلام الميزات؛
|
|
42
|
+
- متغير **كائني** لسجلات CMS، أو المحتوى الخاص بالمستخدم، أو أي محتوى يُعنوَن بمجموعة من الحقول («السجلات الديناميكية» سابقًا).
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
> كانت الإصدارات السابقة تعرض حقل `meta` منفصلًا للمحتوى المُفهرَس حسب السجل. وقد تم دمجه في `variant`: مرّر **كائنًا** إلى `variant` بدلًا من استخدام `meta`.
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
## إزالة غموض المُحدِّد
|
|
47
|
+
|
|
48
|
+
قد يُعلِن المفتاح عن البُعدين معًا (مثلًا مجموعة لكل عنصر فيها متغير). ويتم حلّها بالترتيب:
|
|
45
49
|
|
|
46
50
|
```
|
|
47
|
-
variant →
|
|
51
|
+
variant → item
|
|
48
52
|
```
|
|
53
|
+
|
|
54
|
+
وهكذا فإن `{ variant: "promo" }` على مفتاح variant × item يُعيد كل عناصر promo كمصفوفة، وإضافة `{ item: 2 }` تُضيّقها إلى مدخلة واحدة.
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-12
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-26
|
|
4
4
|
title: المتغيرات
|
|
5
|
-
description: استخدم حقل البيانات
|
|
5
|
+
description: استخدم حقل البيانات الوصفية variant في ملفات محتوى Intlayer لإعلان بدائل محتوى مُسمّاة أو منظّمة — اختبارات A/B، لافتات موسمية، نصوص بأعلام الميزات، سجلات CMS، محتوى خاص بالمستخدم — والتبديل بينها في وقت التشغيل دون تغييرات في الشيفرة.
|
|
6
6
|
keywords:
|
|
7
7
|
- المتغيرات
|
|
8
|
-
-
|
|
8
|
+
- اختبار A/B
|
|
9
9
|
- أعلام الميزات
|
|
10
10
|
- المحتوى الديناميكي
|
|
11
|
+
- السجلات الديناميكية
|
|
12
|
+
- CMS
|
|
11
13
|
- Intlayer
|
|
12
|
-
-
|
|
14
|
+
- التدويل
|
|
13
15
|
slugs:
|
|
14
16
|
- doc
|
|
15
17
|
- concept
|
|
@@ -17,17 +19,27 @@ slugs:
|
|
|
17
19
|
history:
|
|
18
20
|
- version: 9.0.0
|
|
19
21
|
date: 2026-06-12
|
|
20
|
-
changes: "إصدار ميزة
|
|
22
|
+
changes: "إصدار ميزة المتغيرات"
|
|
23
|
+
- version: 9.1.0
|
|
24
|
+
date: 2026-06-26
|
|
25
|
+
changes: "أصبح `variant` يقبل سلسلة نصية أو كائنًا — تُعلَن `meta` / السجلات الديناميكية السابقة كمتغيرات كائنية"
|
|
21
26
|
author: aymericzip
|
|
22
27
|
---
|
|
23
28
|
|
|
24
29
|
# المتغيرات
|
|
25
30
|
|
|
26
|
-
**المتغير**
|
|
31
|
+
**المتغير** هو مجموعة من ملفات المحتوى تشترك في مفتاح القاموس نفسه (`key`) لكن يحمل كل منها قيمة `variant` مختلفة. يقدّم Intlayer الملف المناسب بناءً على المُحدِّد المُمرَّر إلى `useIntlayer`.
|
|
27
32
|
|
|
28
|
-
|
|
33
|
+
يمكن أن تأخذ قيمة `variant` **شكلين**:
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
- **سلسلة نصية** — بديل مُسمّى واحد (اختبارات A/B، لافتات موسمية، أعلام ميزات).
|
|
36
|
+
- **كائن** — مُميِّز منظّم يُعنوَن بمجموعة من الحقول (سجلات CMS، محتوى خاص بالمستخدم، أي محتوى مفتاحه مُعرِّف غامض). الكائن بأكمله هو الهوية: يجب أن يوفّر المُحدِّد كائنًا **مساويًا** لحلّ المدخلة.
|
|
37
|
+
|
|
38
|
+
> يحلّ الشكل الكائني محل حقل `meta` السابق. في كل مكان كنت تكتب فيه سابقًا `meta: { id, … }`، اكتب `variant: { id, … }`، وحدّدها بـ `{ variant: { id, … } }`.
|
|
39
|
+
|
|
40
|
+
## المتغيرات المُسمّاة (النصية)
|
|
41
|
+
|
|
42
|
+
يمثّل كل ملف بديلًا مُسمّى واحدًا. حذف `variant` (أو ضبطه على `"default"`) يجعله البديل الاحتياطي.
|
|
31
43
|
|
|
32
44
|
```ts fileName="hero-banner.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
33
45
|
import { t, type Dictionary } from "intlayer";
|
|
@@ -65,9 +77,9 @@ const dictionary = {
|
|
|
65
77
|
export default dictionary;
|
|
66
78
|
```
|
|
67
79
|
|
|
68
|
-
|
|
80
|
+
### استهلاك المتغيرات المُسمّاة
|
|
69
81
|
|
|
70
|
-
|
|
82
|
+
#### المتغير الافتراضي
|
|
71
83
|
|
|
72
84
|
<Tabs group="framework">
|
|
73
85
|
<Tab label="React" value="react">
|
|
@@ -76,7 +88,7 @@ export default dictionary;
|
|
|
76
88
|
|
|
77
89
|
export const Hero = () => {
|
|
78
90
|
const { headline, cta } = useIntlayer("hero-banner");
|
|
79
|
-
//
|
|
91
|
+
// ← المتغير الافتراضي
|
|
80
92
|
|
|
81
93
|
return (
|
|
82
94
|
<section>
|
|
@@ -94,7 +106,7 @@ export default dictionary;
|
|
|
94
106
|
|
|
95
107
|
export const Hero = () => {
|
|
96
108
|
const { headline, cta } = useIntlayer("hero-banner");
|
|
97
|
-
//
|
|
109
|
+
// ← المتغير الافتراضي
|
|
98
110
|
|
|
99
111
|
return (
|
|
100
112
|
<section>
|
|
@@ -142,7 +154,7 @@ export default dictionary;
|
|
|
142
154
|
|
|
143
155
|
export const Hero = () => {
|
|
144
156
|
const { headline, cta } = useIntlayer("hero-banner");
|
|
145
|
-
//
|
|
157
|
+
// ← المتغير الافتراضي
|
|
146
158
|
|
|
147
159
|
return (
|
|
148
160
|
<section>
|
|
@@ -160,7 +172,7 @@ export default dictionary;
|
|
|
160
172
|
|
|
161
173
|
export const Hero = () => {
|
|
162
174
|
const content = useIntlayer("hero-banner");
|
|
163
|
-
//
|
|
175
|
+
// ← المتغير الافتراضي
|
|
164
176
|
|
|
165
177
|
return (
|
|
166
178
|
<section>
|
|
@@ -209,7 +221,7 @@ export default dictionary;
|
|
|
209
221
|
</Tab>
|
|
210
222
|
</Tabs>
|
|
211
223
|
|
|
212
|
-
|
|
224
|
+
#### متغير مُسمّى
|
|
213
225
|
|
|
214
226
|
```tsx
|
|
215
227
|
const { headline, cta } = useIntlayer("hero-banner", {
|
|
@@ -217,18 +229,264 @@ const { headline, cta } = useIntlayer("hero-banner", {
|
|
|
217
229
|
});
|
|
218
230
|
```
|
|
219
231
|
|
|
220
|
-
|
|
232
|
+
#### متغير مُسمّى بلغة locale صريحة
|
|
221
233
|
|
|
222
234
|
```tsx
|
|
223
235
|
const content = useIntlayer("hero-banner", {
|
|
224
236
|
variant: "black_friday",
|
|
225
|
-
locale: "
|
|
237
|
+
locale: "fr",
|
|
226
238
|
});
|
|
227
239
|
```
|
|
228
240
|
|
|
229
|
-
##
|
|
241
|
+
## المتغيرات الكائنية (المنظّمة)
|
|
242
|
+
|
|
243
|
+
يُعنوِن المتغير الكائني المحتوى بمجموعة عشوائية من أزواج المفتاح-القيمة المُعلَنة في حقل `variant` — مما يتيح نمذجة سجلات CMS، أو المحتوى الخاص بالمستخدم، أو أي محتوى مفتاحه مُعرِّف غامض. الهوية هي **الكائن بأكمله**: يجب أن يوفّر المُحدِّد كائنًا مساويًا حتى تُحلّ المدخلة.
|
|
244
|
+
|
|
245
|
+
```ts fileName="product.abc.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
246
|
+
import { t, type Dictionary } from "intlayer";
|
|
247
|
+
|
|
248
|
+
const dictionary = {
|
|
249
|
+
key: "product",
|
|
250
|
+
variant: { id: "prod_abc", userId: "user_123" },
|
|
251
|
+
content: {
|
|
252
|
+
name: t({ en: "Widget Pro", fr: "Widget Pro" }),
|
|
253
|
+
description: t({ en: "The best widget.", fr: "Le meilleur widget." }),
|
|
254
|
+
},
|
|
255
|
+
} satisfies Dictionary;
|
|
256
|
+
|
|
257
|
+
export default dictionary;
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
```ts fileName="product.abcd.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
261
|
+
import { t, type Dictionary } from "intlayer";
|
|
262
|
+
|
|
263
|
+
const dictionary = {
|
|
264
|
+
key: "product",
|
|
265
|
+
variant: { id: "prod_abcd", userId: "user_123" },
|
|
266
|
+
content: {
|
|
267
|
+
name: t({ en: "Widget Lite", fr: "Widget Lite" }),
|
|
268
|
+
description: t({ en: "A lighter option.", fr: "Une option plus légère." }),
|
|
269
|
+
},
|
|
270
|
+
} satisfies Dictionary;
|
|
271
|
+
|
|
272
|
+
export default dictionary;
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### استهلاك المتغيرات الكائنية
|
|
276
|
+
|
|
277
|
+
مرّر الكائن المطابق إلى `variant`. يجب توفير كل حقل مُعلَن في القاموس ومساواته؛ وإلا فالنتيجة `null`. لا يهم ترتيب الحقول.
|
|
278
|
+
|
|
279
|
+
<Tabs group="framework">
|
|
280
|
+
<Tab label="React" value="react">
|
|
281
|
+
```tsx fileName="Product.tsx" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
282
|
+
import { useIntlayer } from "react-intlayer";
|
|
283
|
+
|
|
284
|
+
export const Product = ({
|
|
285
|
+
productId,
|
|
286
|
+
userId,
|
|
287
|
+
}: {
|
|
288
|
+
productId: string;
|
|
289
|
+
userId: string;
|
|
290
|
+
}) => {
|
|
291
|
+
const content = useIntlayer("product", {
|
|
292
|
+
variant: { id: productId, userId },
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
if (!content) return null;
|
|
296
|
+
|
|
297
|
+
return <p>{content.description}</p>;
|
|
298
|
+
};
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
</Tab>
|
|
302
|
+
<Tab label="Next.js" value="nextjs">
|
|
303
|
+
```tsx fileName="Product.tsx" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
304
|
+
import { useIntlayer } from "next-intlayer";
|
|
305
|
+
|
|
306
|
+
export const Product = ({
|
|
307
|
+
productId,
|
|
308
|
+
userId,
|
|
309
|
+
}: {
|
|
310
|
+
productId: string;
|
|
311
|
+
userId: string;
|
|
312
|
+
}) => {
|
|
313
|
+
const content = useIntlayer("product", {
|
|
314
|
+
variant: { id: productId, userId },
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
if (!content) return null;
|
|
318
|
+
|
|
319
|
+
return <p>{content.description}</p>;
|
|
320
|
+
};
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
</Tab>
|
|
324
|
+
<Tab label="Vue" value="vue">
|
|
325
|
+
```vue fileName="Product.vue" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
326
|
+
<script setup>
|
|
327
|
+
import { useIntlayer } from "vue-intlayer";
|
|
328
|
+
|
|
329
|
+
const props = defineProps({
|
|
330
|
+
productId: String,
|
|
331
|
+
userId: String,
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
const content = useIntlayer("product", {
|
|
335
|
+
variant: { id: props.productId, userId: props.userId },
|
|
336
|
+
});
|
|
337
|
+
</script>
|
|
338
|
+
|
|
339
|
+
<template>
|
|
340
|
+
<p v-if="content">{{ content.description }}</p>
|
|
341
|
+
</template>
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
</Tab>
|
|
345
|
+
<Tab label="Svelte" value="svelte">
|
|
346
|
+
```svelte fileName="Product.svelte" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
347
|
+
<script lang="ts">
|
|
348
|
+
import { useIntlayer } from "svelte-intlayer";
|
|
349
|
+
|
|
350
|
+
export let productId: string;
|
|
351
|
+
export let userId: string;
|
|
352
|
+
|
|
353
|
+
const content = useIntlayer("product", {
|
|
354
|
+
variant: { id: productId, userId },
|
|
355
|
+
});
|
|
356
|
+
</script>
|
|
357
|
+
|
|
358
|
+
{#if $content}
|
|
359
|
+
<p>{$content.description}</p>
|
|
360
|
+
{/if}
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
</Tab>
|
|
364
|
+
<Tab label="Preact" value="preact">
|
|
365
|
+
```tsx fileName="Product.tsx" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
366
|
+
import { useIntlayer } from "preact-intlayer";
|
|
367
|
+
|
|
368
|
+
export const Product = ({
|
|
369
|
+
productId,
|
|
370
|
+
userId,
|
|
371
|
+
}: {
|
|
372
|
+
productId: string;
|
|
373
|
+
userId: string;
|
|
374
|
+
}) => {
|
|
375
|
+
const content = useIntlayer("product", {
|
|
376
|
+
variant: { id: productId, userId },
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
if (!content) return null;
|
|
380
|
+
|
|
381
|
+
return <p>{content.description}</p>;
|
|
382
|
+
};
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
</Tab>
|
|
386
|
+
<Tab label="Solid" value="solid">
|
|
387
|
+
```tsx fileName="Product.tsx" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
388
|
+
import { useIntlayer } from "solid-intlayer";
|
|
389
|
+
|
|
390
|
+
export const Product = (props: {
|
|
391
|
+
productId: string;
|
|
392
|
+
userId: string;
|
|
393
|
+
}) => {
|
|
394
|
+
const content = useIntlayer("product", {
|
|
395
|
+
variant: { id: props.productId, userId: props.userId },
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
return (
|
|
399
|
+
<>
|
|
400
|
+
{content() && <p>{content().description}</p>}
|
|
401
|
+
</>
|
|
402
|
+
);
|
|
403
|
+
};
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
</Tab>
|
|
407
|
+
<Tab label="Angular" value="angular">
|
|
408
|
+
```typescript fileName="product.component.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
409
|
+
import { Component, Input, OnInit } from "@angular/core";
|
|
410
|
+
import { useIntlayer } from "angular-intlayer";
|
|
411
|
+
|
|
412
|
+
@Component({
|
|
413
|
+
selector: "app-product",
|
|
414
|
+
template: `
|
|
415
|
+
@if (content()) {
|
|
416
|
+
<p>{{ content().description }}</p>
|
|
417
|
+
}
|
|
418
|
+
`,
|
|
419
|
+
})
|
|
420
|
+
export class ProductComponent implements OnInit {
|
|
421
|
+
@Input() productId!: string;
|
|
422
|
+
@Input() userId!: string;
|
|
423
|
+
|
|
424
|
+
content: any;
|
|
425
|
+
|
|
426
|
+
ngOnInit() {
|
|
427
|
+
this.content = useIntlayer("product", {
|
|
428
|
+
variant: { id: this.productId, userId: this.userId },
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
</Tab>
|
|
435
|
+
<Tab label="Vanilla JS" value="vanilla">
|
|
436
|
+
```javascript fileName="product.js"
|
|
437
|
+
import { useIntlayer } from "vanilla-intlayer";
|
|
438
|
+
|
|
439
|
+
const content = useIntlayer("product", {
|
|
440
|
+
variant: { id: "prod_abcd", userId: "user_123" },
|
|
441
|
+
});
|
|
442
|
+
|
|
443
|
+
if (content) {
|
|
444
|
+
document.body.innerHTML = `<p>${content.description}</p>`;
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
</Tab>
|
|
449
|
+
</Tabs>
|
|
450
|
+
|
|
451
|
+
#### مع لغة locale صريحة
|
|
452
|
+
|
|
453
|
+
```tsx
|
|
454
|
+
const content = useIntlayer("product", {
|
|
455
|
+
variant: { id: "prod_abc", userId: "user_123" },
|
|
456
|
+
locale: "fr",
|
|
457
|
+
});
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
#### حقل مفقود — لا تطابق
|
|
461
|
+
|
|
462
|
+
```ts
|
|
463
|
+
// يُعيد null: `userId` مفقود، لذا لا يتطابق الكائن مع المتغير المُعلَن
|
|
464
|
+
const content = useIntlayer("product", { variant: { id: "prod_abc" } });
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
## وضع التحميل
|
|
468
|
+
|
|
469
|
+
غالبًا ما تُحمَّل المتغيرات الكائنية بشكل كسول. اضبط `importMode` على القاموس للتحكم في ذلك:
|
|
470
|
+
|
|
471
|
+
```ts contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
472
|
+
const dictionary = {
|
|
473
|
+
key: "product",
|
|
474
|
+
importMode: "fetch", // or "dynamic"
|
|
475
|
+
variant: { id: "prod_abc", userId: "user_123" },
|
|
476
|
+
content: { … },
|
|
477
|
+
} satisfies Dictionary;
|
|
478
|
+
|
|
479
|
+
export default dictionary;
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
راجع [تحسين الحزمة](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/bundle_optimization.md) لمعرفة تفاصيل أوضاع `static` و`dynamic` و`fetch`.
|
|
483
|
+
|
|
484
|
+
## حالات الاستخدام النموذجية
|
|
230
485
|
|
|
231
|
-
- اختبارات
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
486
|
+
- اختبارات A/B للنصوص مُوجَّهة بمفتاح تجربة
|
|
487
|
+
- لافتات موسمية أو ترويجية
|
|
488
|
+
- رسائل بأعلام الميزات
|
|
489
|
+
- حملات تسويقية خاصة بلغة locale
|
|
490
|
+
- نص تسويقي لكل منتج يُدار في CMS
|
|
491
|
+
- محتوى خاص بالمستخدم أو الحساب
|
|
492
|
+
- أي محتوى يُعنوَن بمُعرِّف غامض في وقت التشغيل
|
|
@@ -108,7 +108,6 @@ const config: IntlayerConfig = {
|
|
|
108
108
|
* Will load, and write the output and translations back to the JSON files in the locales directory
|
|
109
109
|
*/
|
|
110
110
|
syncJSON({
|
|
111
|
-
format: "i18next",
|
|
112
111
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
113
112
|
priority: 0,
|
|
114
113
|
format: "i18next",
|
package/docs/ar/releases/v9.md
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-14
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-26
|
|
4
4
|
title: Intlayer v9 الجديد - ما الجديد؟
|
|
5
|
-
description: اكتشف ما هو جديد في Intlayer v9. نقدم حزم توافق جاهزة للاستخدام لمكتبات i18n الشهيرة ودعمًا للمجموعات (Collections) والمتغيرات (Variants)
|
|
5
|
+
description: اكتشف ما هو جديد في Intlayer v9. نقدم حزم توافق جاهزة للاستخدام لمكتبات i18n الشهيرة ودعمًا للمجموعات (Collections) والمتغيرات (Variants).
|
|
6
6
|
keywords:
|
|
7
7
|
- Intlayer
|
|
8
8
|
- التوافق
|
|
9
9
|
- الترحيل
|
|
10
10
|
- المجموعات
|
|
11
11
|
- المتغيرات
|
|
12
|
-
- السجلات الديناميكية
|
|
13
12
|
- i18next
|
|
14
13
|
- next-intl
|
|
15
14
|
- vue-i18n
|
|
@@ -22,7 +21,7 @@ author: aymericzip
|
|
|
22
21
|
|
|
23
22
|
# Intlayer v9 الجديد - ما الجديد؟
|
|
24
23
|
|
|
25
|
-
مرحبًا بكم في Intlayer v9! يمثل هذا الإصدار الرئيسي علامة فارقة ضخمة في تبسيط مسار الترحيل إلى Intlayer من خلال **حزم محولات التوافق (Compat Adapter Packages)** لمكتبات i18n الرئيسية (`react-i18next`, `next-intl`, `vue-i18n`, إلخ) ويضيف دعمًا لهياكل المحتوى الغنية: **المجموعات (Collections)
|
|
24
|
+
مرحبًا بكم في Intlayer v9! يمثل هذا الإصدار الرئيسي علامة فارقة ضخمة في تبسيط مسار الترحيل إلى Intlayer من خلال **حزم محولات التوافق (Compat Adapter Packages)** لمكتبات i18n الرئيسية (`react-i18next`, `next-intl`, `vue-i18n`, إلخ) ويضيف دعمًا لهياكل المحتوى الغنية: **المجموعات (Collections)** و**المتغيرات (Variants)**.
|
|
26
25
|
|
|
27
26
|
## جدول المحتويات
|
|
28
27
|
|
|
@@ -41,8 +40,10 @@ author: aymericzip
|
|
|
41
40
|
- `@intlayer/i18next`
|
|
42
41
|
- `@intlayer/react-i18next`
|
|
43
42
|
- `@intlayer/next-intl`
|
|
43
|
+
- `@intlayer/react-intl`
|
|
44
44
|
- `@intlayer/next-i18next`
|
|
45
45
|
- `@intlayer/vue-i18n`
|
|
46
|
+
- `@intlayer/lingui`
|
|
46
47
|
|
|
47
48
|
على سبيل المثال، قم ببساطة بتغيير:
|
|
48
49
|
|
|
@@ -100,7 +101,7 @@ export default defineConfig({
|
|
|
100
101
|
|
|
101
102
|
---
|
|
102
103
|
|
|
103
|
-
## مواصفات الميزة: المجموعات (Collections)
|
|
104
|
+
## مواصفات الميزة: المجموعات (Collections) والمتغيرات (Variants)
|
|
104
105
|
|
|
105
106
|
يتوسع Intlayer v9 إلى ما هو أبعد من كائنات المفتاح-القيمة الثابتة، مما يسمح للقواميس بالإعلان عن هياكل تخطيط ديناميكية مكتوبة بالكامل من البداية إلى النهاية.
|
|
106
107
|
|
|
@@ -144,6 +145,8 @@ const faq = useIntlayer("faq", { item: 1 }); // -> { question: string, answer: s
|
|
|
144
145
|
|
|
145
146
|
قدم اختبارات A/B، رؤوس صفحات موسمية، علامات ميزات (feature flags)، أو صفحات هبوط مخصصة:
|
|
146
147
|
|
|
148
|
+
#### متغيرات النصوص (مثل اختبارات A/B)
|
|
149
|
+
|
|
147
150
|
```ts fileName="hero.content.ts"
|
|
148
151
|
import { t, type Dictionary } from "intlayer";
|
|
149
152
|
|
|
@@ -167,16 +170,14 @@ export default {
|
|
|
167
170
|
const banner = useIntlayer("hero-banner", { variant: "black_friday" });
|
|
168
171
|
```
|
|
169
172
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
حدد القواميس التي يتم تحميل إدخالاتها ديناميكيًا في وقت التشغيل (runtime) عبر معرفات الاستعلام (query IDs):
|
|
173
|
+
#### متغيرات الكائنات (مثل السجلات الديناميكية)
|
|
173
174
|
|
|
174
175
|
```ts fileName="product.content.ts"
|
|
175
176
|
import { t, type Dictionary } from "intlayer";
|
|
176
177
|
|
|
177
178
|
export default {
|
|
178
179
|
key: "product-copy",
|
|
179
|
-
|
|
180
|
+
variant: {
|
|
180
181
|
id: "prod_123",
|
|
181
182
|
category: "books",
|
|
182
183
|
},
|
|
@@ -229,7 +230,7 @@ export default defineConfig({
|
|
|
229
230
|
});
|
|
230
231
|
```
|
|
231
232
|
|
|
232
|
-
- **Compiler**: يتم التفعيل تلقائياً عندما يتم ضبط `compiler.enabled` وتكوين مسار `compiler.output`. لا تحتاج إلى تسجيل `intlayerCompiler()` بشكل منفصل بعد الآن.
|
|
233
|
+
- **Compiler**: يتم التفعيل تلقائياً عندما يتم ضبط `compiler.enabled` على `true` وتكوين مسار `compiler.output`. لا تحتاج إلى تسجيل `intlayerCompiler()` بشكل منفصل بعد الآن.
|
|
233
234
|
- **Proxy**: يتم التفعيل تلقائياً بناءً على خيار `routing.enableProxy` الجديد (`true` افتراضياً). يوصل middleware الكشف عن اللغة / إعادة التوجيه / إعادة الكتابة في التطوير والمعاينة وإنتاج SSR. لا تحتاج إلى تسجيل `intlayerProxy()` بشكل منفصل بعد الآن.
|
|
234
235
|
|
|
235
236
|
### خيار `routing.enableProxy`
|
|
@@ -252,6 +253,27 @@ export default config;
|
|
|
252
253
|
|
|
253
254
|
---
|
|
254
255
|
|
|
256
|
+
## تعطيل المُجمِّع افتراضياً
|
|
257
|
+
|
|
258
|
+
اعتباراً من Intlayer v9، **المُجمِّع مُعطَّل افتراضياً** (أصبحت القيمة الافتراضية لـ `compiler.enabled` الآن `false`). لتفعيل استخراج ملفات `.content.ts` في وقت البناء، اضبط `compiler.enabled: true` في إعداداتك:
|
|
259
|
+
|
|
260
|
+
```ts fileName="intlayer.config.ts"
|
|
261
|
+
import type { IntlayerConfig } from "intlayer";
|
|
262
|
+
|
|
263
|
+
const config: IntlayerConfig = {
|
|
264
|
+
compiler: {
|
|
265
|
+
enabled: true, // الافتراضي: false — مطلوب لتفعيل المُجمِّع منذ الإصدار 9
|
|
266
|
+
output: ({ fileName }) => `./${fileName}.content.ts`,
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export default config;
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
عندما يكون المُجمِّع مُعطَّلاً، يتخطى Intlayer خطوة الاستخراج في وقت البناء ويعتمد على القواميس التي أعلنت عنها بالفعل. فعِّله فقط عندما تريد أن يقوم plugin المُجمِّع للحزم (`@intlayer/swc` أو `@intlayer/babel` أو plugin الـ Vite `intlayer()`) باستخراج المحتوى تلقائياً.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
255
277
|
## React Native: استيرادات من حزمة واحدة
|
|
256
278
|
|
|
257
279
|
في تطبيق React Native أو Expo، لم تعد بحاجة إلى التعامل مع كل من `react-intlayer` و`react-native-intlayer` معًا. تقوم حزمة `react-native-intlayer` الآن **بإعادة تصدير واجهة برمجة التطبيقات الكاملة لـ `react-intlayer`** (الخطافات، والأدوات المساعدة، والمسارات الفرعية `/format` و`/html` و`/markdown`)، كما يطبق `IntlayerProvider` الخاص بها حزم polyfill الخاصة بـ React Native تلقائيًا.
|
|
@@ -300,13 +322,14 @@ npm install intlayer react-native-intlayer
|
|
|
300
322
|
|
|
301
323
|
إذا كنت تقوم بالترقية من الإصدار 8، لاحظ أن الإصدار 9 لا يتضمن تغييرات جذرية (breaking changes). ولكن إليك التغييرات الرئيسية:
|
|
302
324
|
|
|
325
|
+
- **تعطيل المُجمِّع افتراضياً**: أصبحت القيمة الافتراضية لـ `compiler.enabled` الآن `false`. إذا كنت تعتمد على استخراج ملفات `.content.ts` في وقت البناء، فاضبط `compiler.enabled: true` في ملف `intlayer.config.ts`.
|
|
303
326
|
- **اللغات واللهجات (Locales & Dialects)**: إذا كنت تستخدم تبعيات i18n خارجية، أضف إضافات محول التوافق (compat adapter plugins) الخاصة بها في إعداداتك أو إعداد المجمّع (bundler setup) لإعادة كتابة عمليات الاستيراد (imports) تلقائيًا.
|
|
304
|
-
- **المحددات المخصصة (Custom Selectors)**: عند استدعاء `useIntlayer`، تم حجز المعامل الثاني الآن لكائن خيارات يحتوي على `{ locale, item, variant
|
|
327
|
+
- **المحددات المخصصة (Custom Selectors)**: عند استدعاء `useIntlayer`، تم حجز المعامل الثاني الآن لكائن خيارات يحتوي على `{ locale, item, variant }`. إذا كنت قد مررت سابقًا سلسلة لغة (locale string) مباشرة، فلا يزال بإمكانك القيام بذلك، ولكن يوصى باستخدام كائن الخيارات للاختيارات المتقدمة.
|
|
305
328
|
|
|
306
329
|
---
|
|
307
330
|
|
|
308
331
|
## روابط مفيدة
|
|
309
332
|
|
|
310
333
|
- [دليل حزم محولات التوافق (Compat Adapter Packages Guide)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/compat/index.md)
|
|
311
|
-
- [القواميس الديناميكية - المجموعات (Collections)
|
|
334
|
+
- [القواميس الديناميكية - المجموعات (Collections) والمتغيرات (Variants)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/index.md)
|
|
312
335
|
- [مرجع الإعدادات (Configuration Reference)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md)
|