{"version":3,"sources":["../src/i18n/config.ts","../src/i18n/useI18n.ts"],"names":["i18n"],"mappings":";;;;;;;;AAOO,IAAM,cAAA,GAA8B;AAAA,EACzC,WAAA,EAAa,IAAA;AAAA,EACb,IAAA,EAAM,KAAA;AAAA,EACN,wBAAA,EAA0B,IAAA;AAAA,EAC1B,aAAA,EAAe,gBAAA;AAAA,EACf,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,IACnB,QAAQ;AAAC,GACX;AAAA,EACA,aAAA,EAAe;AAAA,IACb,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,EAAA,EAAI,CAAC,gBAAA,EAAkB,aAAa,CAAA;AAAA,EACpC,SAAA,EAAW,CAAC,aAAA,EAAe,gBAAgB,CAAA;AAAA,EAC3C,iBAAA,EAAmB;AACrB;AAEO,IAAM,QAAA,GAAW,OAAO,OAAA,GAAgC,EAAC,KAAM;AACpE,EAAA,IAAI,KAAK,aAAA,EAAe;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CACJ,GAAA,CAAI,OAAO,CAAA,CACX,GAAA,CAAI,gBAAgB,CAAA,CACpB,GAAA,CAAI,gBAAgB,CAAA,CACpB,IAAA,CAAK;AAAA,IACJ,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,GACJ,CAAA;AACL;AC/BO,IAAM,OAAA,GAAU,CAAC,EAAA,KAA2B;AAGjD,EAAA,MAAM,EAAE,CAAA,EAAG,IAAA,EAAM,IAAA,EAAAA,KAAAA,EAAM,OAAM,GAAI,cAAA,CAAe,EAAA,IAAM,cAAA,CAAe,EAAc,CAAA;AAGnF,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAA,KAAgB;AACtC,IAAA,OAAOA,KAAAA,CAAK,eAAe,GAAG,CAAA;AAAA,EAChC,CAAA;AAGA,EAAA,MAAM,CAAA,GAAI,WAAA,CAAY,CAAC,GAAA,EAAa,OAAA,KAA0B;AAC5D,IAAA,IAAI,EAAA,EAAI;AAEN,MAAA,OAAO,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,IAC1B,CAAA,MAAO;AAEL,MAAA,KAAA,MAAW,SAAA,IAAa,eAAe,EAAA,EAAgB;AACrD,QAAA,MAAM,MAAA,GAAS,KAAK,GAAA,EAAK,EAAE,GAAG,OAAA,EAAS,EAAA,EAAI,WAAW,CAAA;AACtD,QAAA,IAAI,MAAA,KAAW,KAAK,OAAO,MAAA;AAAA,MAC7B;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,EAAA,EAAI,IAAI,CAAC,CAAA;AAEb,EAAA,OAAO;AAAA;AAAA,IAEL,CAAA;AAAA;AAAA,IAEA,IAAA,EAAAA,KAAAA;AAAA;AAAA,IAEA,KAAA;AAAA;AAAA,IAEA,iBAAiBA,KAAAA,CAAK,QAAA;AAAA;AAAA,IAEtB,WAAWA,KAAAA,CAAK,SAAA;AAAA;AAAA,IAEhB;AAAA,GACF;AACF","file":"chunk-2NCN2AG2.mjs","sourcesContent":["import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport Backend from \"i18next-http-backend\";\nimport { InitOptions } from \"i18next\";\nimport { supportedLocales } from \"./supported-locales\";\n\nexport const DEFAULT_CONFIG: InitOptions = {\n  fallbackLng: \"en\",\n  load: \"all\",\n  nonExplicitSupportedLngs: true,\n  supportedLngs: supportedLocales,\n  detection: {\n    order: [\"navigator\"],\n    caches: []\n  },\n  interpolation: {\n    escapeValue: false\n  },\n  backend: {\n    loadPath: \"/locales/{{lng}}/{{ns}}.json\"\n  },\n  ns: [\"thorium-shared\", \"thorium-web\"],\n  defaultNS: [\"thorium-web\", \"thorium-shared\"],\n  returnEmptyString: false\n};\n\nexport const initI18n = async (options: Partial<InitOptions> = {}) => {\n  if (i18n.isInitialized) {\n    return i18n;\n  }\n\n  return i18n\n    .use(Backend)\n    .use(LanguageDetector)\n    .use(initReactI18next)\n    .init({\n      ...DEFAULT_CONFIG,\n      ...options\n    });\n};\n\nexport { i18n };","import { useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { DEFAULT_CONFIG } from \"./config\";\n\n/**\n * Hook to access the i18n instance and translation functions\n * @param ns Optional additional namespace(s) to include alongside the default namespaces\n * @returns Translation functions and i18n instance\n */\nexport const useI18n = (ns?: string | string[]) => {\n  // If no namespace provided, use both defaults with fallback\n  // If namespace provided, use only that (override behavior)\n  const { t: tRaw, i18n, ready } = useTranslation(ns || DEFAULT_CONFIG.ns as string[]);\n  \n  // Helper function to change language\n  const changeLanguage = (lng: string) => {\n    return i18n.changeLanguage(lng);\n  };\n\n  // Enhanced t function that searches both namespaces only when using defaults\n  const t = useCallback((key: string, options?: any): string => {\n    if (ns) {\n      // If custom namespace provided, use it directly (no fallback)\n      return tRaw(key, options) as string;\n    } else {\n      // If no namespace provided, search all default namespaces\n      for (const namespace of DEFAULT_CONFIG.ns as string[]) {\n        const result = tRaw(key, { ...options, ns: namespace });\n        if (result !== key) return result as string;\n      }\n      return key;\n    }\n  }, [ns, tRaw]);\n\n  return {\n    // Translation function\n    t,\n    // i18n instance\n    i18n,\n    // Whether translations are loaded\n    ready,\n    // Current language\n    currentLanguage: i18n.language,\n    // List of available languages\n    languages: i18n.languages,\n    // Function to change language\n    changeLanguage\n  };\n};\n"]}