Bluesky app fork with some witchin' additions 馃挮
at linkat-integration 193 lines 4.7 kB view raw
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}