diff --git a/src/simulator/src/i18n.js b/src/simulator/src/i18n.js deleted file mode 100644 index 602f4c519..000000000 --- a/src/simulator/src/i18n.js +++ /dev/null @@ -1,17 +0,0 @@ -import Banana from 'banana-i18n' - -const banana = new Banana() -banana.setLocale(window.locale) -const { locale } = banana -const finalFallback = 'en' -// object with default language preloaded -const messages = { - [finalFallback]: require(`./i18n/${finalFallback}.json`), -} -try { - messages[locale] = require(`./i18n/${locale}.json`) -} catch (err) { - // If Asynchronous loading for current locale failed, load default locale -} -banana.load(messages) -export default banana diff --git a/src/simulator/src/i18n.ts b/src/simulator/src/i18n.ts new file mode 100644 index 000000000..99dcaf327 --- /dev/null +++ b/src/simulator/src/i18n.ts @@ -0,0 +1,36 @@ +// @ts-ignore: Could not find module 'banana-i18n' +import Banana from 'banana-i18n'; +// @ts-ignore: Ignore missing type for JSON import +import enMessages from './i18n/en.json'; + +// Extend Window interface to include locale property +declare global { + interface Window { + locale?: string + } +} + +interface Messages { + [locale: string]: Record +} + +const banana = new Banana() +banana.setLocale(window.locale || 'en') +const { locale } = banana +const finalFallback: string = 'en' +// object with default language preloaded +const messages: Messages = { + [finalFallback]: enMessages, +} +try { + // Dynamic import for locale-specific messages + // Using require for dynamic JSON loading at runtime + // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports + messages[locale] = require(`./i18n/${locale}.json`) as Record +} catch (err) { + // If Asynchronous loading for current locale failed, load default locale +} + +banana.load(messages) +export default banana +