this repo has no description
0
fork

Configure Feed

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

Standardize display of common + native languages list

+109 -75
+4 -4
src/components/compose.jsx
··· 1439 1439 code, 1440 1440 fallback: common, 1441 1441 }); 1442 - const same = commonText === native; 1442 + const showCommon = commonText !== native; 1443 1443 return ( 1444 1444 <option value={code} key={code}> 1445 - {same ? commonText : `${commonText} (${native})`} 1445 + {showCommon ? `${native} - ${commonText}` : commonText} 1446 1446 </option> 1447 1447 ); 1448 1448 })} ··· 1452 1452 code, 1453 1453 fallback: common, 1454 1454 }); 1455 - const same = commonText === native; 1455 + const showCommon = commonText !== native; 1456 1456 return ( 1457 1457 <option value={code} key={code}> 1458 - {same ? commonText : `${commonText} (${native})`} 1458 + {showCommon ? `${native} - ${commonText}` : commonText} 1459 1459 </option> 1460 1460 ); 1461 1461 })}
+28 -8
src/components/lang-selector.jsx
··· 1 1 import { useLingui } from '@lingui/react'; 2 + import { useMemo } from 'preact/hooks'; 2 3 3 4 import { DEFAULT_LANG, LOCALES } from '../locales'; 4 5 import { activateLang } from '../utils/lang'; ··· 7 8 export default function LangSelector() { 8 9 const { i18n } = useLingui(); 9 10 11 + const populatedLocales = useMemo(() => { 12 + return LOCALES.map((lang) => { 13 + const native = localeCode2Text({ code: lang, locale: lang }); 14 + const common = localeCode2Text(lang); 15 + const showCommon = !!common && common !== native; 16 + return { 17 + code: lang, 18 + native, 19 + common, 20 + showCommon, 21 + }; 22 + }).sort((a, b) => { 23 + // If pseudo-LOCALE, always put it at the bottom 24 + if (a.code === 'pseudo-LOCALE') return 1; 25 + if (b.code === 'pseudo-LOCALE') return -1; 26 + // Sort by code 27 + if (a.code < b.code) return -1; 28 + if (a.code > b.code) return 1; 29 + return 0; 30 + }); 31 + }, [i18n.locale]); 32 + 10 33 return ( 11 34 <label class="lang-selector"> 12 35 🌐{' '} ··· 18 41 activateLang(e.target.value); 19 42 }} 20 43 > 21 - {LOCALES.map((lang) => { 22 - if (lang === 'pseudo-LOCALE') { 44 + {populatedLocales.map(({ code, native, common, showCommon }) => { 45 + if (code === 'pseudo-LOCALE') { 23 46 return ( 24 47 <> 25 48 <hr /> 26 - <option value={lang} key={lang}> 49 + <option value={code} key={code}> 27 50 Pseudolocalization (test) 28 51 </option> 29 52 </> 30 53 ); 31 54 } 32 - const native = localeCode2Text({ code: lang, locale: lang }); 33 - const common = localeCode2Text(lang); 34 - const showCommon = !!common && common !== native; 35 55 return ( 36 - <option value={lang} key={lang}> 37 - {showCommon ? `${native} (${common})` : native} 56 + <option value={code} key={code}> 57 + {showCommon ? `${native} - ${common}` : native} 38 58 </option> 39 59 ); 40 60 })}
+20 -13
src/components/translation-block.jsx
··· 206 206 translate(); 207 207 }} 208 208 > 209 - {sourceLanguages.map((l) => ( 210 - <option value={l.code}> 211 - {l.code === 'auto' 212 - ? t`Auto (${detectedLang ?? '…'})` 213 - : `${localeCode2Text({ 214 - code: l.code, 215 - fallback: l.name, 216 - })} (${localeCode2Text({ 217 - code: l.code, 218 - locale: l.code, 219 - })})`} 220 - </option> 221 - ))} 209 + {sourceLanguages.map((l) => { 210 + const common = localeCode2Text({ 211 + code: l.code, 212 + fallback: l.name, 213 + }); 214 + const native = localeCode2Text({ 215 + code: l.code, 216 + locale: l.code, 217 + }); 218 + const showCommon = common !== native; 219 + return ( 220 + <option value={l.code}> 221 + {l.code === 'auto' 222 + ? t`Auto (${detectedLang ?? '…'})` 223 + : showCommon 224 + ? `${native} - ${common}` 225 + : native} 226 + </option> 227 + ); 228 + })} 222 229 </select>{' '} 223 230 <span>→ {targetLangText}</span> 224 231 <Loader abrupt hidden={uiState !== 'loading'} />
+46 -46
src/locales/en.po
··· 194 194 #: src/pages/catchup.jsx:72 195 195 #: src/pages/catchup.jsx:1414 196 196 #: src/pages/catchup.jsx:2035 197 - #: src/pages/settings.jsx:1008 197 + #: src/pages/settings.jsx:1015 198 198 msgid "Boosts" 199 199 msgstr "" 200 200 ··· 858 858 msgstr "" 859 859 860 860 #: src/components/drafts.jsx:63 861 - #: src/pages/settings.jsx:664 861 + #: src/pages/settings.jsx:671 862 862 msgid "Unsent drafts" 863 863 msgstr "" 864 864 ··· 1242 1242 #: src/pages/home.jsx:223 1243 1243 #: src/pages/mentions.jsx:20 1244 1244 #: src/pages/mentions.jsx:167 1245 - #: src/pages/settings.jsx:1000 1245 + #: src/pages/settings.jsx:1007 1246 1246 #: src/pages/trending.jsx:347 1247 1247 msgid "Mentions" 1248 1248 msgstr "" ··· 1297 1297 #: src/pages/catchup.jsx:2029 1298 1298 #: src/pages/favourites.jsx:11 1299 1299 #: src/pages/favourites.jsx:23 1300 - #: src/pages/settings.jsx:1004 1300 + #: src/pages/settings.jsx:1011 1301 1301 msgid "Likes" 1302 1302 msgstr "" 1303 1303 ··· 2284 2284 msgstr "" 2285 2285 2286 2286 #: src/components/timeline.jsx:447 2287 - #: src/pages/settings.jsx:1028 2287 + #: src/pages/settings.jsx:1035 2288 2288 msgid "New posts" 2289 2289 msgstr "" 2290 2290 ··· 2322 2322 msgid "Translate from {sourceLangText}" 2323 2323 msgstr "" 2324 2324 2325 - #: src/components/translation-block.jsx:212 2325 + #: src/components/translation-block.jsx:222 2326 2326 msgid "Auto ({0})" 2327 2327 msgstr "" 2328 2328 2329 - #: src/components/translation-block.jsx:228 2329 + #: src/components/translation-block.jsx:235 2330 2330 msgid "Failed to translate" 2331 2331 msgstr "" 2332 2332 ··· 3081 3081 msgstr "" 3082 3082 3083 3083 #: src/pages/notifications.jsx:599 3084 - #: src/pages/settings.jsx:1016 3084 + #: src/pages/settings.jsx:1023 3085 3085 msgid "Follow requests" 3086 3086 msgstr "" 3087 3087 ··· 3336 3336 msgid "{0, plural, =0 {Hide \"Translate\" button for:} other {Hide \"Translate\" button for (#):}}" 3337 3337 msgstr "" 3338 3338 3339 - #: src/pages/settings.jsx:451 3339 + #: src/pages/settings.jsx:458 3340 3340 msgid "Note: This feature uses external translation services, powered by <0>Lingva API</0> & <1>Lingva Translate</1>." 3341 3341 msgstr "" 3342 3342 3343 - #: src/pages/settings.jsx:485 3343 + #: src/pages/settings.jsx:492 3344 3344 msgid "Auto inline translation" 3345 3345 msgstr "" 3346 3346 3347 - #: src/pages/settings.jsx:489 3347 + #: src/pages/settings.jsx:496 3348 3348 msgid "Automatically show translation for posts in timeline. Only works for <0>short</0> posts without content warning, media and poll." 3349 3349 msgstr "" 3350 3350 3351 - #: src/pages/settings.jsx:509 3351 + #: src/pages/settings.jsx:516 3352 3352 msgid "GIF Picker for composer" 3353 3353 msgstr "" 3354 3354 3355 - #: src/pages/settings.jsx:513 3355 + #: src/pages/settings.jsx:520 3356 3356 msgid "Note: This feature uses external GIF search service, powered by <0>GIPHY</0>. G-rated (suitable for viewing by all ages), tracking parameters are stripped, referrer information is omitted from requests, but search queries and IP address information will still reach their servers." 3357 3357 msgstr "" 3358 3358 3359 - #: src/pages/settings.jsx:542 3359 + #: src/pages/settings.jsx:549 3360 3360 msgid "Image description generator" 3361 3361 msgstr "" 3362 3362 3363 - #: src/pages/settings.jsx:547 3363 + #: src/pages/settings.jsx:554 3364 3364 msgid "Only for new images while composing new posts." 3365 3365 msgstr "" 3366 3366 3367 - #: src/pages/settings.jsx:554 3367 + #: src/pages/settings.jsx:561 3368 3368 msgid "Note: This feature uses external AI service, powered by <0>img-alt-api</0>. May not work well. Only for images and in English." 3369 3369 msgstr "" 3370 3370 3371 - #: src/pages/settings.jsx:580 3371 + #: src/pages/settings.jsx:587 3372 3372 msgid "Server-side grouped notifications" 3373 3373 msgstr "" 3374 3374 3375 - #: src/pages/settings.jsx:584 3375 + #: src/pages/settings.jsx:591 3376 3376 msgid "Alpha-stage feature. Potentially improved grouping window but basic grouping logic." 3377 3377 msgstr "" 3378 3378 3379 - #: src/pages/settings.jsx:605 3379 + #: src/pages/settings.jsx:612 3380 3380 msgid "\"Cloud\" import/export for shortcuts settings" 3381 3381 msgstr "" 3382 3382 3383 - #: src/pages/settings.jsx:610 3383 + #: src/pages/settings.jsx:617 3384 3384 msgid "⚠️⚠️⚠️ Very experimental.<0/>Stored in your own profile’s notes. Profile (private) notes are mainly used for other profiles, and hidden for own profile." 3385 3385 msgstr "" 3386 3386 3387 - #: src/pages/settings.jsx:621 3387 + #: src/pages/settings.jsx:628 3388 3388 msgid "Note: This feature uses currently-logged-in instance server API." 3389 3389 msgstr "" 3390 3390 3391 - #: src/pages/settings.jsx:638 3391 + #: src/pages/settings.jsx:645 3392 3392 msgid "Cloak mode <0>(<1>Text</1> → <2>████</2>)</0>" 3393 3393 msgstr "" 3394 3394 3395 - #: src/pages/settings.jsx:647 3395 + #: src/pages/settings.jsx:654 3396 3396 msgid "Replace text as blocks, useful when taking screenshots, for privacy reasons." 3397 3397 msgstr "" 3398 3398 3399 - #: src/pages/settings.jsx:672 3399 + #: src/pages/settings.jsx:679 3400 3400 msgid "About" 3401 3401 msgstr "" 3402 3402 3403 - #: src/pages/settings.jsx:711 3403 + #: src/pages/settings.jsx:718 3404 3404 msgid "<0>Built</0> by <1>@cheeaun</1>" 3405 3405 msgstr "" 3406 3406 3407 - #: src/pages/settings.jsx:740 3407 + #: src/pages/settings.jsx:747 3408 3408 msgid "Sponsor" 3409 3409 msgstr "" 3410 3410 3411 - #: src/pages/settings.jsx:748 3411 + #: src/pages/settings.jsx:755 3412 3412 msgid "Donate" 3413 3413 msgstr "" 3414 3414 3415 - #: src/pages/settings.jsx:756 3415 + #: src/pages/settings.jsx:763 3416 3416 msgid "Privacy Policy" 3417 3417 msgstr "" 3418 3418 3419 - #: src/pages/settings.jsx:763 3419 + #: src/pages/settings.jsx:770 3420 3420 msgid "<0>Site:</0> {0}" 3421 3421 msgstr "" 3422 3422 3423 - #: src/pages/settings.jsx:770 3423 + #: src/pages/settings.jsx:777 3424 3424 msgid "<0>Version:</0> <1/> {0}" 3425 3425 msgstr "" 3426 3426 3427 - #: src/pages/settings.jsx:785 3427 + #: src/pages/settings.jsx:792 3428 3428 msgid "Version string copied" 3429 3429 msgstr "" 3430 3430 3431 - #: src/pages/settings.jsx:788 3431 + #: src/pages/settings.jsx:795 3432 3432 msgid "Unable to copy version string" 3433 3433 msgstr "" 3434 3434 3435 - #: src/pages/settings.jsx:913 3436 - #: src/pages/settings.jsx:918 3435 + #: src/pages/settings.jsx:920 3436 + #: src/pages/settings.jsx:925 3437 3437 msgid "Failed to update subscription. Please try again." 3438 3438 msgstr "" 3439 3439 3440 - #: src/pages/settings.jsx:924 3440 + #: src/pages/settings.jsx:931 3441 3441 msgid "Failed to remove subscription. Please try again." 3442 3442 msgstr "" 3443 3443 3444 - #: src/pages/settings.jsx:931 3444 + #: src/pages/settings.jsx:938 3445 3445 msgid "Push Notifications (beta)" 3446 3446 msgstr "" 3447 3447 3448 - #: src/pages/settings.jsx:953 3448 + #: src/pages/settings.jsx:960 3449 3449 msgid "Push notifications are blocked. Please enable them in your browser settings." 3450 3450 msgstr "" 3451 3451 3452 - #: src/pages/settings.jsx:962 3452 + #: src/pages/settings.jsx:969 3453 3453 msgid "Allow from <0>{0}</0>" 3454 3454 msgstr "" 3455 3455 3456 - #: src/pages/settings.jsx:971 3456 + #: src/pages/settings.jsx:978 3457 3457 msgid "anyone" 3458 3458 msgstr "" 3459 3459 3460 - #: src/pages/settings.jsx:975 3460 + #: src/pages/settings.jsx:982 3461 3461 msgid "people I follow" 3462 3462 msgstr "" 3463 3463 3464 - #: src/pages/settings.jsx:979 3464 + #: src/pages/settings.jsx:986 3465 3465 msgid "followers" 3466 3466 msgstr "" 3467 3467 3468 - #: src/pages/settings.jsx:1012 3468 + #: src/pages/settings.jsx:1019 3469 3469 msgid "Follows" 3470 3470 msgstr "" 3471 3471 3472 - #: src/pages/settings.jsx:1020 3472 + #: src/pages/settings.jsx:1027 3473 3473 msgid "Polls" 3474 3474 msgstr "" 3475 3475 3476 - #: src/pages/settings.jsx:1024 3476 + #: src/pages/settings.jsx:1031 3477 3477 msgid "Post edits" 3478 3478 msgstr "" 3479 3479 3480 - #: src/pages/settings.jsx:1045 3480 + #: src/pages/settings.jsx:1052 3481 3481 msgid "Push permission was not granted since your last login. You'll need to <0><1>log in</1> again to grant push permission</0>." 3482 3482 msgstr "" 3483 3483 3484 - #: src/pages/settings.jsx:1061 3484 + #: src/pages/settings.jsx:1068 3485 3485 msgid "NOTE: Push notifications only work for <0>one account</0>." 3486 3486 msgstr "" 3487 3487
+11 -4
src/pages/settings.jsx
··· 389 389 code: lang.code, 390 390 locale: lang.code, 391 391 }); 392 - const same = !native || common === native; 392 + const showCommon = common !== native; 393 393 return ( 394 394 <option value={lang.code}> 395 - {same ? common : `${common} (${native})`} 395 + {showCommon ? `${native} - ${common}` : common} 396 396 </option> 397 397 ); 398 398 })} ··· 418 418 code: lang.code, 419 419 locale: lang.code, 420 420 }); 421 - const same = !native || common === native; 421 + const showCommon = common !== native; 422 422 return ( 423 423 <label> 424 424 <input ··· 440 440 } 441 441 }} 442 442 />{' '} 443 - {same ? common : `${common} (${native})`} 443 + {showCommon ? ( 444 + <span> 445 + {native}{' '} 446 + <span class="insignificant">- {common}</span> 447 + </span> 448 + ) : ( 449 + common 450 + )} 444 451 </label> 445 452 ); 446 453 })}