/**
 * Подключение react-i18next. Используем встроенный объект ресурсов (без
 * fetch'a) — bundle мал, и не нужны лишние запросы.
 *
 * Языки:
 *   ru — русский (default, есть полный перевод)
 *   en — английский (полный перевод сделан вручную)
 *   kz — казахский (TODO: машинный перевод тут не подходит, требуется
 *        живой переводчик; пока fallback на ru)
 *
 * Выбор языка приоритет:
 *   1. localStorage['fm.lang'] — если пользователь сменил руками
 *   2. navigator.language (en-* → en, остальные → ru)
 */
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import LanguageDetector from 'i18next-browser-languagedetector'
import ru from '@/locales/ru.json'
import en from '@/locales/en.json'

export const supportedLngs = ['ru', 'en'] as const
export type SupportedLng = (typeof supportedLngs)[number]

void i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    resources: {
      ru: { translation: ru },
      en: { translation: en },
    },
    fallbackLng: 'ru',
    supportedLngs: [...supportedLngs],
    interpolation: { escapeValue: false }, // react sanitizes
    detection: {
      order: ['localStorage', 'navigator'],
      lookupLocalStorage: 'fm.lang',
      caches: ['localStorage'],
    },
  })

export { i18n }
