Skip to content

feat: add Traditional Chinese UI and persistent language switching - #67

Merged
diwenne merged 1 commit into
diwenne:mainfrom
dada878:feat/traditional-chinese-ui
Sep 21, 2026
Merged

diwenne merged 1 commit into
diwenne:mainfrom
dada878:feat/traditional-chinese-ui

Conversation

@dada878

@dada878 dada878 commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

Adds English/Traditional Chinese language switching to the dashboard, authentication screens, workspace invitations, and shared campaign reports. English remains the default; a validated cookie lets the server render the saved preference on subsequent visits. Switching languages preserves unsaved campaign fields and never translates outgoing messages or stored API values.

The implementation uses a typed, centralized catalog and React context without new dependencies. Providers stay below the root layout so marketing and template pages remain static. Includes contribution documentation and 11 locale tests.

Validation

  • npm run typecheck
  • npm run lint (no warnings)
  • npm test with local TEST_DATABASE_URL: 27 files, 296 tests passed, including Postgres integration tests
  • npm run build
  • Browser checks: language persistence after reload, unsaved editor values and selected post, mobile sidebar at 390px, localized metadata/report dates, and English marketing pages

Marketing and legal copy, template playbooks, authentication emails, and raw provider errors remain English. Existing campaign defaults and customer-authored content remain unchanged.

@vercel

vercel Bot commented Sep 20, 2026

Copy link
Copy Markdown

@dada878 is attempting to deploy a commit to the diwenne's projects Team on Vercel.

A member of the Team first needs to authorize it.

@diwenne diwenne left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed by Hermes Agent.

Verified locally (not just PR claims):

  • tsc --noEmit: clean
  • eslint: no warnings
  • vitest (i18n suite): 11/11 passed
  • next build: succeeds; marketing/template pages confirmed static, dashboard/auth routes confirmed dynamic as described

Scope is clean — t() only ever wraps static string literals, never user-supplied content used as a translation key. Cookie is httpOnly/sameSite=lax/secure-in-prod with server-side validation and English fallback. No schema changes, no new deps. Vercel check failure is just an auth-to-deploy gate, not a build/test failure.

LGTM, merging.

@diwenne
diwenne merged commit 5760181 into diwenne:main Sep 21, 2026
1 check failed
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.

2 participants