@intlayer/docs 8.9.4 → 8.9.5
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/docs/ar/benchmark/index.md +0 -3
- package/docs/ar/benchmark/nextjs.md +15 -6
- package/docs/ar/benchmark/solid.md +155 -0
- package/docs/ar/benchmark/svelte.md +148 -0
- package/docs/ar/benchmark/tanstack.md +12 -3
- package/docs/ar/benchmark/vue.md +160 -0
- package/docs/ar/configuration.md +16 -12
- package/docs/ar/dictionary/content_file.md +51 -1
- package/docs/ar/plugins/sync-po.md +0 -21
- package/docs/bn/configuration.md +16 -12
- package/docs/cs/configuration.md +16 -12
- package/docs/de/benchmark/index.md +0 -3
- package/docs/de/benchmark/nextjs.md +15 -6
- package/docs/de/benchmark/solid.md +155 -0
- package/docs/de/benchmark/svelte.md +148 -0
- package/docs/de/benchmark/tanstack.md +12 -3
- package/docs/de/benchmark/vue.md +160 -0
- package/docs/de/configuration.md +16 -12
- package/docs/de/dictionary/content_file.md +52 -2
- package/docs/de/plugins/sync-po.md +0 -22
- package/docs/en/benchmark/nextjs.md +11 -2
- package/docs/en/benchmark/solid.md +22 -4
- package/docs/en/benchmark/svelte.md +17 -5
- package/docs/en/benchmark/tanstack.md +18 -3
- package/docs/en/benchmark/vue.md +17 -11
- package/docs/en/configuration.md +16 -13
- package/docs/en/dictionary/content_file.md +51 -1
- package/docs/en/plugins/sync-po.md +0 -21
- package/docs/en-GB/benchmark/index.md +0 -3
- package/docs/en-GB/benchmark/nextjs.md +15 -6
- package/docs/en-GB/benchmark/solid.md +155 -0
- package/docs/en-GB/benchmark/svelte.md +148 -0
- package/docs/en-GB/benchmark/tanstack.md +12 -3
- package/docs/en-GB/benchmark/vue.md +160 -0
- package/docs/en-GB/configuration.md +15 -11
- package/docs/en-GB/dictionary/content_file.md +51 -1
- package/docs/en-GB/plugins/sync-po.md +0 -21
- package/docs/es/benchmark/index.md +0 -3
- package/docs/es/benchmark/nextjs.md +15 -6
- package/docs/es/benchmark/solid.md +155 -0
- package/docs/es/benchmark/svelte.md +148 -0
- package/docs/es/benchmark/tanstack.md +12 -3
- package/docs/es/benchmark/vue.md +160 -0
- package/docs/es/configuration.md +16 -12
- package/docs/es/dictionary/content_file.md +51 -1
- package/docs/es/plugins/sync-po.md +0 -21
- package/docs/fr/benchmark/index.md +0 -3
- package/docs/fr/benchmark/nextjs.md +15 -6
- package/docs/fr/benchmark/solid.md +155 -0
- package/docs/fr/benchmark/svelte.md +148 -0
- package/docs/fr/benchmark/tanstack.md +12 -3
- package/docs/fr/benchmark/vue.md +160 -0
- package/docs/fr/configuration.md +16 -12
- package/docs/fr/dictionary/content_file.md +51 -1
- package/docs/fr/plugins/sync-po.md +0 -21
- package/docs/hi/benchmark/nextjs.md +15 -6
- package/docs/hi/benchmark/solid.md +155 -0
- package/docs/hi/benchmark/svelte.md +148 -0
- package/docs/hi/benchmark/tanstack.md +12 -3
- package/docs/hi/benchmark/vue.md +160 -0
- package/docs/hi/configuration.md +16 -12
- package/docs/hi/dictionary/content_file.md +51 -1
- package/docs/hi/plugins/sync-po.md +0 -21
- package/docs/id/benchmark/index.md +0 -3
- package/docs/id/benchmark/nextjs.md +15 -6
- package/docs/id/benchmark/solid.md +155 -0
- package/docs/id/benchmark/svelte.md +148 -0
- package/docs/id/benchmark/tanstack.md +12 -3
- package/docs/id/benchmark/vue.md +160 -0
- package/docs/id/configuration.md +16 -12
- package/docs/id/dictionary/content_file.md +51 -1
- package/docs/id/plugins/sync-po.md +0 -21
- package/docs/it/benchmark/index.md +1 -4
- package/docs/it/benchmark/nextjs.md +15 -6
- package/docs/it/benchmark/solid.md +155 -0
- package/docs/it/benchmark/svelte.md +148 -0
- package/docs/it/benchmark/tanstack.md +12 -3
- package/docs/it/benchmark/vue.md +160 -0
- package/docs/it/configuration.md +16 -12
- package/docs/it/dictionary/content_file.md +51 -1
- package/docs/it/plugins/sync-po.md +0 -21
- package/docs/ja/benchmark/index.md +5 -5
- package/docs/ja/benchmark/nextjs.md +15 -6
- package/docs/ja/benchmark/solid.md +155 -0
- package/docs/ja/benchmark/svelte.md +148 -0
- package/docs/ja/benchmark/tanstack.md +12 -3
- package/docs/ja/benchmark/vue.md +160 -0
- package/docs/ja/configuration.md +16 -12
- package/docs/ja/dictionary/content_file.md +50 -2
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +4 -3
- package/docs/ja/plugins/sync-po.md +0 -21
- package/docs/ko/benchmark/nextjs.md +15 -6
- package/docs/ko/benchmark/solid.md +155 -0
- package/docs/ko/benchmark/svelte.md +148 -0
- package/docs/ko/benchmark/tanstack.md +12 -3
- package/docs/ko/benchmark/vue.md +160 -0
- package/docs/ko/configuration.md +16 -12
- package/docs/ko/dictionary/content_file.md +51 -1
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +3 -2
- package/docs/ko/plugins/sync-po.md +0 -21
- package/docs/nl/configuration.md +16 -12
- package/docs/pl/benchmark/index.md +0 -3
- package/docs/pl/benchmark/nextjs.md +15 -6
- package/docs/pl/benchmark/solid.md +155 -0
- package/docs/pl/benchmark/svelte.md +148 -0
- package/docs/pl/benchmark/tanstack.md +12 -3
- package/docs/pl/benchmark/vue.md +160 -0
- package/docs/pl/configuration.md +16 -12
- package/docs/pl/dictionary/content_file.md +51 -1
- package/docs/pl/plugins/sync-po.md +0 -21
- package/docs/pt/benchmark/index.md +0 -3
- package/docs/pt/benchmark/nextjs.md +16 -7
- package/docs/pt/benchmark/solid.md +155 -0
- package/docs/pt/benchmark/svelte.md +148 -0
- package/docs/pt/benchmark/tanstack.md +13 -4
- package/docs/pt/benchmark/vue.md +160 -0
- package/docs/pt/configuration.md +16 -12
- package/docs/pt/dictionary/content_file.md +51 -1
- package/docs/pt/plugins/sync-po.md +0 -21
- package/docs/ru/benchmark/nextjs.md +15 -6
- package/docs/ru/benchmark/solid.md +155 -0
- package/docs/ru/benchmark/svelte.md +148 -0
- package/docs/ru/benchmark/tanstack.md +12 -3
- package/docs/ru/benchmark/vue.md +160 -0
- package/docs/ru/configuration.md +16 -12
- package/docs/ru/dictionary/content_file.md +52 -2
- package/docs/ru/plugins/sync-po.md +0 -21
- package/docs/tr/benchmark/index.md +0 -3
- package/docs/tr/benchmark/nextjs.md +15 -6
- package/docs/tr/benchmark/solid.md +155 -0
- package/docs/tr/benchmark/svelte.md +148 -0
- package/docs/tr/benchmark/tanstack.md +12 -3
- package/docs/tr/benchmark/vue.md +160 -0
- package/docs/tr/configuration.md +16 -12
- package/docs/tr/dictionary/content_file.md +51 -1
- package/docs/tr/plugins/sync-po.md +0 -21
- package/docs/uk/benchmark/nextjs.md +15 -6
- package/docs/uk/benchmark/solid.md +155 -0
- package/docs/uk/benchmark/svelte.md +148 -0
- package/docs/uk/benchmark/tanstack.md +12 -3
- package/docs/uk/benchmark/vue.md +160 -0
- package/docs/uk/configuration.md +16 -12
- package/docs/uk/dictionary/content_file.md +51 -1
- package/docs/uk/plugins/sync-po.md +0 -21
- package/docs/ur/configuration.md +16 -12
- package/docs/vi/benchmark/index.md +0 -3
- package/docs/vi/benchmark/nextjs.md +15 -6
- package/docs/vi/benchmark/solid.md +155 -0
- package/docs/vi/benchmark/svelte.md +148 -0
- package/docs/vi/benchmark/tanstack.md +12 -3
- package/docs/vi/benchmark/vue.md +160 -0
- package/docs/vi/configuration.md +16 -12
- package/docs/vi/dictionary/content_file.md +51 -1
- package/docs/vi/intlayer_with_nextjs_15.md +10 -57
- package/docs/vi/plugins/sync-po.md +0 -21
- package/docs/zh/benchmark/nextjs.md +15 -6
- package/docs/zh/benchmark/solid.md +155 -0
- package/docs/zh/benchmark/svelte.md +148 -0
- package/docs/zh/benchmark/tanstack.md +12 -3
- package/docs/zh/benchmark/vue.md +160 -0
- package/docs/zh/configuration.md +16 -12
- package/docs/zh/dictionary/content_file.md +51 -3
- package/docs/zh/plugins/sync-po.md +0 -21
- package/frequent_questions/ar/intlayerNode.md +3 -3
- package/frequent_questions/de/intlayerNode.md +3 -3
- package/frequent_questions/en/intlayerNode.md +3 -3
- package/frequent_questions/en-GB/intlayerNode.md +3 -3
- package/frequent_questions/es/intlayerNode.md +3 -3
- package/frequent_questions/fr/intlayerNode.md +3 -3
- package/frequent_questions/hi/intlayerNode.md +3 -3
- package/frequent_questions/id/intlayerNode.md +3 -3
- package/frequent_questions/it/intlayerNode.md +3 -3
- package/frequent_questions/ja/intlayerNode.md +3 -3
- package/frequent_questions/ko/intlayerNode.md +3 -3
- package/frequent_questions/pl/intlayerNode.md +3 -3
- package/frequent_questions/pt/intlayerNode.md +3 -3
- package/frequent_questions/ru/intlayerNode.md +3 -3
- package/frequent_questions/tr/intlayerNode.md +3 -3
- package/frequent_questions/uk/intlayerNode.md +3 -3
- package/frequent_questions/vi/intlayerNode.md +3 -3
- package/frequent_questions/zh/intlayerNode.md +3 -3
- package/package.json +8 -8
package/docs/ar/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-05-12
|
|
4
4
|
title: الإعدادات (Configuration)
|
|
5
5
|
description: تعرف على كيفية إعداد Intlayer لتطبيقك. افهم الإعدادات والخيارات المختلفة المتاحة لتخصيص Intlayer وفقًا لاحتياجاتك.
|
|
6
6
|
keywords:
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.9.4
|
|
18
|
+
date: 2026-05-12
|
|
19
|
+
changes: "إضافة دعم لمزود LM Studio"
|
|
17
20
|
- version: 8.7.0
|
|
18
21
|
date: 2026-04-08
|
|
19
22
|
changes: "إضافة خياري `prune` و `minify` إلى إعدادات البناء"
|
|
@@ -350,7 +353,7 @@ const config: IntlayerConfig = {
|
|
|
350
353
|
ai: {
|
|
351
354
|
/**
|
|
352
355
|
* مزود الذكاء الاصطناعي المستخدم.
|
|
353
|
-
* الخيارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
356
|
+
* الخيارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
354
357
|
* الافتراضي: 'openai'
|
|
355
358
|
*/
|
|
356
359
|
provider: "openai",
|
|
@@ -909,16 +912,17 @@ dictionary: {
|
|
|
909
912
|
- **Groq**
|
|
910
913
|
- **Amazon Bedrock**
|
|
911
914
|
- **Together.ai**
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
|
915
|
-
|
|
|
916
|
-
| `
|
|
917
|
-
| `
|
|
918
|
-
| `
|
|
919
|
-
| `
|
|
920
|
-
| `
|
|
921
|
-
| `
|
|
915
|
+
- **LM Studio**
|
|
916
|
+
|
|
917
|
+
| الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
|
|
918
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
919
|
+
| `provider` | المزود المستخدم لميزات الذكاء الاصطناعي في Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | يحتاج المزودون المختلفون إلى مفاتيح واجهة برمجة تطبيقات مختلفة ولهم أسعار مختلفة. |
|
|
920
|
+
| `model` | النموذج المستخدم لميزات الذكاء الاصطناعي. | `string` | لا يوجد | `'gpt-4o-2024-11-20'` | يعتمد النموذج المحدد على المزود. |
|
|
921
|
+
| `temperature` | يتحكم في عشوائية ردود الذكاء الاصطناعي. | `number` | لا يوجد | `0.1` | درجة حرارة أعلى = أكثر إبداعاً وأقل قابلية للتنبؤ. |
|
|
922
|
+
| `apiKey` | مفتاح واجهة برمجة التطبيقات الخاص بك للمزود المختار. | `string` | لا يوجد | `process.env.OPENAI_API_KEY` | يجب الحفاظ على سريته؛ استخدم متغيرات البيئة. |
|
|
923
|
+
| `applicationContext` | سياق إضافي حول تطبيقك لمساعدة الذكاء الاصطناعي في توليد ترجمات أكثر دقة (المجال، الجمهور المستهدف، النبرة، المصطلحات). | `string` | لا يوجد | `'سياق تطبيقي الخاص'` | يمكن استخدامه لإضافة قواعد (مثلاً: `"لا يجب عليك تحويل روابط URL"`). |
|
|
924
|
+
| `baseURL` | الرابط الأساسي لواجهة برمجة تطبيقات الذكاء الاصطناعي. | `string` | لا يوجد | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | يمكن أن يشير إلى نقطة نهاية محلية أو مخصصة لواجهة برمجة تطبيقات الذكاء الاصطناعي. |
|
|
925
|
+
| `dataSerialization` | صيغة تسلسل البيانات لميزات الذكاء الاصطناعي. | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: افتراضي، موثوق؛ يستهلك المزيد من الوحدات. <br/> • `'toon'`: وحدات أقل، أقل استقراراً. <br/> • يتم تمرير المعاملات الإضافية إلى النموذج كسياق (جهد التفكير إلخ). |
|
|
922
926
|
|
|
923
927
|
---
|
|
924
928
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-02-07
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-05-12
|
|
4
4
|
title: ملف المحتوى
|
|
5
5
|
description: تعلّم كيفية تخصيص الامتدادات لملفات إعلان المحتوى الخاصة بك. اتبع هذا التوثيق لتنفيذ الشروط بكفاءة في مشروعك.
|
|
6
6
|
keywords:
|
|
@@ -12,6 +12,9 @@ slugs:
|
|
|
12
12
|
- concept
|
|
13
13
|
- content
|
|
14
14
|
history:
|
|
15
|
+
- version: 8.9.0
|
|
16
|
+
date: 2026-05-12
|
|
17
|
+
changes: "إضافة نوع عقدة المحتوى `plural`"
|
|
15
18
|
- version: 8.0.0
|
|
16
19
|
date: 2026-01-28
|
|
17
20
|
changes: "إضافة نوع عقدة المحتوى `html`"
|
|
@@ -66,6 +69,7 @@ import { type ReactNode } from "react";
|
|
|
66
69
|
import {
|
|
67
70
|
t,
|
|
68
71
|
enu,
|
|
72
|
+
plural,
|
|
69
73
|
cond,
|
|
70
74
|
nest,
|
|
71
75
|
md,
|
|
@@ -85,6 +89,7 @@ interface Content {
|
|
|
85
89
|
};
|
|
86
90
|
multilingualContent: string;
|
|
87
91
|
quantityContent: string;
|
|
92
|
+
pluralContent: string;
|
|
88
93
|
conditionalContent: string;
|
|
89
94
|
markdownContent: never;
|
|
90
95
|
htmlContent: never;
|
|
@@ -121,6 +126,10 @@ export default {
|
|
|
121
126
|
">5": "بعض السيارات",
|
|
122
127
|
">19": "الكثير من السيارات",
|
|
123
128
|
}),
|
|
129
|
+
pluralContent: plural({
|
|
130
|
+
one: "One car",
|
|
131
|
+
other: "{{count}} cars",
|
|
132
|
+
}),
|
|
124
133
|
conditionalContent: cond({
|
|
125
134
|
true: "التحقق مفعل",
|
|
126
135
|
false: "التحقق معطل",
|
|
@@ -175,6 +184,13 @@ export default {
|
|
|
175
184
|
">5": "بعض السيارات",
|
|
176
185
|
">19": "العديد من السيارات",
|
|
177
186
|
},
|
|
187
|
+
"pluralContent": {
|
|
188
|
+
"nodeType": "plural",
|
|
189
|
+
"plural": {
|
|
190
|
+
"one": "One car",
|
|
191
|
+
"other": "{{count}} cars",
|
|
192
|
+
},
|
|
193
|
+
},
|
|
178
194
|
},
|
|
179
195
|
"conditionalContent": {
|
|
180
196
|
"nodeType": "condition",
|
|
@@ -222,6 +238,7 @@ export default {
|
|
|
222
238
|
- **قيم بدائية**: سلاسل نصية، أرقام، قيم منطقية، null، undefined
|
|
223
239
|
- **عقد ذات نوع**: أنواع محتوى خاصة مثل الترجمات، الشروط، الماركداون، إلخ.
|
|
224
240
|
- **دوال**: محتوى ديناميكي يمكن تقييمه أثناء وقت التشغيل [انظر جلب الدوال](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/function_fetching.md)
|
|
241
|
+
- **محتوى الجمع**: راجع محتوى الجمع [راجع محتوى الجمع](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/plural.md)
|
|
225
242
|
- **محتوى متداخل**: مراجع إلى قواميس أخرى
|
|
226
243
|
|
|
227
244
|
#### أنواع المحتوى
|
|
@@ -547,6 +564,8 @@ multilingualContent: t({
|
|
|
547
564
|
});
|
|
548
565
|
```
|
|
549
566
|
|
|
567
|
+
> راجع [محتوى الترجمة (`t`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/translation.md) لمزيد من المعلومات.
|
|
568
|
+
|
|
550
569
|
### محتوى الشرط (`cond`)
|
|
551
570
|
|
|
552
571
|
محتوى يتغير بناءً على شروط منطقية:
|
|
@@ -560,6 +579,8 @@ conditionalContent: cond({
|
|
|
560
579
|
});
|
|
561
580
|
```
|
|
562
581
|
|
|
582
|
+
> راجع [محتوى الشرط (`cond`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/condition.md) لمزيد من المعلومات.
|
|
583
|
+
|
|
563
584
|
### محتوى التعداد (`enu`)
|
|
564
585
|
|
|
565
586
|
المحتوى الذي يختلف بناءً على القيم المعدودة:
|
|
@@ -574,6 +595,23 @@ statusContent: enu({
|
|
|
574
595
|
});
|
|
575
596
|
```
|
|
576
597
|
|
|
598
|
+
> راجع [محتوى التعداد (`enu`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/enumeration.md) لمزيد من المعلومات.
|
|
599
|
+
|
|
600
|
+
### محتوى الجمع (`plural`)
|
|
601
|
+
|
|
602
|
+
المحتوى الذي يختلف بناءً على قواعد الجمع:
|
|
603
|
+
|
|
604
|
+
```typescript
|
|
605
|
+
import { plural } from "intlayer";
|
|
606
|
+
|
|
607
|
+
pluralContent: plural({
|
|
608
|
+
one: "One car",
|
|
609
|
+
other: "{{count}} cars",
|
|
610
|
+
});
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
> راجع [محتوى الجمع توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/plural.md) لمزيد من المعلومات.
|
|
614
|
+
|
|
577
615
|
### محتوى الإدراج (`insert`)
|
|
578
616
|
|
|
579
617
|
محتوى يمكن إدراجه داخل محتويات أخرى:
|
|
@@ -584,6 +622,8 @@ import { insert } from "intlayer";
|
|
|
584
622
|
insertionContent: insert("يمكن إدراج هذا النص في أي مكان");
|
|
585
623
|
```
|
|
586
624
|
|
|
625
|
+
> راجع [محتوى الإدراج (`insert`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/insertion.md) لمزيد من المعلومات.
|
|
626
|
+
|
|
587
627
|
### المحتوى المتداخل (`nest`)
|
|
588
628
|
|
|
589
629
|
مراجع إلى قواميس أخرى:
|
|
@@ -594,6 +634,8 @@ import { nest } from "intlayer";
|
|
|
594
634
|
nestedContent: nest("about-page");
|
|
595
635
|
```
|
|
596
636
|
|
|
637
|
+
> راجع [المحتوى المتداخل (`nest`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/nesting.md) لمزيد من المعلومات.
|
|
638
|
+
|
|
597
639
|
### محتوى ماركداون (`md`)
|
|
598
640
|
|
|
599
641
|
محتوى نص غني بصيغة ماركداون:
|
|
@@ -606,6 +648,8 @@ markdownContent: md(
|
|
|
606
648
|
);
|
|
607
649
|
```
|
|
608
650
|
|
|
651
|
+
> راجع [محتوى ماركداون (`md`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/markdown.md) لمزيد من المعلومات.
|
|
652
|
+
|
|
609
653
|
### محتوى HTML (`html`)
|
|
610
654
|
|
|
611
655
|
محتوى HTML غني يمكنه استخدام وسوم قياسية أو مكونات مخصصة:
|
|
@@ -623,6 +667,8 @@ localizedHtmlContent: t({
|
|
|
623
667
|
});
|
|
624
668
|
```
|
|
625
669
|
|
|
670
|
+
> راجع [محتوى HTML (`html`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/html.md) لمزيد من المعلومات.
|
|
671
|
+
|
|
626
672
|
### محتوى الجنس (`gender`)
|
|
627
673
|
|
|
628
674
|
محتوى يتغير بناءً على الجنس:
|
|
@@ -637,6 +683,8 @@ genderContent: gender({
|
|
|
637
683
|
});
|
|
638
684
|
```
|
|
639
685
|
|
|
686
|
+
> راجع [محتوى الجنس (`gender`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/gender.md) لمزيد من المعلومات.
|
|
687
|
+
|
|
640
688
|
### محتوى الملف (`file`)
|
|
641
689
|
|
|
642
690
|
مراجع لملفات خارجية:
|
|
@@ -647,6 +695,8 @@ import { file } from "intlayer";
|
|
|
647
695
|
fileContent: file("./path/to/content.txt");
|
|
648
696
|
```
|
|
649
697
|
|
|
698
|
+
> راجع [محتوى الملف (`file`) توثيق](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/file.md) لمزيد من المعلومات.
|
|
699
|
+
|
|
650
700
|
## إنشاء ملفات المحتوى
|
|
651
701
|
|
|
652
702
|
### الهيكل الأساسي لملف المحتوى
|
|
@@ -160,30 +160,9 @@ syncPO({
|
|
|
160
160
|
source: ({ key, locale }) => string, // مطلوب
|
|
161
161
|
location?: string, // تسمية اختيارية، الافتراضي: "sync-po::path/to/source"
|
|
162
162
|
priority?: number, // أولوية اختيارية لحل النزاعات، الافتراضي: 0
|
|
163
|
-
format?: 'icu' | 'i18next' | 'vue-i18n', // اختياري، مطلوب فقط عندما تستخدم قيم msgstr الخاصة بك بناء جملة إدراج محدد
|
|
164
163
|
});
|
|
165
164
|
```
|
|
166
165
|
|
|
167
|
-
#### `format` ('icu' | 'i18next' | 'vue-i18n')
|
|
168
|
-
|
|
169
|
-
ملفات PO هي دائمًا ملفات Gettext Portable Object — وهذا أمر ثابت. يصف هذا الخيار فقط **بناء جملة الإدراج** المستخدم داخل قيم `msgstr` ، بحيث يمكن لـ Intlayer تحويلها إلى تنسيقه الخاص في وقت التحليل (عبر `formatDictionary`) والعودة عند كتابة المخرجات.
|
|
170
|
-
|
|
171
|
-
- `undefined` _(افتراضي)_: يتم التعامل مع قيم `msgstr` كسلاسل نصية عادية — لا يوجد تحويل. استخدم هذا لمعظم ملفات PO.
|
|
172
|
-
- `'icu'`: تستخدم قيم `msgstr` بناء جملة رسائل ICU (على سبيل المثال `{count, plural, one {# item} other {# items}}`).
|
|
173
|
-
- `'i18next'`: تستخدم قيم `msgstr` بناء جملة إدراج i18next (على سبيل المثال `{{variable}}`).
|
|
174
|
-
- `'vue-i18n'`: تستخدم قيم `msgstr` بناء جملة Vue I18n.
|
|
175
|
-
|
|
176
|
-
> يتم تطبيق التحويل بواسطة `formatDictionary` الخاص بـ `@intlayer/chokidar` عند التحميل، ويتم عكسه باستخدام `formatDictionaryOutput` عند الكتابة. بالنسبة للقواعد المعقدة مثل جموع ICU، فإن دقة الرحلة الذهاب والاياب غير مضمونة.
|
|
177
|
-
|
|
178
|
-
**مثال — تحتوي ملفات PO على إدراج بنمط i18next:**
|
|
179
|
-
|
|
180
|
-
```ts
|
|
181
|
-
syncPO({
|
|
182
|
-
source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
|
|
183
|
-
format: "i18next",
|
|
184
|
-
}),
|
|
185
|
-
```
|
|
186
|
-
|
|
187
166
|
### مصادر PO متعددة والأولوية
|
|
188
167
|
|
|
189
168
|
يمكنك إضافة إضافات `syncPO` متعددة لمزامنة مصادر PO مختلفة. هذا مفيد عندما يكون لديك مصادر ترجمة متعددة أو هياكل PO مختلفة في مشروعك.
|
package/docs/bn/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-05-12
|
|
4
4
|
title: কনফিগারেশন (Configuration)
|
|
5
5
|
description: আপনার অ্যাপ্লিকেশনের জন্য Intlayer কীভাবে কনফিগার করবেন তা শিখুন। আপনার প্রয়োজন অনুযায়ী Intlayer কাস্টমাইজ করতে উপলব্ধ বিভিন্ন সেটিংস এবং বিকল্পগুলি বুঝুন।
|
|
6
6
|
keywords:
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.9.4
|
|
18
|
+
date: 2026-05-12
|
|
19
|
+
changes: "LM Studio প্রদানকারীর জন্য সমর্থন যোগ করুন"
|
|
17
20
|
- version: 8.7.0
|
|
18
21
|
date: 2026-04-08
|
|
19
22
|
changes: "বিল্ড কনফিগারেশনে `prune` এবং `minify` বিকল্প যোগ করা হয়েছে"
|
|
@@ -350,7 +353,7 @@ const config: IntlayerConfig = {
|
|
|
350
353
|
ai: {
|
|
351
354
|
/**
|
|
352
355
|
* ব্যবহৃত AI প্রোভাইডার।
|
|
353
|
-
* বিকল্পসমূহ: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
356
|
+
* বিকল্পসমূহ: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
354
357
|
* ডিফল্ট: 'openai'
|
|
355
358
|
*/
|
|
356
359
|
provider: "openai",
|
|
@@ -909,16 +912,17 @@ Intlayer সর্বোচ্চ নমনীয়তার জন্য এ
|
|
|
909
912
|
- **Groq**
|
|
910
913
|
- **Amazon Bedrock**
|
|
911
914
|
- **Together.ai**
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
|
915
|
-
|
|
|
916
|
-
| `
|
|
917
|
-
| `
|
|
918
|
-
| `
|
|
919
|
-
| `
|
|
920
|
-
| `
|
|
921
|
-
| `
|
|
915
|
+
- **LM Studio**
|
|
916
|
+
|
|
917
|
+
| ফিল্ড | বর্ণনা | টাইপ | ডিফল্ট | উদাহরণ | মন্তব্য |
|
|
918
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
919
|
+
| `provider` | Intlayer AI বৈশিষ্ট্যের জন্য ব্যবহৃত প্রোভাইডার। | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | বিভিন্ন প্রোভাইডারের জন্য আলাদা আলাদা API কী প্রয়োজন এবং তাদের দামও আলাদা। |
|
|
920
|
+
| `model` | AI বৈশিষ্ট্যের জন্য ব্যবহৃত মডেল। | `string` | নেই | `'gpt-4o-2024-11-20'` | নির্দিষ্ট মডেল প্রোভাইডারের ওপর নির্ভর করে। |
|
|
921
|
+
| `temperature` | AI রেসপন্সের র্যান্ডমনেস নিয়ন্ত্রণ করে। | `number` | নেই | `0.1` | উচ্চ টেম্পারেচার = আরও সৃজনশীল এবং কম নির্ভরযোগ্য। |
|
|
922
|
+
| `apiKey` | নির্বাচিত প্রোভাইডারের জন্য আপনার API কী। | `string` | নেই | `process.env.OPENAI_API_KEY` | এটি গোপন রাখতে হবে; এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন। |
|
|
923
|
+
| `applicationContext` | AI-কে আরও নির্ভুল অনুবাদ তৈরিতে সাহায্য করার জন্য আপনার অ্যাপ্লিকেশন সম্পর্কে অতিরিক্ত কনটেক্সট (ডোমেইন, টার্গেট অডিয়েন্স, টোন, পরিভাষা)। | `string` | নেই | `'আমার নিজস্ব অ্যাপ্লিকেশন কনটেক্সট'` | নিয়ম যোগ করার জন্য ব্যবহৃত হতে পারে (যেমন: `"আপনাদের URL গুলো রূপান্তর করা উচিত নয়"` )। |
|
|
924
|
+
| `baseURL` | AI API-এর জন্য বেস URL। | `string` | নেই | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | স্থানীয় বা কাস্টম AI API এন্ডপয়েন্টে পয়েন্ট করতে পারে। |
|
|
925
|
+
| `dataSerialization` | AI বৈশিষ্ট্যের জন্য ডেটা সিরিয়ালাইজেশন ফরম্যাট। | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: ডিফল্ট, নির্ভরযোগ্য; বেশি টোকেন ব্যবহার করে।<br/>• `'toon'`: কম টোকেন, কম স্থিতিশীল।<br/>• অতিরিক্ত প্যারামিটার হিসেবে মডেলকে কনটেক্সট পাস করা হয় (রিজনিং এফোর্ট ইত্যাদি)। |
|
|
922
926
|
|
|
923
927
|
---
|
|
924
928
|
|
package/docs/cs/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-05-12
|
|
4
4
|
title: Konfigurace (Configuration)
|
|
5
5
|
description: Naučte se, jak nakonfigurovat Intlayer pro vaši aplikaci. Porozumějte různým nastavením a možnostem dostupným pro přizpůsobení Intlayer vašim potřebám.
|
|
6
6
|
keywords:
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.9.4
|
|
18
|
+
date: 2026-05-12
|
|
19
|
+
changes: "Přidána podpora pro poskytovatele LM Studio"
|
|
17
20
|
- version: 8.7.0
|
|
18
21
|
date: 2026-04-08
|
|
19
22
|
changes: "Přidány volby `prune` a `minify` do konfigurace sestavení"
|
|
@@ -350,7 +353,7 @@ const config: IntlayerConfig = {
|
|
|
350
353
|
ai: {
|
|
351
354
|
/**
|
|
352
355
|
* Použitý poskytovatel AI.
|
|
353
|
-
* Možnosti: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
356
|
+
* Možnosti: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
354
357
|
* Výchozí: 'openai'
|
|
355
358
|
*/
|
|
356
359
|
provider: "openai",
|
|
@@ -916,16 +919,17 @@ Intlayer podporuje několik AI poskytovatelů pro maximální flexibilitu. V sou
|
|
|
916
919
|
- **Groq**
|
|
917
920
|
- **Amazon Bedrock**
|
|
918
921
|
- **Together.ai**
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
|
922
|
-
|
|
|
923
|
-
| `
|
|
924
|
-
| `
|
|
925
|
-
| `
|
|
926
|
-
| `
|
|
927
|
-
| `
|
|
928
|
-
| `
|
|
922
|
+
- **LM Studio**
|
|
923
|
+
|
|
924
|
+
| Pole | Popis | Typ | Výchozí | Příklad | Poznámka |
|
|
925
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
926
|
+
| `provider` | Poskytovatel použitý pro AI funkce Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | Různí poskytovatelé vyžadují různé API klíče a mají různé ceny. |
|
|
927
|
+
| `model` | Model použitý pro AI funkce. | `string` | Žádný | `'gpt-4o-2024-11-20'` | Konkrétní model závisí na poskytovateli. |
|
|
928
|
+
| `temperature` | Ovládá náhodnost odpovědí AI. | `number` | Žádný | `0.1` | Vyšší teplota = kreativnější a méně předvídatelné. |
|
|
929
|
+
| `apiKey` | Váš API klíč pro zvoleného poskytovatele. | `string` | Žádný | `process.env.OPENAI_API_KEY` | Musí být uchováváno v tajnosti; použijte proměnné prostředí. |
|
|
930
|
+
| `applicationContext` | Dodatečný kontext o vaší aplikaci, který pomůže AI generovat přesnější překlady (doména, cílová skupina, tón, terminologie). | `string` | Žádný | `'Můj vlastní kontext aplikace'` | Lze použít k přidání pravidel (např.: `"Neměli byste transformovat URL"`). |
|
|
931
|
+
| `baseURL` | Základní URL pro AI API. | `string` | Žádný | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Může ukazovat na lokální nebo vlastní endpoint AI API. |
|
|
932
|
+
| `dataSerialization` | Formát serializace dat pro AI funkce. | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: výchozí, spolehlivé; spotřebovává více tokenů.<br/>• `'toon'`: méně tokenů, méně stabilní.<br/>• Další parametry se předávají modelu jako kontext (úsilí uvažování atd.). |
|
|
929
933
|
|
|
930
934
|
---
|
|
931
935
|
|
|
@@ -30,6 +30,3 @@ Detaillierte Berichte und technische Dokumentation für jedes Framework finden S
|
|
|
30
30
|
- [**Vue Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/vue.md)
|
|
31
31
|
- [**Solid Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/solid.md)
|
|
32
32
|
- [**Svelte Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/svelte.md)
|
|
33
|
-
- [**Vue Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/vue.md)
|
|
34
|
-
- [**Solid Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/solid.md)
|
|
35
|
-
- [**Svelte Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/svelte.md)
|
|
@@ -61,6 +61,13 @@ Da das Problem komplex ist, gibt es viele Lösungen – einige konzentrieren sic
|
|
|
61
61
|
|
|
62
62
|
Intlayer versucht, über all diese Dimensionen hinweg zu optimieren.
|
|
63
63
|
|
|
64
|
+
## TL;DR
|
|
65
|
+
|
|
66
|
+
- **Intlayer** & **next-translate**: Top-Empfehlungen für die Next.js-Performance, mit dem kleinsten Fußabdruck und der besten Unterstützung für statisches Rendering.
|
|
67
|
+
- **next-intl**: Die aktuell trendigste Option, aber schwerfällig und komplex für die Optimierung großer Anwendungen.
|
|
68
|
+
- **next-i18next**: Beliebt und reich an Plugins, bringt jedoch ein erhebliches Bundle-Gewicht mit sich (~3× Intlayer).
|
|
69
|
+
- **Vermeiden**: **gt-next** und **lingo.dev** aufgrund schwerwiegender Performance-Probleme, Vendor-Lock-in und Build-Fehlern.
|
|
70
|
+
|
|
64
71
|
## Testen Sie Ihre App
|
|
65
72
|
|
|
66
73
|
Um diese Probleme aufzudecken, habe ich einen kostenlosen Scanner entwickelt, den Sie [hier](https://intlayer.org/i18n-seo-scanner) ausprobieren können.
|
|
@@ -99,14 +106,14 @@ Schließlich wendet `Intlayer` eine Build-Optimierung an, sodass `useIntlayer('m
|
|
|
99
106
|
Für diesen Benchmark haben wir die folgenden Bibliotheken verglichen:
|
|
100
107
|
|
|
101
108
|
- `Base App` (Ohne i18n-Bibliothek)
|
|
102
|
-
- `next-intlayer` (v8.7.
|
|
109
|
+
- `next-intlayer` (v8.7.12)
|
|
103
110
|
- `next-i18next` (v16.0.5)
|
|
104
111
|
- `next-intl` (v4.9.1)
|
|
105
112
|
- `@lingui/core` (v5.3.0)
|
|
106
113
|
- `next-translate` (v3.1.2)
|
|
107
114
|
- `next-international` (v1.3.1)
|
|
108
115
|
- `@inlang/paraglide-js` (v2.15.1)
|
|
109
|
-
-
|
|
116
|
+
- `@tolgee/react` (v7.0.0)
|
|
110
117
|
- `@lingo.dev/compiler` (v0.4.0)
|
|
111
118
|
- `wuchale` (v0.22.11)
|
|
112
119
|
- `gt-next` (v6.16.5)
|
|
@@ -161,10 +168,10 @@ Aufgetretene Probleme:
|
|
|
161
168
|
|
|
162
169
|
**(General Translation)** (`gt-next@6.16.5`):
|
|
163
170
|
|
|
164
|
-
- Bei einer 110-KB-App fügt `gt-
|
|
171
|
+
- Bei einer 110-KB-App fügt `gt-next` mehr als 440 KB hinzu.
|
|
165
172
|
- `Quota Exceeded, please upgrade your plan` bereits beim allerersten Build mit General Translation.
|
|
166
173
|
- Übersetzungen werden nicht gerendert; ich erhalte den Fehler `Error: <T> used on the client-side outside of <GTProvider>`, was anscheinend ein Bug in der Bibliothek ist.
|
|
167
|
-
- Bei der Implementierung von **gt-
|
|
174
|
+
- Bei der Implementierung von **gt-next** stieß ich ebenfalls auf ein [Problem](https://github.com/generaltranslation/gt/issues/1210#event-24510646961) mit der Bibliothek: `does not provide an export named 'printAST' - @formatjs/icu-messageformat-parser`, was zum Absturz der Anwendung führte. Nach Meldung dieses Problems behob der Maintainer es innerhalb von 24 Stunden.
|
|
168
175
|
- Die Bibliothek blockiert das statische Rendering von Next.js-Seiten.
|
|
169
176
|
|
|
170
177
|
**(Lingo.dev)** (`@lingo.dev/compiler@0.4.0`):
|
|
@@ -186,9 +193,11 @@ Die Idee hinter `Wuchale` ist interessant, aber noch nicht reif für den Einsatz
|
|
|
186
193
|
Persönlich missfällt mir die Notwendigkeit, JS-Dateien vor jedem Push neu zu generieren, was ein ständiges Risiko für Merge-Konflikte in PRs darstellt. Das Tool scheint zudem stärker auf Vite als auf Next.js ausgerichtet zu sein.
|
|
187
194
|
Schließlich nutzt Paraglide im Vergleich zu anderen Lösungen keinen Store (z. B. React Context), um die aktuelle Sprache für das Rendering abzurufen. Für jeden geparsten Node wird die Sprache aus dem localStorage / Cookie etc. angefragt. Dies führt zur Ausführung unnötiger Logik, die die Reaktivität der Komponenten beeinträchtigt.
|
|
188
195
|
|
|
196
|
+
> Hinweis zu Paraglide: Die Lösung injiziert Code in Ihre Codebasis für den Import, wodurch die Metrik 'Bibliotheksgröße' im Benchmark-Bericht fast 0 ist. Codegenerierung ist eine gute Sache, da die verwendete Funktion nur die notwendige Logik enthält (Präfix-Gesamtheit vs. kein Präfix, Cookie vs. Speicher usw.). Im Vergleich dazu führt Intlayer diese Filterung durch Injektionen von Umgebungsvariablen in den Build durch, um den Bundler zu zwingen, Inhalte je nach Logik per Tree-shaking zu entfernen. Dank dessen sind Paraglide und Intlayer am Ende 6- bis 10-mal leichtere Lösungen als i18next oder next-intl.
|
|
197
|
+
|
|
189
198
|
### 3 — Akzeptable Lösungen
|
|
190
199
|
|
|
191
|
-
**(Tolgee)** (
|
|
200
|
+
**(Tolgee)** (`@tolgee/react@7.0.0`):
|
|
192
201
|
|
|
193
202
|
`Tolgee` adressiert viele der oben genannten Probleme. Ich fand es schwieriger zu adoptieren als ähnliche Tools. Es bietet keine Typsicherheit, was es zudem erschwert, fehlende Schlüssel zur Kompilierzeit zu finden. Ich musste die Tolgee-Funktionen mit eigenen Funktionen umhüllen, um eine Erkennung fehlender Schlüssel hinzuzufügen.
|
|
194
203
|
|
|
@@ -216,7 +225,7 @@ Die Nachrichtenformate unterscheiden sich ebenfalls: `next-intl` verwendet ICU M
|
|
|
216
225
|
|
|
217
226
|
`next-translate` ist meine Hauptempfehlung, wenn Sie eine API im `t()`-Stil bevorzugen. Es ist durch das `next-translate-plugin` elegant gelöst und lädt Namespaces über `getStaticProps` mit einem Webpack / Turbopack Loader. Es ist zudem die leichteste Option hier (~2,5 KB). Für das Namespacing ist die Definition pro Seite oder Route in der Konfiguration gut durchdacht und einfacher zu warten als die Hauptalternativen wie **next-intl** oder **next-i18next**. In Version `3.1.2` stellte ich fest, dass das statische Rendering nicht funktionierte; Next.js fiel auf dynamisches Rendering zurück.
|
|
218
227
|
|
|
219
|
-
**(Intlayer)** (`next-intlayer@8.7.
|
|
228
|
+
**(Intlayer)** (`next-intlayer@8.7.12`):
|
|
220
229
|
|
|
221
230
|
Ich werde `next-intlayer` der Objektivität halber nicht persönlich bewerten, da es meine eigene Lösung ist.
|
|
222
231
|
|