forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
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.an: {
16 mod = await import(`./locales/an/messages`)
17 break
18 }
19 case AppLanguage.ast: {
20 mod = await import(`./locales/ast/messages`)
21 break
22 }
23 case AppLanguage.ca: {
24 mod = await import(`./locales/ca/messages`)
25 break
26 }
27 case AppLanguage.cy: {
28 mod = await import(`./locales/cy/messages`)
29 break
30 }
31 case AppLanguage.da: {
32 mod = await import(`./locales/da/messages`)
33 break
34 }
35 case AppLanguage.de: {
36 mod = await import(`./locales/de/messages`)
37 break
38 }
39 case AppLanguage.el: {
40 mod = await import(`./locales/el/messages`)
41 break
42 }
43 case AppLanguage.en_GB: {
44 mod = await import(`./locales/en-GB/messages`)
45 break
46 }
47 case AppLanguage.eo: {
48 mod = await import(`./locales/eo/messages`)
49 break
50 }
51 case AppLanguage.es: {
52 mod = await import(`./locales/es/messages`)
53 break
54 }
55 case AppLanguage.eu: {
56 mod = await import(`./locales/eu/messages`)
57 break
58 }
59 case AppLanguage.fi: {
60 mod = await import(`./locales/fi/messages`)
61 break
62 }
63 case AppLanguage.fr: {
64 mod = await import(`./locales/fr/messages`)
65 break
66 }
67 case AppLanguage.fy: {
68 mod = await import(`./locales/fy/messages`)
69 break
70 }
71 case AppLanguage.ga: {
72 mod = await import(`./locales/ga/messages`)
73 break
74 }
75 case AppLanguage.gd: {
76 mod = await import(`./locales/gd/messages`)
77 break
78 }
79 case AppLanguage.gl: {
80 mod = await import(`./locales/gl/messages`)
81 break
82 }
83 case AppLanguage.hi: {
84 mod = await import(`./locales/hi/messages`)
85 break
86 }
87 case AppLanguage.hu: {
88 mod = await import(`./locales/hu/messages`)
89 break
90 }
91 case AppLanguage.ia: {
92 mod = await import(`./locales/ia/messages`)
93 break
94 }
95 case AppLanguage.id: {
96 mod = await import(`./locales/id/messages`)
97 break
98 }
99 case AppLanguage.it: {
100 mod = await import(`./locales/it/messages`)
101 break
102 }
103 case AppLanguage.ja: {
104 mod = await import(`./locales/ja/messages`)
105 break
106 }
107 case AppLanguage.km: {
108 mod = await import(`./locales/km/messages`)
109 break
110 }
111 case AppLanguage.ko: {
112 mod = await import(`./locales/ko/messages`)
113 break
114 }
115 case AppLanguage.ne: {
116 mod = await import(`./locales/ne/messages`)
117 break
118 }
119 case AppLanguage.nl: {
120 mod = await import(`./locales/nl/messages`)
121 break
122 }
123 case AppLanguage.pl: {
124 mod = await import(`./locales/pl/messages`)
125 break
126 }
127 case AppLanguage.pt_BR: {
128 mod = await import(`./locales/pt-BR/messages`)
129 break
130 }
131 case AppLanguage.pt_PT: {
132 mod = await import(`./locales/pt-PT/messages`)
133 break
134 }
135 case AppLanguage.ro: {
136 mod = await import(`./locales/ro/messages`)
137 break
138 }
139 case AppLanguage.ru: {
140 mod = await import(`./locales/ru/messages`)
141 break
142 }
143 case AppLanguage.sv: {
144 mod = await import(`./locales/sv/messages`)
145 break
146 }
147 case AppLanguage.th: {
148 mod = await import(`./locales/th/messages`)
149 break
150 }
151 case AppLanguage.tr: {
152 mod = await import(`./locales/tr/messages`)
153 break
154 }
155 case AppLanguage.uk: {
156 mod = await import(`./locales/uk/messages`)
157 break
158 }
159 case AppLanguage.vi: {
160 mod = await import(`./locales/vi/messages`)
161 break
162 }
163 case AppLanguage.zh_CN: {
164 mod = await import(`./locales/zh-CN/messages`)
165 break
166 }
167 case AppLanguage.zh_HK: {
168 mod = await import(`./locales/zh-HK/messages`)
169 break
170 }
171 case AppLanguage.zh_TW: {
172 mod = await import(`./locales/zh-TW/messages`)
173 break
174 }
175 default: {
176 mod = await import(`./locales/en/messages`)
177 break
178 }
179 }
180
181 i18n.load(locale, mod.messages)
182 i18n.activate(locale)
183}
184
185export function useLocaleLanguage() {
186 const {appLanguage} = useLanguagePrefs()
187 useEffect(() => {
188 const sanitizedLanguage = sanitizeAppLanguageSetting(appLanguage)
189
190 document.documentElement.lang = sanitizedLanguage
191 dynamicActivate(sanitizedLanguage)
192 }, [appLanguage])
193}