i18n-error-base
Basisklasse für Error, die Fehlermeldungen synchron mit der Spracheinstellung von Valibot umschaltet.
Eine Error-Basisklasse, die message mit Valibots lang umschaltet.
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 bezieht sich bei jedem Lesen auf lang. Wechsel ohne Neuerstellung der Instanz. Nicht registrierte Sprachen verwenden die Standardnachricht des Konstruktors.
Funktionen
- Löst
messagedynamisch mit ValibotssetGlobalConfig({ lang })auf. - Sprachspezifische Nachrichten werden nachträglich mit
setErrorMessageregistriert. Funktionen mitmetasind ebenfalls zulässig. - Nicht registrierte Sprachen verwenden die Standardnachricht des Konstruktors.
- Fügt ein Präfix über
static prefixpro Klasse hinzu. - Behält
metaund übergibt es an Nachrichten-Erzeugungsfunktionen. instanceof Error,causeundstackfunktionieren wie gewohnt.
Struktur
Installation
Hinzufügen des Pakets und der Peer-Abhängigkeit.
Verwendung
Von der Definition über Wechsel und Präfix bis zum Fallback.
API-Referenz
Spezifikation von I18nErrorBase und setErrorMessage.
Funktionsweise
message wird bei jedem Lesen in folgender Reihenfolge aufgelöst.
- Holt
langausgetGlobalConfig(). Wenn nicht gesetzt,"en". - Falls eine
(Klasse × lang)-Registrierung existiert, wird sie mitmetaausgeführt. - Andernfalls wird die Standardnachricht des Konstruktors zurückgegeben.
- Falls
static prefixgesetzt ist, wird es vorangestellt.
Nächste Schritte
Beginnen Sie mit der Installation und sehen Sie den Ablauf in der Verwendung. Details finden Sie in der API-Referenz.