feat(i18n): broaden purchase pre-flight message wording#599
Merged
TaprootFreak merged 1 commit intoMay 28, 2026
Merged
Conversation
"Registration required" is misleading for KYC-verified users — they are already registered with DFX; the missing piece is the RealUnit shareholder registration (Aktionariat). Reword to "Additional information required" / "Zusätzliche Angaben erforderlich" so the message is accurate regardless of which pre-purchase step the API gates on. Only the user-facing strings change. The internal key and the PaymentInfoError.registrationRequired enum stay (they mirror the backend's REGISTRATION_REQUIRED code per the API authority rule).
199f07b
into
integration/realunit-registration
13 of 14 checks passed
TaprootFreak
added a commit
that referenced
this pull request
May 28, 2026
## Summary Integration branch bundling the RealUnit registration UX improvements so they can land on `develop` as a single coordinated change. Individual feature PRs target this branch as their base; once they have all merged here, this PR is reviewed end-to-end and merged into `develop`. ## Member PRs - **[#599](#599) — feat(i18n): broaden purchase pre-flight message wording** Renames the buy-screen banner from "Registrierung erforderlich" → "Zusätzliche Angaben erforderlich" so KYC-completed users aren't told they need to register again. - **[#600](#600) — feat(realunit): pre-fill registration form from wallet status** Pre-populates the Aktionariat registration wizard from `GET /v1/realunit/wallet/status`, replacing the empty-controllers experience that today forces users to retype data the backend already holds. Pairs with [DFXswiss/api#3782](DFXswiss/api#3782). ## Why bundle Both PRs touch the same screen (RealUnit registration), share goldens, and only deliver their full UX value together — the new wording communicates the right expectation, and the pre-fill makes that expectation accurate. Reviewing them as one end-to-end change at the integration step prevents partial-merge regressions and keeps the goldens in sync. ## Workflow 1. Open each member PR against `integration/realunit-registration` 2. Merge member PRs into this branch as they're approved 3. Review this PR end-to-end against `develop` (full diff = combined member content) 4. Merge into `develop` Empty seed commit will disappear once the member PRs merge in and the branch diverges with real content. --------- Co-authored-by: Blume1977 <jana.ruettimann@dfx.swiss> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Renames the user-facing pre-flight banner on the RealUnit buy screen from "Registrierung erforderlich" / "Registration required" to "Zusätzliche Angaben erforderlich" / "Additional information required".
Why: the previous wording suggests the user is not registered — but every user reaching the buy screen is authenticated and many already hold KYC up to level 50 with DFX. What is actually missing is a separate
RealUnitRegistrationKycStep (Aktionariat shareholder registry entry). The new wording communicates that more accurately without leaking implementation details.Scope
assets/languages/strings_de.arb—registrationRequired,registrationRequiredDescriptionassets/languages/strings_en.arb— same two keysNot changed
registrationRequiredand the Dart enumPaymentInfoError.registrationRequired— these mirror the API'sREGISTRATION_REQUIREDerror code per the API as Decision Authority rule and should track the backend contract, not the UI label.lib/generated/i18n.dartis.gitignored and will be regenerated by CI / contributors viadart run tool/generate_localization.dart.Verification
flutter analyzeclean (one pre-existing warning in generatedi18n.dartis untouched).Follow-up (separate PR)
Even with better wording, the registration screen still starts with empty form controllers and the API rejects any input that doesn't exactly match the user's already-stored DFX data (
realunit.service.ts:614isPersonalDataMatching). Pair-PR planned: API exposes the existing personal data onGET /v1/realunit/wallet/status(server-driven Pre-Tap signal per the new capability design rules), app pre-fills the form from it.