i18n-error-base
Valibot의 언어 설정과 연동하여 오류 메시지를 전환하는 Error의 베이스 클래스입니다.
Valibot의 lang과 연동하여 message를 전환하는 Error 베이스 클래스입니다.
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을 참조합니다. 다시 만들지 않고 전환할 수 있습니다. 미등록 언어는 생성자의 기본 메시지를 사용합니다.
특징
- Valibot의
setGlobalConfig({ lang })과 연동하여message를 동적으로 해결합니다 setErrorMessage로 언어별 메시지를 나중에 등록합니다.meta를 받는 함수도 사용할 수 있습니다- 미등록 언어는 생성자의 기본 메시지를 사용합니다
- 클래스별
static prefix로 앞에 접두사를 추가합니다 meta를 보관하고 메시지 생성 함수에 전달합니다instanceof Error,cause,stack을 그대로 사용할 수 있습니다
구성
동작 방식
message는 읽을 때마다 다음 순서로 해결됩니다.
getGlobalConfig()에서lang을 가져옵니다. 설정되지 않은 경우는"en"입니다- (클래스 × lang) 등록이 있으면
meta를 전달하여 실행합니다 - 없으면 생성자의 기본 메시지를 반환합니다
static prefix가 설정되어 있으면 앞에 연결합니다