---
title: i18n-error-base
description: Valibot의 언어 설정과 연동하여 오류 메시지를 전환하는 Error의 베이스 클래스입니다.
---

Valibot의 `lang`과 연동하여 `message`를 전환하는 `Error` 베이스 클래스입니다.

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

- Valibot의 `setGlobalConfig({ lang })`과 연동하여 `message`를 동적으로 해결합니다
- `setErrorMessage`로 언어별 메시지를 나중에 등록합니다. `meta`를 받는 함수도 사용할 수 있습니다
- 미등록 언어는 생성자의 기본 메시지를 사용합니다
- 클래스별 `static prefix`로 앞에 접두사를 추가합니다
- `meta`를 보관하고 메시지 생성 함수에 전달합니다
- `instanceof Error`, `cause`, `stack`을 그대로 사용할 수 있습니다

## 구성 [#structure]

**[설치](/i18n-error-base/ko/installation)**

패키지 추가와 피어 의존성 방법입니다.

**[사용법](/i18n-error-base/ko/usage)**

정의부터 전환, prefix, 폴백까지 다룹니다.

**[API 레퍼런스](/i18n-error-base/ko/api)**

`I18nErrorBase`와 `setErrorMessage`의 사양입니다.

## 동작 방식 [#how-it-works]

`message`는 읽을 때마다 다음 순서로 해결됩니다.

1. `getGlobalConfig()`에서 `lang`을 가져옵니다. 설정되지 않은 경우는 `"en"`입니다
2. (클래스 × lang) 등록이 있으면 `meta`를 전달하여 실행합니다
3. 없으면 생성자의 기본 메시지를 반환합니다
4. `static prefix`가 설정되어 있으면 앞에 연결합니다

:::tip
등록된 메시지는 읽을 때마다 `meta`에서 생성되므로, 전환이 즉시 반영됩니다.
:::

## 다음 단계 [#next-steps]

[설치](/i18n-error-base/ko/installation)부터 시작하여, [사용법](/i18n-error-base/ko/usage)에서 흐름을 확인하십시오. 자세한 내용은 [API 레퍼런스](/i18n-error-base/ko/api)에 정리되어 있습니다.
