---
createdAt: 2025-09-22
updatedAt: 2025-09-23
title: الإصدار الجديد Intlayer v7 - ما الجديد؟
description: اكتشف ما الجديد في Intlayer v7. تحسينات كبيرة في الأداء، تجربة المطور، وميزات جديدة لتعزيز سير عمل التدويل الخاص بك.
keywords:
  - Intlayer
  - التوطين
  - التطوير
  - الأداء
  - تجربة المطور
  - الميزات
  - React
  - Next.js
  - JavaScript
  - TypeScript
slugs:
  - doc
  - releases
  - v7
---

# الإصدار الجديد Intlayer v7 - ما الجديد؟

مرحبًا بك في Intlayer v7! يقدم هذا الإصدار الكبير تحسينات ملحوظة في الأداء، أمان الأنواع، وتجربة المطور. فيما يلي أبرز النقاط، مع ملاحظات الترحيل وأمثلة عملية.

## أبرز النقاط

- استراتيجية التخزين المؤقت لبناء أسرع
- تحسين توليد أنواع TypeScript بأنواع مخصصة لكل لغة
- تحسين الحزمة: استخدام السلاسل النصية للغات بدلاً من التعداد (enum)
- أوضاع توجيه جديدة: `prefix-no-default`، `prefix-all`، `no-prefix`، `search-params`
- تخزين اللغات متوافق مع GDPR باستخدام localStorage كإعداد افتراضي
- تكوين تخزين مرن: ملفات تعريف الارتباط (cookies)، localStorage، sessionStorage، أو متعددة
- حجم حزمة محرر المحتوى المرئي أصغر بنسبة 30%
- خيارات محسنة لتكوين الوسيط (middleware)
- تحديث سلوك أمر التعبئة (fill) لإدارة محتوى أفضل
- استقرار محسّن مع تحديثات كاملة لملفات إعلان المحتوى
- إدارة ذكية لإعادة المحاولة لضمان دقة الترجمة
- المعالجة المتوازية لتسريع عملية الترجمة
- تقسيم ذكي للتعامل مع الملفات الكبيرة ضمن حدود سياق الذكاء الاصطناعي

---

## الأداء: التخزين المؤقت لبناء أسرع

بدلاً من إعادة بناء إعلانات المحتوى باستخدام esbuild في كل عملية بناء، تقوم النسخة 7 بتنفيذ استراتيجية تخزين مؤقت تُسرّع عملية البناء.

```bash
npx intlayer build
```

نظام التخزين المؤقت الجديد:

- يخزن إعلانات المحتوى المجمعة لتجنب المعالجة المتكررة
- يكتشف التغييرات ويعيد بناء الملفات المعدلة فقط
- يقلل بشكل كبير من أوقات البناء للمشاريع الكبيرة

---

## تايب سكريبت: توليد أنواع مخصصة لكل لغة

يتم الآن توليد أنواع TypeScript لكل لغة على حدة، مما يوفر كتابة أقوى ويقضي على أنواع الاتحاد عبر جميع اللغات.

**سلوك النسخة 6:**

```tsx
const content = getIntlayer("my-title-content", "en");
// typeof content = { title: "My title" } | { title: "Mon titre" } | { title: "Mi título" }
```

**سلوك النسخة 7:**

```tsx
const content = getIntlayer("my-title-content", "en");
// typeof content = { title: "My title" }
```

الفوائد:

- إكمال تلقائي أكثر دقة في بيئة التطوير الخاصة بك
- أمان نوع أفضل بدون تلوث أنواع عبر اللغات المختلفة
- أداء محسّن من خلال تقليل تعقيد الأنواع

---

## تحسين الحزمة: اللغات كسلاسل نصية

لم يعد نوع `Locales` تعدادًا (enum)، مما يعني أنه أصبح قابلًا لإزالة الشجر بالكامل (tree-shakeable) ولن يثقل حزمة التطبيق الخاصة بك بآلاف سجلات اللغات غير المستخدمة.

**النسخة 6:**

```typescript
import { Locales } from "intlayer";
// تعداد يشمل جميع اللغات -> غير قابل لإزالة الشجر

const locale: Locales = Locales.ENGLISH;
```

**النسخة 7:**

