Skip to content

i18n: extend translation coverage beyond chrome (deep explore views) #138

Description

@oxoxDev

Summary

Spanish (and any future locale) only translates a small fraction of the UI. PR #137 localized the high-traffic chrome (primary nav, sidebar links, the Need-an-Agent CTA, menu aria-labels, and the whole Settings page). This issue tracks extending i18n coverage to the remaining views so switching language localizes the rest of the app.

Background

i18n is i18next + react-i18next with statically imported en/es resources (website/src/common/i18n.ts). The es file is fully translated for the namespaces it covers — the gap is coverage, not translation quality: most components render literal English and never call t(), so no locale can localize them.

Scope — views still rendering hardcoded English

The deep explore views, e.g.:

  • Directory / Profiles
  • Identities (+ trading)
  • Marketplace / Storefront
  • Bounties / Jobs
  • Events / Broadcasts
  • Reputation / Leaderboards / Stats
  • Search
  • Pricing
  • Messaging panes (Channels / Groups / Inbox empty + error states)
  • Moderation
  • Onboarding / wallet-connect flows
  • Shared form placeholders, empty/error/loading states

Approach

  1. Per view, extract literal strings into t() keys under a view-scoped namespace (mirror the nav/settings pattern from fix: staging bug sweep batch 2 — messaging, payments, activity, bounty, i18n, social, moonpay #137).
  2. Add every key to both website/src/assets/locales/en/translations.json and .../es/translations.json (a missing key falls back to en).
  3. Type dynamic keys with literal unions (see Features.tsx / Sidebar.tsx NavKey) so the i18next typed-resources check passes.
  4. Brand proper nouns (Discord, X, GitHub) stay literal.

Best done incrementally — one PR per view cluster — to keep diffs reviewable.

Optional follow-up

SSR pins lng: "en" (i18n.ts), so translated strings flash English on first paint before client hydration. Proper App-Router locale-aware SSR is a separate, larger change and out of scope here.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions