---
title: i18n-error-base
description: Classe base de Error que alterna as mensagens de erro em sincronia com a definiçã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` em cada leitura. Mudança sem voltar a criar instâncias. Idiomas sem registo usam a mensagem por omissão do construtor.

## Funcionalidades [#features]

- Resolve a `message` dinamicamente com `setGlobalConfig({ lang })` do Valibot.
- As mensagens por idioma registam-se depois com `setErrorMessage`. Funções que recebem `meta` também são aceites.
- Idiomas sem registo usam a mensagem por omissão do construtor.
- Adiciona um prefixo com `static prefix` por classe.
- Guarda o `meta` e passa-o às funções de geração de mensagens.
- `instanceof Error`, `cause` e `stack` funcionam como sempre.

## Estrutura [#structure]

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

Adição do pacote e da dependência peer.

**[Utilização](/i18n-error-base/pt/usage)**

Da definição à mudança, prefixo e recurso.

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

Especificações de `I18nErrorBase` e `setErrorMessage`.

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

A `message` é resolvida em cada leitura pela seguinte ordem.

1. Obtém o `lang` de `getGlobalConfig()`. Se não definido, `"en"`.
2. Se existir um registo `(classe × lang)`, executa-o com o `meta`.
3. Caso contrário, devolve a mensagem por omissão do construtor.
4. Se `static prefix` estiver definido, antepõe-no.

:::tip
As mensagens registadas são geradas a partir de `meta` em cada leitura, por isso a mudança reflete-se de imediato.
:::

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

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