i18n-error-base
Classe de base Error qui bascule les messages d'erreur en fonction du paramètre linguistique de Valibot.
Une classe de base Error qui bascule message avec le lang de Valibot.
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 se réfère à lang à chaque lecture. Changement sans recréer d’instance. Les langues non enregistrées utilisent le message par défaut du constructeur.
Fonctionnalités
- Résout dynamiquement
messageavecsetGlobalConfig({ lang })de Valibot. - Les messages par langue s’enregistrent ultérieurement avec
setErrorMessage. Les fonctions recevantmetasont aussi acceptées. - Les langues non enregistrées utilisent le message par défaut du constructeur.
- Ajoute un préfixe via
static prefixpar classe. - Conserve
metaet le transmet aux fonctions de génération de messages. instanceof Error,causeetstackfonctionnent comme d’habitude.
Structure
Installation
Ajout du paquet et de sa dépendance peer.
Utilisation
De la définition au changement, au préfixe et au repli.
Référence API
Spécifications de I18nErrorBase et setErrorMessage.
Fonctionnement
message est résolu à chaque lecture dans l’ordre suivant.
- Obtient
langdepuisgetGlobalConfig()."en"si non défini. - S’il existe un enregistrement
(classe × lang), l’exécute avecmeta. - Sinon, retourne le message par défaut du constructeur.
- Si
static prefixest défini, l’ajoute au début.
Étapes suivantes
Commencez par l’Installation, puis voyez le flux dans l’Utilisation. Les détails sont dans la Référence API.