From c2e4d439a9d68034e56b28e4f8554e6bcdde900b Mon Sep 17 00:00:00 2001 From: Piyush Date: Wed, 22 Oct 2025 14:19:36 +0530 Subject: [PATCH 01/10] Added translation migration for common.iAcceptThe using RenderHTML --- src/components/AddPaymentCard/PaymentCardForm.tsx | 9 ++------- src/languages/de.ts | 1 + src/languages/en.ts | 3 ++- src/languages/es.ts | 3 ++- src/languages/fr.ts | 1 + src/languages/it.ts | 1 + src/languages/ja.ts | 1 + src/languages/nl.ts | 2 ++ src/languages/pl.ts | 1 + src/languages/pt-BR.ts | 1 + src/languages/zh-hans.ts | 1 + 11 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/components/AddPaymentCard/PaymentCardForm.tsx b/src/components/AddPaymentCard/PaymentCardForm.tsx index fddbcd2f0838b..4bce7ff83c8da 100644 --- a/src/components/AddPaymentCard/PaymentCardForm.tsx +++ b/src/components/AddPaymentCard/PaymentCardForm.tsx @@ -9,6 +9,7 @@ import CurrencySelector from '@components/CurrencySelector'; import FormProvider from '@components/Form/FormProvider'; import InputWrapper from '@components/Form/InputWrapper'; import type {FormInputErrors, FormOnyxValues} from '@components/Form/types'; +import RenderHTML from '@components/RenderHTML'; import type {AnimatedTextInputRef} from '@components/RNTextInput'; import StateSelector from '@components/StateSelector'; import Text from '@components/Text'; @@ -46,13 +47,7 @@ type PaymentCardFormProps = { function IAcceptTheLabel() { const {translate} = useLocalize(); - return ( - - {`${translate('common.iAcceptThe')}`} - {`${translate('common.addCardTermsOfService')}`} {`${translate('common.and')}`} - {` ${translate('common.privacyPolicy')} `} - - ); + return ; } const REQUIRED_FIELDS = [ diff --git a/src/languages/de.ts b/src/languages/de.ts index b450f7393021c..a7a17a05c07ca 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -439,6 +439,7 @@ const translations = { zipPostCode: 'Postleitzahl', whatThis: 'Was ist das?', iAcceptThe: 'Ich akzeptiere die', + iAcceptTheFull: `Ich akzeptiere die Expensify-Nutzungsbedingungen und Datenschutzrichtlinie`, remove: 'Entfernen', admin: 'Admin', owner: 'Eigentümer', diff --git a/src/languages/en.ts b/src/languages/en.ts index 5ed64d74a0807..6b0b33bc65093 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -431,7 +431,8 @@ const translations = { zip: 'Zip code', zipPostCode: 'Zip / Postcode', whatThis: "What's this?", - iAcceptThe: 'I accept the ', + iAcceptThe: 'I accept the', + iAcceptTheFull: `I accept the Expensify Terms of Service and Privacy Policy`, remove: 'Remove', admin: 'Admin', owner: 'Owner', diff --git a/src/languages/es.ts b/src/languages/es.ts index b52d98aabe36d..60c4ac208003c 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -419,7 +419,8 @@ const translations = { zip: 'Código postal', zipPostCode: 'Código postal', whatThis: '¿Qué es esto?', - iAcceptThe: 'Acepto los ', + iAcceptThe: 'Acepto los', + iAcceptTheFull: `Acepto los Términos de Servicio y la Política de Privacidad de Expensify`, remove: 'Eliminar', admin: 'Administrador', owner: 'Dueño', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 1196fa98a1ffe..e033a59f517fd 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -439,6 +439,7 @@ const translations = { zipPostCode: 'Code postal', whatThis: "Qu'est-ce que c'est ?", iAcceptThe: "J'accepte le", + iAcceptTheFull: `J'accepte le Conditions d'utilisation d'Expensify et Politique de confidentialité`, remove: 'Supprimer', admin: 'Admin', owner: 'Propriétaire', diff --git a/src/languages/it.ts b/src/languages/it.ts index 7eb2884e02e77..1e18eaa2cd8ad 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -439,6 +439,7 @@ const translations = { zipPostCode: 'CAP / Codice postale', whatThis: "Cos'è questo?", iAcceptThe: 'Accetto il', + iAcceptTheFull: `Accetto il Termini di servizio di Expensify e Informativa sulla privacy`, remove: 'Rimuovi', admin: 'Admin', owner: 'Proprietario', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 6f21acbf17327..c114da8de5831 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -439,6 +439,7 @@ const translations = { zipPostCode: '郵便番号', whatThis: 'これは何ですか?', iAcceptThe: '承諾します', + iAcceptTheFull: `承諾します Expensify 利用規約 および プライバシーポリシー`, remove: '削除', admin: '管理者', owner: 'オーナー', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 24b72e78b7148..0a2d5b72b4635 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -439,6 +439,8 @@ const translations = { zipPostCode: 'Postcode', whatThis: 'Wat is dit?', iAcceptThe: 'Ik accepteer de', + iAcceptTheFull: `Ik accepteer de Expensify Gebruiksvoorwaarden en Privacybeleid`, + remove: 'Verwijderen', admin: 'Admin', owner: 'Eigenaar', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index b648dc7044bad..b6e5ec0a1de6e 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -439,6 +439,7 @@ const translations = { zipPostCode: 'Kod pocztowy', whatThis: 'Co to jest?', iAcceptThe: 'Akceptuję', + iAcceptTheFull: `Akceptuję Warunki korzystania z usługi Expensify i Polityka prywatności`, remove: 'Usuń', admin: 'Admin', owner: 'Właściciel', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 6e355462b02f9..1926b9df0e36a 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -439,6 +439,7 @@ const translations = { zipPostCode: 'CEP / Código Postal', whatThis: 'O que é isso?', iAcceptThe: 'Eu aceito o', + iAcceptTheFull: `Eu aceito o Termos de Serviço da Expensify e Política de Privacidade`, remove: 'Remover', admin: 'Administração', owner: 'Proprietário', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 5374e62268a4f..23e401a682c1f 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -439,6 +439,7 @@ const translations = { zipPostCode: '邮政编码', whatThis: '这是什么?', iAcceptThe: '我接受', + iAcceptTheFull: `我接受 Expensify 服务条款隐私政策`, remove: '移除', admin: '管理员', owner: '所有者', From d48af8457afd14ee31f076c362da3f6538b2f736 Mon Sep 17 00:00:00 2001 From: Piyush Date: Wed, 22 Oct 2025 15:04:43 +0530 Subject: [PATCH 02/10] removed Text and TextLink imports --- src/components/AddPaymentCard/PaymentCardForm.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/AddPaymentCard/PaymentCardForm.tsx b/src/components/AddPaymentCard/PaymentCardForm.tsx index 4bce7ff83c8da..19ad5259692aa 100644 --- a/src/components/AddPaymentCard/PaymentCardForm.tsx +++ b/src/components/AddPaymentCard/PaymentCardForm.tsx @@ -12,9 +12,7 @@ import type {FormInputErrors, FormOnyxValues} from '@components/Form/types'; import RenderHTML from '@components/RenderHTML'; import type {AnimatedTextInputRef} from '@components/RNTextInput'; import StateSelector from '@components/StateSelector'; -import Text from '@components/Text'; import TextInput from '@components/TextInput'; -import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useThemeStyles from '@hooks/useThemeStyles'; From e6e77073ac85c163e4ec79304d974b8fe1cef46d Mon Sep 17 00:00:00 2001 From: Piyush Date: Wed, 22 Oct 2025 15:16:40 +0530 Subject: [PATCH 03/10] Fix spacing in en.ts && es.ts --- src/languages/en.ts | 2 +- src/languages/es.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 6b0b33bc65093..56e6ee7f992f0 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -431,7 +431,7 @@ const translations = { zip: 'Zip code', zipPostCode: 'Zip / Postcode', whatThis: "What's this?", - iAcceptThe: 'I accept the', + iAcceptThe: 'I accept the ', iAcceptTheFull: `I accept the Expensify Terms of Service and Privacy Policy`, remove: 'Remove', admin: 'Admin', diff --git a/src/languages/es.ts b/src/languages/es.ts index 60c4ac208003c..c1d3e063e866a 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -419,8 +419,8 @@ const translations = { zip: 'Código postal', zipPostCode: 'Código postal', whatThis: '¿Qué es esto?', - iAcceptThe: 'Acepto los', - iAcceptTheFull: `Acepto los Términos de Servicio y la Política de Privacidad de Expensify`, + iAcceptThe: 'Acepto los ', + iAcceptTheFull: `Acepto los Términos de Servicio y la Política de Privacidad de Expensify`, remove: 'Eliminar', admin: 'Administrador', owner: 'Dueño', From e33623df291d42f49eb00e9e82b9f256b0486e19 Mon Sep 17 00:00:00 2001 From: Piyush Date: Thu, 23 Oct 2025 11:00:35 +0530 Subject: [PATCH 04/10] Added translation migration in ConfirmAgreements in all languages --- src/languages/de.ts | 1 + src/languages/en.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 | 2 +- src/languages/pl.ts | 1 + src/languages/pt-BR.ts | 1 + src/languages/zh-hans.ts | 1 + .../CompleteVerification/subSteps/ConfirmAgreements.tsx | 8 ++------ 11 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index a7a17a05c07ca..87e7aeb7e7a5e 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -440,6 +440,7 @@ const translations = { whatThis: 'Was ist das?', iAcceptThe: 'Ich akzeptiere die', iAcceptTheFull: `Ich akzeptiere die Expensify-Nutzungsbedingungen und Datenschutzrichtlinie`, + iAcceptTheConfirmAgreements: `Ich akzeptiere die Allgemeine Geschäftsbedingungen`, remove: 'Entfernen', admin: 'Admin', owner: 'Eigentümer', diff --git a/src/languages/en.ts b/src/languages/en.ts index 56e6ee7f992f0..158fb86c7c7da 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -433,6 +433,7 @@ const translations = { whatThis: "What's this?", iAcceptThe: 'I accept the ', iAcceptTheFull: `I accept the Expensify Terms of Service and Privacy Policy`, + iAcceptTheConfirmAgreements: `I accept the terms and conditions`, remove: 'Remove', admin: 'Admin', owner: 'Owner', diff --git a/src/languages/es.ts b/src/languages/es.ts index c1d3e063e866a..f1e4badff765c 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -421,6 +421,7 @@ const translations = { whatThis: '¿Qué es esto?', iAcceptThe: 'Acepto los ', iAcceptTheFull: `Acepto los Términos de Servicio y la Política de Privacidad de Expensify`, + iAcceptTheConfirmAgreements: `Acepto los Términos y Condiciones`, remove: 'Eliminar', admin: 'Administrador', owner: 'Dueño', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index e033a59f517fd..db75e91bbb9f0 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -440,6 +440,7 @@ const translations = { whatThis: "Qu'est-ce que c'est ?", iAcceptThe: "J'accepte le", iAcceptTheFull: `J'accepte le Conditions d'utilisation d'Expensify et Politique de confidentialité`, + iAcceptTheConfirmAgreements: `J'accepte le termes et conditions`, remove: 'Supprimer', admin: 'Admin', owner: 'Propriétaire', diff --git a/src/languages/it.ts b/src/languages/it.ts index 1e18eaa2cd8ad..138f186497c73 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -440,6 +440,7 @@ const translations = { whatThis: "Cos'è questo?", iAcceptThe: 'Accetto il', iAcceptTheFull: `Accetto il Termini di servizio di Expensify e Informativa sulla privacy`, + iAcceptTheConfirmAgreements: `Accetto il termini e condizioni`, remove: 'Rimuovi', admin: 'Admin', owner: 'Proprietario', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index c114da8de5831..6957d66b3ef8e 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -440,6 +440,7 @@ const translations = { whatThis: 'これは何ですか?', iAcceptThe: '承諾します', iAcceptTheFull: `承諾します Expensify 利用規約 および プライバシーポリシー`, + iAcceptTheConfirmAgreements: `承諾します 利用規約`, remove: '削除', admin: '管理者', owner: 'オーナー', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 0a2d5b72b4635..d2d95399578ec 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -440,7 +440,7 @@ const translations = { whatThis: 'Wat is dit?', iAcceptThe: 'Ik accepteer de', iAcceptTheFull: `Ik accepteer de Expensify Gebruiksvoorwaarden en Privacybeleid`, - + iAcceptTheConfirmAgreements: `Ik accepteer de algemene voorwaarden`, remove: 'Verwijderen', admin: 'Admin', owner: 'Eigenaar', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index b6e5ec0a1de6e..e417e767706ea 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -440,6 +440,7 @@ const translations = { whatThis: 'Co to jest?', iAcceptThe: 'Akceptuję', iAcceptTheFull: `Akceptuję Warunki korzystania z usługi Expensify i Polityka prywatności`, + iAcceptTheConfirmAgreements: `Akceptuję warunki i zasady`, remove: 'Usuń', admin: 'Admin', owner: 'Właściciel', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 1926b9df0e36a..80743df458202 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -440,6 +440,7 @@ const translations = { whatThis: 'O que é isso?', iAcceptThe: 'Eu aceito o', iAcceptTheFull: `Eu aceito o Termos de Serviço da Expensify e Política de Privacidade`, + iAcceptTheConfirmAgreements: `Eu aceito o termos e condições`, remove: 'Remover', admin: 'Administração', owner: 'Proprietário', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 23e401a682c1f..6ef1011e2b90f 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -440,6 +440,7 @@ const translations = { whatThis: '这是什么?', iAcceptThe: '我接受', iAcceptTheFull: `我接受 Expensify 服务条款隐私政策`, + iAcceptTheConfirmAgreements: `我接受 条款和条件`, remove: '移除', admin: '管理员', owner: '所有者', diff --git a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx index 10cab1989ff40..d05a0eff415f1 100644 --- a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx +++ b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx @@ -3,6 +3,7 @@ import CheckboxWithLabel from '@components/CheckboxWithLabel'; import FormProvider from '@components/Form/FormProvider'; import InputWrapper from '@components/Form/InputWrapper'; import type {FormInputErrors, FormOnyxValues} from '@components/Form/types'; +import RenderHTML from '@components/RenderHTML'; import Text from '@components/Text'; import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; @@ -35,12 +36,7 @@ function CertifyTrueAndAccurateLabel() { function TermsAndConditionsLabel() { const {translate} = useLocalize(); - return ( - - {translate('common.iAcceptThe')} - {`${translate('completeVerificationStep.termsAndConditions')}`} - - ); + return ; } function ConfirmAgreements({onNext}: ConfirmAgreementsProps) { From 79d91f1a9239b7c8930466f2c1b3ad33aa1b7909 Mon Sep 17 00:00:00 2001 From: Piyush Date: Thu, 23 Oct 2025 11:06:33 +0530 Subject: [PATCH 05/10] removed TextLink --- .../USD/CompleteVerification/subSteps/ConfirmAgreements.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx index d05a0eff415f1..95c5ff6c34d9c 100644 --- a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx +++ b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx @@ -5,7 +5,6 @@ import InputWrapper from '@components/Form/InputWrapper'; import type {FormInputErrors, FormOnyxValues} from '@components/Form/types'; import RenderHTML from '@components/RenderHTML'; import Text from '@components/Text'; -import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import type {SubStepProps} from '@hooks/useSubStep/types'; From ec211942ec19ff97764f35c01cbe2807fd71da6c Mon Sep 17 00:00:00 2001 From: Piyush Date: Thu, 23 Oct 2025 11:36:10 +0530 Subject: [PATCH 06/10] Added translation migration in Confirmation using RenderHTML in all languages --- src/languages/de.ts | 1 + src/languages/en.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 + .../substeps/Confirmation.tsx | 9 ++------- 11 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 87e7aeb7e7a5e..55706e6ad773f 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: 'Ich akzeptiere die', iAcceptTheFull: `Ich akzeptiere die Expensify-Nutzungsbedingungen und Datenschutzrichtlinie`, iAcceptTheConfirmAgreements: `Ich akzeptiere die Allgemeine Geschäftsbedingungen`, + iAcceptTheConfirmation: `Ich akzeptiere die Expensify-Nutzungsbedingungen`, remove: 'Entfernen', admin: 'Admin', owner: 'Eigentümer', diff --git a/src/languages/en.ts b/src/languages/en.ts index 158fb86c7c7da..2093ec1c34296 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -434,6 +434,7 @@ const translations = { iAcceptThe: 'I accept the ', iAcceptTheFull: `I accept the Expensify Terms of Service and Privacy Policy`, iAcceptTheConfirmAgreements: `I accept the terms and conditions`, + iAcceptTheConfirmation: `I accept the Expensify Terms of Service`, remove: 'Remove', admin: 'Admin', owner: 'Owner', diff --git a/src/languages/es.ts b/src/languages/es.ts index f1e4badff765c..2770e35576b82 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -422,6 +422,7 @@ const translations = { iAcceptThe: 'Acepto los ', iAcceptTheFull: `Acepto los Términos de Servicio y la Política de Privacidad de Expensify`, iAcceptTheConfirmAgreements: `Acepto los Términos y Condiciones`, + iAcceptTheConfirmation: `Acepto los Términos de Servicio`, remove: 'Eliminar', admin: 'Administrador', owner: 'Dueño', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index db75e91bbb9f0..88f255ef2ef2e 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: "J'accepte le", iAcceptTheFull: `J'accepte le Conditions d'utilisation d'Expensify et Politique de confidentialité`, iAcceptTheConfirmAgreements: `J'accepte le termes et conditions`, + iAcceptTheConfirmation: `J'accepte le Conditions d'utilisation d'Expensify`, remove: 'Supprimer', admin: 'Admin', owner: 'Propriétaire', diff --git a/src/languages/it.ts b/src/languages/it.ts index 138f186497c73..4564f5cb59f25 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: 'Accetto il', iAcceptTheFull: `Accetto il Termini di servizio di Expensify e Informativa sulla privacy`, iAcceptTheConfirmAgreements: `Accetto il termini e condizioni`, + iAcceptTheConfirmation: `Accetto il Termini di servizio di Expensify`, remove: 'Rimuovi', admin: 'Admin', owner: 'Proprietario', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 6957d66b3ef8e..d70138059affd 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: '承諾します', iAcceptTheFull: `承諾します Expensify 利用規約 および プライバシーポリシー`, iAcceptTheConfirmAgreements: `承諾します 利用規約`, + iAcceptTheConfirmation: `承諾します Expensify 利用規約`, remove: '削除', admin: '管理者', owner: 'オーナー', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index d2d95399578ec..32b1ec787dfb0 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: 'Ik accepteer de', iAcceptTheFull: `Ik accepteer de Expensify Gebruiksvoorwaarden en Privacybeleid`, iAcceptTheConfirmAgreements: `Ik accepteer de algemene voorwaarden`, + iAcceptTheConfirmation: `Ik accepteer de Expensify Gebruiksvoorwaarden`, remove: 'Verwijderen', admin: 'Admin', owner: 'Eigenaar', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index e417e767706ea..cdd640f38a7d4 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: 'Akceptuję', iAcceptTheFull: `Akceptuję Warunki korzystania z usługi Expensify i Polityka prywatności`, iAcceptTheConfirmAgreements: `Akceptuję warunki i zasady`, + iAcceptTheConfirmation: `Akceptuję Warunki korzystania z usługi Expensify`, remove: 'Usuń', admin: 'Admin', owner: 'Właściciel', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 80743df458202..a7ad2be7d3048 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: 'Eu aceito o', iAcceptTheFull: `Eu aceito o Termos de Serviço da Expensify e Política de Privacidade`, iAcceptTheConfirmAgreements: `Eu aceito o termos e condições`, + iAcceptTheConfirmation: `Eu aceito o Termos de Serviço da Expensify`, remove: 'Remover', admin: 'Administração', owner: 'Proprietário', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 6ef1011e2b90f..6c623dd91dc97 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -441,6 +441,7 @@ const translations = { iAcceptThe: '我接受', iAcceptTheFull: `我接受 Expensify 服务条款隐私政策`, iAcceptTheConfirmAgreements: `我接受 条款和条件`, + iAcceptTheConfirmation: `我接受 Expensify 服务条款`, remove: '移除', admin: '管理员', owner: '所有者', diff --git a/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx b/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx index 858e6c012842e..47c241bb16a23 100644 --- a/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx +++ b/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx @@ -5,9 +5,9 @@ import InputWrapper from '@components/Form/InputWrapper'; import type {FormInputErrors, FormOnyxValues} from '@components/Form/types'; import FormHelpMessage from '@components/FormHelpMessage'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; +import RenderHTML from '@components/RenderHTML'; import ScrollView from '@components/ScrollView'; import Text from '@components/Text'; -import TextLink from '@components/TextLink'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useOnyx from '@hooks/useOnyx'; @@ -34,12 +34,7 @@ type MenuItemProps = { function TermsAndConditionsLabel() { const {translate} = useLocalize(); - return ( - - {translate('common.iAcceptThe')} - {`${translate('common.addCardTermsOfService')}`} - - ); + return ; } function Confirmation({onNext, onMove, formValues, fieldsMap}: CustomSubStepProps) { From 285bdc16da8610f6dfdc3665d040085174adcc3f Mon Sep 17 00:00:00 2001 From: Piyush Date: Thu, 23 Oct 2025 12:39:27 +0530 Subject: [PATCH 07/10] Fix eslint errors --- .../subSteps/ConfirmAgreements.tsx | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx index 95c5ff6c34d9c..f8798282a5210 100644 --- a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx +++ b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx @@ -9,8 +9,7 @@ import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import type {SubStepProps} from '@hooks/useSubStep/types'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as ValidationUtils from '@libs/ValidationUtils'; -import CONST from '@src/CONST'; +import {getFieldRequiredErrors, isRequiredFulfilled} from '@libs/ValidationUtils'; import ONYXKEYS from '@src/ONYXKEYS'; import INPUT_IDS from '@src/types/form/ReimbursementAccountForm'; @@ -39,7 +38,7 @@ function TermsAndConditionsLabel() { } function ConfirmAgreements({onNext}: ConfirmAgreementsProps) { - const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT); + const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT, {canBeMissing: true}); const {translate} = useLocalize(); const styles = useThemeStyles(); const defaultValues = { @@ -49,17 +48,17 @@ function ConfirmAgreements({onNext}: ConfirmAgreementsProps) { }; const validate = useCallback( (values: FormOnyxValues): FormInputErrors => { - const errors = ValidationUtils.getFieldRequiredErrors(values, STEP_FIELDS); + const errors = getFieldRequiredErrors(values, STEP_FIELDS); - if (!ValidationUtils.isRequiredFulfilled(values.acceptTermsAndConditions)) { + if (!isRequiredFulfilled(values.acceptTermsAndConditions)) { errors.acceptTermsAndConditions = translate('common.error.acceptTerms'); } - if (!ValidationUtils.isRequiredFulfilled(values.certifyTrueInformation)) { + if (!isRequiredFulfilled(values.certifyTrueInformation)) { errors.certifyTrueInformation = translate('completeVerificationStep.certifyTrueAndAccurateError'); } - if (!ValidationUtils.isRequiredFulfilled(values.isAuthorizedToUseBankAccount)) { + if (!isRequiredFulfilled(values.isAuthorizedToUseBankAccount)) { errors.isAuthorizedToUseBankAccount = translate('completeVerificationStep.isAuthorizedToUseBankAccountError'); } From 3aa4b852432dc43914038e1d59577bab4c6d2c61 Mon Sep 17 00:00:00 2001 From: Piyush Date: Thu, 23 Oct 2025 13:06:45 +0530 Subject: [PATCH 08/10] Fix flaky jest unit test --- tests/unit/PaymentCardFormTest.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/unit/PaymentCardFormTest.tsx b/tests/unit/PaymentCardFormTest.tsx index c61dde67e725e..bbd4755b4de0f 100644 --- a/tests/unit/PaymentCardFormTest.tsx +++ b/tests/unit/PaymentCardFormTest.tsx @@ -5,6 +5,7 @@ import {fireEvent, render, screen} from '@testing-library/react-native'; import React from 'react'; import Onyx from 'react-native-onyx'; import ComposeProviders from '@components/ComposeProviders'; +import HTMLEngineProvider from '@components/HTMLEngineProvider'; import {LocaleContextProvider} from '@components/LocaleContextProvider'; import OnyxListItemProvider from '@components/OnyxListItemProvider'; import {CurrentReportIDContextProvider} from '@hooks/useCurrentReportID'; @@ -12,6 +13,16 @@ import AddPaymentCard from '@pages/settings/Subscription/PaymentCard'; import ONYXKEYS from '@src/ONYXKEYS'; import SCREENS from '@src/SCREENS'; +jest.mock('@components/RenderHTML', () => { + const ReactMock = require('react') as typeof React; + const {Text} = require('react-native') as {Text: React.ComponentType<{children?: React.ReactNode}>}; + + return ({html}: {html: string}) => { + const plainText = html.replace(/<[^>]*>/g, ''); + return ReactMock.createElement(Text, null, plainText); + }; +}); + jest.mock('@react-native-community/geolocation', () => ({ setRNConfiguration: jest.fn(), })); @@ -39,7 +50,7 @@ describe('Subscription/AddPaymentCard', () => { const renderAddPaymentCardPage = (initialRouteName: typeof SCREENS.SETTINGS.SUBSCRIPTION.ADD_PAYMENT_CARD) => { return render( - + From a439777eaaf4fff908ab6a3975fe4451cc9b0838 Mon Sep 17 00:00:00 2001 From: Piyush Date: Wed, 29 Oct 2025 11:19:16 +0530 Subject: [PATCH 09/10] Update the translations keys in all languages locals --- src/components/AddPaymentCard/PaymentCardForm.tsx | 2 +- src/languages/de.ts | 6 +++--- src/languages/en.ts | 6 +++--- src/languages/es.ts | 6 +++--- src/languages/fr.ts | 6 +++--- src/languages/it.ts | 6 +++--- src/languages/ja.ts | 6 +++--- src/languages/nl.ts | 6 +++--- src/languages/pl.ts | 6 +++--- src/languages/pt-BR.ts | 6 +++--- src/languages/zh-hans.ts | 6 +++--- .../USD/CompleteVerification/subSteps/ConfirmAgreements.tsx | 2 +- .../InternationalDepositAccount/substeps/Confirmation.tsx | 2 +- 13 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/components/AddPaymentCard/PaymentCardForm.tsx b/src/components/AddPaymentCard/PaymentCardForm.tsx index 19ad5259692aa..b58ddc34ce740 100644 --- a/src/components/AddPaymentCard/PaymentCardForm.tsx +++ b/src/components/AddPaymentCard/PaymentCardForm.tsx @@ -45,7 +45,7 @@ type PaymentCardFormProps = { function IAcceptTheLabel() { const {translate} = useLocalize(); - return ; + return ; } const REQUIRED_FIELDS = [ diff --git a/src/languages/de.ts b/src/languages/de.ts index 53fc2ca13c4bf..128a91d55634d 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: 'Postleitzahl', whatThis: 'Was ist das?', iAcceptThe: 'Ich akzeptiere die', - iAcceptTheFull: `Ich akzeptiere die Expensify-Nutzungsbedingungen und Datenschutzrichtlinie`, - iAcceptTheConfirmAgreements: `Ich akzeptiere die Allgemeine Geschäftsbedingungen`, - iAcceptTheConfirmation: `Ich akzeptiere die Expensify-Nutzungsbedingungen`, + acceptTermsAndPrivacy: `Ich akzeptiere die Expensify-Nutzungsbedingungen und Datenschutzrichtlinie`, + acceptTermsAndConditions: `Ich akzeptiere die Allgemeine Geschäftsbedingungen`, + acceptTermsOfService: `Ich akzeptiere die Expensify-Nutzungsbedingungen`, remove: 'Entfernen', admin: 'Admin', owner: 'Eigentümer', diff --git a/src/languages/en.ts b/src/languages/en.ts index 145731cd0f35e..8f669f2ef665a 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -435,9 +435,9 @@ const translations = { zipPostCode: 'Zip / Postcode', whatThis: "What's this?", iAcceptThe: 'I accept the ', - iAcceptTheFull: `I accept the Expensify Terms of Service and Privacy Policy`, - iAcceptTheConfirmAgreements: `I accept the terms and conditions`, - iAcceptTheConfirmation: `I accept the Expensify Terms of Service`, + acceptTermsAndPrivacy: `I accept the Expensify Terms of Service and Privacy Policy`, + acceptTermsAndConditions: `I accept the terms and conditions`, + acceptTermsOfService: `I accept the Expensify Terms of Service`, remove: 'Remove', admin: 'Admin', owner: 'Owner', diff --git a/src/languages/es.ts b/src/languages/es.ts index f738cc7568816..321bd5b6b6b81 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -423,9 +423,9 @@ const translations = { zipPostCode: 'Código postal', whatThis: '¿Qué es esto?', iAcceptThe: 'Acepto los ', - iAcceptTheFull: `Acepto los Términos de Servicio y la Política de Privacidad de Expensify`, - iAcceptTheConfirmAgreements: `Acepto los Términos y Condiciones`, - iAcceptTheConfirmation: `Acepto los Términos de Servicio`, + acceptTermsAndPrivacy: `Acepto los Términos de Servicio y la Política de Privacidad de Expensify`, + acceptTermsAndConditions: `Acepto los Términos y Condiciones`, + acceptTermsOfService: `Acepto los Términos de Servicio`, remove: 'Eliminar', admin: 'Administrador', owner: 'Dueño', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 043c956f10529..8aab905a6add9 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: 'Code postal', whatThis: "Qu'est-ce que c'est ?", iAcceptThe: "J'accepte le", - iAcceptTheFull: `J'accepte le Conditions d'utilisation d'Expensify et Politique de confidentialité`, - iAcceptTheConfirmAgreements: `J'accepte le termes et conditions`, - iAcceptTheConfirmation: `J'accepte le Conditions d'utilisation d'Expensify`, + acceptTermsAndPrivacy: `J'accepte le Conditions d'utilisation d'Expensify et Politique de confidentialité`, + acceptTermsAndConditions: `J'accepte le termes et conditions`, + acceptTermsOfService: `J'accepte le Conditions d'utilisation d'Expensify`, remove: 'Supprimer', admin: 'Admin', owner: 'Propriétaire', diff --git a/src/languages/it.ts b/src/languages/it.ts index 4415a21798c2c..647c123bb526c 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: 'CAP / Codice postale', whatThis: "Cos'è questo?", iAcceptThe: 'Accetto il', - iAcceptTheFull: `Accetto il Termini di servizio di Expensify e Informativa sulla privacy`, - iAcceptTheConfirmAgreements: `Accetto il termini e condizioni`, - iAcceptTheConfirmation: `Accetto il Termini di servizio di Expensify`, + acceptTermsAndPrivacy: `Accetto il Termini di servizio di Expensify e Informativa sulla privacy`, + acceptTermsAndConditions: `Accetto il termini e condizioni`, + acceptTermsOfService: `Accetto il Termini di servizio di Expensify`, remove: 'Rimuovi', admin: 'Admin', owner: 'Proprietario', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 36b491878727e..736f975771be0 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: '郵便番号', whatThis: 'これは何ですか?', iAcceptThe: '承諾します', - iAcceptTheFull: `承諾します Expensify 利用規約 および プライバシーポリシー`, - iAcceptTheConfirmAgreements: `承諾します 利用規約`, - iAcceptTheConfirmation: `承諾します Expensify 利用規約`, + acceptTermsAndPrivacy: `承諾します Expensify 利用規約 および プライバシーポリシー`, + acceptTermsAndConditions: `承諾します 利用規約`, + acceptTermsOfService: `承諾します Expensify 利用規約`, remove: '削除', admin: '管理者', owner: 'オーナー', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index acf07a5a4f050..6780356e4bb96 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: 'Postcode', whatThis: 'Wat is dit?', iAcceptThe: 'Ik accepteer de', - iAcceptTheFull: `Ik accepteer de Expensify Gebruiksvoorwaarden en Privacybeleid`, - iAcceptTheConfirmAgreements: `Ik accepteer de algemene voorwaarden`, - iAcceptTheConfirmation: `Ik accepteer de Expensify Gebruiksvoorwaarden`, + acceptTermsAndPrivacy: `Ik accepteer de Expensify Gebruiksvoorwaarden en Privacybeleid`, + acceptTermsAndConditions: `Ik accepteer de algemene voorwaarden`, + acceptTermsOfService: `Ik accepteer de Expensify Gebruiksvoorwaarden`, remove: 'Verwijderen', admin: 'Admin', owner: 'Eigenaar', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index a8017ed12260f..43c4ee7f5b397 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: 'Kod pocztowy', whatThis: 'Co to jest?', iAcceptThe: 'Akceptuję', - iAcceptTheFull: `Akceptuję Warunki korzystania z usługi Expensify i Polityka prywatności`, - iAcceptTheConfirmAgreements: `Akceptuję warunki i zasady`, - iAcceptTheConfirmation: `Akceptuję Warunki korzystania z usługi Expensify`, + acceptTermsAndPrivacy: `Akceptuję Warunki korzystania z usługi Expensify i Polityka prywatności`, + acceptTermsAndConditions: `Akceptuję warunki i zasady`, + acceptTermsOfService: `Akceptuję Warunki korzystania z usługi Expensify`, remove: 'Usuń', admin: 'Admin', owner: 'Właściciel', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index a1b3f339384fd..6443a88a25f0f 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: 'CEP / Código Postal', whatThis: 'O que é isso?', iAcceptThe: 'Eu aceito o', - iAcceptTheFull: `Eu aceito o Termos de Serviço da Expensify e Política de Privacidade`, - iAcceptTheConfirmAgreements: `Eu aceito o termos e condições`, - iAcceptTheConfirmation: `Eu aceito o Termos de Serviço da Expensify`, + acceptTermsAndPrivacy: `Eu aceito o Termos de Serviço da Expensify e Política de Privacidade`, + acceptTermsAndConditions: `Eu aceito o termos e condições`, + acceptTermsOfService: `Eu aceito o Termos de Serviço da Expensify`, remove: 'Remover', admin: 'Administração', owner: 'Proprietário', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index b81dd31527f4a..337daa5577a0e 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -442,9 +442,9 @@ const translations = { zipPostCode: '邮政编码', whatThis: '这是什么?', iAcceptThe: '我接受', - iAcceptTheFull: `我接受 Expensify 服务条款隐私政策`, - iAcceptTheConfirmAgreements: `我接受 条款和条件`, - iAcceptTheConfirmation: `我接受 Expensify 服务条款`, + acceptTermsAndPrivacy: `我接受 Expensify 服务条款隐私政策`, + acceptTermsAndConditions: `我接受 条款和条件`, + acceptTermsOfService: `我接受 Expensify 服务条款`, remove: '移除', admin: '管理员', owner: '所有者', diff --git a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx index f8798282a5210..22a693bf41344 100644 --- a/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx +++ b/src/pages/ReimbursementAccount/USD/CompleteVerification/subSteps/ConfirmAgreements.tsx @@ -34,7 +34,7 @@ function CertifyTrueAndAccurateLabel() { function TermsAndConditionsLabel() { const {translate} = useLocalize(); - return ; + return ; } function ConfirmAgreements({onNext}: ConfirmAgreementsProps) { diff --git a/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx b/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx index 47c241bb16a23..ce0efc26048af 100644 --- a/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx +++ b/src/pages/settings/Wallet/InternationalDepositAccount/substeps/Confirmation.tsx @@ -34,7 +34,7 @@ type MenuItemProps = { function TermsAndConditionsLabel() { const {translate} = useLocalize(); - return ; + return ; } function Confirmation({onNext, onMove, formValues, fieldsMap}: CustomSubStepProps) { From 67a3bcbd2f263d2eb2630bf9ebb06ce2200ce4f4 Mon Sep 17 00:00:00 2001 From: Piyush Date: Wed, 29 Oct 2025 12:28:57 +0530 Subject: [PATCH 10/10] Fix flaky jest error js heap out memory error --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e0af3c151f26b..f5eb28741c28e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,6 +17,7 @@ jobs: runs-on: ubuntu-latest env: CI: true + NODE_OPTIONS: --max_old_space_size=8192 strategy: fail-fast: false matrix: