mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import {useEffect} from 'react'
2import {i18n} from '@lingui/core'
3
4import {sanitizeAppLanguageSetting} from '#/locale/helpers'
5import {AppLanguage} from '#/locale/languages'
6import {useLanguagePrefs} from '#/state/preferences'
7
8/**
9 * We do a dynamic import of just the catalog that we need
10 */
11export async function dynamicActivate(locale: AppLanguage) {
12 let mod: any
13
14 switch (locale) {
15 case AppLanguage.ca: {
16 mod = await import(`./locales/ca/messages`)
17 break
18 }
19 case AppLanguage.de: {
20 mod = await import(`./locales/de/messages`)
21 break
22 }
23 case AppLanguage.es: {
24 mod = await import(`./locales/es/messages`)
25 break
26 }
27 case AppLanguage.fi: {
28 mod = await import(`./locales/fi/messages`)
29 break
30 }
31 case AppLanguage.fr: {
32 mod = await import(`./locales/fr/messages`)
33 break
34 }
35 case AppLanguage.ga: {
36 mod = await import(`./locales/ga/messages`)
37 break
38 }
39 case AppLanguage.hi: {
40 mod = await import(`./locales/hi/messages`)
41 break
42 }
43 case AppLanguage.id: {
44 mod = await import(`./locales/id/messages`)
45 break
46 }
47 case AppLanguage.it: {
48 mod = await import(`./locales/it/messages`)
49 break
50 }
51 case AppLanguage.ja: {
52 mod = await import(`./locales/ja/messages`)
53 break
54 }
55 case AppLanguage.ko: {
56 mod = await import(`./locales/ko/messages`)
57 break
58 }
59 case AppLanguage.pt_BR: {
60 mod = await import(`./locales/pt-BR/messages`)
61 break
62 }
63 case AppLanguage.tr: {
64 mod = await import(`./locales/tr/messages`)
65 break
66 }
67 case AppLanguage.uk: {
68 mod = await import(`./locales/uk/messages`)
69 break
70 }
71 case AppLanguage.zh_CN: {
72 mod = await import(`./locales/zh-CN/messages`)
73 break
74 }
75 case AppLanguage.zh_TW: {
76 mod = await import(`./locales/zh-TW/messages`)
77 break
78 }
79 default: {
80 mod = await import(`./locales/en/messages`)
81 break
82 }
83 }
84
85 i18n.load(locale, mod.messages)
86 i18n.activate(locale)
87}
88
89export async function useLocaleLanguage() {
90 const {appLanguage} = useLanguagePrefs()
91 useEffect(() => {
92 const sanitizedLanguage = sanitizeAppLanguageSetting(appLanguage)
93
94 document.documentElement.lang = sanitizedLanguage
95 dynamicActivate(sanitizedLanguage)
96 }, [appLanguage])
97}