---
title: i18n-error-base
description: Classe base de Error que alterna as mensagens de erro em sincronia com a configuração de idioma do Valibot.
---

Classe base `Error` que alterna `message` com o `lang` do 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
```

A `message` consulta o `lang` a cada leitura. Troca sem recriar instâncias. Idiomas sem registro usam a mensagem padrão do construtor.

## Recursos [#features]

- Resolve `message` dinamicamente com `setGlobalConfig({ lang })` do Valibot.
- Você registra as mensagens de cada idioma depois com `setErrorMessage`. Funções que recebem `meta` também valem.
- Idiomas sem registro usam a mensagem padrão do construtor.
- Adiciona um prefixo com `static prefix` por classe.
- Salva o `meta` e passa para as funções que geram a mensagem.
- `instanceof Error`, `cause` e `stack` funcionam normalmente.

## Estrutura [#structure]

**[Instalação](/i18n-error-base/pt-br/installation)**

Como adicionar o pacote e a dependência peer.

**[Uso](/i18n-error-base/pt-br/usage)**

Da definição à troca, prefixo e fallback.

**[Referência da API](/i18n-error-base/pt-br/api)**

Especificação de `I18nErrorBase` e `setErrorMessage`.

## Como funciona [#how-it-works]

A `message` resolve a cada leitura nesta ordem.

1. Pega o `lang` de `getGlobalConfig()`. Se não configurado, `"en"`.
2. Se houver registro `(classe × lang)`, executa passando o `meta`.
3. Se não houver, retorna a mensagem padrão do construtor.
4. Se `static prefix` estiver configurado, coloca no início.

:::tip
As mensagens registradas são geradas do `meta` a cada leitura, por isso a troca vale na hora.
:::

## Próximos passos [#next-steps]

Comece pela [instalação](/i18n-error-base/pt-br/installation) e confira o fluxo em [uso](/i18n-error-base/pt-br/usage). Os detalhes estão na [referência da API](/i18n-error-base/pt-br/api).
