---
title: i18n-error-base
description: 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.

```ts
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 [#features]

- Résout dynamiquement `message` avec `setGlobalConfig({ lang })` de Valibot.
- Les messages par langue s'enregistrent ultérieurement avec `setErrorMessage`. Les fonctions recevant `meta` sont aussi acceptées.
- Les langues non enregistrées utilisent le message par défaut du constructeur.
- Ajoute un préfixe via `static prefix` par classe.
- Conserve `meta` et le transmet aux fonctions de génération de messages.
- `instanceof Error`, `cause` et `stack` fonctionnent comme d'habitude.

## Structure [#structure]

**[Installation](/i18n-error-base/fr/installation)**

Ajout du paquet et de sa dépendance peer.

**[Utilisation](/i18n-error-base/fr/usage)**

De la définition au changement, au préfixe et au repli.

**[Référence API](/i18n-error-base/fr/api)**

Spécifications de `I18nErrorBase` et `setErrorMessage`.

## Fonctionnement [#how-it-works]

`message` est résolu à chaque lecture dans l'ordre suivant.

1. Obtient `lang` depuis `getGlobalConfig()`. `"en"` si non défini.
2. S'il existe un enregistrement `(classe × lang)`, l'exécute avec `meta`.
3. Sinon, retourne le message par défaut du constructeur.
4. Si `static prefix` est défini, l'ajoute au début.

:::tip
Les messages enregistrés sont générés depuis `meta` à chaque lecture, donc les changements prennent effet immédiatement.
:::

## Étapes suivantes [#next-steps]

Commencez par l'[Installation](/i18n-error-base/fr/installation), puis voyez le flux dans l'[Utilisation](/i18n-error-base/fr/usage). Les détails sont dans la [Référence API](/i18n-error-base/fr/api).
