import i18n from 'i18next';
import Backend from 'i18next-http-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
import {initReactI18next} from 'react-i18next';

const vite_url = import.meta.env.VITE_URL;

const options = {
    order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],
    caches: [],
    convertDetectedLanguage: (lng) => {
        const supportedLngs = ['en', 'fr'];
        const languagePart = lng.split('-')[0];

        if (supportedLngs.includes(languagePart)) {
            return languagePart; // Manually return 'en' from 'en-US'
        }

        return lng;
    },
}

i18n
    // load translation using http -> see /public/locales
    // learn more: https://github.com/i18next/i18next-http-backend
    .use(Backend)
    // detect user language
    // learn more: https://github.com/i18next/i18next-browser-languageDetector
    .use(LanguageDetector)
    // pass the i18n instance to react-i18next.
    .use(initReactI18next)
    // init i18next
    // for all options read: https://www.i18next.com/overview/configuration-options
    .init({
        fallbackLng: {
            'fr-FR': ['fr'],
            default: ['en']
        },
        supportedLngs: ['fr', 'en'],
        nonExplicitSupportedLngs: true,
        debug: vite_url.startsWith('http://localhost'),
        interpolation: {
            escapeValue: false, // not needed for react as it escapes by default
        },
        detection: options,
        ns: ['common', 'result'],
        defaultNS: 'common',
    });

export default i18n;
