about summary refs log tree commit diff
path: root/src/locale/i18n.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/locale/i18n.ts')
-rw-r--r--src/locale/i18n.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/locale/i18n.ts b/src/locale/i18n.ts
new file mode 100644
index 000000000..73fa785ea
--- /dev/null
+++ b/src/locale/i18n.ts
@@ -0,0 +1,38 @@
+import {useLanguagePrefs} from '#/state/preferences'
+import {i18n} from '@lingui/core'
+import {useEffect} from 'react'
+import {messages as messagesEn} from './locales/en/messages'
+import {messages as messagesHi} from './locales/hi/messages'
+
+export const locales = {
+  en: 'English',
+  cs: 'Česky',
+  fr: 'Français',
+  hi: 'हिंदी',
+  es: 'Español',
+}
+export const defaultLocale = 'en'
+
+/**
+ * We do a dynamic import of just the catalog that we need
+ * @param locale any locale string
+ */
+export async function dynamicActivate(locale: string) {
+  if (locale === 'en') {
+    i18n.loadAndActivate({locale, messages: messagesEn})
+    return
+  } else if (locale === 'hi') {
+    i18n.loadAndActivate({locale, messages: messagesHi})
+    return
+  } else {
+    i18n.loadAndActivate({locale, messages: messagesEn})
+    return
+  }
+}
+
+export async function useLocaleLanguage() {
+  const {appLanguage} = useLanguagePrefs()
+  useEffect(() => {
+    dynamicActivate(appLanguage)
+  }, [appLanguage])
+}