---
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]

- resolve `message` แบบไดนามิกกับ `setGlobalConfig({ lang })` ของ Valibot
- ลงทะเบียนข้อความตามภาษาภายหลังด้วย `setErrorMessage` ใช้ฟังก์ชันรับ `meta` ได้
- ภาษาที่ยังไม่ลงทะเบียนใช้ข้อความเริ่มต้นของคอนสตรักเตอร์
- ใส่คำนำหน้าด้วย `static prefix` ระดับคลาส
- เก็บ `meta` และส่งให้ฟังก์ชันสร้างข้อความ
- สืบทอดจาก `Error` ใช้ `instanceof Error`, `cause`, `stack` ได้ตามปกติ

## โครงสร้าง [#structure]

**[การติดตั้ง](/i18n-error-base/th/installation)**

การเพิ่มแพ็กเกจและ peer dependency

**[การใช้งาน](/i18n-error-base/th/usage)**

จากการกำหนดถึงการสลับ prefix และ fallback

**[ข้อมูลอ้างอิง API](/i18n-error-base/th/api)**

ข้อมูลจำเพาะของ `I18nErrorBase` และ `setErrorMessage`

## หลักการทำงาน [#how-it-works]

`message` resolve ตามลำดับต่อไปนี้ทุกครั้งที่อ่าน

1. ดึง `lang` จาก `getGlobalConfig()` หากยังไม่ตั้งค่าจะเป็น `"en"`
2. หากมีลงทะเบียน (คลาส × lang) เรียกใช้พร้อม `meta`
3. หากไม่มี คืนข้อความเริ่มต้นของคอนสตรักเตอร์
4. หากตั้ง `static prefix` ไว้ เชื่อมไว้ด้านหน้า

:::tip
ข้อความที่ลงทะเบียนสร้างใหม่จาก `meta` ทุกครั้งที่อ่าน สลับภาษามีผลทันที
:::

## ขั้นตอนถัดไป [#next-steps]

เริ่มจาก[การติดตั้ง](/i18n-error-base/th/installation) แล้วดูขั้นตอนใน[การใช้งาน](/i18n-error-base/th/usage) รายละเอียดใน[ข้อมูลอ้างอิง API](/i18n-error-base/th/api)
