Mark more texts for localization

zio/stable
Minseo Lee 2024-02-14 11:06:37 +09:00
parent 836cff306e
commit 3f5bdd8be3
27 changed files with 127 additions and 93 deletions

View File

@ -85,7 +85,9 @@ export function AdultContentEnabledPref({
a.align_center,
a.py_md,
]}>
<Text style={[a.font_bold]}>Enable Adult Content</Text>
<Text style={[a.font_bold]}>
<Trans>Enable Adult Content</Trans>
</Text>
<Toggle.Switch />
</View>
</Toggle.Item>
@ -106,7 +108,9 @@ export function AdultContentEnabledPref({
)}
<Prompt.Outer control={prompt}>
<Prompt.Title>Adult Content</Prompt.Title>
<Prompt.Title>
<Trans>Adult Content</Trans>
</Prompt.Title>
<Prompt.Description>
<Trans>
Due to Apple policies, adult content can only be enabled on the web
@ -114,7 +118,9 @@ export function AdultContentEnabledPref({
</Trans>
</Prompt.Description>
<Prompt.Actions>
<Prompt.Action onPress={prompt.close}>OK</Prompt.Action>
<Prompt.Action onPress={prompt.close}>
<Trans>OK</Trans>
</Prompt.Action>
</Prompt.Actions>
</Prompt.Outer>
</>

View File

@ -52,7 +52,9 @@ export function HomeLoggedOutCTA() {
onPress={showCreateAccount}
accessibilityRole="button"
accessibilityLabel={_(msg`Create new account`)}
accessibilityHint="Opens flow to create a new Bluesky account">
accessibilityHint={_(
msg`Opens flow to create a new Bluesky account`,
)}>
<Text
style={[
s.white,
@ -68,7 +70,9 @@ export function HomeLoggedOutCTA() {
onPress={showSignIn}
accessibilityRole="button"
accessibilityLabel={_(msg`Sign in`)}
accessibilityHint="Opens flow to sign into your existing Bluesky account">
accessibilityHint={_(
msg`Opens flow to sign into your existing Bluesky account`,
)}>
<Text
style={[
pal.text,

View File

@ -66,7 +66,9 @@ export const SplashScreen = ({
onPress={onPressCreateAccount}
accessibilityRole="button"
accessibilityLabel={_(msg`Create new account`)}
accessibilityHint="Opens flow to create a new Bluesky account">
accessibilityHint={_(
msg`Opens flow to create a new Bluesky account`,
)}>
<Text style={[s.white, styles.btnLabel]}>
<Trans>Create a new account</Trans>
</Text>
@ -77,7 +79,9 @@ export const SplashScreen = ({
onPress={onPressSignin}
accessibilityRole="button"
accessibilityLabel={_(msg`Sign in`)}
accessibilityHint="Opens flow to sign into your existing Bluesky account">
accessibilityHint={_(
msg`Opens flow to sign into your existing Bluesky account`,
)}>
<Text style={[pal.text, styles.btnLabel]}>
<Trans>Sign In</Trans>
</Text>

View File

@ -9,6 +9,8 @@ import {TextLink} from '../../util/Link'
import {Text} from '../../util/text/Text'
import {s, colors} from 'lib/styles'
import {usePalette} from 'lib/hooks/usePalette'
import {Trans, msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
@ -20,6 +22,7 @@ export const Policies = ({
needsGuardian: boolean
}) => {
const pal = usePalette('default')
const {_} = useLingui()
if (!serviceDescription) {
return <View />
}
@ -40,7 +43,9 @@ export const Policies = ({
/>
</View>
<Text style={[pal.textLight, s.pl5, s.flex1]}>
This service has not provided terms of service or a privacy policy.
<Trans>
This service has not provided terms of service or a privacy policy.
</Trans>
</Text>
</View>
)
@ -51,7 +56,7 @@ export const Policies = ({
<TextLink
key="tos"
href={tos}
text="Terms of Service"
text={_(msg`Terms of Service`)}
style={[pal.link, s.underline]}
/>,
)
@ -61,7 +66,7 @@ export const Policies = ({
<TextLink
key="pp"
href={pp}
text="Privacy Policy"
text={_(msg`Privacy Policy`)}
style={[pal.link, s.underline]}
/>,
)
@ -79,12 +84,14 @@ export const Policies = ({
return (
<View style={styles.policies}>
<Text style={pal.textLight}>
By creating an account you agree to the {els}.
<Trans>By creating an account you agree to the {els}.</Trans>
</Text>
{needsGuardian && (
<Text style={[pal.textLight, s.bold]}>
If you are not yet an adult according to the laws of your country,
your parent or legal guardian must read these Terms on your behalf.
<Trans>
If you are not yet an adult according to the laws of your country,
your parent or legal guardian must read these Terms on your behalf.
</Trans>
</Text>
)}
</View>

View File

@ -30,7 +30,7 @@ export function Step3({
<TextInput
testID="handleInput"
icon="at"
placeholder="e.g. alice"
placeholder={_(msg`e.g. alice`)}
value={uiState.handle}
editable
autoFocus

View File

@ -207,7 +207,7 @@ export const LoginForm = ({
testID="loginPasswordInput"
ref={passwordInputRef}
style={[pal.text, styles.textInput]}
placeholder="Password"
placeholder={_(msg`Password`)}
placeholderTextColor={pal.colors.textLight}
autoCapitalize="none"
autoCorrect={false}

View File

@ -11,7 +11,8 @@ import {Text} from 'view/com/util/text/Text'
import Animated, {FadeInRight} from 'react-native-reanimated'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {useAnalytics} from 'lib/analytics/analytics'
import {Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {Trans, msg} from '@lingui/macro'
import {Shadow, useProfileShadow} from '#/state/cache/profile-shadow'
import {useProfileFollowMutationQueue} from '#/state/queries/profile'
import {logger} from '#/logger'
@ -70,6 +71,7 @@ export function ProfileCard({
}) {
const {track} = useAnalytics()
const pal = usePalette('default')
const {_} = useLingui()
const [addingMoreSuggestions, setAddingMoreSuggestions] =
React.useState(false)
const [queueFollow, queueUnfollow] = useProfileFollowMutationQueue(profile)
@ -133,7 +135,7 @@ export function ProfileCard({
type={profile.viewer?.following ? 'default' : 'inverted'}
labelStyle={styles.followButton}
onPress={onToggleFollow}
label={profile.viewer?.following ? 'Unfollow' : 'Follow'}
label={profile.viewer?.following ? _(msg`Unfollow`) : _(msg`Follow`)}
/>
</View>
{profile.description ? (

View File

@ -6,7 +6,8 @@ import {usePalette} from 'lib/hooks/usePalette'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {Button} from 'view/com/util/forms/Button'
import {ViewHeader} from 'view/com/util/ViewHeader'
import {Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {Trans, msg} from '@lingui/macro'
type Props = {
next: () => void
@ -15,6 +16,7 @@ type Props = {
export function WelcomeMobile({next, skip}: Props) {
const pal = usePalette('default')
const {_} = useLingui()
return (
<View style={[styles.container]} testID="welcomeOnboarding">
@ -91,7 +93,7 @@ export function WelcomeMobile({next, skip}: Props) {
<Button
onPress={next}
label="Continue"
label={_(msg`Continue`)}
testID="continueBtn"
style={[styles.buttonContainer]}
labelStyle={styles.buttonText}

View File

@ -115,7 +115,7 @@ export function ServerInputDialog({
testID="customServerTextInput"
value={customAddress}
onChangeText={setCustomAddress}
label={_(msg`my-server.com`)}
label="my-server.com"
accessibilityLabelledBy="address-input-label"
autoCapitalize="none"
keyboardType="url"

View File

@ -78,9 +78,9 @@ function LightboxFooter({imageIndex}: {imageIndex: number}) {
try {
await saveImageToMediaLibrary({uri})
Toast.show('Saved to your camera roll.')
Toast.show(_(msg`Saved to your camera roll.`))
} catch (e: any) {
Toast.show(`Failed to save image: ${String(e)}`)
Toast.show(_(msg`Failed to save image: ${String(e)}`))
}
},
[permissionResponse, requestPermission, _],

View File

@ -150,7 +150,7 @@ export function Inner({
accessibilityHint={_(msg`Exits handle change process`)}
onAccessibilityEscape={onPressCancel}>
<Text type="lg" style={pal.textLight}>
Cancel
<Trans>Cancel</Trans>
</Text>
</TouchableOpacity>
</View>
@ -254,7 +254,7 @@ function ProvidedHandleForm({
<TextInput
testID="setHandleInput"
style={[pal.text, styles.textInput]}
placeholder="e.g. alice"
placeholder={_(msg`e.g. alice`)}
placeholderTextColor={pal.colors.textLight}
autoCapitalize="none"
keyboardAppearance={theme.colorScheme}
@ -277,8 +277,8 @@ function ProvidedHandleForm({
<TouchableOpacity
onPress={onToggleCustom}
accessibilityRole="button"
accessibilityHint="Hosting provider"
accessibilityLabel={_(msg`Opens modal for using custom domain`)}>
accessibilityLabel={_(msg`Hosting provider`)}
accessibilityHint={_(msg`Opens modal for using custom domain`)}>
<Text type="md-medium" style={[pal.link, s.pl10, s.pt5]}>
<Trans>I have my own domain</Trans>
</Text>
@ -324,8 +324,8 @@ function CustomHandleForm({
Clipboard.setString(
isDNSForm ? `did=${currentAccount.did}` : currentAccount.did,
)
Toast.show('Copied to clipboard')
}, [currentAccount, isDNSForm])
Toast.show(_(msg`Copied to clipboard`))
}, [currentAccount, isDNSForm, _])
const onChangeHandle = React.useCallback(
(v: string) => {
setHandle(v)
@ -378,7 +378,7 @@ function CustomHandleForm({
<TextInput
testID="setHandleInput"
style={[pal.text, styles.textInput]}
placeholder="e.g. alice.com"
placeholder={_(msg`e.g. alice.com`)}
placeholderTextColor={pal.colors.textLight}
autoCapitalize="none"
keyboardAppearance={theme.colorScheme}
@ -387,7 +387,7 @@ function CustomHandleForm({
editable={!isProcessing}
accessibilityLabelledBy="customDomain"
accessibilityLabel={_(msg`Custom domain`)}
accessibilityHint="Input your preferred hosting provider"
accessibilityHint={_(msg`Input your preferred hosting provider`)}
/>
</View>
<View style={styles.spacer} />
@ -395,18 +395,18 @@ function CustomHandleForm({
<View style={[styles.selectableBtns]}>
<SelectableBtn
selected={isDNSForm}
label="DNS Panel"
label={_(msg`DNS Panel`)}
left
onSelect={() => setDNSForm(true)}
accessibilityHint="Use the DNS panel"
accessibilityHint={_(msg`Use the DNS panel`)}
style={s.flex1}
/>
<SelectableBtn
selected={!isDNSForm}
label="No DNS Panel"
label={_(msg`No DNS Panel`)}
right
onSelect={() => setDNSForm(false)}
accessibilityHint="Use a file on your server"
accessibilityHint={_(msg`Use a file on your server`)}
style={s.flex1}
/>
</View>
@ -418,7 +418,7 @@ function CustomHandleForm({
</Text>
<View style={[styles.dnsTable, pal.btn]}>
<Text type="md-medium" style={[styles.dnsLabel, pal.text]}>
Host:
<Trans>Host:</Trans>
</Text>
<View style={[styles.dnsValue]}>
<Text type="mono" style={[styles.monoText, pal.text]}>
@ -426,7 +426,7 @@ function CustomHandleForm({
</Text>
</View>
<Text type="md-medium" style={[styles.dnsLabel, pal.text]}>
Type:
<Trans>Type:</Trans>
</Text>
<View style={[styles.dnsValue]}>
<Text type="mono" style={[styles.monoText, pal.text]}>
@ -434,7 +434,7 @@ function CustomHandleForm({
</Text>
</View>
<Text type="md-medium" style={[styles.dnsLabel, pal.text]}>
Value:
<Trans>Value:</Trans>
</Text>
<View style={[styles.dnsValue]}>
<Text type="mono" style={[styles.monoText, pal.text]}>
@ -443,7 +443,7 @@ function CustomHandleForm({
</View>
</View>
<Text type="md" style={[pal.text, s.pt20, s.pl5]}>
This should create a domain record at:{' '}
<Trans>This should create a domain record at:</Trans>
</Text>
<Text type="mono" style={[styles.monoText, pal.text, s.pt5, s.pl5]}>
_atproto.{handle}
@ -463,7 +463,7 @@ function CustomHandleForm({
</View>
<View style={styles.spacer} />
<Text type="md" style={[pal.text, s.pb5, s.pl5]}>
That contains the following:
<Trans>That contains the following:</Trans>
</Text>
<View style={[styles.valueContainer, pal.btn]}>
<View style={[styles.dnsValue]}>
@ -478,7 +478,9 @@ function CustomHandleForm({
<View style={styles.spacer} />
<Button type="default" style={[s.p20, s.mb10]} onPress={onPressCopy}>
<Text type="xl" style={[pal.link, s.textCenter]}>
Copy {isDNSForm ? 'Domain Value' : 'File Contents'}
<Trans>
Copy {isDNSForm ? _(msg`Domain Value`) : _(msg`File Contents`)}
</Trans>
</Text>
</Button>
{canSave === true && (
@ -504,8 +506,8 @@ function CustomHandleForm({
) : (
<Text type="xl-medium" style={[s.white, s.textCenter]}>
{canSave
? `Update to ${handle}`
: `Verify ${isDNSForm ? 'DNS Record' : 'Text File'}`}
? _(msg`Update to ${handle}`)
: _(msg`Verify ${isDNSForm ? 'DNS Record' : 'Text File'}`)}
</Text>
)}
</Button>
@ -513,9 +515,9 @@ function CustomHandleForm({
<TouchableOpacity
onPress={onToggleCustom}
accessibilityLabel={_(msg`Use default provider`)}
accessibilityHint="Use bsky.social as hosting provider">
accessibilityHint={_(msg`Use bsky.social as hosting provider`)}>
<Text type="md-medium" style={[pal.link, s.pl10, s.pt5]}>
Nevermind, create a handle for me
<Trans>Nevermind, create a handle for me</Trans>
</Text>
</TouchableOpacity>
</>

View File

@ -180,7 +180,7 @@ export function Component() {
<TextInput
testID="codeInput"
style={[pal.text, styles.textInput]}
placeholder="Reset code"
placeholder={_(msg`Reset code`)}
placeholderTextColor={pal.colors.textLight}
value={resetCode}
onChangeText={setResetCode}
@ -207,7 +207,7 @@ export function Component() {
<TextInput
testID="codeInput"
style={[pal.text, styles.textInput]}
placeholder="New password"
placeholder={_(msg`New password`)}
placeholderTextColor={pal.colors.textLight}
onChangeText={setNewPassword}
secureTextEntry

View File

@ -173,7 +173,7 @@ export function Component({}: {}) {
</Text>
<TextInput
style={[styles.textInput, pal.borderDark, pal.text, styles.mb20]}
placeholder="Confirmation code"
placeholder={_(msg`Confirmation code`)}
placeholderTextColor={pal.textLight.color}
keyboardAppearance={theme.colorScheme}
value={confirmCode}
@ -192,7 +192,7 @@ export function Component({}: {}) {
</Text>
<TextInput
style={[styles.textInput, pal.borderDark, pal.text]}
placeholder="Password"
placeholder={_(msg`Password`)}
placeholderTextColor={pal.textLight.color}
keyboardAppearance={theme.colorScheme}
secureTextEntry
@ -228,7 +228,7 @@ export function Component({}: {}) {
onPress={onCancel}
accessibilityRole="button"
accessibilityLabel={_(msg`Cancel account deletion`)}
accessibilityHint="Exits account deletion process"
accessibilityHint={_(msg`Exits account deletion process`)}
onAccessibilityEscape={onCancel}>
<Text type="button-lg" style={pal.textLight}>
<Trans context="action">Cancel</Trans>

View File

@ -77,7 +77,7 @@ export function Component({href}: {href: string}) {
}}
accessibilityLabel={_(msg`Cancel`)}
accessibilityHint=""
label="Cancel"
label={_(msg`Cancel`)}
labelContainerStyle={{justifyContent: 'center', padding: 8}}
labelStyle={[s.f18]}
/>

View File

@ -74,7 +74,7 @@ export function Component({text, href}: {text: string; href: string}) {
onPress={onPressVisit}
accessibilityLabel={_(msg`Visit Site`)}
accessibilityHint=""
label="Visit Site"
label={_(msg`Visit Site`)}
labelContainerStyle={{justifyContent: 'center', padding: 4}}
labelStyle={[s.f18]}
/>
@ -86,7 +86,7 @@ export function Component({text, href}: {text: string; href: string}) {
}}
accessibilityLabel={_(msg`Cancel`)}
accessibilityHint=""
label="Cancel"
label={_(msg`Cancel`)}
labelContainerStyle={{justifyContent: 'center', padding: 4}}
labelStyle={[s.f18]}
/>

View File

@ -115,7 +115,7 @@ export function Component({
closeModal()
}}>
<Text type="button-lg" style={[pal.textLight, s.textCenter, s.white]}>
Okay
<Trans>Okay</Trans>
</Text>
</Button>
</View>

View File

@ -149,7 +149,7 @@ export function Component({showReminder}: {showReminder?: boolean}) {
onPress={onEmailIncorrect}
style={styles.changeEmailLink}>
<Text type="lg" style={pal.link}>
Change
<Trans>Change</Trans>
</Text>
</Pressable>
</>

View File

@ -100,7 +100,7 @@ export function Component({
onPress={doSetAs(AspectRatio.Wide)}
accessibilityRole="button"
accessibilityLabel={_(msg`Wide`)}
accessibilityHint="Sets image aspect ratio to wide">
accessibilityHint={_(msg`Sets image aspect ratio to wide`)}>
<RectWideIcon
size={24}
style={as === AspectRatio.Wide ? s.blue3 : pal.text}
@ -110,7 +110,7 @@ export function Component({
onPress={doSetAs(AspectRatio.Tall)}
accessibilityRole="button"
accessibilityLabel={_(msg`Tall`)}
accessibilityHint="Sets image aspect ratio to tall">
accessibilityHint={_(msg`Sets image aspect ratio to tall`)}>
<RectTallIcon
size={24}
style={as === AspectRatio.Tall ? s.blue3 : pal.text}
@ -120,7 +120,7 @@ export function Component({
onPress={doSetAs(AspectRatio.Square)}
accessibilityRole="button"
accessibilityLabel={_(msg`Square`)}
accessibilityHint="Sets image aspect ratio to square">
accessibilityHint={_(msg`Sets image aspect ratio to square`)}>
<SquareIcon
size={24}
style={as === AspectRatio.Square ? s.blue3 : pal.text}
@ -132,9 +132,9 @@ export function Component({
onPress={onPressCancel}
accessibilityRole="button"
accessibilityLabel={_(msg`Cancel image crop`)}
accessibilityHint="Exits image cropping process">
accessibilityHint={_(msg`Exits image cropping process`)}>
<Text type="xl" style={pal.link}>
Cancel
<Trans>Cancel</Trans>
</Text>
</TouchableOpacity>
<View style={s.flex1} />
@ -142,7 +142,7 @@ export function Component({
onPress={onPressDone}
accessibilityRole="button"
accessibilityLabel={_(msg`Save image crop`)}
accessibilityHint="Saves image crop settings">
accessibilityHint={_(msg`Saves image crop settings`)}>
<LinearGradient
colors={[gradients.blueLight.start, gradients.blueLight.end]}
start={{x: 0, y: 0}}

View File

@ -39,7 +39,7 @@ export function InputIssueDetails({
onPress={goBack}
accessibilityRole="button"
accessibilityLabel={_(msg`Add details`)}
accessibilityHint="Add more details to your report">
accessibilityHint={_(msg`Add more details to your report`)}>
<FontAwesomeIcon size={18} icon="angle-left" style={[pal.link]} />
<Text style={[pal.text, s.f18, pal.link]}>
{' '}
@ -49,8 +49,8 @@ export function InputIssueDetails({
<View style={[pal.btn, styles.detailsInputContainer]}>
<TextInput
accessibilityLabel={_(msg`Text input field`)}
accessibilityHint="Enter a reason for reporting this post."
placeholder="Enter a reason or any other details here."
accessibilityHint={_(msg`Enter a reason for reporting this post.`)}
placeholder={_(msg`Enter a reason or any other details here.`)}
placeholderTextColor={pal.textLight.color}
value={details}
onChangeText={setDetails}

View File

@ -41,6 +41,7 @@ type ReportComponentProps =
export function Component(content: ReportComponentProps) {
const {closeModal} = useModalControls()
const pal = usePalette('default')
const {_} = useLingui()
const {isMobile} = useWebMediaQueries()
const [isProcessing, setIsProcessing] = useState(false)
const [showDetailsInput, setShowDetailsInput] = useState(false)
@ -77,7 +78,9 @@ export function Component(content: ReportComponentProps) {
},
reason: details,
})
Toast.show("Thank you for your report! We'll look into it promptly.")
Toast.show(
_(msg`Thank you for your report! We'll look into it promptly.`),
)
closeModal()
return
@ -189,7 +192,7 @@ const SelectIssue = ({
onPress={goToDetails}
accessibilityRole="button"
accessibilityLabel={_(msg`Add details`)}
accessibilityHint="Add more details to your report">
accessibilityHint={_(msg`Add more details to your report`)}>
<Text style={[s.f18, pal.link]}>
<Trans>Add details to report</Trans>
</Text>

View File

@ -296,7 +296,7 @@ let PostThreadItemLoaded = ({
color={pal.colors.textLight}
/>
<Text type="sm-medium" style={pal.textLight}>
Muted
<Trans>Muted</Trans>
</Text>
</View>
)}
@ -578,7 +578,7 @@ let PostThreadItemLoaded = ({
title={itemTitle}
noFeedback>
<Text type="sm-medium" style={pal.textLight}>
More
<Trans>More</Trans>
</Text>
<FontAwesomeIcon
icon="angle-right"

View File

@ -21,7 +21,8 @@ import {useModerationOpts} from '#/state/queries/preferences'
import {useSuggestedFollowsByActorQuery} from '#/state/queries/suggested-follows'
import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useProfileFollowMutationQueue} from '#/state/queries/profile'
import {Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {Trans, msg} from '@lingui/macro'
const OUTER_PADDING = 10
const INNER_PADDING = 14
@ -168,6 +169,7 @@ function SuggestedFollow({
}) {
const {track} = useAnalytics()
const pal = usePalette('default')
const {_} = useLingui()
const moderationOpts = useModerationOpts()
const profile = useProfileShadow(profileUnshadowed)
const [queueFollow, queueUnfollow] = useProfileFollowMutationQueue(profile)
@ -178,20 +180,20 @@ function SuggestedFollow({
await queueFollow()
} catch (e: any) {
if (e?.name !== 'AbortError') {
Toast.show('An issue occurred, please try again.')
Toast.show(_(msg`An issue occurred, please try again.`))
}
}
}, [queueFollow, track])
}, [queueFollow, track, _])
const onPressUnfollow = React.useCallback(async () => {
try {
await queueUnfollow()
} catch (e: any) {
if (e?.name !== 'AbortError') {
Toast.show('An issue occurred, please try again.')
Toast.show(_(msg`An issue occurred, please try again.`))
}
}
}, [queueUnfollow])
}, [queueUnfollow, _])
if (!moderationOpts) {
return null
@ -236,7 +238,7 @@ function SuggestedFollow({
</View>
<Button
label={following ? 'Unfollow' : 'Follow'}
label={following ? _(msg`Unfollow`) : _(msg`Follow`)}
type="inverted"
labelStyle={{textAlign: 'center'}}
onPress={following ? onPressUnfollow : onPressFollow}

View File

@ -97,7 +97,7 @@ export function LanguageSettingsScreen(_props: Props) {
<Text style={[pal.text, s.pb10]}>
<Trans>
Select your app language for the default text to display in the
app
app.
</Trans>
</Text>

View File

@ -69,8 +69,8 @@ export function ModerationScreen({}: Props) {
style={[styles.linkCard, pal.view]}
onPress={onPressContentFiltering}
accessibilityRole="tab"
accessibilityHint="Content filtering"
accessibilityLabel="">
accessibilityLabel={_(msg`Content filtering`)}
accessibilityHint="">
<View style={[styles.iconContainer, pal.btn]}>
<FontAwesomeIcon
icon="eye"

View File

@ -103,7 +103,7 @@ export function ProfileFeedScreen(props: Props) {
<Button
type="default"
accessibilityLabel={_(msg`Go Back`)}
accessibilityHint="Return to previous page"
accessibilityHint={_(msg`Return to previous page`)}
onPress={onPressBack}
style={{flexShrink: 1}}>
<Text type="button" style={pal.text}>

View File

@ -531,8 +531,8 @@ export function SettingsScreen({}: Props) {
]}
onPress={openHomeFeedPreferences}
accessibilityRole="button"
accessibilityHint=""
accessibilityLabel={_(msg`Opens the home feed preferences`)}>
accessibilityLabel={_(msg`Home feed preferences`)}
accessibilityHint={_(msg`Opens the home feed preferences`)}>
<View style={[styles.iconContainer, pal.btn]}>
<FontAwesomeIcon
icon="sliders"
@ -552,8 +552,8 @@ export function SettingsScreen({}: Props) {
]}
onPress={openThreadsPreferences}
accessibilityRole="button"
accessibilityHint=""
accessibilityLabel={_(msg`Opens the threads preferences`)}>
accessibilityLabel={_(msg`Thread preferences`)}
accessibilityHint={_(msg`Opens the threads preferences`)}>
<View style={[styles.iconContainer, pal.btn]}>
<FontAwesomeIcon
icon={['far', 'comments']}
@ -572,8 +572,8 @@ export function SettingsScreen({}: Props) {
pal.view,
isSwitchingAccounts && styles.dimmed,
]}
accessibilityHint="My Saved Feeds"
accessibilityLabel={_(msg`Opens screen with all saved feeds`)}
accessibilityLabel={_(msg`My saved feeds`)}
accessibilityHint={_(msg`Opens screen with all saved feeds`)}
onPress={onPressSavedFeeds}>
<View style={[styles.iconContainer, pal.btn]}>
<HashtagIcon style={pal.text} size={18} strokeWidth={3} />
@ -730,7 +730,9 @@ export function SettingsScreen({}: Props) {
onPress={() => openModal({name: 'change-password'})}
accessibilityRole="button"
accessibilityLabel={_(msg`Change password`)}
accessibilityHint={_(msg`Change your Bluesky password`)}>
accessibilityHint={_(
msg`Opens modal for change your Bluesky password`,
)}>
<View style={[styles.iconContainer, pal.btn]}>
<FontAwesomeIcon
icon="lock"
@ -752,7 +754,7 @@ export function SettingsScreen({}: Props) {
accessibilityRole="button"
accessibilityLabel={_(msg`Export my data`)}
accessibilityHint={_(
msg`Download Bluesky account data (repository)`,
msg`Opens modal for download Bluesky account data (repository)`,
)}>
<View style={[styles.iconContainer, pal.btn]}>
<FontAwesomeIcon
@ -789,8 +791,8 @@ export function SettingsScreen({}: Props) {
style={[pal.view, styles.linkCardNoIcon]}
onPress={onPressSystemLog}
accessibilityRole="button"
accessibilityHint="Open system log"
accessibilityLabel={_(msg`Opens the system log page`)}>
accessibilityLabel={_(msg`Open system log`)}
accessibilityHint={_(msg`Opens the system log page`)}>
<Text type="lg" style={pal.text}>
<Trans>System log</Trans>
</Text>
@ -811,7 +813,7 @@ export function SettingsScreen({}: Props) {
style={[pal.view, styles.linkCardNoIcon]}
onPress={onPressResetPreferences}
accessibilityRole="button"
accessibilityLabel={_(msg`Reset preferences`)}
accessibilityLabel={_(msg`Reset preferences state`)}
accessibilityHint={_(msg`Resets the preferences state`)}>
<Text type="lg" style={pal.text}>
<Trans>Reset preferences state</Trans>
@ -821,7 +823,7 @@ export function SettingsScreen({}: Props) {
style={[pal.view, styles.linkCardNoIcon]}
onPress={onPressResetOnboarding}
accessibilityRole="button"
accessibilityLabel={_(msg`Reset onboarding`)}
accessibilityLabel={_(msg`Reset onboarding state`)}
accessibilityHint={_(msg`Resets the onboarding state`)}>
<Text type="lg" style={pal.text}>
<Trans>Reset onboarding state</Trans>
@ -832,7 +834,7 @@ export function SettingsScreen({}: Props) {
onPress={clearAllLegacyStorage}
accessibilityRole="button"
accessibilityLabel={_(msg`Clear all legacy storage data`)}
accessibilityHint={_(msg`Clear all legacy storage data`)}>
accessibilityHint={_(msg`Clears all legacy storage data`)}>
<Text type="lg" style={pal.text}>
<Trans>
Clear all legacy storage data (restart after this)
@ -844,7 +846,7 @@ export function SettingsScreen({}: Props) {
onPress={clearAllStorage}
accessibilityRole="button"
accessibilityLabel={_(msg`Clear all storage data`)}
accessibilityHint={_(msg`Clear all storage data`)}>
accessibilityHint={_(msg`Clears all storage data`)}>
<Text type="lg" style={pal.text}>
<Trans>Clear all storage data (restart after this)</Trans>
</Text>
@ -933,7 +935,7 @@ function EmailConfirmationNotice() {
]}
accessibilityRole="button"
accessibilityLabel={_(msg`Verify my email`)}
accessibilityHint=""
accessibilityHint={_(msg`Opens modal for email verification`)}
onPress={() => openModal({name: 'verify-email'})}>
<FontAwesomeIcon
icon="envelope"

View File

@ -58,7 +58,7 @@ let NavSignupCard = ({}: {}): React.ReactNode => {
accessibilityHint={_(msg`Sign in`)}
accessibilityLabel={_(msg`Sign in`)}>
<Text type="md" style={[pal.text, s.bold]}>
Sign in
<Trans>Sign in</Trans>
</Text>
</Button>
</View>