mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import '@formatjs/intl-locale/polyfill'
2import '@formatjs/intl-pluralrules/polyfill'
3import '@formatjs/intl-pluralrules/locale-data/en'
4
5import {useEffect} from 'react'
6import {i18n} from '@lingui/core'
7
8import {sanitizeAppLanguageSetting} from '#/locale/helpers'
9import {AppLanguage} from '#/locale/languages'
10import {messages as messagesCa} from '#/locale/locales/ca/messages'
11import {messages as messagesDe} from '#/locale/locales/de/messages'
12import {messages as messagesEn} from '#/locale/locales/en/messages'
13import {messages as messagesEs} from '#/locale/locales/es/messages'
14import {messages as messagesFi} from '#/locale/locales/fi/messages'
15import {messages as messagesFr} from '#/locale/locales/fr/messages'
16import {messages as messagesGa} from '#/locale/locales/ga/messages'
17import {messages as messagesHi} from '#/locale/locales/hi/messages'
18import {messages as messagesId} from '#/locale/locales/id/messages'
19import {messages as messagesIt} from '#/locale/locales/it/messages'
20import {messages as messagesJa} from '#/locale/locales/ja/messages'
21import {messages as messagesKo} from '#/locale/locales/ko/messages'
22import {messages as messagesPt_BR} from '#/locale/locales/pt-BR/messages'
23import {messages as messagesTr} from '#/locale/locales/tr/messages'
24import {messages as messagesUk} from '#/locale/locales/uk/messages'
25import {messages as messagesZh_CN} from '#/locale/locales/zh-CN/messages'
26import {messages as messagesZh_TW} from '#/locale/locales/zh-TW/messages'
27import {useLanguagePrefs} from '#/state/preferences'
28
29/**
30 * We do a dynamic import of just the catalog that we need
31 */
32export async function dynamicActivate(locale: AppLanguage) {
33 switch (locale) {
34 case AppLanguage.ca: {
35 i18n.loadAndActivate({locale, messages: messagesCa})
36 await import('@formatjs/intl-pluralrules/locale-data/ca')
37 break
38 }
39 case AppLanguage.de: {
40 i18n.loadAndActivate({locale, messages: messagesDe})
41 await import('@formatjs/intl-pluralrules/locale-data/de')
42 break
43 }
44 case AppLanguage.es: {
45 i18n.loadAndActivate({locale, messages: messagesEs})
46 await import('@formatjs/intl-pluralrules/locale-data/es')
47 break
48 }
49 case AppLanguage.fi: {
50 i18n.loadAndActivate({locale, messages: messagesFi})
51 await import('@formatjs/intl-pluralrules/locale-data/fi')
52 break
53 }
54 case AppLanguage.fr: {
55 i18n.loadAndActivate({locale, messages: messagesFr})
56 await import('@formatjs/intl-pluralrules/locale-data/fr')
57 break
58 }
59 case AppLanguage.ga: {
60 i18n.loadAndActivate({locale, messages: messagesGa})
61 await import('@formatjs/intl-pluralrules/locale-data/ga')
62 break
63 }
64 case AppLanguage.hi: {
65 i18n.loadAndActivate({locale, messages: messagesHi})
66 await import('@formatjs/intl-pluralrules/locale-data/hi')
67 break
68 }
69 case AppLanguage.id: {
70 i18n.loadAndActivate({locale, messages: messagesId})
71 await import('@formatjs/intl-pluralrules/locale-data/id')
72 break
73 }
74 case AppLanguage.it: {
75 i18n.loadAndActivate({locale, messages: messagesIt})
76 await import('@formatjs/intl-pluralrules/locale-data/it')
77 break
78 }
79 case AppLanguage.ja: {
80 i18n.loadAndActivate({locale, messages: messagesJa})
81 await import('@formatjs/intl-pluralrules/locale-data/ja')
82 break
83 }
84 case AppLanguage.ko: {
85 i18n.loadAndActivate({locale, messages: messagesKo})
86 await import('@formatjs/intl-pluralrules/locale-data/ko')
87 break
88 }
89 case AppLanguage.pt_BR: {
90 i18n.loadAndActivate({locale, messages: messagesPt_BR})
91 await import('@formatjs/intl-pluralrules/locale-data/pt')
92 break
93 }
94 case AppLanguage.tr: {
95 i18n.loadAndActivate({locale, messages: messagesTr})
96 await import('@formatjs/intl-pluralrules/locale-data/tr')
97 break
98 }
99 case AppLanguage.uk: {
100 i18n.loadAndActivate({locale, messages: messagesUk})
101 await import('@formatjs/intl-pluralrules/locale-data/uk')
102 break
103 }
104 case AppLanguage.zh_CN: {
105 i18n.loadAndActivate({locale, messages: messagesZh_CN})
106 await import('@formatjs/intl-pluralrules/locale-data/zh')
107 break
108 }
109 case AppLanguage.zh_TW: {
110 i18n.loadAndActivate({locale, messages: messagesZh_TW})
111 await import('@formatjs/intl-pluralrules/locale-data/zh')
112 break
113 }
114 default: {
115 i18n.loadAndActivate({locale, messages: messagesEn})
116 break
117 }
118 }
119}
120
121export async function useLocaleLanguage() {
122 const {appLanguage} = useLanguagePrefs()
123 useEffect(() => {
124 dynamicActivate(sanitizeAppLanguageSetting(appLanguage))
125 }, [appLanguage])
126}