Bluesky app fork with some witchin' additions 馃挮
at main 14 kB view raw
1// Don't remove -force from these because detection is VERY slow on low-end Android. 2// https://github.com/formatjs/formatjs/issues/4463#issuecomment-2176070577 3import '@formatjs/intl-locale/polyfill-force' 4import '@formatjs/intl-pluralrules/polyfill-force' 5import '@formatjs/intl-numberformat/polyfill-force' 6import '@formatjs/intl-pluralrules/locale-data/en' 7import '@formatjs/intl-numberformat/locale-data/en' 8 9import {useEffect} from 'react' 10import {i18n} from '@lingui/core' 11 12import {sanitizeAppLanguageSetting} from '#/locale/helpers' 13import {AppLanguage} from '#/locale/languages' 14import {messages as messagesAn} from '#/locale/locales/an/messages' 15import {messages as messagesAst} from '#/locale/locales/ast/messages' 16import {messages as messagesCa} from '#/locale/locales/ca/messages' 17import {messages as messagesCy} from '#/locale/locales/cy/messages' 18import {messages as messagesDa} from '#/locale/locales/da/messages' 19import {messages as messagesDe} from '#/locale/locales/de/messages' 20import {messages as messagesEl} from '#/locale/locales/el/messages' 21import {messages as messagesEn} from '#/locale/locales/en/messages' 22import {messages as messagesEn_GB} from '#/locale/locales/en-GB/messages' 23import {messages as messagesEo} from '#/locale/locales/eo/messages' 24import {messages as messagesEs} from '#/locale/locales/es/messages' 25import {messages as messagesEu} from '#/locale/locales/eu/messages' 26import {messages as messagesFi} from '#/locale/locales/fi/messages' 27import {messages as messagesFr} from '#/locale/locales/fr/messages' 28import {messages as messagesFy} from '#/locale/locales/fy/messages' 29import {messages as messagesGa} from '#/locale/locales/ga/messages' 30import {messages as messagesGd} from '#/locale/locales/gd/messages' 31import {messages as messagesGl} from '#/locale/locales/gl/messages' 32import {messages as messagesHi} from '#/locale/locales/hi/messages' 33import {messages as messagesHu} from '#/locale/locales/hu/messages' 34import {messages as messagesIa} from '#/locale/locales/ia/messages' 35import {messages as messagesId} from '#/locale/locales/id/messages' 36import {messages as messagesIt} from '#/locale/locales/it/messages' 37import {messages as messagesJa} from '#/locale/locales/ja/messages' 38import {messages as messagesKm} from '#/locale/locales/km/messages' 39import {messages as messagesKo} from '#/locale/locales/ko/messages' 40import {messages as messagesNe} from '#/locale/locales/ne/messages' 41import {messages as messagesNl} from '#/locale/locales/nl/messages' 42import {messages as messagesPl} from '#/locale/locales/pl/messages' 43import {messages as messagesPt_BR} from '#/locale/locales/pt-BR/messages' 44import {messages as messagesPt_PT} from '#/locale/locales/pt-PT/messages' 45import {messages as messagesRo} from '#/locale/locales/ro/messages' 46import {messages as messagesRu} from '#/locale/locales/ru/messages' 47import {messages as messagesSv} from '#/locale/locales/sv/messages' 48import {messages as messagesTh} from '#/locale/locales/th/messages' 49import {messages as messagesTr} from '#/locale/locales/tr/messages' 50import {messages as messagesUk} from '#/locale/locales/uk/messages' 51import {messages as messagesVi} from '#/locale/locales/vi/messages' 52import {messages as messagesZh_CN} from '#/locale/locales/zh-CN/messages' 53import {messages as messagesZh_HK} from '#/locale/locales/zh-HK/messages' 54import {messages as messagesZh_TW} from '#/locale/locales/zh-TW/messages' 55import {useLanguagePrefs} from '#/state/preferences' 56 57/** 58 * We do a dynamic import of just the catalog that we need 59 */ 60export async function dynamicActivate(locale: AppLanguage) { 61 switch (locale) { 62 case AppLanguage.an: { 63 i18n.loadAndActivate({locale, messages: messagesAn}) 64 await Promise.all([ 65 import('@formatjs/intl-pluralrules/locale-data/an'), 66 import('@formatjs/intl-numberformat/locale-data/es'), 67 ]) 68 break 69 } 70 case AppLanguage.ast: { 71 i18n.loadAndActivate({locale, messages: messagesAst}) 72 await Promise.all([ 73 import('@formatjs/intl-pluralrules/locale-data/ast'), 74 import('@formatjs/intl-numberformat/locale-data/ast'), 75 ]) 76 break 77 } 78 case AppLanguage.ca: { 79 i18n.loadAndActivate({locale, messages: messagesCa}) 80 await Promise.all([ 81 import('@formatjs/intl-pluralrules/locale-data/ca'), 82 import('@formatjs/intl-numberformat/locale-data/ca'), 83 ]) 84 break 85 } 86 case AppLanguage.cy: { 87 i18n.loadAndActivate({locale, messages: messagesCy}) 88 await Promise.all([ 89 import('@formatjs/intl-pluralrules/locale-data/cy'), 90 import('@formatjs/intl-numberformat/locale-data/cy'), 91 ]) 92 break 93 } 94 case AppLanguage.da: { 95 i18n.loadAndActivate({locale, messages: messagesDa}) 96 await Promise.all([ 97 import('@formatjs/intl-pluralrules/locale-data/da'), 98 import('@formatjs/intl-numberformat/locale-data/da'), 99 ]) 100 break 101 } 102 case AppLanguage.de: { 103 i18n.loadAndActivate({locale, messages: messagesDe}) 104 await Promise.all([ 105 import('@formatjs/intl-pluralrules/locale-data/de'), 106 import('@formatjs/intl-numberformat/locale-data/de'), 107 ]) 108 break 109 } 110 case AppLanguage.el: { 111 i18n.loadAndActivate({locale, messages: messagesEl}) 112 await Promise.all([ 113 import('@formatjs/intl-pluralrules/locale-data/el'), 114 import('@formatjs/intl-numberformat/locale-data/el'), 115 ]) 116 break 117 } 118 case AppLanguage.en_GB: { 119 i18n.loadAndActivate({locale, messages: messagesEn_GB}) 120 await Promise.all([ 121 import('@formatjs/intl-pluralrules/locale-data/en'), 122 import('@formatjs/intl-numberformat/locale-data/en-GB'), 123 ]) 124 break 125 } 126 case AppLanguage.eo: { 127 i18n.loadAndActivate({locale, messages: messagesEo}) 128 await Promise.all([ 129 import('@formatjs/intl-pluralrules/locale-data/eo'), 130 import('@formatjs/intl-numberformat/locale-data/eo'), 131 ]) 132 break 133 } 134 case AppLanguage.es: { 135 i18n.loadAndActivate({locale, messages: messagesEs}) 136 await Promise.all([ 137 import('@formatjs/intl-pluralrules/locale-data/es'), 138 import('@formatjs/intl-numberformat/locale-data/es'), 139 ]) 140 break 141 } 142 case AppLanguage.eu: { 143 i18n.loadAndActivate({locale, messages: messagesEu}) 144 await Promise.all([ 145 import('@formatjs/intl-pluralrules/locale-data/eu'), 146 import('@formatjs/intl-numberformat/locale-data/eu'), 147 ]) 148 break 149 } 150 case AppLanguage.fi: { 151 i18n.loadAndActivate({locale, messages: messagesFi}) 152 await Promise.all([ 153 import('@formatjs/intl-pluralrules/locale-data/fi'), 154 import('@formatjs/intl-numberformat/locale-data/fi'), 155 ]) 156 break 157 } 158 case AppLanguage.fr: { 159 i18n.loadAndActivate({locale, messages: messagesFr}) 160 await Promise.all([ 161 import('@formatjs/intl-pluralrules/locale-data/fr'), 162 import('@formatjs/intl-numberformat/locale-data/fr'), 163 ]) 164 break 165 } 166 case AppLanguage.fy: { 167 i18n.loadAndActivate({locale, messages: messagesFy}) 168 await Promise.all([ 169 import('@formatjs/intl-pluralrules/locale-data/fy'), 170 import('@formatjs/intl-numberformat/locale-data/fy'), 171 ]) 172 break 173 } 174 case AppLanguage.ga: { 175 i18n.loadAndActivate({locale, messages: messagesGa}) 176 await Promise.all([ 177 import('@formatjs/intl-pluralrules/locale-data/ga'), 178 import('@formatjs/intl-numberformat/locale-data/ga'), 179 ]) 180 break 181 } 182 case AppLanguage.gd: { 183 i18n.loadAndActivate({locale, messages: messagesGd}) 184 await Promise.all([ 185 import('@formatjs/intl-pluralrules/locale-data/gd'), 186 import('@formatjs/intl-numberformat/locale-data/gd'), 187 ]) 188 break 189 } 190 case AppLanguage.gl: { 191 i18n.loadAndActivate({locale, messages: messagesGl}) 192 await Promise.all([ 193 import('@formatjs/intl-pluralrules/locale-data/gl'), 194 import('@formatjs/intl-numberformat/locale-data/gl'), 195 ]) 196 break 197 } 198 case AppLanguage.hi: { 199 i18n.loadAndActivate({locale, messages: messagesHi}) 200 await Promise.all([ 201 import('@formatjs/intl-pluralrules/locale-data/hi'), 202 import('@formatjs/intl-numberformat/locale-data/hi'), 203 ]) 204 break 205 } 206 case AppLanguage.hu: { 207 i18n.loadAndActivate({locale, messages: messagesHu}) 208 await Promise.all([ 209 import('@formatjs/intl-pluralrules/locale-data/hu'), 210 import('@formatjs/intl-numberformat/locale-data/hu'), 211 ]) 212 break 213 } 214 case AppLanguage.ia: { 215 i18n.loadAndActivate({locale, messages: messagesIa}) 216 await Promise.all([ 217 import('@formatjs/intl-pluralrules/locale-data/ia'), 218 import('@formatjs/intl-numberformat/locale-data/ia'), 219 ]) 220 break 221 } 222 case AppLanguage.id: { 223 i18n.loadAndActivate({locale, messages: messagesId}) 224 await Promise.all([ 225 import('@formatjs/intl-pluralrules/locale-data/id'), 226 import('@formatjs/intl-numberformat/locale-data/id'), 227 ]) 228 break 229 } 230 case AppLanguage.it: { 231 i18n.loadAndActivate({locale, messages: messagesIt}) 232 await Promise.all([ 233 import('@formatjs/intl-pluralrules/locale-data/it'), 234 import('@formatjs/intl-numberformat/locale-data/it'), 235 ]) 236 break 237 } 238 case AppLanguage.ja: { 239 i18n.loadAndActivate({locale, messages: messagesJa}) 240 await Promise.all([ 241 import('@formatjs/intl-pluralrules/locale-data/ja'), 242 import('@formatjs/intl-numberformat/locale-data/ja'), 243 ]) 244 break 245 } 246 case AppLanguage.km: { 247 i18n.loadAndActivate({locale, messages: messagesKm}) 248 await Promise.all([ 249 import('@formatjs/intl-pluralrules/locale-data/km'), 250 import('@formatjs/intl-numberformat/locale-data/km'), 251 ]) 252 break 253 } 254 case AppLanguage.ko: { 255 i18n.loadAndActivate({locale, messages: messagesKo}) 256 await Promise.all([ 257 import('@formatjs/intl-pluralrules/locale-data/ko'), 258 import('@formatjs/intl-numberformat/locale-data/ko'), 259 ]) 260 break 261 } 262 case AppLanguage.ne: { 263 i18n.loadAndActivate({locale, messages: messagesNe}) 264 break 265 } 266 case AppLanguage.nl: { 267 i18n.loadAndActivate({locale, messages: messagesNl}) 268 await Promise.all([ 269 import('@formatjs/intl-pluralrules/locale-data/nl'), 270 import('@formatjs/intl-numberformat/locale-data/nl'), 271 ]) 272 break 273 } 274 case AppLanguage.pl: { 275 i18n.loadAndActivate({locale, messages: messagesPl}) 276 await Promise.all([ 277 import('@formatjs/intl-pluralrules/locale-data/pl'), 278 import('@formatjs/intl-numberformat/locale-data/pl'), 279 ]) 280 break 281 } 282 case AppLanguage.pt_BR: { 283 i18n.loadAndActivate({locale, messages: messagesPt_BR}) 284 await Promise.all([ 285 import('@formatjs/intl-pluralrules/locale-data/pt'), 286 import('@formatjs/intl-numberformat/locale-data/pt'), 287 ]) 288 break 289 } 290 case AppLanguage.pt_PT: { 291 i18n.loadAndActivate({locale, messages: messagesPt_PT}) 292 await Promise.all([ 293 import('@formatjs/intl-pluralrules/locale-data/pt-PT'), 294 import('@formatjs/intl-numberformat/locale-data/pt-PT'), 295 ]) 296 break 297 } 298 case AppLanguage.ro: { 299 i18n.loadAndActivate({locale, messages: messagesRo}) 300 await Promise.all([ 301 import('@formatjs/intl-pluralrules/locale-data/ro'), 302 import('@formatjs/intl-numberformat/locale-data/ro'), 303 ]) 304 break 305 } 306 case AppLanguage.ru: { 307 i18n.loadAndActivate({locale, messages: messagesRu}) 308 await Promise.all([ 309 import('@formatjs/intl-pluralrules/locale-data/ru'), 310 import('@formatjs/intl-numberformat/locale-data/ru'), 311 ]) 312 break 313 } 314 case AppLanguage.sv: { 315 i18n.loadAndActivate({locale, messages: messagesSv}) 316 await Promise.all([ 317 import('@formatjs/intl-pluralrules/locale-data/sv'), 318 import('@formatjs/intl-numberformat/locale-data/sv'), 319 ]) 320 break 321 } 322 case AppLanguage.th: { 323 i18n.loadAndActivate({locale, messages: messagesTh}) 324 await Promise.all([ 325 import('@formatjs/intl-pluralrules/locale-data/th'), 326 import('@formatjs/intl-numberformat/locale-data/th'), 327 ]) 328 break 329 } 330 case AppLanguage.tr: { 331 i18n.loadAndActivate({locale, messages: messagesTr}) 332 await Promise.all([ 333 import('@formatjs/intl-pluralrules/locale-data/tr'), 334 import('@formatjs/intl-numberformat/locale-data/tr'), 335 ]) 336 break 337 } 338 case AppLanguage.uk: { 339 i18n.loadAndActivate({locale, messages: messagesUk}) 340 await Promise.all([ 341 import('@formatjs/intl-pluralrules/locale-data/uk'), 342 import('@formatjs/intl-numberformat/locale-data/uk'), 343 ]) 344 break 345 } 346 case AppLanguage.vi: { 347 i18n.loadAndActivate({locale, messages: messagesVi}) 348 await Promise.all([ 349 import('@formatjs/intl-pluralrules/locale-data/vi'), 350 import('@formatjs/intl-numberformat/locale-data/vi'), 351 ]) 352 break 353 } 354 case AppLanguage.zh_CN: { 355 i18n.loadAndActivate({locale, messages: messagesZh_CN}) 356 await Promise.all([ 357 import('@formatjs/intl-pluralrules/locale-data/zh'), 358 import('@formatjs/intl-numberformat/locale-data/zh'), 359 ]) 360 break 361 } 362 case AppLanguage.zh_HK: { 363 i18n.loadAndActivate({locale, messages: messagesZh_HK}) 364 await Promise.all([ 365 import('@formatjs/intl-pluralrules/locale-data/zh'), 366 import('@formatjs/intl-numberformat/locale-data/zh'), 367 ]) 368 break 369 } 370 case AppLanguage.zh_TW: { 371 i18n.loadAndActivate({locale, messages: messagesZh_TW}) 372 await Promise.all([ 373 import('@formatjs/intl-pluralrules/locale-data/zh'), 374 import('@formatjs/intl-numberformat/locale-data/zh'), 375 ]) 376 break 377 } 378 default: { 379 i18n.loadAndActivate({locale, messages: messagesEn}) 380 break 381 } 382 } 383} 384 385export function useLocaleLanguage() { 386 const {appLanguage} = useLanguagePrefs() 387 useEffect(() => { 388 dynamicActivate(sanitizeAppLanguageSetting(appLanguage)) 389 }, [appLanguage]) 390}