Debug-режим в i18next предназначен для детальной диагностики процессов интернационализации: загрузки ресурсов, разрешения ключей, работы интерполяции, fallback-языков и поведения плагинов. Логирование в рамках библиотеки построено вокруг гибкой системы, которая позволяет отслеживать внутренние события без необходимости модифицировать исходный код приложения.
Основной способ включения debug-режима — передача параметра
debug при инициализации:
import i18n from 'i18next';
i18n.init({
debug: true,
lng: 'en',
fallbackLng: 'ru',
resources: {
en: {
translation: {
welcome: "Welcome"
}
}
}
});
При активированном режиме библиотека начинает выводить подробную информацию в консоль. Это включает:
Логирование в i18next основано на абстракции logger. По умолчанию
используется консольный логгер, который пишет сообщения в
console.
Уровни логирования:
debug — детальная отладочная информация;info — общие информационные сообщения;warn — предупреждения о потенциальных проблемах;error — критические ошибки выполнения.Пример типичного сообщения:
i18next: languageChanged en
i18next: initialized {
lng: "en",
fallbackLng: "ru"
}
Поведение логирования можно тонко настраивать через параметр
logLevel:
i18n.init({
debug: true,
logLevel: 'warn'
});
В этом случае будут отображаться только предупреждения и ошибки, тогда как debug- и info-сообщения подавляются.
Допустимые значения:
debuginfowarnerrorПолное отключение логирования достигается двумя способами:
i18n.init({
debug: false
});
i18n.init({
logLevel: 'error'
});
В этом случае остаются только критические ошибки, связанные с выполнением.
i18next позволяет заменить стандартный механизм логирования на собственную реализацию. Это используется для интеграции с системами мониторинга (Sentry, Datadog, ELK и др.).
const customLogger = {
type: 'logger',
log: (args) => console.log('LOG:', args),
warn: (args) => console.warn('WARN:', args),
error: (args) => console.error('ERROR:', args)
};
i18n.init({
debug: true,
logger: customLogger
});
Такой подход позволяет централизовать обработку логов без привязки к консоли браузера или Node.js.
Одной из ключевых функций debug-режима является отслеживание отсутствующих переводов.
Пример поведения:
i18n.t('missing_key_example');
В debug-режиме появится сообщение:
i18next::translator: missingKey en translation missing_key_example missing_key_example
Это позволяет выявлять:
Дополнительный механизм — опция saveMissing, которая
фиксирует отсутствующие ключи:
i18n.init({
saveMissing: true,
missingKeyHandler: (lng, ns, key) => {
console.log('Missing key:', key);
}
});
В этом режиме i18next не только сообщает об отсутствии ключа, но и может отправлять его во внешний backend.
При подключении backend-плагинов (например, HTTP backend) debug-режим отслеживает процесс загрузки переводов:
i18next: loaded namespace translation for language en
i18next: backendConnector: loaded namespace translation for language en
Это особенно важно при:
Debug-режим фиксирует ошибки подстановки переменных:
i18n.t('welcome_user', { user: undefined });
Сообщение:
i18next: interpolation value for "user" is undefined
Такие сообщения позволяют выявлять:
При использовании нескольких namespace логирование помогает отслеживать, какой именно набор ресурсов был задействован:
i18n.init({
ns: ['common', 'auth', 'dashboard'],
defaultNS: 'common'
});
В debug-режиме отображается:
i18next: initialized namespaces: common, auth, dashboard
В production-среде debug-режим обычно отключается, поскольку:
Типичная конфигурация:
i18n.init({
debug: process.env.NODE_ENV !== 'production',
logLevel: process.env.NODE_ENV === 'production' ? 'error' : 'debug'
});
Логгер i18next может быть адаптирован под централизованные системы:
const logger = {
error: (msg) => sendToSentry(msg),
warn: (msg) => sendToMonitoring(msg),
log: () => {},
};
Это позволяет:
console;Debug-вывод i18next можно условно разделить: