---
title: i18n-error-base
description: Базовый класс Error, переключающий сообщения об ошибках в соответствии с языковой настройкой Valibot.
---

Базовый класс `Error`, переключающий `message` с `lang` 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` при каждом чтении ссылается на `lang`. Переключайте без повторного создания экземпляров. Нерегистрированные языки используют сообщение по умолчанию из конструктора.

## Особенности [#features]

- Динамически определяет `message` через `setGlobalConfig({ lang })` Valibot
- Сообщения по языкам регистрируются позже через `setErrorMessage`. Допустимы и функции, принимающие `meta`
- Нерегистрированные языки используют сообщение по умолчанию из конструктора
- Добавляет префикс через `static prefix` на уровне класса
- Хранит `meta` и передаёт его в фабричные функции сообщений
- `instanceof Error`, `cause` и `stack` работают как обычно

## Структура [#structure]

**[Установка](/i18n-error-base/ru/installation)**

Как добавить пакет и peer-зависимость.

**[Использование](/i18n-error-base/ru/usage)**

От определения до переключения, префикса и запаса.

**[Справочник API](/i18n-error-base/ru/api)**

Спецификации `I18nErrorBase` и `setErrorMessage`.

## Как это работает [#how-it-works]

`message` разрешается при каждом чтении в следующем порядке.

1. Получает `lang` из `getGlobalConfig()`. `"en"`, если не задан
2. Если есть регистрация `(класс × lang)`, выполняет её с `meta`
3. Иначе возвращает сообщение по умолчанию из конструктора
4. Если задан `static prefix`, добавляет его в начало

:::tip
Зарегистрированные сообщения создаются из `meta` при каждом чтении, поэтому переключение действует сразу.
:::

## Дальнейшие шаги [#next-steps]

Начните с [установки](/i18n-error-base/ru/installation), затем смотрите процесс в [«Использовании»](/i18n-error-base/ru/usage). Подробности — в [справочнике API](/i18n-error-base/ru/api).
