Skip to content

feature: i18n/multi-language support for the frontend #152

Description

@tech-adrian

Problem

frontend/src/app/** and frontend/src/components/ui/** have all user-facing copy (labels, error text from friendlyError(), ProgressSteps step names, etc.) written as inline English strings — there's no extraction layer or locale switching, so the app is only usable in English.

Why it matters

A shielded wallet aimed at consumer-grade UX and broad adoption (per README.md) is unnecessarily limited to English-speaking users; this is a straightforward, well-understood gap with no cryptographic or protocol risk, making it a good substantial contribution for someone building frontend familiarity with the codebase.

Scope

  • Add an i18n library (e.g. next-intl or react-i18next) as a frontend/package.json dependency.
  • New frontend/src/messages/en.json plus at least two additional locales (e.g. es.json, fr.json) covering every user-facing string.
  • Extract inline strings from frontend/src/app/deposit/page.tsx, withdraw/page.tsx, compliance/page.tsx, history/page.tsx, and frontend/src/components/ui/*.tsx into the message catalog.
  • frontend/src/lib/errors.ts: route friendlyError() messages through the same catalog so translated errors stay in sync with translated UI.
  • New locale-switcher component in the UI (e.g. added near existing header/nav elements).
  • frontend/src/middleware.ts (new, if using a routing-based i18n library) or equivalent config for locale detection/routing.
  • Tests: a snapshot/lint check that no new hardcoded English string lands outside the message catalog (e.g. an ESLint rule or a script check wired into CI).

Acceptance criteria

  • The full deposit → withdraw → compliance flow is usable in at least two non-English locales with no untranslated strings visible.
  • A CI check catches new hardcoded strings added outside the message catalog going forward.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignenhancementNew feature or requestfrontend

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions