---
title: i18n-error-base
description: فئة أساسية لوراثة Error تُبدِّل رسائل الخطأ بالتزامن مع إعداد اللغة في Valibot.
---

فئة أساس لـ`Error` تُبدِّل `message` مع `lang` في Valibot.

```ts
import { setGlobalConfig } from "valibot";
import { I18nErrorBase, setErrorMessage } from "i18n-error-base";

class NotFoundError extends I18nErrorBase<{ resource: string }> {}

setErrorMessage(NotFoundError, ({ resource }) => `リソースが見つかりません: ${resource}`, "ja");
setErrorMessage(NotFoundError, ({ resource }) => `Resource not found: ${resource}`, "en");

const error = new NotFoundError({ resource: "user" }, "fallback message");

setGlobalConfig({ lang: "ja" });
console.log(error.message); // リソースが見つかりません: user

setGlobalConfig({ lang: "en" });
console.log(error.message); // Resource not found: user
```

تشير `message` إلى `lang` عند كل قراءة. بدِّل دون إعادة إنشاء النسخ. اللغات غير المسجلة تستخدم الرسالة الافتراضية للمُنشئ.

## الميزات [#features]

- تحلّ `message` ديناميكيًا مع `setGlobalConfig({ lang })` في Valibot
- سجِّل رسائل كل لغة لاحقًا عبر `setErrorMessage`. ويمكن تسجيل دوال تستقبل `meta`
- اللغات غير المسجلة تستخدم الرسالة الافتراضية للمُنشئ
- تضيف بادئة عبر `static prefix` لكل فئة
- تحفظ `meta` وتمرِّره إلى دوال إنشاء الرسائل
- `instanceof Error` و`cause` و`stack` تعمل كالمعتاد

## البنية [#structure]

**[التثبيت](/i18n-error-base/ar/installation)**

حول إضافة الحزمة واعتمادية النظير.

**[الاستخدام](/i18n-error-base/ar/usage)**

من تعريف الفئات إلى تبديل اللغة والبادئة والتراجع.

**[مرجع API](/i18n-error-base/ar/api)**

مواصفات `I18nErrorBase` و`setErrorMessage`.

## آلية العمل [#how-it-works]

`message` تُحلّ بالترتيب التالي عند كل قراءة.

1. تحصل على `lang` من `getGlobalConfig()`. وعند عدم الضبط تكون `"en"`
2. إذا وُجد تسجيل (الفئة × اللغة)، تُنفَّذ مع `meta`
3. وإلا تُرجَع الرسالة الافتراضية للمُنشئ
4. إذا ضُبط `static prefix` يُوصَل في البداية

:::tip
تُعاد الرسائل المسجلة إنشاؤها من `meta` عند كل قراءة، فينعكس التبديل فورًا.
:::

## الخطوات التالية [#next-steps]

ابدأ من [التثبيت](/i18n-error-base/ar/installation)، ثم انظر التدفق في [الاستخدام](/i18n-error-base/ar/usage). التفاصيل في [مرجع API](/i18n-error-base/ar/api).
