Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
|
@ChavdaSachin Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
@ChavdaSachin Please ignore this PR |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e6bc0f58ff
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
e6bc0f5 to
4ad284c
Compare
|
@chuckdries @JakubKorytko @dariusz-biela Please only review one last commit because I checked out from the reveal-pin branch |
JakubKorytko
left a comment
There was a problem hiding this comment.
Some comments, otherwise LGTM
|
@codex review |
|
@MelvinBot Please review the PR |
|
🚧 @joekaufmanexpensify has triggered a test Expensify/App build. You can view the workflow run here. |
🔍 PR ReviewOverall the architecture is solid — using 1. Bug: Swapped title labels in
|
| # | Severity | Issue |
|---|---|---|
| 1 | High | Title labels swapped in ChangePinPage.tsx |
| 2 | Medium | Stale JSDoc + redundant callback branches in ChangePin.tsx |
| 3 | Low | Export ordering in Expensicons.ts |
| 4 | Low | Trailing space in translation string |
| 5 | Info | Non-English translations need generation |
Items 1 and 2 should be fixed before merge. The rest are minor/informational.
This comment has been minimized.
This comment has been minimized.
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index fdb745a7..03b3bca8 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -750,10 +750,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: 'Überprüfung fehlgeschlagen',
setPin: {didNotShipCard: 'Wir haben Ihre Karte nicht versendet. Bitte versuchen Sie es erneut.'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: 'Wir konnten Ihre PIN nicht anzeigen. Bitte versuchen Sie es erneut.'},
+ changePin: {authenticationCanceled: 'Wir haben Ihre PIN nicht geändert. Bitte versuchen Sie es erneut.'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2372,22 +2370,22 @@ ${amount} für ${merchant} – ${date}`,
},
setYourPin: 'Legen Sie Ihre PIN fest.',
confirmYourPin: 'Bestätigen Sie Ihre PIN.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: 'Geben Sie eine neue PIN für Ihre Karte ein.',
+ confirmYourChangedPin: 'Bestätigen Sie Ihre neue PIN.',
pinMustBeFourDigits: 'Die PIN muss genau 4 Ziffern lang sein.',
invalidPin: 'Bitte wählen Sie eine sicherere PIN.',
pinMismatch: 'PINs stimmen nicht überein. Bitte versuchen Sie es erneut.',
revealPin: 'PIN anzeigen',
hidePin: 'PIN ausblenden',
pin: 'PIN',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: 'PIN ändern',
+ pinChanged: 'PIN geändert!',
+ pinChangedHeader: 'PIN geändert',
+ pinChangedDescription: 'Sie können Ihre PIN jetzt verwenden.',
+ changePinAtATM: 'Ändern Sie Ihre PIN an jedem Geldautomaten',
+ changePinAtATMDescription: 'Dies ist in Ihrer Region erforderlich.',
+ changePinAtATMConciergeLink: 'Kontaktieren Sie Concierge',
+ changePinAtATMSuffix: 'falls Sie Fragen haben.',
freezeCard: 'Karte sperren',
unfreeze: 'Entsperren',
unfreezeCard: 'Karte entsperren',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index c70342d8..1eae5b2a 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -753,10 +753,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: 'Échec de la vérification',
setPin: {didNotShipCard: 'Nous n’avons pas envoyé votre carte. Veuillez réessayer.'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: 'Nous n’avons pas pu afficher votre code PIN. Veuillez réessayer.'},
+ changePin: {authenticationCanceled: 'Nous n’avons pas modifié votre code PIN. Veuillez réessayer.'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2377,22 +2375,22 @@ ${amount} pour ${merchant} - ${date}`,
},
setYourPin: 'Définir votre code PIN.',
confirmYourPin: 'Confirmez votre code PIN.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: 'Saisissez un nouveau code PIN pour votre carte.',
+ confirmYourChangedPin: 'Confirmez votre nouveau code PIN.',
pinMustBeFourDigits: 'Le code PIN doit comporter exactement 4 chiffres.',
invalidPin: 'Veuillez choisir un code PIN plus sécurisé.',
pinMismatch: 'Les codes PIN ne correspondent pas. Veuillez réessayer.',
revealPin: 'Afficher le code PIN',
hidePin: 'Masquer le code PIN',
pin: 'Code PIN',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: 'Modifier le code PIN',
+ pinChanged: 'Code PIN modifié !',
+ pinChangedHeader: 'Code PIN modifié',
+ pinChangedDescription: 'Vous êtes maintenant prêt à utiliser votre code PIN.',
+ changePinAtATM: 'Modifiez votre code PIN à n’importe quel distributeur automatique de billets',
+ changePinAtATMDescription: 'Ceci est obligatoire dans votre région.',
+ changePinAtATMConciergeLink: 'Contacter Concierge',
+ changePinAtATMSuffix: 'si vous avez des questions.',
freezeCard: 'Geler la carte',
unfreeze: 'Dégeler',
unfreezeCard: 'Dégeler la carte',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 9eef130d..2820b662 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -751,10 +751,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: 'Verifica non riuscita',
setPin: {didNotShipCard: 'Non abbiamo spedito la tua carta. Riprova.'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: 'Non siamo riusciti a mostrare il tuo PIN. Riprova.'},
+ changePin: {authenticationCanceled: 'Non abbiamo modificato il tuo PIN. Riprova.'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2367,22 +2365,22 @@ ${amount} per ${merchant} - ${date}`,
},
setYourPin: 'Imposta il tuo PIN.',
confirmYourPin: 'Conferma il tuo PIN.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: 'Inserisci un nuovo PIN per la tua carta.',
+ confirmYourChangedPin: 'Conferma il tuo nuovo PIN.',
pinMustBeFourDigits: 'Il PIN deve essere composto da esattamente 4 cifre.',
invalidPin: 'Scegli un PIN più sicuro.',
pinMismatch: 'I PIN non corrispondono. Riprova.',
revealPin: 'Mostra PIN',
hidePin: 'Nascondi PIN',
pin: 'PIN',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: 'Cambia PIN',
+ pinChanged: 'PIN cambiato!',
+ pinChangedHeader: 'PIN modificato',
+ pinChangedDescription: 'Ora sei pronto a usare il tuo PIN.',
+ changePinAtATM: 'Cambia il tuo PIN a qualsiasi bancomat',
+ changePinAtATMDescription: 'Questo è obbligatorio nella tua regione.',
+ changePinAtATMConciergeLink: 'Contatta Concierge',
+ changePinAtATMSuffix: 'se hai domande.',
freezeCard: 'Blocca carta',
unfreeze: 'Sblocca',
unfreezeCard: 'Sblocca carta',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index c0e4fd73..fd42cec3 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -748,10 +748,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: '認証に失敗しました',
setPin: {didNotShipCard: 'カードを発送できませんでした。もう一度お試しください。'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: 'PIN を表示できませんでした。もう一度お試しください。'},
+ changePin: {authenticationCanceled: 'お客様の暗証番号は変更されていません。もう一度お試しください。'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2349,22 +2347,22 @@ ${date} の ${merchant} への ${amount}`,
},
setYourPin: 'PIN を設定.',
confirmYourPin: 'PIN を確認してください.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: 'カードの新しい暗証番号を入力してください。',
+ confirmYourChangedPin: '新しい暗証番号を確認してください。',
pinMustBeFourDigits: 'PIN は 4 桁で入力してください。',
invalidPin: 'より安全な暗証番号を選択してください。',
pinMismatch: 'PIN が一致しません。もう一度お試しください。',
revealPin: 'PIN を表示',
hidePin: 'PIN を非表示',
pin: 'PIN',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: 'PIN を変更',
+ pinChanged: 'PIN を変更しました!',
+ pinChangedHeader: 'PIN を変更しました',
+ pinChangedDescription: 'これで暗証番号をすぐにご利用いただけます。',
+ changePinAtATM: 'PIN は任意の ATM で変更できます',
+ changePinAtATMDescription: 'これはお住まいの地域では必須です。',
+ changePinAtATMConciergeLink: 'Concierge に連絡する',
+ changePinAtATMSuffix: 'ご不明な点がある場合。',
freezeCard: 'カードを一時停止',
unfreeze: '再開',
unfreezeCard: 'カードの一時停止を解除',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 47c40fa4..5466867a 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -749,10 +749,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: 'Verificatie mislukt',
setPin: {didNotShipCard: 'We hebben je kaart niet verzonden. Probeer het opnieuw.'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: 'We konden je pincode niet tonen. Probeer het opnieuw.'},
+ changePin: {authenticationCanceled: 'We hebben je pincode niet gewijzigd. Probeer het opnieuw.'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2366,22 +2364,22 @@ ${amount} voor ${merchant} - ${date}`,
},
setYourPin: 'Stel je pincode in.',
confirmYourPin: 'Bevestig je pincode.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: 'Voer een nieuwe pincode in voor je kaart.',
+ confirmYourChangedPin: 'Bevestig je nieuwe pincode.',
pinMustBeFourDigits: 'Pincode moet precies 4 cijfers bevatten.',
invalidPin: 'Kies alsjeblieft een veiligere pincode.',
pinMismatch: 'Pincodes komen niet overeen. Probeer het opnieuw.',
revealPin: 'Pincode weergeven',
hidePin: 'Pincode verbergen',
pin: 'Pincode',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: 'Pincode wijzigen',
+ pinChanged: 'Pincode gewijzigd!',
+ pinChangedHeader: 'Pincode gewijzigd',
+ pinChangedDescription: 'Je bent helemaal klaar om je pincode te gebruiken.',
+ changePinAtATM: 'Wijzig je pincode bij elke geldautomaat',
+ changePinAtATMDescription: 'Dit is vereist in jouw regio.',
+ changePinAtATMConciergeLink: 'Neem contact op met Concierge',
+ changePinAtATMSuffix: 'als je vragen hebt.',
freezeCard: 'Kaart blokkeren',
unfreeze: 'Deblokkeren',
unfreezeCard: 'Kaart deblokkeren',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 533aadd0..53dc49c1 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -750,10 +750,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: 'Weryfikacja nie powiodła się',
setPin: {didNotShipCard: 'Nie wysłaliśmy twojej karty. Spróbuj ponownie.'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: 'Nie udało się wyświetlić twojego PIN-u. Spróbuj ponownie.'},
+ changePin: {authenticationCanceled: 'Nie zmieniliśmy twojego PIN-u. Spróbuj ponownie.'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2361,22 +2359,22 @@ ${amount} dla ${merchant} - ${date}`,
},
setYourPin: 'Ustaw swój PIN.',
confirmYourPin: 'Potwierdź swój PIN.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: 'Wprowadź nowy PIN do swojej karty.',
+ confirmYourChangedPin: 'Potwierdź swój nowy PIN.',
pinMustBeFourDigits: 'PIN musi mieć dokładnie 4 cyfry.',
invalidPin: 'Wybierz proszę bardziej bezpieczny PIN.',
pinMismatch: 'Kody PIN nie są takie same. Spróbuj ponownie.',
revealPin: 'Pokaż PIN',
hidePin: 'Ukryj PIN',
pin: 'PIN',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: 'Zmień PIN',
+ pinChanged: 'PIN zmieniony!',
+ pinChangedHeader: 'PIN został zmieniony',
+ pinChangedDescription: 'Możesz już teraz używać swojego PIN-u.',
+ changePinAtATM: 'Zmień swój PIN w dowolnym bankomacie',
+ changePinAtATMDescription: 'To jest wymagane w twoim regionie.',
+ changePinAtATMConciergeLink: 'Skontaktuj się z Concierge',
+ changePinAtATMSuffix: 'jeśli masz jakieś pytania.',
freezeCard: 'Zamroź kartę',
unfreeze: 'Odmroź',
unfreezeCard: 'Odmroź kartę',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index b3d19320..0ad92ab8 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -748,10 +748,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: 'Falha na verificação',
setPin: {didNotShipCard: 'Não enviamos seu cartão. Tente novamente.'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: 'Não foi possível revelar seu PIN. Tente novamente.'},
+ changePin: {authenticationCanceled: 'Nós não alteramos seu PIN. Tente novamente.'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2359,22 +2357,22 @@ ${amount} para ${merchant} - ${date}`,
},
setYourPin: 'Defina seu PIN.',
confirmYourPin: 'Confirme seu PIN.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: 'Digite um novo PIN para o seu cartão.',
+ confirmYourChangedPin: 'Confirme seu novo PIN.',
pinMustBeFourDigits: 'O PIN deve ter exatamente 4 dígitos.',
invalidPin: 'Escolha um PIN mais seguro.',
pinMismatch: 'Os PINs não coincidem. Tente novamente.',
revealPin: 'Revelar PIN',
hidePin: 'Ocultar PIN',
pin: 'PIN',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: 'Alterar PIN',
+ pinChanged: 'PIN alterado!',
+ pinChangedHeader: 'PIN alterado',
+ pinChangedDescription: 'Tudo pronto para você usar seu PIN agora.',
+ changePinAtATM: 'Altere seu PIN em qualquer caixa eletrônico',
+ changePinAtATMDescription: 'Isso é obrigatório na sua região.',
+ changePinAtATMConciergeLink: 'Falar com a Concierge',
+ changePinAtATMSuffix: 'se você tiver alguma dúvida.',
freezeCard: 'Bloquear cartão',
unfreeze: 'Desbloquear',
unfreezeCard: 'Desbloquear cartão',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 1c528409..4b0c0344 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -741,10 +741,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
verificationFailed: '验证失败',
setPin: {didNotShipCard: '我们未能寄出您的卡。请重试。'},
- revealPin: {authenticationCanceled: "We couldn't reveal your PIN. Please try again."},
- changePin: {
- authenticationCanceled: 'We couldn’t change your PIN. Please try again.',
- },
+ revealPin: {authenticationCanceled: '我们无法显示您的 PIN。请重试。'},
+ changePin: {authenticationCanceled: '我们未更改您的 PIN。请重试。'},
},
validateCodeModal: {
successfulSignInTitle: dedent(`
@@ -2313,22 +2311,22 @@ ${amount},商户:${merchant} - 日期:${date}`,
},
setYourPin: '设置您的 PIN.',
confirmYourPin: '确认您的 PIN.',
- changeYourPin: 'Enter a new PIN for your card.',
- confirmYourChangedPin: 'Confirm your new PIN.',
+ changeYourPin: '为您的银行卡输入新 PIN 码。',
+ confirmYourChangedPin: '确认您的新 PIN。',
pinMustBeFourDigits: 'PIN 必须正好为 4 位数字。',
invalidPin: '请选择一个更安全的 PIN。',
pinMismatch: 'PIN 不匹配。请重试。',
revealPin: '显示 PIN',
hidePin: '隐藏 PIN',
pin: 'PIN',
- changePin: 'Change PIN',
- pinChanged: 'PIN changed',
- pinChangedHeader: 'PIN changed',
- pinChangedDescription: 'Your card PIN has been changed successfully.',
- changePinAtATM: 'Change your PIN at any ATM',
- changePinAtATMDescription: 'This is required in your region. ',
- changePinAtATMConciergeLink: 'Reach out to Concierge',
- changePinAtATMSuffix: ' if you have any questions.',
+ changePin: '更改 PIN',
+ pinChanged: 'PIN 已更改!',
+ pinChangedHeader: 'PIN 已更改',
+ pinChangedDescription: '现在您可以开始使用您的 PIN 了。',
+ changePinAtATM: '在任意 ATM 更改您的 PIN',
+ changePinAtATMDescription: '这是您所在地区的必填项。',
+ changePinAtATMConciergeLink: '联系 Concierge',
+ changePinAtATMSuffix: '如果你有任何问题。',
freezeCard: '冻结卡片',
unfreeze: '解冻',
unfreezeCard: '解冻卡片',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3e15e43301
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
chuckdries
left a comment
There was a problem hiding this comment.
High level question about CardPinStore, and a note about translations, but overall looking pretty solid to me! I notice the pin input is the wide version, will we get the narrower version for free by merging main?
|
@DylanDylann can you merge main please? |
rafecolton
left a comment
There was a problem hiding this comment.
Tested locally and it worked well overall - including with passkey 😄 I'm a little concern that errors are not handled correctly so I tagged Dariusz for a second opinion.
src/components/MultifactorAuthentication/config/scenarios/RevealPIN.tsx
Outdated
Show resolved
Hide resolved
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
|
🚧 @rafecolton has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/rafecolton in version: 9.3.42-0 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Deployed to production by https://github.com/grgia in version: 9.3.42-3 🚀
|


Explanation of Change
This PR implements the "Reveal PIN" feature and "Change PIN" feature for UK/EU Expensify Card holders
Document: Release 2 of UK/EU PIN Management
Fixed Issues
$ #80553
PROPOSAL:
Tests
Offline tests
QA Steps
Assign to @joekaufmanexpensify for QA
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Reveal PIN
Screen.Recording.2026-03-17.at.01.34.40.mov
Screen.Recording.2026-03-17.at.01.34.54.mov
Change PIN
Screen.Recording.2026-03-17.at.01.51.51.mov
Screen.Recording.2026-03-17.at.01.51.24.mov