i18next-config.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. 'use client'
  2. import i18n from 'i18next'
  3. import { initReactI18next } from 'react-i18next'
  4. import { LanguagesSupported } from '@/i18n/language'
  5. const requireSilent = (lang: string) => {
  6. let res
  7. try {
  8. res = require(`./${lang}/education`).default
  9. }
  10. catch {
  11. res = require('./en-US/education').default
  12. }
  13. return res
  14. }
  15. const loadLangResources = (lang: string) => ({
  16. translation: {
  17. common: require(`./${lang}/common`).default,
  18. layout: require(`./${lang}/layout`).default,
  19. login: require(`./${lang}/login`).default,
  20. register: require(`./${lang}/register`).default,
  21. app: require(`./${lang}/app`).default,
  22. appOverview: require(`./${lang}/app-overview`).default,
  23. appDebug: require(`./${lang}/app-debug`).default,
  24. appApi: require(`./${lang}/app-api`).default,
  25. appLog: require(`./${lang}/app-log`).default,
  26. appAnnotation: require(`./${lang}/app-annotation`).default,
  27. share: require(`./${lang}/share-app`).default,
  28. dataset: require(`./${lang}/dataset`).default,
  29. datasetDocuments: require(`./${lang}/dataset-documents`).default,
  30. datasetHitTesting: require(`./${lang}/dataset-hit-testing`).default,
  31. datasetSettings: require(`./${lang}/dataset-settings`).default,
  32. datasetCreation: require(`./${lang}/dataset-creation`).default,
  33. explore: require(`./${lang}/explore`).default,
  34. billing: require(`./${lang}/billing`).default,
  35. custom: require(`./${lang}/custom`).default,
  36. tools: require(`./${lang}/tools`).default,
  37. workflow: require(`./${lang}/workflow`).default,
  38. runLog: require(`./${lang}/run-log`).default,
  39. plugin: require(`./${lang}/plugin`).default,
  40. pluginTags: require(`./${lang}/plugin-tags`).default,
  41. time: require(`./${lang}/time`).default,
  42. education: requireSilent(lang),
  43. },
  44. })
  45. // Automatically generate the resources object
  46. const resources = LanguagesSupported.reduce((acc: any, lang: string) => {
  47. acc[lang] = loadLangResources(lang)
  48. return acc
  49. }, {})
  50. i18n.use(initReactI18next)
  51. .init({
  52. lng: undefined,
  53. fallbackLng: 'en-US',
  54. resources,
  55. })
  56. export const changeLanguage = i18n.changeLanguage
  57. export default i18n