ts-intl
Главы:Пространства имён и области видимости

Пространства имён и области видимости

Организация ключей перевода по функциональным модулям или страницам предотвращает конфликты имён и упрощает пути вызова.

Функции перевода с областью видимости (Scoped Translators)

Передача пространства имён в качестве второго аргумента при вызове getTranslations возвращает функцию перевода, ограниченную этим пространством имён:

const messages = {
  admin: {
    dashboard: {
      metrics: "Текущая статистика",
      refresh: "Обновить данные",
    },
  },
} as const;

// Ограничение области видимости вложенным пространством имён
const t = getTranslations("ru-RU", "admin.dashboard");

t("metrics"); // "Текущая статистика"
t("refresh"); // "Обновить данные"

Глобальные плоские функции перевода

Если параметр пространства имён опущен, getTranslations возвращает корневую функцию перевода, поддерживающую доступ к вложенным ключам через разделенные точками пути:

const t = getTranslations("ru-RU");

t("admin.dashboard.metrics"); // "Текущая статистика"

Извлечение исходных данных с помощью t.raw()

Когда требуется напрямую получить исходные структуры данных, такие как объекты конфигурации или массивы, можно использовать метод t.raw():

const messages = {
  config: {
    maxRetries: 3,
    endpoints: ["api-1.example.com", "api-2.example.com"],
  },
} as const;

const t = getTranslations("ru-RU");

const endpoints = t.raw("config.endpoints");
// Выведенный тип: readonly ["api-1.example.com", "api-2.example.com"]

Проверка существования ключа с помощью t.has()

Проверяет, существует ли указанный ключ в текущем или резервном (fallback) языке без генерации предупреждений об отсутствующих ключах:

const t = getTranslations("ru-RU", "features");

if (t.has("betaFeatureBadge")) {
  renderBadge(t("betaFeatureBadge"));
}