コンテンツにスキップ
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 リファレンス にまとめています。

このページは役に立ちましたか?