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,則串接至開頭