```typescript
import { Locales, Locale } from "intlayer";
// نوع سلسلة نصية -> قابل لإزالة الشجر بالكامل

const locale: Locale = Locales.ENGLISH;
```

> نظرًا لأن `Locales` لم يعد تعدادًا (enum)، سيتعين عليك تغيير النوع من `Locales` إلى `Locale` للحصول على اللغة كنمط.

راجع [تفاصيل التنفيذ](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts) لمزيد من المعلومات.

---

## أوضاع التوجيه الجديدة لمزيد من المرونة

تقدم النسخة 7 تكوينًا موحدًا `routing.mode` يحل محل الخيارات السابقة `prefixDefault` و `noPrefix`، مما يوفر تحكمًا أكثر دقة في هيكل عنوان URL.

### أوضاع التوجيه المتاحة

- **`prefix-no-default`** (الافتراضي): اللغة الافتراضية بدون بادئة، واللغات الأخرى لها بادئة
  - `/dashboard` (en) أو `/fr/dashboard` (fr)
- **`prefix-all`**: جميع اللغات لها بادئة
  - `/en/dashboard` (en) أو `/fr/dashboard` (fr)
- **`no-prefix`**: لا توجد بادئات للغة في عناوين URL (يتم التعامل مع اللغة عبر التخزين/الرؤوس)
  - `/dashboard` لجميع اللغات
- **`search-params`**: تمرير اللغة كمعامل استعلام
  - `/dashboard?locale=en` أو `/dashboard?locale=fr`

### التكوين الأساسي

```typescript
// intlayer.config.ts
export default {
  internationalization: {
    locales: ["en", "fr", "es"],
    defaultLocale: "en",
  },
  routing: {
    mode: "prefix-no-default", // الافتراضي
  },
};
```

---

## الامتثال للائحة حماية البيانات العامة (GDPR): تخزين localStorage / الكوكيز

تُعطي النسخة 7 أولوية لخصوصية المستخدم باستخدام `localStorage` كآلية التخزين الافتراضية بدلاً من الكوكيز. يساعد هذا التغيير في الامتثال للائحة GDPR من خلال تجنب متطلبات موافقة الكوكيز لتفضيلات اللغة.

### خيارات تكوين التخزين

يتوفر الحقل الجديد `routing.storage` بالإضافة إلى الخيارات السابقة `middleware.cookieName` و `middleware.serverSetCookie`، مما يوفر تكوينات تخزين مرنة:

```typescript
// تعطيل التخزين
storage: false

// أنواع التخزين البسيطة
storage: 'cookie'
storage: 'localStorage'
storage: 'sessionStorage'

// الكوكيز مع سمات مخصصة
storage: {
  type: 'cookie',
  name: 'custom-locale',
  domain: '.example.com',
  secure: true,
  sameSite: 'strict'
}

// localStorage مع مفتاح مخصص
storage: {
  type: 'localStorage',
  name: 'custom-locale'
}

// أنواع تخزين متعددة للنسخ الاحتياطي
storage: ['cookie', 'localStorage']
```

### مثال على تكوين متوافق مع GDPR

للتطبيقات الإنتاجية التي تحتاج إلى موازنة بين الوظائف والامتثال لـ GDPR:

```typescript
// intlayer.config.ts
export default {
  internationalization: {
    locales: ["en", "fr", "es"],
    defaultLocale: "en",
  },
  routing: {
    mode: "prefix-no-default",
    storage: [
      {
        type: "localStorage", // التخزين الأساسي (لا يحتاج موافقة)
        name: "user-locale",
      },
      {
        type: "cookie", // تخزين الكوكيز الاختياري (يتطلب موافقة)
        name: "user-locale",
        secure: true,
        sameSite: "strict",
        httpOnly: false,
      },
    ],
  },
};
```

### تمكين / تعطيل تخزين الكوكيز

مثال باستخدام React / Next.js:

يمكن تعريفه على مستوى عام:

```typescript
<IntlayerProvider isCookieEnabled={false}>
  <App />
</IntlayerProvider>
```

يمكن تجاوزه محليًا لكل هوك:

```ts
const { setLocale } = useLocale({ isCookieEnabled: false });

setLocale("en");
```

