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はそのまま使えます。
構成
インストール
追加方法と peer 依存を説明します。
使い方
定義から切り替え、prefix、フォールバックまで扱います。
API リファレンス
I18nErrorBase と setErrorMessage の仕様です。
仕組み
message は読むたびに次の順で解決します。
getGlobalConfig()のlangを取得します。未設定は"en"です(クラス × lang)の登録があればmetaを渡して実行します- なければコンストラクターの既定メッセージを返します
static prefixがあれば先頭に付けます
次のステップ
インストールから始め、使い方で流れを確認してください。詳細は API リファレンス にまとめています。