---
title: i18n-error-base
description: Kelas dasar Error yang mengganti pesan kesalahan seiring dengan pengaturan bahasa Valibot.
---

Kelas dasar `Error` yang mengganti `message` dengan `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` merujuk ke `lang` setiap dibaca. Beralih tanpa membuat ulang. Bahasa tak terdaftar memakai pesan default konstruktor.

## Fitur [#features]

- Menyelesaikan `message` dinamis dengan `setGlobalConfig({ lang })` Valibot
- Daftarkan pesan tiap bahasa belakangan dengan `setErrorMessage`. Fungsi penerima `meta` juga boleh
- Bahasa tak terdaftar memakai pesan default konstruktor
- Tambah awalan via `static prefix` per kelas
- Simpan `meta` dan teruskan ke fungsi pembuat pesan
- `instanceof Error`, `cause`, dan `stack` dapat dipakai apa adanya

## Struktur [#structure]

**[Instalasi](/i18n-error-base/id/installation)**

Penambahan paket dan dependensi peer.

**[Penggunaan](/i18n-error-base/id/usage)**

Dari definisi hingga pengalihan, prefix, dan fallback.

**[Referensi API](/i18n-error-base/id/api)**

Spesifikasi `I18nErrorBase` dan `setErrorMessage`.

## Cara kerja [#how-it-works]

`message` diselesaikan dengan urutan berikut setiap dibaca.

1. Mendapatkan `lang` dari `getGlobalConfig()`. Jika belum diatur, `"en"`
2. Jika ada pendaftaran (kelas × lang), jalankan dengan `meta`
3. Jika tidak, kembalikan pesan default konstruktor
4. Jika `static prefix` diatur, gabung di awal

:::tip
Pesan terdaftar dibuat ulang dari `meta` setiap dibaca, sehingga pengalihan langsung tercermin.
:::

## Langkah selanjutnya [#next-steps]

Mulailah dari [Instalasi](/i18n-error-base/id/installation), lalu periksa alur di [Penggunaan](/i18n-error-base/id/usage). Detail di [Referensi API](/i18n-error-base/id/api).
