---
title: i18n-error-base
description: Lớp Error cơ sở chuyển đổi thông báo lỗi đồng bộ với cài đặt ngôn ngữ của Valibot.
---

Lớp cơ sở `Error` chuyển `message` theo `lang` của 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` tham chiếu `lang` mỗi lần đọc. Chuyển mà không cần tạo lại. Ngôn ngữ chưa đăng ký dùng thông báo mặc định của constructor.

## Tính năng [#features]

- Giải quyết `message` động với `setGlobalConfig({ lang })` của Valibot
- Đăng ký thông báo từng ngôn ngữ sau bằng `setErrorMessage`. Hàm nhận `meta` cũng được
- Ngôn ngữ chưa đăng ký dùng thông báo mặc định của constructor
- Thêm tiền tố qua `static prefix` từng class
- Giữ `meta` và truyền cho hàm tạo thông báo
- `instanceof Error`, `cause`, `stack` vẫn dùng bình thường

## Cấu trúc [#structure]

**[Cài đặt](/i18n-error-base/vi/installation)**

Thêm package và peer dependency.

**[Cách dùng](/i18n-error-base/vi/usage)**

Từ định nghĩa đến chuyển ngôn ngữ, prefix và fallback.

**[Tham chiếu API](/i18n-error-base/vi/api)**

Đặc tả `I18nErrorBase` và `setErrorMessage`.

## Cơ chế hoạt động [#how-it-works]

`message` giải quyết theo thứ tự sau mỗi lần đọc.

1. Lấy `lang` từ `getGlobalConfig()`. Nếu chưa thiết lập thì là `"en"`
2. Nếu có đăng ký (class × lang), thực thi với `meta`
3. Nếu không, trả về thông báo mặc định của constructor
4. Nếu `static prefix` được thiết lập, nối vào đầu

:::tip
Thông báo đã đăng ký được tạo lại từ `meta` mỗi lần đọc, nên chuyển ngôn ngữ có hiệu lực ngay.
:::

## Các bước tiếp theo [#next-steps]

Bắt đầu từ [Cài đặt](/i18n-error-base/vi/installation) và xem quy trình trong [Cách dùng](/i18n-error-base/vi/usage). Chi tiết trong [Tham chiếu API](/i18n-error-base/vi/api).