**ملاحظة:** الكوكيز مفعلة بشكل افتراضي.
**ملاحظة:** تحقق من [متطلبات الكوكيز وفقًا للائحة GDPR](https://gdpr.eu/cookies/) لحالتك الخاصة.

---

## المحرر المرئي: حزمة أصغر بنسبة 30%

تم تحسين حزمة المحرر المرئي لتكون أصغر بنسبة 30% مقارنة بالإصدار السابق، وذلك بفضل:

- تحسينات أداء محرر الكود
- إزالة التبعيات غير الضرورية على حزم Intlayer الأساسية
- تحسين تقنيات tree-shaking وتجميع الوحدات

ينتج عن ذلك أوقات تحميل أسرع وأداء أفضل أثناء تشغيل التطبيق الخاص بك.

---

## أمر fill: سلوك محدث لإدارة محتوى أفضل

يقدم الإصدار 7 سلوكًا محسّنًا لأمر `fill`، مما يوفر إدارة محتوى أكثر توقعًا ومرونة:

### سلوك fill الجديد

- **`fill: true`** - يعيد كتابة الملف الحالي بمحتوى مملوء لجميع اللغات
- **`fill: "path/to/file"`** - يملأ الملف المحدد دون تعديل الملف الحالي
- **`fill: false`** - يعطل الملء التلقائي تمامًا

### دعم معزز لهياكل المحتوى المعقدة

يدعم أمر fill الآن هياكل إعلان المحتوى المعقدة، بما في ذلك:

- **الكائنات المركبة**: إعلانات المحتوى التي تشير إلى كائنات أخرى
- **المحتوى المفكك**: المحتوى الذي يستخدم أنماط التفكيك
- **المراجع المتداخلة**: الكائنات التي تستدعي بعضها البعض في تسلسلات معقدة
- **هياكل المحتوى الديناميكية**: المحتوى ذو الخصائص الشرطية أو المحسوبة

### الفوائد

- **نية أوضح**: أصبح السلوك أكثر وضوحًا بشأن ما يتم تعديله
- **فصل أفضل**: يمكن الاحتفاظ بملفات المحتوى منفصلة عن الترجمات المعبأة
- **تحسين سير العمل**: يتمتع المطورون بمزيد من التحكم في مكان تخزين الترجمات
- **دعم الهياكل المعقدة**: التعامل مع هياكل محتوى متطورة تحتوي على عدة كائنات مترابطة

### مثال على الاستخدام

```typescript
// إعادة كتابة الملف الحالي مع جميع اللغات
const content = {
  key: "example",
  fill: true, // يعيد كتابة هذا الملف
  content: {
    title: "Hello World",
  },
};

// تعبئة ملف منفصل دون تعديل الملف الحالي
const content = {
  key: "example",
  fill: "./translations.json", // ينشئ/يحدث translations.json
  content: {
    title: "Hello World",
  },
};

// تعطيل التعبئة التلقائية
const content = {
  key: "example",
  fill: false, // لا تعبئة تلقائية
  content: {
    title: "Hello World",
  },
};

// هيكل محتوى معقد مع كائنات مركبة
const sharedContent = {
  buttons: {
    save: "حفظ",
    cancel: "إلغاء",
  },
};

const content = {
  key: "complex-example",
  fill: true,
  content: {
    // مراجع لكائنات أخرى
    sharedContent,

    // محتوى مفكك
    ...sharedContent,

    // مراجع متداخلة
    sections: [
      {
        ...sharedContent.buttons,
        header: "القسم 1",
      },
    ],
  },
};
```

---

## تحسين الاستقرار وإدارة الترجمة

يقدم الإصدار 7 عدة تحسينات لجعل ترجمة المحتوى أكثر موثوقية وكفاءة:

### تحديثات كاملة لملفات إعلان المحتوى

يقوم النظام الآن بتحديث ملفات `.content.{ts,js,cjs,mjs}` بدلاً من التحديثات الجزئية، مما يضمن:

- **سلامة البيانات**: إعادة كتابة الملف بالكامل تمنع التحديثات الجزئية التي قد تؤدي إلى تلف المحتوى
- **الاتساق**: يتم تحديث جميع اللغات بشكل ذري، مما يحافظ على التزامن
- **الموثوقية**: يقلل من خطر وجود ملفات محتوى غير مكتملة أو تالفة

### إدارة إعادة المحاولة الذكية

آليات إعادة المحاولة الجديدة تمنع دفع المحتوى بصيغ غير صحيحة، وتتجنب كسر عملية التعبئة بالكامل إذا فشل طلب واحد.

### المعالجة المتوازية لتسريع الأداء

تعمل عمليات الترجمة الآن في قائمة انتظار لتشغيلها بشكل متوازي. هذا يسرع العملية بشكل كبير.

### تقسيم ذكي للملفات الكبيرة

استراتيجيات تقسيم متقدمة تتعامل مع ملفات المحتوى الكبيرة دون تجاوز حدود سياق الذكاء الاصطناعي:

### مثال على سير العمل

```typescript
// يتم تقسيم ملف المحتوى الكبير تلقائيًا
const content = {
  key: "large-documentation",
  fill: true,
  content: {
    // يتم تقسيم المحتوى الكبير تلقائيًا للمعالجة بواسطة الذكاء الاصطناعي
    introduction: "..." // أكثر من 5000 حرف
    sections: [
      // عدة أقسام كبيرة
    ]
  }
};
```

يقوم النظام تلقائيًا بـ:

1. تحليل حجم المحتوى وبنيته
2. تقسيم المحتوى بشكل مناسب
3. معالجة الأجزاء بشكل متوازي
4. التحقق من الصحة وإعادة المحاولة إذا لزم الأمر
5. إعادة بناء الملف الكامل

---

## ملاحظات الترحيل من الإصدار v6

### الإعدادات التي تمت إزالتها

- **`middleware.cookieName`**: تم استبداله بـ `routing.storage`
- **`middleware.serverSetCookie`**: تم استبداله بـ `routing.storage`
- **`middleware.prefixDefault`**: تم استبداله بـ `routing.mode`
- **`middleware.noPrefix`**: تم استبداله بـ `routing.mode`

### خريطة الترحيل

#### خريطة التهيئة

| تهيئة v6                   | تهيئة v7                                           |
| -------------------------- | -------------------------------------------------- |
| `autoFill: xxx`            | `fill: xxx`                                        |
| `prefixDefault: false`     | `mode: 'prefix-no-default'`                        |
| `prefixDefault: true`      | `mode: 'prefix-all'`                               |
| `noPrefix: true`           | `mode: 'no-prefix'`                                |
| `cookieName: 'my-locale'`  | `storage: { type: 'cookie', name: 'my-locale' }`   |
| `serverSetCookie: 'never'` | `storage: false` أو إزالة الكوكي من مصفوفة التخزين |

#### مثال على الترحيل

**قبل (v6):**

```typescript
export default {
  middleware: {
    headerName: "x-intlayer-locale",
    cookieName: "intlayer-locale",
    prefixDefault: false,
    basePath: "",
    serverSetCookie: "always",
    noPrefix: false,
  },
};
```

**بعد (v7):**

```typescript
export default {
  routing: {
    mode: "prefix-no-default",
    storage: "localStorage", // أو 'cookie' إذا كنت بحاجة إلى تخزين الكوكيز
    headerName: "x-intlayer-locale",
    basePath: "",
  },
};
```

#### مطابقة محتوى القاموس

| محتوى القاموس في v6 | محتوى القاموس في v7 |
| ------------------- | ------------------- |
| `autoFill: xxx`     | `fill: xxx`         |

#### مثال على الترحيل

**قبل (v6):**

```typescript
const content = {
  key: "example",
  autoFill: true, // يعيد كتابة هذا الملف
  content: {
    title: "مرحبا بالعالم",
  },
};
```

**بعد (v7):**

```typescript
const content = {
  key: "example",
  fill: true, // يعيد كتابة هذا الملف
  content: {
    title: "مرحبا بالعالم",
  },
};
```

---

## ملاحظات الترحيل من الإصدار v5 إلى v6

راجع [ملاحظات الترحيل من v5 إلى v6](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/releases/v6.md) لمزيد من المعلومات.

---

## روابط مفيدة

- [مرجع التكوين](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md)
- [توثيق الوسيط](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/packages/next-intlayer/index.md)
- [أنواع TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
- [إرشادات ملفات تعريف الارتباط وفقًا للائحة GDPR](https://gdpr.eu/cookies/)
