Skip to content

fix(eid-wallet): show the identity verification screens in the app's language - #1154

Open
Bekiboo wants to merge 1 commit into
mainfrom
Bekiboo/didit-verification-language
Open

Bekiboo wants to merge 1 commit into
mainfrom
Bekiboo/didit-verification-language

Conversation

@Bekiboo

@Bekiboo Bekiboo commented Sep 24, 2026

Copy link
Copy Markdown
Collaborator

Description of change

The identity verification screens come from Didit's hosted UI, so the translations in #1145 never reached them: a Russian or Ukrainian user saw English from the moment verification started.

Didit takes a language on session creation and supports ru and uk under the same ISO 639-1 codes the app already uses. We were omitting it, and Didit's fallback — detecting the browser language — does not work inside the Tauri webview.

The locale has to travel from the wallet through the provisioner, so this touches both sides. The wallet sends its active locale on the four calls that open a session; evault-core forwards it to Didit.

Issue Number

Closes #1153

Type of change

Fix (a change which fixes an issue)

How the change has been tested

pnpm check in eid-wallet (0 errors, 5 pre-existing warnings) and tsc in evault-core both pass. 12 new unit tests cover the code validation.

Not tested against Didit's API. The language field is documented and the codes are confirmed supported, but nobody has watched a real session come up in Russian — worth one manual pass before this is relied on.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Notes

  • Four call sites open a session: ePassport, onboarding, the KYC upgrade overlay and account recovery. Recovery goes through /recovery/start-session rather than /verification/v2, so it needed handling separately.
  • Anything that is not a plausible ISO 639-1 code falls back to en instead of being handed to Didit as-is. Format is checked rather than matched against a fixed list, so adding a wallet locale needs no change here.
  • Recovery is the one that mattered most: someone recovering an account is already in trouble, and that was the worst place to drop them into English.

Docs: https://docs.didit.me/sessions-api/create-session

…language

Didit renders its own UI, so the translations added in #1145 never reached the
verification screens: a Russian user saw English from the moment verification
started. Didit takes a `language` on session creation and supports both ru and
uk under the same ISO 639-1 codes the app already uses. Without it Didit falls
back to detecting the browser language, which does not work inside the Tauri
webview.

The locale has to travel from the wallet through the provisioner, so this
touches both sides. The wallet sends its active locale on the four calls that
open a session — ePassport, onboarding, the KYC upgrade overlay and account
recovery — and evault-core forwards it to Didit.

Anything that is not a plausible ISO 639-1 code falls back to `en` rather than
being handed to Didit as-is.

Recovery is the one that mattered most: someone recovering an account is
already in trouble, and that was the worst place to drop them into English.

Closes #1153
@Bekiboo
Bekiboo requested a review from coodos as a code owner September 24, 2026 17:21
@coderabbitai

coderabbitai Bot commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 41 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: b9e0293f-b237-40ce-a5b1-7a6a147e3ea5

📥 Commits

Reviewing files that changed from the base of the PR and between 955bcaf and 374462d.

📒 Files selected for processing (8)
  • infrastructure/eid-wallet/src/routes/(app)/ePassport/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/main/legacy/KycUpgradeOverlay.svelte
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
  • infrastructure/eid-wallet/src/routes/(public)/recover/+page.svelte
  • infrastructure/evault-core/src/controllers/RecoveryController.ts
  • infrastructure/evault-core/src/controllers/VerificationController.ts
  • infrastructure/evault-core/src/utils/verificationLanguage.spec.ts
  • infrastructure/evault-core/src/utils/verificationLanguage.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Bekiboo Bekiboo self-assigned this Sep 24, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Identity verification screens stay in English in a Russian or Ukrainian app

1 participant