diff --git a/src/components/interstitials/FeedTrendingTopics.tsx b/src/components/interstitials/FeedTrendingTopics.tsx index 8f3baab6e5..0816dad8c0 100644 --- a/src/components/interstitials/FeedTrendingTopics.tsx +++ b/src/components/interstitials/FeedTrendingTopics.tsx @@ -1,8 +1,7 @@ import {useMemo} from 'react' import {Pressable, View} from 'react-native' import {type AppBskyUnspeccedDefs, moderateProfile} from '@atproto/api' -import {plural} from '@lingui/core/macro' -import {Trans, useLingui} from '@lingui/react/macro' +import {Plural, Trans, useLingui} from '@lingui/react/macro' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useTrendingSettings} from '#/state/preferences/trending' @@ -149,6 +148,7 @@ function TrendRow({ const {t: l, i18n} = useLingui() const actors = useModerateTrendingActors(trend.actors) + const formattedPostCount = formatCount(i18n, trend.postCount) return ( - {formatCount(i18n, trend.postCount)}{' '} - {plural(trend.postCount, {one: 'post', other: 'posts'})} + {formattedPostCount}{' '} + diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po index 5e8d35e2ef..f02ade7988 100644 --- a/src/locale/locales/en/messages.po +++ b/src/locale/locales/en/messages.po @@ -192,10 +192,7 @@ msgid "{0, plural, one {following} other {following}}" msgstr "" #. placeholder {0}: profile.postsCount || 0 -#. placeholder {0}: trend.postCount -#: src/components/interstitials/FeedTrendingTopics.tsx:220 #: src/screens/Profile/Header/Metrics.tsx:58 -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:150 msgid "{0, plural, one {post} other {posts}}" msgstr "" @@ -227,16 +224,6 @@ msgstr "" msgid "{0} (Account)" msgstr "" -#. '{postCount} {posts}', e.g., '1.2K posts' -#. '{postCount} {posts}', e.g., '1.2K posts' -#. placeholder {0}: formatCount(i18n, trend.postCount) -#. placeholder {1}: import {useMemo} from 'react' import {Pressable, View} from 'react-native' import {Image} from 'expo-image' import { type AppBskyUnspeccedDefs, moderateProfile, RichText as RichTextApi, } from '@atproto/api' import {plural} from '@lingui/core/macro' import {Trans, useLingui} from '@lingui/react/macro' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useTrendingSettings} from '#/state/preferences/trending' import {useGetTrendsQuery} from '#/state/queries/trending/useGetTrendsQuery' import {useTrendingConfig} from '#/state/service-config' import {LoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {formatCount} from '#/view/com/util/numeric/format' import {atoms as a, useGutters, useTheme, type ViewStyleProp} from '#/alf' import {AvatarStack} from '#/components/AvatarStack' import {Trending3_Stroke2_Corner1_Rounded as TrendingIcon} from '#/components/icons/Trending' import {Link} from '#/components/Link' import {RichText} from '#/components/RichText' import {SubtleHover} from '#/components/SubtleHover' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import * as ModuleHeader from '../components/ModuleHeader' const TOPIC_COUNT = 5 const IMAGE_SIZE = 56 export function ExploreTrendingTopics() { const {enabled} = useTrendingConfig() const {trendingDisabled} = useTrendingSettings() return enabled && !trendingDisabled ? : null } function Inner() { const ax = useAnalytics() const {data: trending, error, isLoading, isRefetching} = useGetTrendsQuery() const noTopics = !isLoading && !error && !trending?.trends?.length const showLoading = isLoading || isRefetching if (!showLoading && (error || !trending?.trends || noTopics)) return null return ( Trending {showLoading ? Array.from({length: TOPIC_COUNT}).map((__, i) => ( )) : trending?.trends.map((trend, index) => ( { ax.metric('trendingTopic:click', { context: 'explore', recId: trending.recId, }) }} /> ))} ) } export function TrendRow({ trend, rank, children, onPress, }: ViewStyleProp & { trend: AppBskyUnspeccedDefs.TrendView rank: number children?: React.ReactNode onPress?: () => void }) { const t = useTheme() const {t: l, i18n} = useLingui() const gutters = useGutters([0, 'base']) const actors = useModerateTrendingActors(trend.actors) const description = useMemo(() => { if (!trend.description) return const rt = new RichTextApi({text: trend.description}) rt.detectFacetsWithoutResolution() return rt }, [trend.description]) let imageUrl = null // TODO Image URL goes here when available. -dsb return ( {({hovered, pressed}) => ( <> {rank}. {trend.displayName} {description ? ( ) : null} {actors.length > 0 ? ( ) : null} {formatCount(i18n, trend.postCount)}{' '} {plural(trend.postCount, {one: 'post', other: 'posts'})} {imageUrl ? ( {trend.topic} ) : null} {children} )} ) } // Unused atm, but leaving here so we don't lose localization. -dsb export function useCategoryDisplayName( category: AppBskyUnspeccedDefs.TrendView['category'], ) { const {t: l} = useLingui() switch (category) { case 'sports': return l`Sports` case 'politics': return l`Politics` case 'video-games': return l`Video Games` case 'pop-culture': return l`Entertainment` case 'news': return l`News` case 'other': default: return null } } export function TrendingTopicRowSkeleton() { const t = useTheme() const gutters = useGutters([0, 'base']) return ( {/* TODO Image placeholder goes here when images are available. -dsb */} ) } function useModerateTrendingActors( actors: AppBskyUnspeccedDefs.TrendView['actors'], ) { const moderationOpts = useModerationOpts() return useMemo(() => { if (!moderationOpts) return [] return actors .filter(actor => { const decision = moderateProfile(actor, moderationOpts) return !decision.ui('avatar').filter && !decision.ui('avatar').blur }) .slice(0, 3) }, [actors, moderationOpts]) } -#. placeholder {1}: import {useMemo} from 'react' import {Pressable, View} from 'react-native' import {LinearGradient} from 'expo-linear-gradient' import {type AppBskyUnspeccedDefs, moderateProfile} from '@atproto/api' import {plural} from '@lingui/core/macro' import {Trans, useLingui} from '@lingui/react/macro' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useTrendingSettings} from '#/state/preferences/trending' import {useGetTrendsQuery} from '#/state/queries/trending/useGetTrendsQuery' import {useTrendingConfig} from '#/state/service-config' import {LoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {formatCount} from '#/view/com/util/numeric/format' import { atoms as a, useGutters, useLayoutBreakpoints, useTheme, type ViewStyleProp, } from '#/alf' import {alpha} from '#/alf/utils' import {AvatarStack} from '#/components/AvatarStack' import {Trending3_Stroke2_Corner1_Rounded as TrendingIcon} from '#/components/icons/Trending' import {Link} from '#/components/Link' import {SubtleHover} from '#/components/SubtleHover' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' const TOPIC_COUNT = 3 export function FeedTrendingTopicsInterstitial() { const {enabled} = useTrendingConfig() const {trendingDisabled} = useTrendingSettings() const {rightNavVisible} = useLayoutBreakpoints() return enabled && !trendingDisabled && !rightNavVisible ? : null } function Inner() { const t = useTheme() const {t: l} = useLingui() const gutters = useGutters([0, 'base']) const ax = useAnalytics() const { data: trending, error, isLoading, isRefetching, } = useGetTrendsQuery({limit: TOPIC_COUNT}) const noTopics = !isLoading && !error && !trending?.trends?.length const shadowColor = alpha(t.palette.primary_100, 0.5) const gradient = { values: [ [0, t.atoms.bg.backgroundColor], [0.1, t.palette.primary_25], [0.9, t.palette.primary_25], [1, t.atoms.bg.backgroundColor], ], hover_value: t.palette.white, } if (error || noTopics) { return null } return ( c[1]) as [string, string, ...string[]]} locations={ gradient.values.map(c => c[0]) as [number, number, ...number[]] } style={[a.absolute, a.inset_0]} /> Trending See more {isLoading || isRefetching ? Array.from({length: TOPIC_COUNT}).map((_, i) => ( )) : trending?.trends?.map((trend, index) => ( { ax.metric('trendingTopic:click', {context: 'interstitial'}) }} /> ))} ) } function TrendRow({ trend, rank, onPress, }: ViewStyleProp & { trend: AppBskyUnspeccedDefs.TrendView rank: number children?: React.ReactNode onPress?: () => void }) { const t = useTheme() const {t: l, i18n} = useLingui() const actors = useModerateTrendingActors(trend.actors) return ( {({hovered, pressed}) => ( <> {rank}. {trend.displayName} {actors.length > 0 ? ( ) : null} {formatCount(i18n, trend.postCount)}{' '} {plural(trend.postCount, {one: 'post', other: 'posts'})} )} ) } function TrendingTopicRowSkeleton({rank}: {rank: number}) { const t = useTheme() return ( ) } function useModerateTrendingActors( actors: AppBskyUnspeccedDefs.TrendView['actors'], ) { const moderationOpts = useModerationOpts() return useMemo(() => { if (!moderationOpts) return [] return actors .filter(actor => { const decision = moderateProfile(actor, moderationOpts) return !decision.ui('avatar').filter && !decision.ui('avatar').blur }) .slice(0, 3) }, [actors, moderationOpts]) } -#: src/components/interstitials/FeedTrendingTopics.tsx:218 -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:148 -msgid "{0} {1}" -msgstr "{0} {1}" - #. Pattern: {wordValue} in tags #. placeholder {0}: word.value #: src/components/dialogs/MutedWords.tsx:495 @@ -652,6 +639,13 @@ msgstr "" msgid "{following} following" msgstr "" +#. '{postCount} {posts}', e.g., '1.2K posts' +#. '{postCount} {posts}', e.g., '1.2K posts' +#: src/components/interstitials/FeedTrendingTopics.tsx:204 +#: src/screens/Search/modules/ExploreTrendingTopics.tsx:148 +msgid "{formattedPostCount} {postCount, plural, one {post} other {posts}}" +msgstr "{formattedPostCount} {postCount, plural, one {post} other {posts}}" + #: src/components/dms/components/GroupChatProfileCard.tsx:62 #: src/components/dms/InitiateChatFlow.tsx:1158 msgid "{handle} can’t be added" @@ -749,7 +743,7 @@ msgstr "" #. The trending topic rank, i.e. "1. March Madness", "2. The Bachelor" #. The trending topic rank, i.e. "1. March Madness", "2. The Bachelor" -#: src/components/interstitials/FeedTrendingTopics.tsx:203 +#: src/components/interstitials/FeedTrendingTopics.tsx:189 #: src/screens/Search/modules/ExploreTrendingTopics.tsx:123 msgid "{rank}." msgstr "" @@ -1088,7 +1082,7 @@ msgstr "" msgid "Account options" msgstr "" -#: src/screens/Settings/Settings.tsx:680 +#: src/screens/Settings/Settings.tsx:681 msgid "Account removed from quick access" msgstr "" @@ -1184,11 +1178,11 @@ msgstr "" msgid "Add another account" msgstr "" -#: src/view/com/composer/Composer.tsx:1602 +#: src/view/com/composer/Composer.tsx:1607 msgid "Add another post" msgstr "" -#: src/view/com/composer/Composer.tsx:2268 +#: src/view/com/composer/Composer.tsx:2273 msgid "Add another post to thread" msgstr "" @@ -1939,7 +1933,7 @@ msgstr "" msgid "Are you sure you want to rescind your request to join {0}?" msgstr "Are you sure you want to rescind your request to join {0}?" -#: src/view/com/composer/Composer.tsx:1738 +#: src/view/com/composer/Composer.tsx:1743 msgid "Are you sure you'd like to discard this post?" msgstr "" @@ -2009,6 +2003,10 @@ msgstr "" msgid "Available" msgstr "" +#: src/screens/Onboarding/StepProfile/index.tsx:326 +msgid "Avatar creator" +msgstr "Avatar creator" + #: src/components/dms/AddMembersFlow.tsx:359 #: src/components/dms/AddMembersFlow.tsx:527 #: src/components/dms/AddMembersFlow.tsx:533 @@ -2404,7 +2402,7 @@ msgid "Browse starter pack {displayName}" msgstr "" #. placeholder {0}: trend.displayName -#: src/components/interstitials/FeedTrendingTopics.tsx:170 +#: src/components/interstitials/FeedTrendingTopics.tsx:156 #: src/screens/Search/modules/ExploreTrendingTopics.tsx:104 msgid "Browse topic {0}" msgstr "" @@ -2532,8 +2530,8 @@ msgstr "Camera access needed" #: src/screens/Settings/Settings.tsx:309 #: src/screens/Takendown.tsx:102 #: src/screens/Takendown.tsx:105 -#: src/view/com/composer/Composer.tsx:1816 -#: src/view/com/composer/Composer.tsx:1826 +#: src/view/com/composer/Composer.tsx:1821 +#: src/view/com/composer/Composer.tsx:1831 #: src/view/com/composer/photos/EditImageDialog.web.tsx:44 #: src/view/com/composer/photos/EditImageDialog.web.tsx:53 #: src/view/shell/desktop/LeftNav.tsx:228 @@ -2822,7 +2820,7 @@ msgstr "" msgid "Choose post languages" msgstr "" -#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:108 +#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:106 msgid "Choose this color as your avatar" msgstr "" @@ -2847,7 +2845,7 @@ msgstr "" msgid "Choose your password" msgstr "" -#: src/screens/Signup/index.tsx:203 +#: src/screens/Signup/index.tsx:201 msgid "Choose your username" msgstr "" @@ -2996,7 +2994,7 @@ msgid "Close" msgstr "" #: src/components/Dialog/index.web.tsx:129 -#: src/components/Dialog/index.web.tsx:339 +#: src/components/Dialog/index.web.tsx:342 msgid "Close active dialog" msgstr "" @@ -3066,7 +3064,7 @@ msgstr "" msgid "Closes password update alert" msgstr "" -#: src/view/com/composer/Composer.tsx:1824 +#: src/view/com/composer/Composer.tsx:1829 msgid "Closes post composer and discards post draft" msgstr "" @@ -3109,7 +3107,7 @@ msgstr "" msgid "Complete onboarding and start using your account" msgstr "" -#: src/screens/Signup/index.tsx:205 +#: src/screens/Signup/index.tsx:203 msgid "Complete the challenge" msgstr "" @@ -3120,7 +3118,7 @@ msgid "Compose new post" msgstr "" #. placeholder {0}: MAX_GRAPHEME_LENGTH || 0 -#: src/view/com/composer/Composer.tsx:1700 +#: src/view/com/composer/Composer.tsx:1705 msgid "Compose posts up to {0, plural, other {# characters}} in length" msgstr "" @@ -3128,11 +3126,11 @@ msgstr "" msgid "Compose reply" msgstr "" -#: src/view/com/composer/Composer.tsx:2672 +#: src/view/com/composer/Composer.tsx:2677 msgid "Compressing GIF..." msgstr "" -#: src/view/com/composer/Composer.tsx:2674 +#: src/view/com/composer/Composer.tsx:2679 msgid "Compressing video..." msgstr "" @@ -3190,8 +3188,8 @@ msgid "Contact our support team" msgstr "" #: src/components/ageAssurance/AgeAssuranceInitDialog.tsx:156 -#: src/screens/Signup/index.tsx:250 -#: src/screens/Signup/index.tsx:253 +#: src/screens/Signup/index.tsx:248 +#: src/screens/Signup/index.tsx:251 msgid "Contact support" msgstr "" @@ -3266,7 +3264,7 @@ msgstr "" #: src/screens/Login/components/ConfirmHostingProviderDialog.tsx:149 #: src/screens/Login/components/ConfirmHostingProviderDialog.tsx:152 #: src/screens/Onboarding/StepInterests/index.tsx:93 -#: src/screens/Onboarding/StepProfile/index.tsx:304 +#: src/screens/Onboarding/StepProfile/index.tsx:301 #: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:305 #: src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx:117 msgid "Continue" @@ -3295,7 +3293,7 @@ msgid "Continue to group name" msgstr "Continue to group name" #: src/screens/Onboarding/StepInterests/index.tsx:90 -#: src/screens/Onboarding/StepProfile/index.tsx:301 +#: src/screens/Onboarding/StepProfile/index.tsx:298 #: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:302 #: src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx:114 #: src/screens/Signup/BackNextButtons.tsx:61 @@ -3606,7 +3604,7 @@ msgstr "" #: src/components/WelcomeModal.tsx:155 #: src/components/WelcomeModal.tsx:163 #: src/screens/Messages/JoinRequest.tsx:310 -#: src/screens/Signup/index.tsx:141 +#: src/screens/Signup/index.tsx:139 #: src/view/com/auth/SplashScreen.tsx:108 #: src/view/com/auth/SplashScreen.web.tsx:118 #: src/view/shell/bottom-bar/BottomBar.tsx:351 @@ -3630,7 +3628,7 @@ msgstr "" msgid "Create an account without using this starter pack" msgstr "" -#: src/screens/Onboarding/StepProfile/index.tsx:317 +#: src/screens/Onboarding/StepProfile/index.tsx:314 msgid "Create an avatar instead" msgstr "" @@ -3858,7 +3856,7 @@ msgstr "" #: src/components/PostControls/PostMenu/PostMenuItems.tsx:796 #: src/components/PostControls/PostMenu/PostMenuItems.tsx:798 -#: src/view/com/composer/Composer.tsx:1712 +#: src/view/com/composer/Composer.tsx:1717 msgid "Delete post" msgstr "" @@ -4009,9 +4007,9 @@ msgstr "" #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:101 #: src/screens/Profile/Header/EditProfileDialog.tsx:79 -#: src/view/com/composer/Composer.tsx:1492 -#: src/view/com/composer/Composer.tsx:1536 -#: src/view/com/composer/Composer.tsx:1745 +#: src/view/com/composer/Composer.tsx:1497 +#: src/view/com/composer/Composer.tsx:1541 +#: src/view/com/composer/Composer.tsx:1750 #: src/view/com/composer/drafts/DraftItem.tsx:242 #: src/view/com/composer/drafts/DraftsButton.tsx:131 msgid "Discard" @@ -4022,14 +4020,14 @@ msgstr "" msgid "Discard changes?" msgstr "" -#: src/view/com/composer/Composer.tsx:1490 +#: src/view/com/composer/Composer.tsx:1495 #: src/view/com/composer/drafts/DraftItem.tsx:239 #: src/view/com/composer/drafts/DraftsButton.tsx:98 msgid "Discard draft?" msgstr "" -#: src/view/com/composer/Composer.tsx:1507 -#: src/view/com/composer/Composer.tsx:1737 +#: src/view/com/composer/Composer.tsx:1512 +#: src/view/com/composer/Composer.tsx:1742 msgid "Discard post?" msgstr "" @@ -4058,7 +4056,7 @@ msgstr "" msgid "Discover New Feeds" msgstr "" -#: src/components/Dialog/index.tsx:414 +#: src/components/Dialog/index.tsx:398 #: src/features/inviteFriends/components/FollowersPromoBanner.tsx:83 msgid "Dismiss" msgstr "" @@ -4067,7 +4065,7 @@ msgstr "" msgid "Dismiss banner" msgstr "" -#: src/view/com/composer/Composer.tsx:2593 +#: src/view/com/composer/Composer.tsx:2598 msgid "Dismiss error" msgstr "" @@ -4169,8 +4167,8 @@ msgstr "" #: src/lib/media/picker.tsx:37 #: src/screens/Login/components/HostingProviderDialog.tsx:253 #: src/screens/Login/components/HostingProviderDialog.tsx:255 -#: src/screens/Onboarding/StepProfile/index.tsx:354 -#: src/screens/Onboarding/StepProfile/index.tsx:357 +#: src/screens/Onboarding/StepProfile/index.tsx:353 +#: src/screens/Onboarding/StepProfile/index.tsx:356 #: src/screens/Settings/components/AddAppPasswordDialog.tsx:214 #: src/screens/Settings/components/AddAppPasswordDialog.tsx:221 #: src/view/com/composer/labels/LabelsBtn.tsx:219 @@ -4184,7 +4182,7 @@ msgstr "" msgid "Double tap or long press the message to add a reaction" msgstr "" -#: src/components/Dialog/index.tsx:415 +#: src/components/Dialog/index.tsx:399 msgid "Double tap to close the dialog" msgstr "" @@ -4621,11 +4619,11 @@ msgstr "" msgid "Enters full screen" msgstr "" -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:198 +#: src/screens/Search/modules/ExploreTrendingTopics.tsx:202 msgid "Entertainment" msgstr "" -#: src/view/com/composer/Composer.tsx:2692 +#: src/view/com/composer/Composer.tsx:2697 #: src/view/com/util/error/ErrorScreen.tsx:40 msgid "Error" msgstr "" @@ -5068,7 +5066,7 @@ msgstr "Failed to rescind your request. Please try again." msgid "Failed to resolve location. Please try again." msgstr "" -#: src/view/com/composer/Composer.tsx:726 +#: src/view/com/composer/Composer.tsx:731 msgid "Failed to save draft" msgstr "" @@ -5769,11 +5767,11 @@ msgstr "" msgid "GIF" msgstr "" -#: src/view/com/composer/Composer.tsx:2697 +#: src/view/com/composer/Composer.tsx:2702 msgid "GIF uploaded" msgstr "" -#: src/screens/Onboarding/StepProfile/index.tsx:259 +#: src/screens/Onboarding/StepProfile/index.tsx:256 msgid "Give your profile a face" msgstr "" @@ -6069,7 +6067,7 @@ msgstr "" msgid "Have we got your location wrong? <0>Tap here to update your location with GPS." msgstr "Have we got your location wrong? <0>Tap here to update your location with GPS." -#: src/screens/Signup/index.tsx:248 +#: src/screens/Signup/index.tsx:246 msgid "Having trouble?" msgstr "" @@ -6085,7 +6083,7 @@ msgstr "" msgid "Help" msgstr "" -#: src/screens/Onboarding/StepProfile/index.tsx:262 +#: src/screens/Onboarding/StepProfile/index.tsx:259 msgid "Help people know you're not a bot by uploading a picture or creating an avatar." msgstr "" @@ -6745,7 +6743,7 @@ msgid "It's just you right now! Add more people to your starter pack by searchin msgstr "" #. placeholder {0}: videoState.jobId -#: src/view/com/composer/Composer.tsx:2612 +#: src/view/com/composer/Composer.tsx:2617 msgid "Job ID: {0}" msgstr "" @@ -6785,8 +6783,8 @@ msgstr "" msgid "Journalism" msgstr "" -#: src/view/com/composer/Composer.tsx:1540 -#: src/view/com/composer/Composer.tsx:1550 +#: src/view/com/composer/Composer.tsx:1545 +#: src/view/com/composer/Composer.tsx:1555 #: src/view/com/composer/drafts/DraftsButton.tsx:135 msgid "Keep editing" msgstr "" @@ -8015,7 +8013,7 @@ msgid "Newest replies first" msgstr "" #: src/lib/interests.ts:67 -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:200 +#: src/screens/Search/modules/ExploreTrendingTopics.tsx:204 msgid "News" msgstr "" @@ -8435,11 +8433,11 @@ msgstr "One of the selected recipients does not allow group chats." msgid "One of the selected recipients has blocked you and cannot be messaged." msgstr "One of the selected recipients has blocked you and cannot be messaged." -#: src/view/com/composer/Composer.tsx:934 +#: src/view/com/composer/Composer.tsx:939 msgid "One or more GIFs is missing alt text." msgstr "" -#: src/view/com/composer/Composer.tsx:931 +#: src/view/com/composer/Composer.tsx:936 msgid "One or more images is missing alt text." msgstr "" @@ -8451,11 +8449,11 @@ msgstr "" msgid "One or more of your selected files are too large. Maximum size is {VIDEO_MAX_SIZE_MB} MB." msgstr "One or more of your selected files are too large. Maximum size is {VIDEO_MAX_SIZE_MB} MB." -#: src/view/com/composer/Composer.tsx:737 +#: src/view/com/composer/Composer.tsx:742 msgid "One or more posts are too long to save as a draft. {MAX_DRAFT_GRAPHEME_LENGTH, plural, one {The maximum number of characters is # character.} other {The maximum number of characters is # characters.}}" msgstr "" -#: src/view/com/composer/Composer.tsx:941 +#: src/view/com/composer/Composer.tsx:946 msgid "One or more videos is missing alt text." msgstr "" @@ -8541,7 +8539,7 @@ msgstr "" msgid "Open advanced search options" msgstr "Open advanced search options" -#: src/screens/Onboarding/StepProfile/index.tsx:311 +#: src/screens/Onboarding/StepProfile/index.tsx:308 msgid "Open avatar creator" msgstr "" @@ -8572,7 +8570,7 @@ msgid "Open drawer menu" msgstr "" #: src/screens/Messages/components/MessageComposer.tsx:213 -#: src/view/com/composer/Composer.tsx:2245 +#: src/view/com/composer/Composer.tsx:2250 msgid "Open emoji picker" msgstr "" @@ -9259,7 +9257,7 @@ msgid "Please write your message below:" msgstr "" #: src/lib/interests.ts:70 -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:194 +#: src/screens/Search/modules/ExploreTrendingTopics.tsx:198 msgid "Politics" msgstr "" @@ -9267,7 +9265,7 @@ msgstr "" msgid "Porn" msgstr "" -#: src/view/com/composer/Composer.tsx:1890 +#: src/view/com/composer/Composer.tsx:1895 msgctxt "action" msgid "Post" msgstr "" @@ -9287,12 +9285,12 @@ msgstr "" msgid "Post a video" msgstr "" -#: src/view/com/composer/Composer.tsx:1888 +#: src/view/com/composer/Composer.tsx:1893 msgctxt "action" msgid "Post All" msgstr "" -#: src/view/com/composer/Composer.tsx:1549 +#: src/view/com/composer/Composer.tsx:1554 msgid "Post anyway" msgstr "Post anyway" @@ -9475,11 +9473,11 @@ msgstr "" msgid "Privacy violation of a minor" msgstr "" -#: src/view/com/composer/Composer.tsx:2686 +#: src/view/com/composer/Composer.tsx:2691 msgid "Processing GIF..." msgstr "" -#: src/view/com/composer/Composer.tsx:2688 +#: src/view/com/composer/Composer.tsx:2693 msgid "Processing video..." msgstr "" @@ -9526,22 +9524,22 @@ msgid "Public, sharable lists of users to mute or block in bulk." msgstr "" #. Accessibility label for button to publish a single post -#: src/view/com/composer/Composer.tsx:1874 +#: src/view/com/composer/Composer.tsx:1879 msgid "Publish post" msgstr "" #. Accessibility label for button to publish multiple posts in a thread -#: src/view/com/composer/Composer.tsx:1869 +#: src/view/com/composer/Composer.tsx:1874 msgid "Publish posts" msgstr "" #. Accessibility label for button to publish multiple replies in a thread -#: src/view/com/composer/Composer.tsx:1858 +#: src/view/com/composer/Composer.tsx:1863 msgid "Publish replies" msgstr "" #. Accessibility label for button to publish a single reply -#: src/view/com/composer/Composer.tsx:1863 +#: src/view/com/composer/Composer.tsx:1868 msgid "Publish reply" msgstr "" @@ -9762,7 +9760,7 @@ msgstr "" #: src/screens/Messages/ConversationSettings/Member.tsx:162 #: src/screens/Messages/ConversationSettings/prompts.tsx:178 #: src/screens/Moderation/index.tsx:477 -#: src/screens/Settings/Settings.tsx:682 +#: src/screens/Settings/Settings.tsx:683 #: src/view/com/posts/PostFeedErrorMessage.tsx:221 msgid "Remove" msgstr "" @@ -9788,8 +9786,8 @@ msgstr "Remove {displayName}?" msgid "Remove {q}" msgstr "Remove {q}" -#: src/screens/Settings/Settings.tsx:663 -#: src/screens/Settings/Settings.tsx:666 +#: src/screens/Settings/Settings.tsx:664 +#: src/screens/Settings/Settings.tsx:667 msgid "Remove account" msgstr "" @@ -9849,7 +9847,7 @@ msgstr "Remove from chat" msgid "Remove from my feeds" msgstr "" -#: src/screens/Settings/Settings.tsx:676 +#: src/screens/Settings/Settings.tsx:677 msgid "Remove from quick access?" msgstr "" @@ -10034,7 +10032,7 @@ msgstr "" msgid "Reply" msgstr "Reply" -#: src/view/com/composer/Composer.tsx:1886 +#: src/view/com/composer/Composer.tsx:1891 msgctxt "action" msgid "Reply" msgstr "" @@ -10443,22 +10441,22 @@ msgstr "" #: src/screens/SavedFeeds.tsx:124 #: src/screens/SavedFeeds.tsx:311 #: src/screens/SavedFeeds.tsx:315 -#: src/view/com/composer/Composer.tsx:1530 +#: src/view/com/composer/Composer.tsx:1535 #: src/view/com/composer/drafts/DraftsButton.tsx:125 msgid "Save changes" msgstr "" -#: src/view/com/composer/Composer.tsx:1502 +#: src/view/com/composer/Composer.tsx:1507 #: src/view/com/composer/drafts/DraftsButton.tsx:93 msgid "Save changes?" msgstr "" -#: src/view/com/composer/Composer.tsx:1530 +#: src/view/com/composer/Composer.tsx:1535 #: src/view/com/composer/drafts/DraftsButton.tsx:125 msgid "Save draft" msgstr "" -#: src/view/com/composer/Composer.tsx:1504 +#: src/view/com/composer/Composer.tsx:1509 #: src/view/com/composer/drafts/DraftsButton.tsx:95 msgid "Save draft?" msgstr "" @@ -10706,7 +10704,7 @@ msgstr "" #: src/components/FeedInterstitials.tsx:491 #: src/components/FeedInterstitials.tsx:549 -#: src/components/interstitials/FeedTrendingTopics.tsx:112 +#: src/components/interstitials/FeedTrendingTopics.tsx:96 msgid "See more" msgstr "" @@ -10714,7 +10712,7 @@ msgstr "" msgid "See more suggested profiles" msgstr "" -#: src/components/interstitials/FeedTrendingTopics.tsx:103 +#: src/components/interstitials/FeedTrendingTopics.tsx:82 msgid "See more trending topics" msgstr "See more trending topics" @@ -10750,7 +10748,7 @@ msgstr "" msgid "Select {langName}" msgstr "" -#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:68 +#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:67 msgid "Select a color" msgstr "" @@ -10766,11 +10764,11 @@ msgstr "" msgid "Select an app language" msgstr "" -#: src/screens/Onboarding/StepProfile/AvatarCircle.tsx:66 +#: src/screens/Onboarding/StepProfile/AvatarCircle.tsx:65 msgid "Select an avatar" msgstr "" -#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:66 +#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:65 msgid "Select an emoji" msgstr "" @@ -10867,7 +10865,7 @@ msgstr "" msgid "Select telephone code" msgstr "" -#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:84 +#: src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx:82 msgid "Select the {emojiName} emoji as your avatar" msgstr "" @@ -11473,7 +11471,7 @@ msgstr "" msgid "Skip contact sharing and continue to the app" msgstr "" -#: src/view/com/composer/Composer.tsx:1547 +#: src/view/com/composer/Composer.tsx:1552 msgid "Skip empty posts?" msgstr "Skip empty posts?" @@ -11654,7 +11652,7 @@ msgid "Spam or other inauthentic behavior or deception" msgstr "" #: src/lib/interests.ts:72 -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:192 +#: src/screens/Search/modules/ExploreTrendingTopics.tsx:196 msgid "Sports" msgstr "" @@ -11750,7 +11748,7 @@ msgstr "" #. placeholder {1}: state.serviceDescription && !state.serviceDescription.phoneVerificationRequired ? '2' : '3' #. placeholder {1}: state.totalSteps #: src/screens/Onboarding/Layout.tsx:226 -#: src/screens/Signup/index.tsx:191 +#: src/screens/Signup/index.tsx:189 msgid "Step {0} of {1}" msgstr "" @@ -12564,7 +12562,7 @@ msgstr "This group is locked by a moderation action on the owner" msgid "This handle is reserved. Please try a different one." msgstr "" -#: src/screens/Onboarding/StepProfile/index.tsx:142 +#: src/screens/Onboarding/StepProfile/index.tsx:140 msgid "This image could not be used. Try a different format like .jpg or .png." msgstr "This image could not be used. Try a different format like .jpg or .png." @@ -12671,7 +12669,7 @@ msgstr "" msgid "This post will be hidden from feeds and threads. This cannot be undone." msgstr "" -#: src/view/com/composer/Composer.tsx:1122 +#: src/view/com/composer/Composer.tsx:1127 msgid "This post's author has disabled quote posts." msgstr "" @@ -12771,7 +12769,7 @@ msgid "This will irreversibly delete your Bluesky account <0>{currentHandle} msgstr "" #. placeholder {0}: account.handle -#: src/screens/Settings/Settings.tsx:677 +#: src/screens/Settings/Settings.tsx:678 msgid "This will remove @{0} from the quick access list." msgstr "" @@ -12905,8 +12903,8 @@ msgstr "Translation to the same language is unavailable on your device." msgid "Tree view" msgstr "" -#: src/components/interstitials/FeedTrendingTopics.tsx:100 -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:51 +#: src/components/interstitials/FeedTrendingTopics.tsx:79 +#: src/screens/Search/modules/ExploreTrendingTopics.tsx:50 #: src/view/shell/desktop/SidebarTrendingTopics.tsx:54 msgid "Trending" msgstr "" @@ -13278,7 +13276,7 @@ msgstr "" msgid "Unsupported clipboard content" msgstr "Unsupported clipboard content" -#: src/view/com/composer/Composer.tsx:1639 +#: src/view/com/composer/Composer.tsx:1644 msgid "Unsupported video type: {mimeType}" msgstr "" @@ -13344,7 +13342,7 @@ msgctxt "toast" msgid "Updating reply visibility failed" msgstr "" -#: src/screens/Onboarding/StepProfile/index.tsx:315 +#: src/screens/Onboarding/StepProfile/index.tsx:312 msgid "Upload a photo instead" msgstr "" @@ -13371,7 +13369,7 @@ msgstr "" msgid "Upload from Library" msgstr "" -#: src/view/com/composer/Composer.tsx:2679 +#: src/view/com/composer/Composer.tsx:2684 msgid "Uploading GIF..." msgstr "" @@ -13385,7 +13383,7 @@ msgstr "" msgid "Uploading link thumbnail..." msgstr "" -#: src/view/com/composer/Composer.tsx:2681 +#: src/view/com/composer/Composer.tsx:2686 msgid "Uploading video..." msgstr "" @@ -13649,7 +13647,7 @@ msgid "Video from {0}. Tap to play or pause the video" msgstr "" #: src/lib/interests.ts:62 -#: src/screens/Search/modules/ExploreTrendingTopics.tsx:196 +#: src/screens/Search/modules/ExploreTrendingTopics.tsx:200 msgid "Video Games" msgstr "" @@ -13669,7 +13667,7 @@ msgstr "" msgid "Video settings" msgstr "" -#: src/view/com/composer/Composer.tsx:2699 +#: src/view/com/composer/Composer.tsx:2704 msgid "Video uploaded" msgstr "" @@ -13688,7 +13686,7 @@ msgstr "" msgid "Videos must be less than 3 minutes long." msgstr "" -#: src/view/com/composer/Composer.tsx:1229 +#: src/view/com/composer/Composer.tsx:1234 msgctxt "Action to view the post the user just created" msgid "View" msgstr "" @@ -13777,7 +13775,7 @@ msgstr "" msgid "View more trending videos" msgstr "" -#: src/view/com/composer/Composer.tsx:1224 +#: src/view/com/composer/Composer.tsx:1229 msgid "View post" msgstr "" @@ -14059,7 +14057,7 @@ msgstr "We’re having network issues, try again" msgid "We’re introducing a new layer of verification on Bluesky — an easy-to-see checkmark." msgstr "" -#: src/screens/Signup/index.tsx:142 +#: src/screens/Signup/index.tsx:140 msgid "We’re so excited to have you join us!" msgstr "We’re so excited to have you join us!" @@ -14096,7 +14094,7 @@ msgstr "We’re sorry, but your search could not be completed. Please try again msgid "We're sorry, you cannot access this screen at this time." msgstr "" -#: src/view/com/composer/Composer.tsx:1120 +#: src/view/com/composer/Composer.tsx:1125 msgid "We're sorry! The post you are replying to has been deleted." msgstr "" @@ -14152,7 +14150,7 @@ msgid "what’s up" msgstr "what’s up" #: src/view/com/auth/SplashScreen.web.tsx:100 -#: src/view/com/composer/Composer.tsx:1603 +#: src/view/com/composer/Composer.tsx:1608 #: src/view/com/feeds/ComposerPrompt.tsx:192 msgid "What's up?" msgstr "" @@ -14238,7 +14236,7 @@ msgstr "Would you like to block this user and/or leave this conversation?" msgid "Would you like to save this as a draft before viewing your drafts?" msgstr "" -#: src/view/com/composer/Composer.tsx:1518 +#: src/view/com/composer/Composer.tsx:1523 msgid "Would you like to save this as a draft to edit later?" msgstr "" @@ -14247,12 +14245,12 @@ msgstr "" msgid "Write a post" msgstr "" -#: src/view/com/composer/Composer.tsx:1699 +#: src/view/com/composer/Composer.tsx:1704 msgid "Write post" msgstr "" #: src/screens/PostThread/components/ThreadComposePrompt.tsx:91 -#: src/view/com/composer/Composer.tsx:1601 +#: src/view/com/composer/Composer.tsx:1606 msgid "Write your reply" msgstr "" @@ -14428,7 +14426,7 @@ msgstr "" msgid "You can only add up to {MAX_GALLERY_IMAGES, plural, other {# images}} per post" msgstr "You can only add up to {MAX_GALLERY_IMAGES, plural, other {# images}} per post" -#: src/view/com/composer/Composer.tsx:1523 +#: src/view/com/composer/Composer.tsx:1528 msgid "You can only save drafts up to 1000 characters." msgstr "" @@ -14574,7 +14572,7 @@ msgstr "" msgid "You have temporarily reached the limit for video uploads. Please try again later." msgstr "" -#: src/view/com/composer/Composer.tsx:1513 +#: src/view/com/composer/Composer.tsx:1518 msgid "You have unsaved changes to this draft, would you like to save them?" msgstr "" @@ -14734,11 +14732,11 @@ msgstr "You won’t be able to rejoin unless you’re invited." msgid "You: {message}" msgstr "You: {message}" -#: src/screens/Signup/index.tsx:160 +#: src/screens/Signup/index.tsx:158 msgid "You'll follow the suggested users and feeds once you finish creating your account!" msgstr "" -#: src/screens/Signup/index.tsx:165 +#: src/screens/Signup/index.tsx:163 msgid "You'll follow the suggested users once you finish creating your account!" msgstr "" @@ -14810,7 +14808,7 @@ msgstr "" msgid "You've reached the end of your feed! Find some more accounts to follow." msgstr "" -#: src/view/com/composer/Composer.tsx:724 +#: src/view/com/composer/Composer.tsx:729 msgid "You've reached the maximum number of drafts" msgstr "" @@ -14838,7 +14836,7 @@ msgstr "" msgid "You've run out of videos to watch. Maybe it's a good time to take a break?" msgstr "" -#: src/screens/Signup/index.tsx:201 +#: src/screens/Signup/index.tsx:199 msgid "Your account" msgstr "" @@ -14986,11 +14984,11 @@ msgstr "" msgid "Your password must be at least 8 characters long." msgstr "" -#: src/view/com/composer/Composer.tsx:1220 +#: src/view/com/composer/Composer.tsx:1225 msgid "Your post was sent" msgstr "" -#: src/view/com/composer/Composer.tsx:1217 +#: src/view/com/composer/Composer.tsx:1222 msgid "Your posts were sent" msgstr "" @@ -15011,7 +15009,7 @@ msgstr "" msgid "Your profile, posts, feeds, and lists will no longer be visible to other Bluesky users. You can reactivate your account at any time by logging in." msgstr "" -#: src/view/com/composer/Composer.tsx:1219 +#: src/view/com/composer/Composer.tsx:1224 msgid "Your reply was sent" msgstr "" @@ -15024,7 +15022,7 @@ msgstr "" msgid "Your selected interests help us serve you content you care about." msgstr "" -#: src/view/com/composer/Composer.tsx:1548 +#: src/view/com/composer/Composer.tsx:1553 msgid "Your thread has empty posts that will be skipped. The remaining posts will be published as a thread." msgstr "Your thread has empty posts that will be skipped. The remaining posts will be published as a thread." diff --git a/src/screens/Search/modules/ExploreTrendingTopics.tsx b/src/screens/Search/modules/ExploreTrendingTopics.tsx index 0b422d162b..3f17d01e04 100644 --- a/src/screens/Search/modules/ExploreTrendingTopics.tsx +++ b/src/screens/Search/modules/ExploreTrendingTopics.tsx @@ -6,8 +6,7 @@ import { moderateProfile, RichText as RichTextApi, } from '@atproto/api' -import {plural} from '@lingui/core/macro' -import {Trans, useLingui} from '@lingui/react/macro' +import {Plural, Trans, useLingui} from '@lingui/react/macro' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useTrendingSettings} from '#/state/preferences/trending' @@ -88,6 +87,7 @@ export function TrendRow({ const gutters = useGutters([0, 'base']) const actors = useModerateTrendingActors(trend.actors) + const formattedPostCount = formatCount(i18n, trend.postCount) const description = useMemo(() => { if (!trend.description) return @@ -146,8 +146,12 @@ export function TrendRow({ style={[a.text_sm, t.atoms.text_contrast_medium]} numberOfLines={1}> - {formatCount(i18n, trend.postCount)}{' '} - {plural(trend.postCount, {one: 'post', other: 'posts'})} + {formattedPostCount}{' '} +