跳至內容
i18n-error-base
繁體中文
Esc
↑↓導覽↵開啟⌘J預覽
本頁內容

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 在每次讀取時依下列順序解析。

  1. 從 getGlobalConfig() 取得 lang,未設定時為 "en"
  2. 若有(類別 × lang)註冊,則傳入 meta 並執行
  3. 否則回傳建構函式的預設訊息
  4. 若設定了 static prefix,則串接至開頭

下一步驟

從安裝開始,在使用方式中確認流程。詳情參見 API 參考。

這個頁面有幫助嗎?