Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

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