From 4d8f55e9e0c32876ab5ba7ff0b6ab5b0b7c9d10a Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 25 May 2026 19:57:34 -0700 Subject: [PATCH 01/11] Remove 2fa screenshot tip --- .../TwoFactorAuth/DynamicTwoFactorAuthPage.tsx | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx index 491b39288204..ecbdffeb80f8 100644 --- a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx +++ b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx @@ -35,9 +35,8 @@ import TwoFactorAuthWrapper from './TwoFactorAuthWrapper'; const TWO_FACTOR_AUTH_RECOVERY_CODES_FILENAME = 'DO-NOT-DELETE_Expensify-2FA-RecoveryCodes.txt'; function DynamicTwoFactorAuthPage() { - const icons = useMemoizedLazyExpensifyIcons(['Copy', 'Lightbulb']); + const icons = useMemoizedLazyExpensifyIcons(['Copy']); const styles = useThemeStyles(); - const theme = useTheme(); const {translate} = useLocalize(); // We need to use isSmallScreenWidth instead of shouldUseNarrowLayout to use correct style // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth @@ -159,17 +158,6 @@ function DynamicTwoFactorAuthPage() { )} - {!!isUserValidated && ( - - - {translate('twoFactorAuth.screenshotTip')} - - )} {!!statusAnnouncement.text && ( Date: Mon, 25 May 2026 19:59:44 -0700 Subject: [PATCH 02/11] Remove twoFactorAuth.screenshotTip translation --- src/languages/en.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 2c964abfbbee..0a483db4de2a 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2318,7 +2318,6 @@ const translations = { Note: Setting up two-factor authentication will log you out of all other active sessions. `), - screenshotTip: 'Tip: Screenshot this to save it to your photo library', errorStepCodes: 'Please copy or download codes before continuing', stepVerify: 'Verify', scanCode: 'Scan the QR code using your', From 1f14a96d5bca0152a4bb73525569813cf01f3354 Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 25 May 2026 20:04:41 -0700 Subject: [PATCH 03/11] polyglot parrot --- src/languages/de.ts | 1 - src/languages/es.ts | 1 - src/languages/fr.ts | 1 - src/languages/it.ts | 1 - src/languages/ja.ts | 1 - src/languages/nl.ts | 1 - src/languages/pl.ts | 1 - src/languages/pt-BR.ts | 1 - src/languages/zh-hans.ts | 1 - 9 files changed, 9 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 669d0c2fccec..ec041c0defc1 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -2273,7 +2273,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: 'Neues Gerät einrichten', verifyNewDeviceDescription: 'Scannen Sie den QR-Code mit Ihrem neuen Gerät und geben Sie dann den Code ein, um die Einrichtung abzuschließen.', downloadCodes: 'Codes herunterladen', - screenshotTip: 'Tipp: Machen Sie einen Screenshot, um ihn in Ihrer Fotomediathek zu speichern', copyCodes: 'Codes kopieren', }, recoveryCodeForm: { diff --git a/src/languages/es.ts b/src/languages/es.ts index dcb9acaca326..b5637a01b325 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2160,7 +2160,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: 'Configurar nuevo dispositivo', verifyNewDeviceDescription: 'Escanea el código QR con tu nuevo dispositivo y luego introduce el código para completar la configuración.', downloadCodes: 'Descargar códigos', - screenshotTip: 'Consejo: haz una captura de pantalla para guardarla en tu galería de fotos', copyCodes: 'Copiar códigos', }, recoveryCodeForm: { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index e149ae58a55e..8b44351cd5e5 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -2280,7 +2280,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: 'Configurer un nouvel appareil', verifyNewDeviceDescription: 'Scannez le code QR avec votre nouvel appareil, puis saisissez le code pour terminer la configuration.', downloadCodes: 'Télécharger les codes', - screenshotTip: 'Astuce : faites une capture d’écran pour l’enregistrer dans votre photothèque', copyCodes: 'Copier les codes', }, recoveryCodeForm: { diff --git a/src/languages/it.ts b/src/languages/it.ts index e059a3b4e032..43cda310dc0a 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -2272,7 +2272,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: 'Configura nuovo dispositivo', verifyNewDeviceDescription: 'Scansiona il codice QR con il tuo nuovo dispositivo, poi inserisci il codice per completare la configurazione.', downloadCodes: 'Scarica codici', - screenshotTip: 'Suggerimento: fai uno screenshot per salvarlo nel rullino fotografico', copyCodes: 'Copia codici', }, recoveryCodeForm: { diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 0baff8dc8486..f81af10715c6 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -2250,7 +2250,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: '新しいデバイスを設定', verifyNewDeviceDescription: '新しいデバイスでQRコードをスキャンし、表示されたコードを入力して設定を完了してください。', downloadCodes: 'コードをダウンロード', - screenshotTip: 'ヒント:スクリーンショットを撮ってフォトライブラリに保存しましょう', copyCodes: 'コードをコピー', }, recoveryCodeForm: { diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 8196a472d4bd..a13ed86f07da 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -2267,7 +2267,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: 'Nieuw apparaat instellen', verifyNewDeviceDescription: 'Scan de QR-code met je nieuwe apparaat en voer daarna de code in om de installatie te voltooien.', downloadCodes: 'Codes downloaden', - screenshotTip: 'Tip: maak een screenshot om dit op te slaan in je fotobibliotheek', copyCodes: 'Codes kopiëren', }, recoveryCodeForm: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index cc826b8cf381..e110c504acb2 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -2267,7 +2267,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: 'Skonfiguruj nowe urządzenie', verifyNewDeviceDescription: 'Zeskanuj kod QR nowym urządzeniem, a następnie wpisz ten kod, aby zakończyć konfigurację.', downloadCodes: 'Pobierz kody', - screenshotTip: 'Wskazówka: Zrób zrzut ekranu, żeby zapisać to w swojej galerii zdjęć', copyCodes: 'Skopiuj kody', }, recoveryCodeForm: { diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 3d0f44a7b626..7575bf8a7235 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -2264,7 +2264,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: 'Configurar novo dispositivo', verifyNewDeviceDescription: 'Escaneie o código QR com seu novo dispositivo e depois insira o código para concluir a configuração.', downloadCodes: 'Baixar códigos', - screenshotTip: 'Dica: faça uma captura de tela para salvar na sua galeria de fotos', copyCodes: 'Copiar códigos', }, recoveryCodeForm: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 7c698d84584f..a9aed83b05c7 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -2207,7 +2207,6 @@ const translations: TranslationDeepObject = { verifyNewDeviceTitle: '设置新设备', verifyNewDeviceDescription: '使用新设备扫描二维码,然后输入代码完成设置。', downloadCodes: '下载代码', - screenshotTip: '提示:截屏此页面以将其保存到你的相册', copyCodes: '复制代码', }, recoveryCodeForm: { From 46336f17fe6005d8315602a604e9432bfdaa4511 Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 25 May 2026 20:23:31 -0700 Subject: [PATCH 04/11] fix lint --- .../Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx index ecbdffeb80f8..da63f90ec06f 100644 --- a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx +++ b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx @@ -5,7 +5,6 @@ import ActivityIndicator from '@components/ActivityIndicator'; import Button from '@components/Button'; import FixedFooter from '@components/FixedFooter'; import FormHelpMessage from '@components/FormHelpMessage'; -import Icon from '@components/Icon'; import PressableWithDelayToggle from '@components/Pressable/PressableWithDelayToggle'; import RenderHTML from '@components/RenderHTML'; import ScrollView from '@components/ScrollView'; @@ -16,7 +15,6 @@ import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; -import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Clipboard from '@libs/Clipboard'; import getPlatform from '@libs/getPlatform'; From e7218b2ceda5af48c6fdd81c2081e7da71b56297 Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Fri, 29 May 2026 17:38:24 -0700 Subject: [PATCH 05/11] address PR copy feedback --- src/languages/en.ts | 3 +-- .../Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 0a483db4de2a..4c230a692313 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2314,8 +2314,7 @@ const translations = { stepCodes: 'Recovery codes', keepCodesSafe: 'Keep these codes safe!', codesLoseAccess: dedent(` - If you lose access to your authenticator app and don't have these codes, you'll lose access to your account. - + They're your only way back in if you lose your authenticator app.
Note: Setting up two-factor authentication will log you out of all other active sessions. `), errorStepCodes: 'Please copy or download codes before continuing', diff --git a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx index da63f90ec06f..b99dc700d4b4 100644 --- a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx +++ b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx @@ -95,7 +95,7 @@ function DynamicTwoFactorAuthPage() { stepCounter={{ step: 1, text: translate('twoFactorAuth.stepCodes'), - total: 3, + total: 2, }} shouldEnableKeyboardAvoidingView={false} stepName={CONST.TWO_FACTOR_AUTH_STEPS.COPY_CODES} From 6a4f312ea90300421c1fb537e899d2eef47e316a Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 1 Jun 2026 08:54:38 -0700 Subject: [PATCH 06/11] polyglot parrot --- src/languages/de.ts | 5 ++--- src/languages/es.ts | 3 +-- src/languages/fr.ts | 5 ++--- src/languages/it.ts | 5 ++--- src/languages/ja.ts | 3 +-- src/languages/nl.ts | 5 ++--- src/languages/pl.ts | 3 +-- src/languages/pt-BR.ts | 5 ++--- src/languages/zh-hans.ts | 5 ++--- .../Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx | 2 +- 10 files changed, 16 insertions(+), 25 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index ec041c0defc1..23e1ed691b87 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -2241,9 +2241,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Wiederherstellungscodes', keepCodesSafe: 'Bewahren Sie diese Codes sicher auf!', codesLoseAccess: dedent(` - Wenn Sie den Zugriff auf Ihre Authentifizierungs-App verlieren und diese Codes nicht haben, verlieren Sie den Zugriff auf Ihr Konto. - - Hinweis: Das Einrichten der Zwei-Faktor-Authentifizierung meldet Sie von allen anderen aktiven Sitzungen ab. + Sie sind Ihre einzige Möglichkeit, wieder Zugriff zu erhalten, falls Sie Ihre Authentifizierungs-App verlieren.
+ Hinweis: Wenn Sie die Zwei-Faktor-Authentifizierung einrichten, werden Sie von allen anderen aktiven Sitzungen abgemeldet. `), errorStepCodes: 'Bitte kopiere oder lade die Codes herunter, bevor du fortfährst', stepVerify: 'Bestätigen', diff --git a/src/languages/es.ts b/src/languages/es.ts index b5637a01b325..c109ec74be8b 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2128,8 +2128,7 @@ const translations: TranslationDeepObject = { stepCodes: 'Códigos de recuperación', keepCodesSafe: '¡Guarda estos códigos en un lugar seguro!', codesLoseAccess: dedent(` - Si pierdes el acceso a tu aplicación de autenticación y no tienes estos códigos, perderás el acceso a tu cuenta. - + Son tu única forma de volver a entrar si pierdes tu aplicación de autenticación.
Nota: Configurar la autenticación de dos factores cerrará la sesión en todas las demás sesiones activas. `), errorStepCodes: 'Copia o descarga los códigos antes de continuar', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 8b44351cd5e5..643d2272fa66 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -2248,9 +2248,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Codes de récupération', keepCodesSafe: 'Conservez ces codes en lieu sûr !', codesLoseAccess: dedent(` - Si vous perdez l’accès à votre application d’authentification et que vous n’avez pas ces codes, vous perdrez l’accès à votre compte. - - Remarque : La configuration de l’authentification à deux facteurs vous déconnectera de toutes les autres sessions actives. + Elles sont votre seul moyen de vous reconnecter si vous perdez votre application d’authentification.
+ Remarque : La configuration de l’authentification à deux facteurs vous déconnectera de toutes les autres sessions actives. `), errorStepCodes: 'Veuillez copier ou télécharger les codes avant de continuer', stepVerify: 'Vérifier', diff --git a/src/languages/it.ts b/src/languages/it.ts index 43cda310dc0a..823cde5cfcbc 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -2240,9 +2240,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Codici di recupero', keepCodesSafe: 'Conserva questi codici al sicuro!', codesLoseAccess: dedent(` - Se perdi l'accesso alla tua app di autenticazione e non hai questi codici, perderai l'accesso al tuo account. - - Nota: configurare l'autenticazione a due fattori ti disconnetterà da tutte le altre sessioni attive. + Sono l’unico modo per rientrare nel conto se perdi l’app di autenticazione.
+ Nota: configurare l’autenticazione a due fattori ti disconnetterà da tutte le altre sessioni attive. `), errorStepCodes: 'Copia o scarica i codici prima di continuare', stepVerify: 'Verifica', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index f81af10715c6..c1e58e8ff5f5 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -2218,8 +2218,7 @@ const translations: TranslationDeepObject = { stepCodes: 'リカバリーコード', keepCodesSafe: 'これらのコードを安全に保管してください。', codesLoseAccess: dedent(` - 認証アプリへのアクセスを失い、これらのコードも持っていない場合は、お客さまのアカウントへのアクセスもできなくなります。 - + 認証アプリを失った場合、再度ログインするための唯一の手段になります。
注意:二要素認証を設定すると、他のすべてのアクティブなセッションからログアウトされます。 `), errorStepCodes: '続行する前にコードをコピーまたはダウンロードしてください', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index a13ed86f07da..5528c638bfe0 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -2235,9 +2235,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Herstelcodes', keepCodesSafe: 'Bewaar deze codes goed!', codesLoseAccess: dedent(` - Als je de toegang tot je authenticator-app verliest en deze codes niet hebt, verlies je de toegang tot je account. - - Let op: Het instellen van twee-factor-authenticatie zal je bij alle andere actieve sessies afmelden. + Ze zijn je enige manier om weer in te loggen als je je authenticator-app kwijtraakt.
+ Let op: Het instellen van tweestapsverificatie logt je uit op alle andere actieve sessies. `), errorStepCodes: 'Kopieer of download de codes voordat je verdergaat', stepVerify: 'Verifiëren', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index e110c504acb2..67578edc41fa 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -2235,8 +2235,7 @@ const translations: TranslationDeepObject = { stepCodes: 'Kody odzyskiwania', keepCodesSafe: 'Zachowaj te kody w bezpiecznym miejscu!', codesLoseAccess: dedent(` - Jeśli stracisz dostęp do swojej aplikacji uwierzytelniającej i nie masz tych kodów, stracisz dostęp do swojego konta. - + To jedyny sposób, żeby odzyskać dostęp, jeśli utracisz swoją aplikację uwierzytelniającą.
Uwaga: Włączenie uwierzytelniania dwuskładnikowego wyloguje cię ze wszystkich innych aktywnych sesji. `), errorStepCodes: 'Skopiuj lub pobierz kody przed kontynuowaniem', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 7575bf8a7235..ce9c5bbad983 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -2232,9 +2232,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Códigos de recuperação', keepCodesSafe: 'Mantenha estes códigos em segurança!', codesLoseAccess: dedent(` - Se você perder o acesso ao seu app autenticador e não tiver esses códigos, perderá o acesso à sua conta. - - Observação: Configurar a autenticação em duas etapas vai desconectar você de todas as outras sessões ativas. + Eles são sua única forma de voltar a entrar se você perder seu app autenticador.
+ Observação: Configurar a autenticação em duas etapas vai desconectá-lo de todas as outras sessões ativas. `), errorStepCodes: 'Copie ou faça o download dos códigos antes de continuar', stepVerify: 'Verificar', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index a9aed83b05c7..64926f977ad0 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -2175,9 +2175,8 @@ const translations: TranslationDeepObject = { stepCodes: '恢复代码', keepCodesSafe: '妥善保管这些验证码!', codesLoseAccess: dedent(` - 如果你无法使用身份验证应用且没有这些代码,你将无法访问你的账户。 - - 注意:设置双重身份验证后,你将在所有其他活跃会话中退出登录。 + 如果你丢失了身份验证器应用,这是你重新登录账户的唯一方式。
+ 注意:启用双重身份验证后,你将在所有其他活跃会话中被注销。 `), errorStepCodes: '请在继续之前复制或下载这些代码', stepVerify: '验证', diff --git a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx index b99dc700d4b4..da63f90ec06f 100644 --- a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx +++ b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx @@ -95,7 +95,7 @@ function DynamicTwoFactorAuthPage() { stepCounter={{ step: 1, text: translate('twoFactorAuth.stepCodes'), - total: 2, + total: 3, }} shouldEnableKeyboardAvoidingView={false} stepName={CONST.TWO_FACTOR_AUTH_STEPS.COPY_CODES} From 48a9cc129faa3d7a717258d775a7cef4dab56c1d Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 1 Jun 2026 09:00:13 -0700 Subject: [PATCH 07/11] Remove 2fa success screen as "step", only two steps now --- .../Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx | 2 +- .../settings/Security/TwoFactorAuth/DynamicVerifyPage.tsx | 2 +- src/pages/settings/Security/TwoFactorAuth/SuccessPageBase.tsx | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx index da63f90ec06f..b99dc700d4b4 100644 --- a/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx +++ b/src/pages/settings/Security/TwoFactorAuth/DynamicTwoFactorAuthPage.tsx @@ -95,7 +95,7 @@ function DynamicTwoFactorAuthPage() { stepCounter={{ step: 1, text: translate('twoFactorAuth.stepCodes'), - total: 3, + total: 2, }} shouldEnableKeyboardAvoidingView={false} stepName={CONST.TWO_FACTOR_AUTH_STEPS.COPY_CODES} diff --git a/src/pages/settings/Security/TwoFactorAuth/DynamicVerifyPage.tsx b/src/pages/settings/Security/TwoFactorAuth/DynamicVerifyPage.tsx index 10908943ab75..1bc437bb121e 100644 --- a/src/pages/settings/Security/TwoFactorAuth/DynamicVerifyPage.tsx +++ b/src/pages/settings/Security/TwoFactorAuth/DynamicVerifyPage.tsx @@ -89,7 +89,7 @@ function DynamicVerifyPage() { stepCounter={{ step: 2, text: translate('twoFactorAuth.stepVerify'), - total: 3, + total: 2, }} onBackButtonPress={() => Navigation.goBack(createDynamicRoute(DYNAMIC_ROUTES.TWO_FACTOR_AUTH_ROOT.path, backPath))} shouldEnableMaxHeight={false} diff --git a/src/pages/settings/Security/TwoFactorAuth/SuccessPageBase.tsx b/src/pages/settings/Security/TwoFactorAuth/SuccessPageBase.tsx index d57534fbc9f1..21b08e9eef1b 100644 --- a/src/pages/settings/Security/TwoFactorAuth/SuccessPageBase.tsx +++ b/src/pages/settings/Security/TwoFactorAuth/SuccessPageBase.tsx @@ -19,10 +19,6 @@ function SuccessPageBase({onButtonPress, onBackButtonPress}: SuccessPageBaseProp Date: Mon, 1 Jun 2026 16:19:54 -0700 Subject: [PATCH 08/11] Apply copy update --- src/languages/en.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index fc0099d80252..252d244be753 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2325,8 +2325,8 @@ const translations = { stepCodes: 'Recovery codes', keepCodesSafe: 'Keep these codes safe!', codesLoseAccess: dedent(` - They're your only way back in if you lose your authenticator app.
- Note: Setting up two-factor authentication will log you out of all other active sessions. + They're your backup if you lose access to your authenticator app. Lose both, and you're locked out of your account.

+ Note: Enabling 2FA logs you out of all other sessions. `), errorStepCodes: 'Please copy or download codes before continuing', stepVerify: 'Verify', From e057d3cbc29f994633527208dab0597444bdf9be Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 1 Jun 2026 16:32:07 -0700 Subject: [PATCH 09/11] polyglot parrot --- src/languages/de.ts | 4 ++-- src/languages/es.ts | 4 ++-- src/languages/fr.ts | 4 ++-- src/languages/it.ts | 4 ++-- src/languages/ja.ts | 4 ++-- src/languages/nl.ts | 4 ++-- src/languages/pl.ts | 4 ++-- src/languages/pt-BR.ts | 4 ++-- src/languages/zh-hans.ts | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index fa835be7e428..35613de8f054 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -2252,8 +2252,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Wiederherstellungscodes', keepCodesSafe: 'Bewahren Sie diese Codes sicher auf!', codesLoseAccess: dedent(` - Sie sind Ihre einzige Möglichkeit, wieder Zugriff zu erhalten, falls Sie Ihre Authentifizierungs-App verlieren.
- Hinweis: Wenn Sie die Zwei-Faktor-Authentifizierung einrichten, werden Sie von allen anderen aktiven Sitzungen abgemeldet. + Sie sind Ihre Sicherung, falls Sie den Zugriff auf Ihre Authentifizierungs-App verlieren. Verlieren Sie beides, werden Sie aus Ihrem Konto ausgesperrt.

+ Hinweis: Wenn Sie 2FA aktivieren, werden Sie von allen anderen Sitzungen abgemeldet. `), errorStepCodes: 'Bitte kopiere oder lade die Codes herunter, bevor du fortfährst', stepVerify: 'Bestätigen', diff --git a/src/languages/es.ts b/src/languages/es.ts index bdb59259110b..adac59ec3a66 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2139,8 +2139,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Códigos de recuperación', keepCodesSafe: '¡Guarda estos códigos en un lugar seguro!', codesLoseAccess: dedent(` - Son tu única forma de volver a entrar si pierdes tu aplicación de autenticación.
- Nota: Configurar la autenticación de dos factores cerrará la sesión en todas las demás sesiones activas. + Son tu copia de seguridad si pierdes el acceso a tu aplicación de autenticación. Si pierdes ambas, quedarás bloqueado de tu cuenta.

+ Nota: Al habilitar la autenticación en dos pasos se cerrará tu sesión en todos los demás dispositivos. `), errorStepCodes: 'Copia o descarga los códigos antes de continuar', stepVerify: 'Verificar', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index cda0383f67b2..a7bcba390789 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -2259,8 +2259,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Codes de récupération', keepCodesSafe: 'Conservez ces codes en lieu sûr !', codesLoseAccess: dedent(` - Elles sont votre seul moyen de vous reconnecter si vous perdez votre application d’authentification.
- Remarque : La configuration de l’authentification à deux facteurs vous déconnectera de toutes les autres sessions actives. + Ils servent de secours si vous perdez l'accès à votre application d'authentification. Perdez les deux et vous serez bloqué hors de votre compte.

+ Remarque : Activer l'A2F vous déconnecte de toutes les autres sessions. `), errorStepCodes: 'Veuillez copier ou télécharger les codes avant de continuer', stepVerify: 'Vérifier', diff --git a/src/languages/it.ts b/src/languages/it.ts index ff8df8f55fc4..65cfcf68f1dc 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -2251,8 +2251,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Codici di recupero', keepCodesSafe: 'Conserva questi codici al sicuro!', codesLoseAccess: dedent(` - Sono l’unico modo per rientrare nel conto se perdi l’app di autenticazione.
- Nota: configurare l’autenticazione a due fattori ti disconnetterà da tutte le altre sessioni attive. + Sono il tuo metodo di riserva se perdi l’accesso all’app di autenticazione. Se perdi entrambi, resterai bloccato fuori dal tuo account.

+ Nota: abilitare l’autenticazione a due fattori ti disconnette da tutte le altre sessioni. `), errorStepCodes: 'Copia o scarica i codici prima di continuare', stepVerify: 'Verifica', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 31da75deaba0..f2cfebf5e5d8 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -2229,8 +2229,8 @@ const translations: TranslationDeepObject = { stepCodes: 'リカバリーコード', keepCodesSafe: 'これらのコードを安全に保管してください。', codesLoseAccess: dedent(` - 認証アプリを失った場合、再度ログインするための唯一の手段になります。
- 注意:二要素認証を設定すると、他のすべてのアクティブなセッションからログアウトされます。 + 認証アプリへのアクセスを失ったときのバックアップとして使えます。両方を失うと、アカウントにサインインできなくなります。

+ 注意:2 要素認証を有効にすると、他のすべてのセッションからログアウトされます。 `), errorStepCodes: '続行する前にコードをコピーまたはダウンロードしてください', stepVerify: '確認', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index e1b0e4158183..b1686ce45f50 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -2246,8 +2246,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Herstelcodes', keepCodesSafe: 'Bewaar deze codes goed!', codesLoseAccess: dedent(` - Ze zijn je enige manier om weer in te loggen als je je authenticator-app kwijtraakt.
- Let op: Het instellen van tweestapsverificatie logt je uit op alle andere actieve sessies. + Ze zijn je back-up als je de toegang tot je authenticator-app kwijtraakt. Ben je ze allebei kwijt, dan word je buitengesloten van je account.

+ Let op: 2FA inschakelen logt je uit op alle andere sessies. `), errorStepCodes: 'Kopieer of download de codes voordat je verdergaat', stepVerify: 'Verifiëren', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 60988ddcf1ab..2cc88e61595a 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -2246,8 +2246,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Kody odzyskiwania', keepCodesSafe: 'Zachowaj te kody w bezpiecznym miejscu!', codesLoseAccess: dedent(` - To jedyny sposób, żeby odzyskać dostęp, jeśli utracisz swoją aplikację uwierzytelniającą.
- Uwaga: Włączenie uwierzytelniania dwuskładnikowego wyloguje cię ze wszystkich innych aktywnych sesji. + Są twoim zabezpieczeniem na wypadek utraty dostępu do aplikacji uwierzytelniającej. Jeśli stracisz oba, zostaniesz zablokowany(-a) w swoim koncie.

+ Uwaga: Włączenie 2FA wyloguje cię ze wszystkich innych sesji. `), errorStepCodes: 'Skopiuj lub pobierz kody przed kontynuowaniem', stepVerify: 'Zweryfikuj', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 9b6c390545d5..db182a1c4cb0 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -2243,8 +2243,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Códigos de recuperação', keepCodesSafe: 'Mantenha estes códigos em segurança!', codesLoseAccess: dedent(` - Eles são sua única forma de voltar a entrar se você perder seu app autenticador.
- Observação: Configurar a autenticação em duas etapas vai desconectá-lo de todas as outras sessões ativas. + Eles são sua garantia caso você perca o acesso ao seu app autenticador. Se perder ambos, você ficará bloqueado fora da sua conta.

+ Observação: Ativar a 2FA desconecta você de todas as outras sessões. `), errorStepCodes: 'Copie ou faça o download dos códigos antes de continuar', stepVerify: 'Verificar', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index b95373305ca0..0f5d66322c41 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -2186,8 +2186,8 @@ const translations: TranslationDeepObject = { stepCodes: '恢复代码', keepCodesSafe: '妥善保管这些验证码!', codesLoseAccess: dedent(` - 如果你丢失了身份验证器应用,这是你重新登录账户的唯一方式。
- 注意:启用双重身份验证后,你将在所有其他活跃会话中被注销。 + 如果你无法使用验证器应用,它们就是你的备用方式。如果两者都丢失,你将无法再登录你的账户。

+ 注意:启用双重验证后,你将在所有其他会话中被登出。 `), errorStepCodes: '请在继续之前复制或下载这些代码', stepVerify: '验证', From 84d8b8d7699351e326fc3772338eeeac1210f757 Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 1 Jun 2026 18:23:33 -0700 Subject: [PATCH 10/11] Update lose access copy again --- src/languages/en.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 252d244be753..73b5207899d3 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2325,7 +2325,7 @@ const translations = { stepCodes: 'Recovery codes', keepCodesSafe: 'Keep these codes safe!', codesLoseAccess: dedent(` - They're your backup if you lose access to your authenticator app. Lose both, and you're locked out of your account.

+ If you lose access to your authenticator app and don't have these codes, you'll be locked out of your account.

Note: Enabling 2FA logs you out of all other sessions. `), errorStepCodes: 'Please copy or download codes before continuing', From 8b05d2791194545df5594e3b3c9ded9341fdf0c6 Mon Sep 17 00:00:00 2001 From: Chuck Dries Date: Mon, 1 Jun 2026 18:25:53 -0700 Subject: [PATCH 11/11] polyglot parrot --- src/languages/de.ts | 4 ++-- src/languages/es.ts | 4 ++-- src/languages/fr.ts | 4 ++-- src/languages/it.ts | 4 ++-- src/languages/ja.ts | 4 ++-- src/languages/nl.ts | 4 ++-- src/languages/pl.ts | 2 +- src/languages/pt-BR.ts | 2 +- src/languages/zh-hans.ts | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 35613de8f054..0e9a5c777abd 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -2252,8 +2252,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Wiederherstellungscodes', keepCodesSafe: 'Bewahren Sie diese Codes sicher auf!', codesLoseAccess: dedent(` - Sie sind Ihre Sicherung, falls Sie den Zugriff auf Ihre Authentifizierungs-App verlieren. Verlieren Sie beides, werden Sie aus Ihrem Konto ausgesperrt.

- Hinweis: Wenn Sie 2FA aktivieren, werden Sie von allen anderen Sitzungen abgemeldet. + Wenn Sie den Zugriff auf Ihre Authentifizierungs-App verlieren und diese Codes nicht haben, wird Ihr Konto gesperrt.

+ Hinweis: Durch das Aktivieren der 2FA werden Sie aus allen anderen Sitzungen abgemeldet. `), errorStepCodes: 'Bitte kopiere oder lade die Codes herunter, bevor du fortfährst', stepVerify: 'Bestätigen', diff --git a/src/languages/es.ts b/src/languages/es.ts index adac59ec3a66..33675e9a5440 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2139,8 +2139,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Códigos de recuperación', keepCodesSafe: '¡Guarda estos códigos en un lugar seguro!', codesLoseAccess: dedent(` - Son tu copia de seguridad si pierdes el acceso a tu aplicación de autenticación. Si pierdes ambas, quedarás bloqueado de tu cuenta.

- Nota: Al habilitar la autenticación en dos pasos se cerrará tu sesión en todos los demás dispositivos. + Si pierdes el acceso a tu aplicación de autenticación y no tienes estos códigos, quedarás bloqueado fuera de tu cuenta.

+ Nota: Al habilitar la autenticación de dos factores, se cerrará tu sesión en todas las demás sesiones. `), errorStepCodes: 'Copia o descarga los códigos antes de continuar', stepVerify: 'Verificar', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index a7bcba390789..7c0ca12da956 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -2259,8 +2259,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Codes de récupération', keepCodesSafe: 'Conservez ces codes en lieu sûr !', codesLoseAccess: dedent(` - Ils servent de secours si vous perdez l'accès à votre application d'authentification. Perdez les deux et vous serez bloqué hors de votre compte.

- Remarque : Activer l'A2F vous déconnecte de toutes les autres sessions. + Si vous perdez l’accès à votre application d’authentification et que vous n’avez pas ces codes, vous serez bloqué hors de votre compte.

+ Remarque : L’activation de la 2FA vous déconnecte de toutes les autres sessions. `), errorStepCodes: 'Veuillez copier ou télécharger les codes avant de continuer', stepVerify: 'Vérifier', diff --git a/src/languages/it.ts b/src/languages/it.ts index 65cfcf68f1dc..02232477e962 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -2251,8 +2251,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Codici di recupero', keepCodesSafe: 'Conserva questi codici al sicuro!', codesLoseAccess: dedent(` - Sono il tuo metodo di riserva se perdi l’accesso all’app di autenticazione. Se perdi entrambi, resterai bloccato fuori dal tuo account.

- Nota: abilitare l’autenticazione a due fattori ti disconnette da tutte le altre sessioni. + Se perdi l’accesso alla tua app di autenticazione e non hai questi codici, verrà bloccato l’accesso al tuo account.

+ Nota: l’abilitazione della 2FA ti disconnette da tutte le altre sessioni. `), errorStepCodes: 'Copia o scarica i codici prima di continuare', stepVerify: 'Verifica', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index f2cfebf5e5d8..030c50a8a565 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -2229,8 +2229,8 @@ const translations: TranslationDeepObject = { stepCodes: 'リカバリーコード', keepCodesSafe: 'これらのコードを安全に保管してください。', codesLoseAccess: dedent(` - 認証アプリへのアクセスを失ったときのバックアップとして使えます。両方を失うと、アカウントにサインインできなくなります。

- 注意:2 要素認証を有効にすると、他のすべてのセッションからログアウトされます。 + 認証アプリへのアクセスを失い、これらのコードもお持ちでない場合は、アカウントにログインできなくなります。

+ 注意:2FA を有効にすると、他のすべてのセッションからログアウトされます。 `), errorStepCodes: '続行する前にコードをコピーまたはダウンロードしてください', stepVerify: '確認', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index b1686ce45f50..f2360c9fc641 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -2246,8 +2246,8 @@ const translations: TranslationDeepObject = { stepCodes: 'Herstelcodes', keepCodesSafe: 'Bewaar deze codes goed!', codesLoseAccess: dedent(` - Ze zijn je back-up als je de toegang tot je authenticator-app kwijtraakt. Ben je ze allebei kwijt, dan word je buitengesloten van je account.

- Let op: 2FA inschakelen logt je uit op alle andere sessies. + Als je de toegang tot je authenticator-app kwijtraakt en deze codes niet hebt, word je uit je account afgesloten.

+ Let op: Het inschakelen van 2FA logt je uit in alle andere sessies. `), errorStepCodes: 'Kopieer of download de codes voordat je verdergaat', stepVerify: 'Verifiëren', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 2cc88e61595a..985ea68aa692 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -2246,7 +2246,7 @@ const translations: TranslationDeepObject = { stepCodes: 'Kody odzyskiwania', keepCodesSafe: 'Zachowaj te kody w bezpiecznym miejscu!', codesLoseAccess: dedent(` - Są twoim zabezpieczeniem na wypadek utraty dostępu do aplikacji uwierzytelniającej. Jeśli stracisz oba, zostaniesz zablokowany(-a) w swoim koncie.

+ Jeśli stracisz dostęp do aplikacji uwierzytelniającej i nie będziesz mieć tych kodów, zostaniesz zablokowany(-a) na swoim koncie.

Uwaga: Włączenie 2FA wyloguje cię ze wszystkich innych sesji. `), errorStepCodes: 'Skopiuj lub pobierz kody przed kontynuowaniem', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index db182a1c4cb0..acb22462f34b 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -2243,7 +2243,7 @@ const translations: TranslationDeepObject = { stepCodes: 'Códigos de recuperação', keepCodesSafe: 'Mantenha estes códigos em segurança!', codesLoseAccess: dedent(` - Eles são sua garantia caso você perca o acesso ao seu app autenticador. Se perder ambos, você ficará bloqueado fora da sua conta.

+ Se você perder o acesso ao seu app autenticador e não tiver esses códigos, ficará bloqueado fora da sua conta.

Observação: Ativar a 2FA desconecta você de todas as outras sessões. `), errorStepCodes: 'Copie ou faça o download dos códigos antes de continuar', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 0f5d66322c41..3031b9537da8 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -2186,8 +2186,8 @@ const translations: TranslationDeepObject = { stepCodes: '恢复代码', keepCodesSafe: '妥善保管这些验证码!', codesLoseAccess: dedent(` - 如果你无法使用验证器应用,它们就是你的备用方式。如果两者都丢失,你将无法再登录你的账户。

- 注意:启用双重验证后,你将在所有其他会话中被登出。 + 如果你无法使用验证器应用且没有这些代码,你将无法登录你的账户。

+ 注意:启用双重验证会将你登出所有其他会话。 `), errorStepCodes: '请在继续之前复制或下载这些代码', stepVerify: '验证',