Skip to content

feat(i18n): localize the login flow (sign-in / sign-up / account / profile) - #127

Merged
os-zhuang merged 1 commit into
mainfrom
feat/i18n-auth-account
Jun 11, 2026
Merged

feat(i18n): localize the login flow (sign-in / sign-up / account / profile)#127
os-zhuang merged 1 commit into
mainfrom
feat/i18n-auth-account

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

i18n P0+P1 — login flow

The largest untranslated surfaces from the i18n audit.

P0 — auth screens (were 0% i18n'd)

sign-in.tsx and sign-up.tsx had zero t() calls — the first thing a signed-out user sees. Expanded the auth namespace and wired both:

  • Welcome/subtitles, field labels + placeholders, show/hide-password a11y, button + loading states (Signing in… / Creating account…), SSO Continue with {{provider}}, and every validation/error message.
  • SSO brand names (Google/Apple/GitHub) stay literal; only surrounding copy is translated.

P1 — account + profile

  • New account namespace covering Profile / Email / Password / 2FA — every section title, field, placeholder, button, and toast — wired into account.tsx (was ~3 t() in 306 lines).
  • profile.tsx localized (sign-out flow reuses existing more.* keys; placeholder buttons added).

Parity & tests

All three locales at full key parity (zh/ar have every en key, ignoring CLDR plural variants). tsc + lint clean, full suite 1337 passing.

Verified

Browser (zh, dark): the account screen renders fully in Chinese — 账户 / 个人资料 / 姓名 / 保存资料 / 邮箱 / 当前:…(未验证) / 新邮箱 / 密码 / 至少 8 个字符. (Sign-in/up can't be viewed while signed in — redirected — but are pure text swaps, tsc-clean.)

🤖 Generated with Claude Code

These were the largest untranslated surfaces: sign-in.tsx and sign-up.tsx had
zero t() calls (the first screens a signed-out user sees), and account.tsx was
almost entirely hardcoded English.

- Expand the `auth` namespace (welcome/subtitles, field labels + placeholders,
  show/hide-password, button + loading states, SSO "Continue with {{provider}}",
  and all validation/error messages) and wire both auth screens.
- Add an `account` namespace covering profile / email / password / 2FA — every
  section title, field, placeholder, button, and toast — and wire account.tsx.
- Localize profile.tsx (sign-out flow via existing more.* keys + the placeholder
  buttons).
- SSO provider brand names (Google/Apple/GitHub) stay literal; only surrounding
  copy is translated.

All three locales kept at full key parity (zh/ar have every en key). tsc + lint
clean, full suite 1337 passing. Verified the account screen renders fully in zh.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@os-zhuang
os-zhuang merged commit e2f76e4 into main Jun 11, 2026
@os-zhuang
os-zhuang deleted the feat/i18n-auth-account branch June 11, 2026 12:45
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.

1 participant