@intlayer/docs 8.1.6 → 8.1.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/README.md +18 -9
- package/dist/cjs/generated/docs.entry.cjs +1 -1
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +1 -1
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/compiler.md +26 -0
- package/docs/ar/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ar/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ar/readme.md +138 -110
- package/docs/de/compiler.md +26 -0
- package/docs/de/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/de/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/de/readme.md +152 -124
- package/docs/en/compiler.md +27 -0
- package/docs/en/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/en/intlayer_with_vite+react_compiler.md +368 -0
- package/docs/en/readme.md +129 -105
- package/docs/en-GB/compiler.md +26 -0
- package/docs/en-GB/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/en-GB/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/en-GB/readme.md +134 -108
- package/docs/es/compiler.md +26 -0
- package/docs/es/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/es/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/es/readme.md +149 -121
- package/docs/fr/compiler.md +26 -0
- package/docs/fr/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/fr/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/fr/readme.md +150 -122
- package/docs/hi/compiler.md +26 -0
- package/docs/hi/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/hi/intlayer_with_vite+react_compiler.md +370 -0
- package/docs/hi/readme.md +153 -125
- package/docs/id/compiler.md +26 -0
- package/docs/id/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/id/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/id/readme.md +133 -105
- package/docs/it/compiler.md +26 -0
- package/docs/it/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/it/intlayer_with_vite+react_compiler.md +374 -0
- package/docs/it/readme.md +155 -127
- package/docs/ja/compiler.md +26 -0
- package/docs/ja/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ja/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ja/readme.md +152 -126
- package/docs/ko/compiler.md +26 -0
- package/docs/ko/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ko/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ko/readme.md +154 -126
- package/docs/pl/compiler.md +26 -0
- package/docs/pl/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/pl/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/pl/readme.md +134 -106
- package/docs/pt/compiler.md +27 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/pt/intlayer_with_vite+react_compiler.md +374 -0
- package/docs/pt/readme.md +154 -126
- package/docs/ru/compiler.md +26 -0
- package/docs/ru/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/ru/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/ru/readme.md +137 -109
- package/docs/tr/compiler.md +26 -0
- package/docs/tr/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/tr/intlayer_with_vite+react_compiler.md +375 -0
- package/docs/tr/readme.md +139 -111
- package/docs/uk/compiler.md +26 -0
- package/docs/uk/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/uk/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/uk/readme.md +133 -109
- package/docs/vi/compiler.md +27 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/vi/intlayer_with_vite+react_compiler.md +369 -0
- package/docs/vi/readme.md +138 -110
- package/docs/zh/compiler.md +26 -0
- package/docs/zh/intlayer_with_nextjs_compiler.md +481 -0
- package/docs/zh/intlayer_with_vite+react_compiler.md +372 -0
- package/docs/zh/readme.md +148 -120
- package/package.json +7 -8
- package/src/generated/docs.entry.ts +40 -0
|
@@ -63,6 +63,7 @@ declare const docsEntry: {
|
|
|
63
63
|
readonly './docs/en/intlayer_with_nextjs_14.md': Record<LocalesValues, Promise<string>>;
|
|
64
64
|
readonly './docs/en/intlayer_with_nextjs_15.md': Record<LocalesValues, Promise<string>>;
|
|
65
65
|
readonly './docs/en/intlayer_with_nextjs_16.md': Record<LocalesValues, Promise<string>>;
|
|
66
|
+
readonly './docs/en/intlayer_with_nextjs_compiler.md': Record<LocalesValues, Promise<string>>;
|
|
66
67
|
readonly './docs/en/intlayer_with_nextjs_no_locale_path.md': Record<LocalesValues, Promise<string>>;
|
|
67
68
|
readonly './docs/en/intlayer_with_nextjs_page_router.md': Record<LocalesValues, Promise<string>>;
|
|
68
69
|
readonly './docs/en/intlayer_with_nuxt.md': Record<LocalesValues, Promise<string>>;
|
|
@@ -73,6 +74,7 @@ declare const docsEntry: {
|
|
|
73
74
|
readonly './docs/en/intlayer_with_tanstack.md': Record<LocalesValues, Promise<string>>;
|
|
74
75
|
readonly './docs/en/intlayer_with_vite+preact.md': Record<LocalesValues, Promise<string>>;
|
|
75
76
|
readonly './docs/en/intlayer_with_vite+react.md': Record<LocalesValues, Promise<string>>;
|
|
77
|
+
readonly './docs/en/intlayer_with_vite+react_compiler.md': Record<LocalesValues, Promise<string>>;
|
|
76
78
|
readonly './docs/en/intlayer_with_vite+solid.md': Record<LocalesValues, Promise<string>>;
|
|
77
79
|
readonly './docs/en/intlayer_with_vite+svelte.md': Record<LocalesValues, Promise<string>>;
|
|
78
80
|
readonly './docs/en/intlayer_with_vite+vue.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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"}
|
package/docs/ar/compiler.md
CHANGED
|
@@ -53,6 +53,9 @@ history:
|
|
|
53
53
|
|
|
54
54
|
## الاستخدام
|
|
55
55
|
|
|
56
|
+
<Tabs>
|
|
57
|
+
<Tab value='vite'>
|
|
58
|
+
|
|
56
59
|
### Vite
|
|
57
60
|
|
|
58
61
|
بالنسبة للتطبيقات المبنية على Vite (React، Vue، Svelte، إلخ)، أسهل طريقة لاستخدام المترجم هي من خلال إضافة `vite-intlayer`.
|
|
@@ -79,6 +82,8 @@ export default defineConfig({
|
|
|
79
82
|
});
|
|
80
83
|
```
|
|
81
84
|
|
|
85
|
+
See complete tutorial: [Intlayer Compiler with Vite+React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_vite+react_compiler.md)
|
|
86
|
+
|
|
82
87
|
#### دعم الأُطُر
|
|
83
88
|
|
|
84
89
|
تقوم إضافة Vite بالكشف التلقائي والتعامل مع أنواع الملفات المختلفة:
|
|
@@ -97,6 +102,9 @@ npm install @intlayer/vue-compiler
|
|
|
97
102
|
npm install @intlayer/svelte-compiler
|
|
98
103
|
```
|
|
99
104
|
|
|
105
|
+
</Tab>
|
|
106
|
+
<Tab value='nextjs'>
|
|
107
|
+
|
|
100
108
|
### Next.js (Babel)
|
|
101
109
|
|
|
102
110
|
بالنسبة لتطبيقات Next.js أو التطبيقات الأخرى المبنية على Webpack والتي تستخدم Babel، يمكنك تكوين المترجم باستخدام إضافة `@intlayer/babel`.
|
|
@@ -131,3 +139,21 @@ module.exports = {
|
|
|
131
139
|
```
|
|
132
140
|
|
|
133
141
|
يضمن هذا التكوين استخراج المحتوى المعلن في مكوناتك تلقائيًا واستخدامه لتوليد القواميس أثناء عملية البناء.
|
|
142
|
+
|
|
143
|
+
See complete tutorial: [Intlayer Compiler with Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nextjs_compiler.md)
|
|
144
|
+
|
|
145
|
+
</Tab>
|
|
146
|
+
|
|
147
|
+
### ملء الترجمات المفقودة
|
|
148
|
+
|
|
149
|
+
يوفر Intlayer أداة CLI لمساعدتك في ملء الترجمات المفقودة. يمكنك استخدام أمر `intlayer` لاختبار وملء الترجمات المفقودة من الكود الخاص بك.
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
npx intlayer test # اختبار ما إذا كانت هناك ترجمات مفقودة
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
npx intlayer fill # ملء الترجمات المفقودة
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
> لمزيد من التفاصيل، راجع [توثيق CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/ci.md)
|
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-10
|
|
3
|
+
updatedAt: 2026-01-10
|
|
4
|
+
title: Next.js i18n - تحويل تطبيق Next.js الحالي إلى تطبيق متعدد اللغات (دليل i18n 2026)
|
|
5
|
+
description: اكتشف كيف تجعل تطبيق Next.js الحالي الخاص بك متعدد اللغات باستخدام مترجم Intlayer. اتبع التوثيق لتدويل (i18n) وترجمة تطبيقك باستخدام الذكاء الاصطناعي.
|
|
6
|
+
keywords:
|
|
7
|
+
- التدويل
|
|
8
|
+
- التوثيق
|
|
9
|
+
- Intlayer
|
|
10
|
+
- Next.js
|
|
11
|
+
- JavaScript
|
|
12
|
+
- React
|
|
13
|
+
- المترجم
|
|
14
|
+
- الذكاء الاصطناعي
|
|
15
|
+
slugs:
|
|
16
|
+
- doc
|
|
17
|
+
- بيئة
|
|
18
|
+
- nextjs
|
|
19
|
+
- مترجم
|
|
20
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-next-no-lolale-path-template
|
|
21
|
+
youtubeVideo: https://www.youtube.com/watch?v=e_PPG7PTqGU
|
|
22
|
+
history:
|
|
23
|
+
- version: 8.1.6
|
|
24
|
+
date: 2026-02-23
|
|
25
|
+
changes: الإصدار الأولي
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# كيفية جعل تطبيق Next.js الحالي متعدد اللغات (i18n) (دليل i18n 2026)
|
|
29
|
+
|
|
30
|
+
<Tabs defaultTab="video">
|
|
31
|
+
<Tab label="الفيديو" value="video">
|
|
32
|
+
|
|
33
|
+
<iframe title="أفضل حل i18n لـ Next.js؟ اكتشف Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
34
|
+
|
|
35
|
+
</Tab>
|
|
36
|
+
<Tab label="الشفرة" value="code">
|
|
37
|
+
|
|
38
|
+
<iframe
|
|
39
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-next-16-no-locale-path-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
40
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
41
|
+
title="CodeSandbox التجريبي - كيفية تدويل تطبيقك باستخدام Intlayer"
|
|
42
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
43
|
+
loading="lazy"
|
|
44
|
+
/>
|
|
45
|
+
|
|
46
|
+
</Tab>
|
|
47
|
+
</Tabs>
|
|
48
|
+
|
|
49
|
+
راجع [قالب التطبيق](https://github.com/aymericzip/intlayer-next-no-lolale-path-template) على GitHub.
|
|
50
|
+
|
|
51
|
+
## جدول المحتويات
|
|
52
|
+
|
|
53
|
+
<TOC/>
|
|
54
|
+
|
|
55
|
+
## لماذا يصعب تدويل تطبيق موجود بالفعل؟
|
|
56
|
+
|
|
57
|
+
إذا حاولت يومًا إضافة لغات متعددة إلى تطبيق صُمم للغة واحدة فقط، فأنت تعرف المعاناة. الأمر ليس مجرد "صعب" - إنه ممل. عليك أن تستعرض كل ملف، وتستخرج كل سلسلة نصية، وتنقلها إلى ملفات قواميس منفصلة.
|
|
58
|
+
|
|
59
|
+
ثم يأتي الجزء المحفوف بالمخاطر: استبدال كل هذا النص بخطافات (hooks) التعليمات البرمجية دون كسر التخطيط أو المنطق. إنه نوع العمل الذي يوقف تطوير الميزات الجديدة لأسابيع ويبدو وكأنه إعادة هيكلة لا تنتهي.
|
|
60
|
+
|
|
61
|
+
## ما هو مترجم Intlayer؟
|
|
62
|
+
|
|
63
|
+
تم إنشاء **مترجم Intlayer** لتخطي هذا العمل اليدوي. بدلًا من استخراج السلاسل النصية يدويًا، يقوم المترجم بذلك نيابة عنك. يقوم بفحص الكود الخاص بك، والبحث عن النص، واستخدام الذكاء الاصطناعي لإنشاء القواميس في الخلفية.
|
|
64
|
+
بعد ذلك، يقوم بتعديل شفرتك المصدرية أثناء مرحلة البناء (build) لحقن خطافات i18n الضرورية. أساسًا، تستمر في كتابة تطبيقك وكأنه بلغة واحدة، وسيتولى المترجم التحويل متعدد اللغات بصورة تلقائية تماماً.
|
|
65
|
+
|
|
66
|
+
> وثائق المترجم: [https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/compiler.md](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/compiler.md)
|
|
67
|
+
|
|
68
|
+
### القيود
|
|
69
|
+
|
|
70
|
+
نظرًا لأن المترجم يقوم بتحليل التعليمات البرمجية وتحويلها (إدراج الخطافات وإنشاء القواميس) في **وقت التجميع** (compile time)، فقد **يؤدي إلى إبطاء عملية البناء** لتطبيقك.
|
|
71
|
+
|
|
72
|
+
للتخفيف من هذا التأثير أثناء التطوير، يمكنك ضبط المترجم للعمل في وضع [`'build-only'`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md) أو تعطيله عند عدم الحاجة إليه.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## دليل خطوة بخطوة لإعداد Intlayer في تطبيق Next.js
|
|
77
|
+
|
|
78
|
+
### الخطوة 1: تثبيت التبعيات
|
|
79
|
+
|
|
80
|
+
قم بتثبيت الحزم اللازمة باستخدام npm:
|
|
81
|
+
|
|
82
|
+
```bash packageManager="npm"
|
|
83
|
+
npm install intlayer next-intlayer
|
|
84
|
+
npm install @intlayer/babel --save-dev
|
|
85
|
+
npx intlayer init
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```bash packageManager="pnpm"
|
|
89
|
+
pnpm add intlayer next-intlayer
|
|
90
|
+
pnpm add @intlayer/babel --save-dev
|
|
91
|
+
pnpm intlayer init
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```bash packageManager="yarn"
|
|
95
|
+
yarn add intlayer next-intlayer
|
|
96
|
+
yarn add @intlayer/babel --save-dev
|
|
97
|
+
yarn intlayer init
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```bash packageManager="bun"
|
|
101
|
+
bun add intlayer next-intlayer
|
|
102
|
+
bun add @intlayer/babel --dev
|
|
103
|
+
bunx intlayer init
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- **intlayer**
|
|
107
|
+
|
|
108
|
+
الحزمة الأساسية التي توفر أدوات التدويل لإدارة التهيئة، الترجمة، [إعلان المحتوى](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dictionary/content_file.md)، والترجمة البرمجية (transpilation)، بالإضافة إلى [أوامر CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/index.md).
|
|
109
|
+
|
|
110
|
+
- **next-intlayer**
|
|
111
|
+
|
|
112
|
+
الحزمة التي تدمج Intlayer مع Next.js. وتوفر موفري السياق (context providers) والخطافات للتدويل في Next.js. بالإضافة إلى ذلك، تتضمن الملحق لـ Next.js لدمج Intlayer مع [Webpack](https://webpack.js.org/) أو [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack)، بالإضافة إلى وسيط (middleware) لاكتشاف اللغة المفضلة للمستخدم، وإدارة ملفات تعريف الارتباط، ومعالجة إعادة توجيه عناوين URL.
|
|
113
|
+
|
|
114
|
+
### الخطوة 2: تهيئة مشروعك
|
|
115
|
+
|
|
116
|
+
قم بإنشاء ملف تهيئة لتحديد لغات تطبيقك:
|
|
117
|
+
|
|
118
|
+
```typescript fileName="intlayer.config.ts"
|
|
119
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
120
|
+
|
|
121
|
+
const config: IntlayerConfig = {
|
|
122
|
+
internationalization: {
|
|
123
|
+
locales: [Locales.ENGLISH, Locales.ARABIC],
|
|
124
|
+
defaultLocale: Locales.ARABIC,
|
|
125
|
+
},
|
|
126
|
+
routing: {
|
|
127
|
+
mode: "search-params",
|
|
128
|
+
},
|
|
129
|
+
compiler: {
|
|
130
|
+
enabled: true, // يمكن تعيينه إلى 'build-only' للحد من التأثير في وضع التطوير
|
|
131
|
+
outputDir: "i18n",
|
|
132
|
+
dictionaryKeyPrefix: "", // لا توجد بادئة، الافتراضي هو "comp-"
|
|
133
|
+
},
|
|
134
|
+
ai: {
|
|
135
|
+
provider: "openai",
|
|
136
|
+
model: "gpt-5-mini",
|
|
137
|
+
apiKey: process.env.OPEN_AI_API_KEY,
|
|
138
|
+
applicationContext: "هذا التطبيق هو مثال بسيط لتطبيق خرائط",
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export default config;
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
> **ملاحظة**: تأكد من إعداد `OPEN_AI_API_KEY` في متغيرات البيئة الخاصة بك.
|
|
146
|
+
|
|
147
|
+
> من خلال ملف التهيئة هذا، يمكنك إعداد عناوين URL المحلية، وعمليات إعادة توجيه الوكيل، وأسماء ملفات تعريف الارتباط، وموقع وامتداد إعلانات المحتوى الخاصة بك، وتعطيل سجلات Intlayer في وحدة التحكم، والمزيد. للحصول على قائمة كاملة بالمعلمات المتاحة، راجع [توثيق التهيئة](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md).
|
|
148
|
+
|
|
149
|
+
### الخطوة 3: دمج Intlayer في تهيئة Next.js الخاصة بك
|
|
150
|
+
|
|
151
|
+
قم بتهيئة إعداد Next.js الخاص بك لاستخدام Intlayer:
|
|
152
|
+
|
|
153
|
+
```typescript fileName="next.config.ts"
|
|
154
|
+
import type { NextConfig } from "next";
|
|
155
|
+
import { withIntlayer } from "next-intlayer/server";
|
|
156
|
+
|
|
157
|
+
const nextConfig: NextConfig = {
|
|
158
|
+
/* خيارات تهيئة Next.js اختيارية هنا */
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export default withIntlayer(nextConfig);
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
> يُستخدم ملحق Next.js `withIntlayer()` لدمج Intlayer مع Next.js. وهو يضمن بناء ملفات إعلام المحتوى ومراقبتها في وضع التطوير. يحدد متغيرات بيئة Intlayer داخل بيئات [Webpack](https://webpack.js.org/) أو [Turbopack](https://nextjs.org/docs/app/api-reference/turbopack). بالإضافة إلى ذلك، يوفر أسماء مستعارة لتحسين الأداء ويضمن التوافق التام مع مكونات الخادم.
|
|
165
|
+
|
|
166
|
+
### الخطوة 4: تكوين Babel
|
|
167
|
+
|
|
168
|
+
يتطلب مترجم Intlayer استخدام Babel لاستخراج المحتوى الخاص بك وتحسينه. قم بتحديث `babel.config.js` (أو `babel.config.json`) لتضمين إضافات Intlayer:
|
|
169
|
+
|
|
170
|
+
```typescript fileName="babel.config.js"
|
|
171
|
+
const {
|
|
172
|
+
intlayerExtractBabelPlugin,
|
|
173
|
+
intlayerOptimizeBabelPlugin,
|
|
174
|
+
getExtractPluginOptions,
|
|
175
|
+
getOptimizePluginOptions,
|
|
176
|
+
} = require("@intlayer/babel");
|
|
177
|
+
|
|
178
|
+
module.exports = {
|
|
179
|
+
presets: ["next/babel"],
|
|
180
|
+
plugins: [
|
|
181
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
182
|
+
[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
|
|
183
|
+
],
|
|
184
|
+
};
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### الخطوة 5: اكتشاف اللغة في صفحاتك
|
|
188
|
+
|
|
189
|
+
قم بإخلاء محتوى `RootLayout` الخاص بك واستبدله بالمثال التالي:
|
|
190
|
+
|
|
191
|
+
```tsx fileName="src/app/layout.tsx"
|
|
192
|
+
import type { Metadata } from "next";
|
|
193
|
+
import type { ReactNode } from "react";
|
|
194
|
+
import "./globals.css";
|
|
195
|
+
import { IntlayerClientProvider, LocalPromiseParams } from "next-intlayer";
|
|
196
|
+
import { getHTMLTextDir, getIntlayer } from "intlayer";
|
|
197
|
+
import { getLocale } from "next-intlayer/server";
|
|
198
|
+
export { generateStaticParams } from "next-intlayer";
|
|
199
|
+
|
|
200
|
+
export const generateMetadata = async (): Promise<Metadata> => {
|
|
201
|
+
const locale = await getLocale();
|
|
202
|
+
const { title, description, keywords } = getIntlayer("metadata", locale);
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
title,
|
|
206
|
+
description,
|
|
207
|
+
keywords,
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
const RootLayout = async ({
|
|
212
|
+
children,
|
|
213
|
+
}: Readonly<{
|
|
214
|
+
children: ReactNode;
|
|
215
|
+
}>) => {
|
|
216
|
+
const locale = await getLocale();
|
|
217
|
+
|
|
218
|
+
return (
|
|
219
|
+
<html lang={locale} dir={getHTMLTextDir(locale)}>
|
|
220
|
+
<IntlayerClientProvider defaultLocale={locale}>
|
|
221
|
+
<body>{children}</body>
|
|
222
|
+
</IntlayerClientProvider>
|
|
223
|
+
</html>
|
|
224
|
+
);
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
export default RootLayout;
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### الخطوة 6: ترجمة مكوناتك برمجياً
|
|
231
|
+
|
|
232
|
+
مع تمكين المترجم، **لم تعد بحاجة** للإعلان عن قواميس المحتوى يدويًا (مثل ملفات `.content.ts`).
|
|
233
|
+
|
|
234
|
+
بدلاً من ذلك، يمكنك كتابة المحتوى الخاص بك مباشرةً في شفرتك كتسلسلات نصية (strings) مكتوبة يدوياً. سيقوم Intlayer بتحليل شفرتك المصدرية، وإنشاء الترجمات باستخدام موفر الذكاء الاصطناعي المهيأ، واستبدال السلاسل النصية بمحتوى محلي أثناء خطوة البناء. كل هذا يتم تلقائياً بالكامل.
|
|
235
|
+
|
|
236
|
+
ما عليك سوى كتابة مكوناتك باستخدام سلاسل نصية ثابتة بلغتك الافتراضية. يتولى المترجم الباقي.
|
|
237
|
+
|
|
238
|
+
مثال على ما قد تبدو عليه صفحتك:
|
|
239
|
+
|
|
240
|
+
<Tabs>
|
|
241
|
+
<Tab value="Code">
|
|
242
|
+
|
|
243
|
+
```tsx fileName="src/app/page.tsx"
|
|
244
|
+
import type { FC } from "react";
|
|
245
|
+
import { IntlayerServerProvider } from "next-intlayer/server";
|
|
246
|
+
import { getLocale } from "next-intlayer/server";
|
|
247
|
+
|
|
248
|
+
const PageContent: FC = () => {
|
|
249
|
+
return (
|
|
250
|
+
<>
|
|
251
|
+
<p>ابدأ بالتعديل</p>
|
|
252
|
+
<code>src/app/page.tsx</code>
|
|
253
|
+
</>
|
|
254
|
+
);
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
export default async function Page() {
|
|
258
|
+
const locale = await getLocale();
|
|
259
|
+
|
|
260
|
+
return (
|
|
261
|
+
<IntlayerServerProvider locale={locale}>
|
|
262
|
+
<PageContent />
|
|
263
|
+
</IntlayerServerProvider>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
</Tab>
|
|
269
|
+
<Tab value="Output">
|
|
270
|
+
|
|
271
|
+
```ts fileName="i18n/page-content.content.tsx"
|
|
272
|
+
{
|
|
273
|
+
key: "page-content",
|
|
274
|
+
content: {
|
|
275
|
+
nodeType: "translation",
|
|
276
|
+
translation: {
|
|
277
|
+
en: {
|
|
278
|
+
getStartedByEditing: "Get started by editing",
|
|
279
|
+
},
|
|
280
|
+
fr: {
|
|
281
|
+
getStartedByEditing: "Commencez par éditer",
|
|
282
|
+
},
|
|
283
|
+
ar: {
|
|
284
|
+
getStartedByEditing: "ابدأ بالتعديل",
|
|
285
|
+
},
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
```tsx fileName="src/app/page.tsx"
|
|
292
|
+
import { type FC } from "react";
|
|
293
|
+
import { IntlayerServerProvider, useIntlayer } from "next-intlayer/server";
|
|
294
|
+
import { getLocale } from "next-intlayer/server";
|
|
295
|
+
|
|
296
|
+
const PageContent: FC = () => {
|
|
297
|
+
const content = useIntlayer("page-content");
|
|
298
|
+
|
|
299
|
+
return (
|
|
300
|
+
<>
|
|
301
|
+
<p>{content.getStartedByEditing}</p>
|
|
302
|
+
<code>src/app/page.tsx</code>
|
|
303
|
+
</>
|
|
304
|
+
);
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
export default async function Page() {
|
|
308
|
+
const locale = await getLocale();
|
|
309
|
+
|
|
310
|
+
return (
|
|
311
|
+
<IntlayerServerProvider locale={locale}>
|
|
312
|
+
<PageContent />
|
|
313
|
+
</IntlayerServerProvider>
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
</Tab>
|
|
319
|
+
</Tabs>
|
|
320
|
+
|
|
321
|
+
- يُستخدم **`IntlayerClientProvider`** لتوفير اللغة للأبناء في جانب العميل.
|
|
322
|
+
- بينما يُستخدم **`IntlayerServerProvider`** لتوفير اللغة للأبناء في جانب الخادم.
|
|
323
|
+
|
|
324
|
+
### (اختياري) الخطوة 7: ملء الترجمات المفقودة
|
|
325
|
+
|
|
326
|
+
يوفر Intlayer أداة CLI لمساعدتك في ملء الترجمات المفقودة. يمكنك استخدام الأمر `intlayer` لاختبار وملء الترجمات المفقودة من التعليمات البرمجية الخاصة بك.
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
npx intlayer test # اختبر ما إذا كانت هناك ترجمات مفقودة
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
npx intlayer fill # ملء الترجمات المفقودة
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
> لمزيد من التفاصيل، راجع [وثائق CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/ci.md)
|
|
337
|
+
|
|
338
|
+
### (اختياري) الخطوة 8: تهيئة وكيل التوجيه لاكتشاف اللغة
|
|
339
|
+
|
|
340
|
+
قم بتهيئة وسيط (middleware) للوكيل لاكتشاف لغة المستخدم المفضلة تلقائياً:
|
|
341
|
+
|
|
342
|
+
```typescript fileName="src/proxy.ts"
|
|
343
|
+
export { intlayerProxy as proxy } from "next-intlayer/proxy";
|
|
344
|
+
|
|
345
|
+
export const config = {
|
|
346
|
+
matcher:
|
|
347
|
+
"/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
|
|
348
|
+
};
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
> يستخدم `intlayerProxy` لاكتشاف اللغة المفضلة للمستخدم وإعادة توجيهه إلى عنوان URL المناسب كما هو محدد في [إعدادات ملف التهيئة](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md). بالإضافة إلى ذلك، فإنه يتيح حفظ لغة المستخدم المفضلة في ملف تعريف ارتباط (cookie).
|
|
352
|
+
|
|
353
|
+
### (اختياري) الخطوة 8: تغيير لغة المحتوى الخاص بك
|
|
354
|
+
|
|
355
|
+
لتغيير لغة المحتوى في Next.js، الطريقة الموصى بها هي استخدام مكون `Link` لإعادة توجيه المستخدمين إلى الصفحة المحلية المقابلة. يسمح مكون `Link` بالتحميل المسبق (prefetching) للصفحة، مما يساعد على تجنب تحديث الصفحة بالكامل.
|
|
356
|
+
|
|
357
|
+
```tsx fileName="src/components/localeSwitcher/LocaleSwitcher.tsx"
|
|
358
|
+
"use client";
|
|
359
|
+
|
|
360
|
+
import type { FC } from "react";
|
|
361
|
+
import { Locales, getHTMLTextDir, getLocaleName } from "intlayer";
|
|
362
|
+
import { useLocale } from "next-intlayer";
|
|
363
|
+
|
|
364
|
+
export const LocaleSwitcher: FC = () => {
|
|
365
|
+
const { locale, availableLocales, setLocale } = useLocale({
|
|
366
|
+
onChange: () => window.location.reload(),
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
return (
|
|
370
|
+
<div>
|
|
371
|
+
<button popoverTarget="localePopover">{getLocaleName(locale)}</button>
|
|
372
|
+
<div id="localePopover" popover="auto">
|
|
373
|
+
{availableLocales.map((localeItem) => (
|
|
374
|
+
<button
|
|
375
|
+
key={localeItem}
|
|
376
|
+
aria-current={locale === localeItem ? "page" : undefined}
|
|
377
|
+
onClick={() => setLocale(localeItem)}
|
|
378
|
+
>
|
|
379
|
+
<span>
|
|
380
|
+
{/* اللغة - مثل: AR */}
|
|
381
|
+
{localeItem}
|
|
382
|
+
</span>
|
|
383
|
+
<span>
|
|
384
|
+
{/* اللغة بلغتها الخاصة - مثل: العربية */}
|
|
385
|
+
{getLocaleName(localeItem, locale)}
|
|
386
|
+
</span>
|
|
387
|
+
<span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
|
|
388
|
+
{/* اللغة باللغة الحالية - مثل: Francés عندما تكون اللغة الحالية هي Locales.SPANISH */}
|
|
389
|
+
{getLocaleName(localeItem)}
|
|
390
|
+
</span>
|
|
391
|
+
<span dir="ltr" lang={Locales.ENGLISH}>
|
|
392
|
+
{/* اللغة بالإنجليزية - مثل: Arabic */}
|
|
393
|
+
{getLocaleName(localeItem, Locales.ENGLISH)}
|
|
394
|
+
</span>
|
|
395
|
+
</button>
|
|
396
|
+
))}
|
|
397
|
+
</div>
|
|
398
|
+
</div>
|
|
399
|
+
);
|
|
400
|
+
};
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
> الطريقة البديلة هي استخدام وظيفة `setLocale` التي يوفرها خطاف `useLocale`. لن تسمح هذه الوظيفة بالتحميل المسبق للصفحة. راجع [وثائق خطاف `useLocale`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/packages/next-intlayer/useLocale.md) لمزيد من التفاصيل.
|
|
404
|
+
|
|
405
|
+
### (اختياري) الخطوة 10: تحسين حجم الحزمة الخاصة بك
|
|
406
|
+
|
|
407
|
+
عند استخدام `next-intlayer` ، يتم تضمين القواميس في الحزمة لكل صفحة بشكل افتراضي. لتحسين حجم الحزمة ، يوفر Intlayer ملحق SWC اختيارياً يستبدل بذكاء استدعاءات `useIntlayer` باستخدام الماكرو. يضمن ذلك تضمين القواميس فقط في حزم الصفحات التي تستخدمها بالفعل.
|
|
408
|
+
|
|
409
|
+
لتمكين هذا التحسين ، قم بتثبيت حزمة `@intlayer/swc`. بمجرد التثبيت ، سيكتشف `next-intlayer` الملحق ويستخدمه تلقائياً:
|
|
410
|
+
|
|
411
|
+
```bash packageManager="npm"
|
|
412
|
+
npm install @intlayer/swc --save-dev
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
```bash packageManager="pnpm"
|
|
416
|
+
pnpm add @intlayer/swc --save-dev
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
```bash packageManager="yarn"
|
|
420
|
+
yarn add @intlayer/swc --save-dev
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
```bash packageManager="bun"
|
|
424
|
+
bun add @intlayer/swc --dev
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
> ملاحظة: يتوفر هذا التحسين فقط لـ Next.js 13 وما فوق.
|
|
428
|
+
|
|
429
|
+
> ملاحظة: لا يتم تثبيت هذه الحزمة بشكل افتراضي لأن ملحقات SWC لا تزال تجريبية في Next.js. قد يتغير هذا في المستقبل.
|
|
430
|
+
|
|
431
|
+
> ملاحظة: إذا قمت بتعيين الخيار كـ `importMode: 'dynamic'` أو `importMode: 'fetch'` (في تهيئة `dictionary`) ، فسوف يعتمد على Suspense ، لذا سيتعين عليك لف استدعاءات `useIntlayer` بحدود `Suspense`. هذا يعني أنك لن تكون قادرًا على استخدام `useIntlayer` مباشرة في المستوى العلوي لمكون الصفحة / التخطيط الخاص بك.
|
|
432
|
+
|
|
433
|
+
### إعداد TypeScript
|
|
434
|
+
|
|
435
|
+
يستخدم Intlayer ميزة "توسيع الوحدات" (module augmentation) للاستفادة من مزايا TypeScript وجعل قاعدة الكود الخاصة بك أكثر قوة.
|
|
436
|
+
|
|
437
|
+

|
|
438
|
+
|
|
439
|
+

|
|
440
|
+
|
|
441
|
+
تأكد من أن تهيئة TypeScript الخاصة بك تتضمن الأنواع التي تم إنشاؤها تلقائياً.
|
|
442
|
+
|
|
443
|
+
```json5 fileName="tsconfig.json"
|
|
444
|
+
{
|
|
445
|
+
// ... تهيئات TypeScript الحالية
|
|
446
|
+
"include": [
|
|
447
|
+
// ... تهيئات TypeScript الحالية
|
|
448
|
+
".intlayer/**/*.ts", // تضمين الأنواع المنشأة تلقائياً
|
|
449
|
+
],
|
|
450
|
+
}
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### تهيئة Git
|
|
454
|
+
|
|
455
|
+
من المستحسن تجاهل الملفات التي تم إنشاؤها بواسطة Intlayer. يتيح لك ذلك تجنب إضافتها إلى مستودع Git الخاص بك.
|
|
456
|
+
|
|
457
|
+
للقيام بذلك ، يمكنك إضافة التعليمات التالية إلى ملف `.gitignore` الخاص بك:
|
|
458
|
+
|
|
459
|
+
```plaintext fileName=".gitignore"
|
|
460
|
+
# تجاهل الملفات المنشأة بواسطة Intlayer
|
|
461
|
+
.intlayer
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### ملحق VS Code
|
|
465
|
+
|
|
466
|
+
لتحسين تجربة التطوير الخاصة بك مع Intlayer ، يمكنك تثبيت **ملحق Intlayer الرسمي لـ VS Code**.
|
|
467
|
+
|
|
468
|
+
[تثبيت من VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
469
|
+
|
|
470
|
+
يوفر هذا الملحق:
|
|
471
|
+
|
|
472
|
+
- **الإكمال التلقائي** لمفاتيح الترجمة.
|
|
473
|
+
- **اكتشاف الأخطاء في الوقت الفعلي** للترجمات المفقودة.
|
|
474
|
+
- **معاينات مضمنة** للمحتوى المترجم.
|
|
475
|
+
- **إجراءات سريعة** لإنشاء وتحديث الترجمات بسهولة.
|
|
476
|
+
|
|
477
|
+
لمزيد من التفاصيل حول استخدام الملحق ، راجع [وثائق ملحق Intlayer لـ VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
478
|
+
|
|
479
|
+
### اذهب أبعد من ذلك
|
|
480
|
+
|
|
481
|
+
للذهاب إلى أبعد من ذلك، يمكنك تنفيذ [المحرر المرئي](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_visual_editor.md) أو إضفاء الطابع الخارجي على المحتوى الخاص بك باستخدام [نظام إدارة المحتوى (CMS)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_CMS.md).
|