---
title: i18n-error-base
description: En Error-basisklasse, der skifter fejlmeddelelser i takt med Valibots sprogindstilling.
---

En `Error`-basisklasse, der skifter `message` med Valibots `lang`.

```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` slår `lang` op ved hver læsning. Skift uden at genskabe instanser. Uregistrerede sprog bruger konstruktørens standardmeddelelse.

## Funktioner [#features]

- Løser `message` dynamisk med Valibots `setGlobalConfig({ lang })`
- Registrer sprogspecifikke meddelelser efterfølgende med `setErrorMessage`. Funktioner, der modtager `meta`, er også tilladt
- Uregistrerede sprog bruger konstruktørens standardmeddelelse
- Tilføjer et præfiks via `static prefix` pr. klasse
- Beholder `meta` og sender den til meddelelsesfunktioner
- `instanceof Error`, `cause` og `stack` virker som normalt

## Struktur [#structure]

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

Tilføjelse af pakken og dens peer-afhængighed.

**[Brug](/i18n-error-base/da/usage)**

Fra definition til sprogskift, præfiks og fallback.

**[API-reference](/i18n-error-base/da/api)**

Specifikationer for `I18nErrorBase` og `setErrorMessage`.

## Sådan fungerer det [#how-it-works]

`message` løses i følgende rækkefølge ved hver adgang.

1. Henter `lang` fra `getGlobalConfig()`. `"en"`, når den ikke er angivet
2. Hvis en `(klasse × lang)`-registrering findes, køres den med `meta`
3. Ellers returneres konstruktørens standardmeddelelse
4. Hvis `static prefix` er angivet, sættes det foran

:::tip
Registrerede meddelelser genereres fra `meta` ved hver læsning, så sprogskift slår igennem med det samme.
:::

## Næste trin [#next-steps]

Start med [Installation](/i18n-error-base/da/installation), og se derefter forløbet i [Brug](/i18n-error-base/da/usage). Detaljer står i [API-referencen](/i18n-error-base/da/api).
