Skip to content

Commit f72e028

Browse files
authored
fix(i18n): translate actionable error messages
* wip - translations * fix(i18n): add missing actionable error translations * fix(linting): add autoformatting corrections * fix: use frontend translations for actionable errors
1 parent 6ed29fd commit f72e028

8 files changed

Lines changed: 159 additions & 7 deletions

File tree

docs/APIDOCUMENTATION.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ xee
623623

624624
> | name | type | data type | description |
625625
> | ------------ | -------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
626-
> | `memberGuid` | optional | string | The GUID of the member to update. If provided, the widget will initiate an OAuth update flow for this member. |
626+
> | `memberGuid` | optional | string | The GUID of the member to update. If provided, the widget will initiate an OAuth update flow for this member. |
627627
> | `config` | required | [`ClientConfigType`](../typings/connectProps.d.ts#L19) | The connect widget uses the config to set the initial state and behavior of the widget. [More details](./CLIENT_CONFIG.md) |
628628
629629
##### Responses

docs/USER_FEATURES.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ const userFeatures = [
3333
When updating a member via OAuth, it is possible for the backend to return a different member GUID (`inbound_member_guid`) than the one used to initiate the flow. This commonly occurs during migrations from non-OAuth to OAuth connections, or when a user signs in with a different set of credentials at the same institution.
3434

3535
The Connect Widget handles this synchronization automatically by:
36+
3637
1. Detecting the GUID change upon successful completion of the OAuth flow.
3738
2. Fetching the new member's full record using the `loadMemberByGuid` callback.
3839
3. Updating the internal Redux state to reflect the new `currentMemberGuid` and including the new member record in the list of active members.
3940
4. Seamlessly transitioning the user to the `Connecting` step with the synchronized member data.
40-
<br />
41+
<br />
4142

4243
[<-- Back to README](../README.md#props)

src/const/language/es.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,15 @@
415415
"To complete your connection, please %1share%2 the following after signing in:": "Para completar su conexión, por favor, %1comparta%2 lo siguiente después de iniciar sesión:",
416416
"Demo mode active": "Modo de demostración activo",
417417
"Live institutions are not available in the demo environment. Please select *MX Bank* to test the connection process.": "Las instituciones en vivo no están disponibles en el entorno de demostración. Seleccione *MX Bank* para probar el proceso de conexión.",
418+
"Connection unavailable": "Conexión no disponible",
419+
"This institution is experiencing issues that prevent successful connections. It's unclear when this will be resolved.": "Esta institución está experimentando problemas que impiden establecer conexiones exitosas. No está claro cuándo se resolverá esta situación.",
420+
"Back": "Retroceder",
421+
"We couldn't find any accounts eligible for transfers. Please link a checking or savings account.": "No pudimos encontrar ninguna cuenta que cumpla con los requisitos para realizar transferencias. Vincule, por favor, una cuenta corriente o de ahorros.",
422+
"This may be due to closed accounts, revoked access, or a connection issue. Please try again later or connect a different institution.": "Esto puede deberse a cuentas cerradas, acceso revocado o un problema de conexión. Intente nuevamente más tarde o conecte una institución diferente.",
423+
"We can't access your accounts because some required permissions weren't granted.": "No podemos acceder a sus cuentas porque no se otorgaron algunos permisos requeridos.",
424+
"We're unable to connect to this institution right now. Please try again later.": "Actualmente no podemos conectarnos a esta institución. Intente nuevamente más tarde.",
425+
"The institution is temporarily unavailable due to maintenance. Please try again later.": "La institución no está disponible temporalmente debido a mantenimiento. Intente nuevamente más tarde.",
426+
"This institution isn't responding right now. Please try again later.": "Esta institución no está respondiendo en este momento. Intente nuevamente más tarde.",
418427
"connect/disclosure/button\u0004Continue": "Continuar",
419428
"connect/disclosure/policy/text\u0004By clicking Continue, you agree to the ": "Al hacer clic en Continuar, tu aceptas la ",
420429
"connect/disclosure/policy/link\u0004MX Privacy Policy.": "Política de privacidad de Money Experience.",

src/const/language/es.po

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,7 @@ msgstr "Elija una imagen"
309309
msgid "Oops! Something went wrong. Please try again later."
310310
msgstr "¡Oh, no! Algo salió mal. Inténtelo de nuevo más tarde."
311311

312-
#: src/components/support/SupportMenu.js
313-
#: src/views/actionableError/useActionableErrorMap.tsx src/views/mfa/MFAStep.js
312+
#: src/components/support/SupportMenu.js src/views/mfa/MFAStep.js
314313
#: src/views/loginError/SecondaryActions.js
315314
#: src/views/credentials/Credentials.js
316315
msgid "Get help"
@@ -2092,3 +2091,54 @@ msgstr ""
20922091
#: src/views/institutionStatusDetails/InstitutionStatusDetails.tsx
20932092
msgid "Back"
20942093
msgstr "Retroceder"
2094+
2095+
#: src/views/oauth/WaitingForOAuth.js
2096+
msgid "Failed to synchronize member data"
2097+
msgstr ""
2098+
2099+
#: src/views/actionableError/useActionableErrorMap.tsx
2100+
msgid ""
2101+
"We couldn't find any accounts eligible for transfers. Please link a checking "
2102+
"or savings account."
2103+
msgstr ""
2104+
"No pudimos encontrar ninguna cuenta que cumpla con los requisitos para "
2105+
"realizar transferencias. Vincule, por favor, una cuenta corriente o de "
2106+
"ahorros."
2107+
2108+
#: src/views/actionableError/useActionableErrorMap.tsx
2109+
msgid ""
2110+
"This may be due to closed accounts, revoked access, or a connection issue. "
2111+
"Please try again later or connect a different institution."
2112+
msgstr ""
2113+
"Esto puede deberse a cuentas cerradas, acceso revocado o un problema de "
2114+
"conexión. Intente nuevamente más tarde o conecte una institución diferente."
2115+
2116+
#: src/views/actionableError/useActionableErrorMap.tsx
2117+
msgid ""
2118+
"We can't access your accounts because some required permissions weren't "
2119+
"granted."
2120+
msgstr ""
2121+
"No podemos acceder a sus cuentas porque no se otorgaron algunos permisos "
2122+
"requeridos."
2123+
2124+
#: src/views/actionableError/useActionableErrorMap.tsx
2125+
msgid ""
2126+
"We're unable to connect to this institution right now. Please try again "
2127+
"later."
2128+
msgstr ""
2129+
"Actualmente no podemos conectarnos a esta institución. Intente nuevamente "
2130+
"más tarde."
2131+
2132+
#: src/views/actionableError/useActionableErrorMap.tsx
2133+
msgid ""
2134+
"The institution is temporarily unavailable due to maintenance. Please try "
2135+
"again later."
2136+
msgstr ""
2137+
"La institución no está disponible temporalmente debido a mantenimiento. "
2138+
"Intente nuevamente más tarde."
2139+
2140+
#: src/views/actionableError/useActionableErrorMap.tsx
2141+
msgid "This institution isn't responding right now. Please try again later."
2142+
msgstr ""
2143+
"Esta institución no está respondiendo en este momento. Intente nuevamente "
2144+
"más tarde."

src/const/language/frCa.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,17 @@
416416
"To complete your connection, please %1share%2 the following after signing in:": "Pour finaliser votre connexion, veuillez %1partager%2 les informations suivantes après vous être connecté :",
417417
"Demo mode active": "Mode démo actif",
418418
"Live institutions are not available in the demo environment. Please select *MX Bank* to test the connection process.": "Les établissements réels ne sont pas disponibles dans l'environnement de démonstration. Veuillez sélectionner *MX Bank* pour tester la procédure de connexion.",
419+
"Connection unavailable": "Connexion indisponible",
420+
"This institution is experiencing issues that prevent successful connections. It's unclear when this will be resolved.": "Cet établissement rencontre des problèmes qui empêchent d'établir des connexions. Il est difficile de déterminer quand la situation sera résolue.",
421+
"Back": "Reculer",
422+
"We couldn't find any accounts eligible for transfers. Please link a checking or savings account.": "Nous n'avons trouvé aucun compte admissible aux virements. Veuillez lier un compte chèques ou un compte d'épargne.",
423+
"Successfully authenticated but no active or eligible accounts found. Verify account status at institution.": "Authentification réussie, mais aucun compte actif ou éligible trouvé. Vérifiez le statut du compte auprès de l'institution.",
424+
"This may be due to closed accounts, revoked access, or a connection issue. Please try again later or connect a different institution.": "Cela peut être dû à des comptes fermés, un accès révoqué ou un problème de connexion. Veuillez réessayer plus tard ou connecter une autre institution.",
425+
"OAuth access denied to required account data. User likely declined necessary permissions during OAuth flow. User may need to re-authorize and grant permissions.": "Accès OAuth refusé aux données de compte requises. L'utilisateur a probablement refusé les permissions nécessaires pendant le flux OAuth. L'utilisateur devra peut-être ré-autoriser et accorder les permissions.",
426+
"We can't access your accounts because some required permissions weren't granted.": "Nous ne pouvons pas accéder à vos comptes car certaines permissions requises n'ont pas été accordées.",
427+
"We're unable to connect to this institution right now. Please try again later.": "Nous ne parvenons pas à nous connecter à cette institution pour le moment. Veuillez réessayer plus tard.",
428+
"The institution is temporarily unavailable due to maintenance. Please try again later.": "L'institution est temporairement indisponible en raison de la maintenance. Veuillez réessayer plus tard.",
429+
"This institution isn't responding right now. Please try again later.": "Cette institution ne répond pas pour le moment. Veuillez réessayer plus tard.",
419430
"connect/disclosure/policy/text\u0004By clicking Continue, you agree to the ": "En cliquant sur Continuer, vous acceptez la ",
420431
"connect/disclosure/policy/link\u0004MX Privacy Policy.": "Politique de confidentialité de MX.",
421432
"connect/disclosure/policy/link\u0004MX Privacy Policy": "Politique de confidentialité de MX.",

src/const/language/frCa.po

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,7 @@ msgid "Oops! Something went wrong. Please try again later."
462462
msgstr "Attention : un problème est survenu. Veuillez réessayer plus tard."
463463

464464
# TRANSLATED
465-
#: src/components/support/SupportMenu.js
466-
#: src/views/actionableError/useActionableErrorMap.tsx src/views/mfa/MFAStep.js
465+
#: src/components/support/SupportMenu.js src/views/mfa/MFAStep.js
467466
#: src/views/loginError/SecondaryActions.js
468467
#: src/views/credentials/Credentials.js
469468
msgid "Get help"
@@ -2171,3 +2170,68 @@ msgstr ""
21712170
#: src/views/institutionStatusDetails/InstitutionStatusDetails.tsx
21722171
msgid "Back"
21732172
msgstr "Reculer"
2173+
2174+
#: src/views/oauth/WaitingForOAuth.js
2175+
msgid "Failed to synchronize member data"
2176+
msgstr ""
2177+
2178+
#: src/views/actionableError/useActionableErrorMap.tsx
2179+
msgid ""
2180+
"We couldn't find any accounts eligible for transfers. Please link a checking "
2181+
"or savings account."
2182+
msgstr ""
2183+
"Nous n'avons trouvé aucun compte admissible aux virements. Veuillez lier un "
2184+
"compte chèques ou un compte d'épargne."
2185+
2186+
msgid ""
2187+
"Successfully authenticated but no active or eligible accounts found. Verify "
2188+
"account status at institution."
2189+
msgstr ""
2190+
"Authentification réussie, mais aucun compte actif ou éligible trouvé. "
2191+
"Vérifiez le statut du compte auprès de l'institution."
2192+
2193+
#: src/views/actionableError/useActionableErrorMap.tsx
2194+
msgid ""
2195+
"This may be due to closed accounts, revoked access, or a connection issue. "
2196+
"Please try again later or connect a different institution."
2197+
msgstr ""
2198+
"Cela peut être dû à des comptes fermés, un accès révoqué ou un problème de "
2199+
"connexion. Veuillez réessayer plus tard ou connecter une autre institution."
2200+
2201+
msgid ""
2202+
"OAuth access denied to required account data. User likely declined necessary "
2203+
"permissions during OAuth flow. User may need to re-authorize and grant "
2204+
"permissions."
2205+
msgstr ""
2206+
"Accès OAuth refusé aux données de compte requises. L'utilisateur a "
2207+
"probablement refusé les permissions nécessaires pendant le flux OAuth. "
2208+
"L'utilisateur devra peut-être ré-autoriser et accorder les permissions."
2209+
2210+
#: src/views/actionableError/useActionableErrorMap.tsx
2211+
msgid ""
2212+
"We can't access your accounts because some required permissions weren't "
2213+
"granted."
2214+
msgstr ""
2215+
"Nous ne pouvons pas accéder à vos comptes car certaines permissions requises "
2216+
"n'ont pas été accordées."
2217+
2218+
#: src/views/actionableError/useActionableErrorMap.tsx
2219+
msgid ""
2220+
"We're unable to connect to this institution right now. Please try again "
2221+
"later."
2222+
msgstr ""
2223+
"Nous ne parvenons pas à nous connecter à cette institution pour le moment. "
2224+
"Veuillez réessayer plus tard."
2225+
2226+
#: src/views/actionableError/useActionableErrorMap.tsx
2227+
msgid ""
2228+
"The institution is temporarily unavailable due to maintenance. Please try "
2229+
"again later."
2230+
msgstr ""
2231+
"L'institution est temporairement indisponible en raison de la maintenance. "
2232+
"Veuillez réessayer plus tard."
2233+
2234+
#: src/views/actionableError/useActionableErrorMap.tsx
2235+
msgid "This institution isn't responding right now. Please try again later."
2236+
msgstr ""
2237+
"Cette institution ne répond pas pour le moment. Veuillez réessayer plus tard."

src/views/actionableError/ActionableError.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export const ActionableError = () => {
7272
truncate={false}
7373
variant="Paragraph"
7474
>
75-
{currentMember.error.user_message}
75+
{errorDetails?.userMessage || currentMember.error.user_message}
7676
</Text>
7777
</SlideDown>
7878

src/views/actionableError/useActionableErrorMap.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type ActionableErrorAction = {
1313
}
1414
type ActionableErrorMapEntry = {
1515
title: string
16+
userMessage?: string
1617
primaryAction: ActionableErrorAction
1718
secondaryActions?: ActionableErrorAction
1819
}
@@ -37,27 +38,43 @@ export const useActionableErrorMap = (jobDetailCode: number) => {
3738
() => ({
3839
[ACTIONABLE_ERROR_CODES.NO_ELIGIBLE_ACCOUNTS]: {
3940
title: __('No eligible accounts'),
41+
userMessage: __(
42+
"We couldn't find any accounts eligible for transfers. Please link a checking or savings account.",
43+
),
4044
primaryAction: { label: __('Log in again'), action: goToCredentials },
4145
secondaryActions: { label: __('Connect a different institution'), action: goToSearch },
4246
},
4347
[ACTIONABLE_ERROR_CODES.NO_ACCOUNTS]: {
4448
title: __('No accounts found'),
49+
userMessage: __(
50+
'This may be due to closed accounts, revoked access, or a connection issue. Please try again later or connect a different institution.',
51+
),
4552
primaryAction: { label: __('Return to institution selection'), action: goToSearch },
4653
},
4754
[ACTIONABLE_ERROR_CODES.ACCESS_DENIED]: {
4855
title: __('Additional permissions needed'),
56+
userMessage: __(
57+
"We can't access your accounts because some required permissions weren't granted.",
58+
),
4959
primaryAction: { label: __('Review instructions'), action: goToCredentials },
5060
},
5161
[ACTIONABLE_ERROR_CODES.INSTITUTION_DOWN]: {
5262
title: __('Unable to connect'),
63+
userMessage: __(
64+
"We're unable to connect to this institution right now. Please try again later.",
65+
),
5366
primaryAction: { label: __('Return to institution selection'), action: goToSearch },
5467
},
5568
[ACTIONABLE_ERROR_CODES.INSTITUTION_MAINTENANCE]: {
5669
title: __('Maintenance in progress'),
70+
userMessage: __(
71+
'The institution is temporarily unavailable due to maintenance. Please try again later.',
72+
),
5773
primaryAction: { label: __('Return to institution selection'), action: goToSearch },
5874
},
5975
[ACTIONABLE_ERROR_CODES.INSTITUTION_UNAVAILABLE]: {
6076
title: __('Unable to connect'),
77+
userMessage: __("This institution isn't responding right now. Please try again later."),
6178
primaryAction: { label: __('Return to institution selection'), action: goToSearch },
6279
},
6380
}),

0 commit comments

Comments
 (0)