Пространства имён и области видимости
Организация ключей перевода по функциональным модулям или страницам предотвращает конфликты имён и упрощает пути вызова.
Функции перевода с областью видимости (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"));
}