跳到内容
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 参考。

这个页面有帮助吗?