Skip to content

feat(app): add Korean (ko) translation for the dashboard (closes #117) - #412

Open
dchaudhari7177 wants to merge 1 commit into
tributary-protocol:mainfrom
dchaudhari7177:feat/korean-locale
Open

feat(app): add Korean (ko) translation for the dashboard (closes #117)#412
dchaudhari7177 wants to merge 1 commit into
tributary-protocol:mainfrom
dchaudhari7177:feat/korean-locale

Conversation

@dchaudhari7177

Copy link
Copy Markdown
Contributor

Closes #117.

Adds a complete ko catalog, the "ko" member of the Language union, ko in the readSavedLanguage allowlist (so a saved preference survives a reload), and a KO option in the language switcher.

Completeness, checked rather than eyeballed

All 103 catalog keys are translated. Verified programmatically against the en catalog:

  • missing in ko: none
  • extra in ko: none
  • {placeholder} parity: no mismatches — every {id}, {amount}, {token}, {count}, {total}, {pct}, {bps}, {address}, {controller} matches its English counterpart

That last check matters more than it looks: t() falls back to the raw key, not to English, when a key is missing —

let text = dict[key as keyof typeof dict] || key;

— so a partial catalog renders identifiers like sharesTotalWarn straight into the UI rather than degrading to English. A dropped placeholder would likewise silently lose the interpolated value.

Translation notes

  • Korean has no plural inflection for these strings, so counts read naturally with the interpolated number (수취인 {count}명).
  • Domain terms use the forms common in Korean crypto UIs: 분할 (split), 에스크로 (escrow), 트러스트라인 (trustline), 베이시스 포인트 (basis points), 테스트넷 (testnet).
  • Product names (Freighter, GitHub, friendbot, XLM, CSV, bps) are left untranslated.

Verification

  • npx vitest run src/lib/i18n.test.tsx12 passed
  • npm run build10 TypeScript errors, identical on pristine main (git stash): all in StreamsCard.tsx / lib/tributary.ts against tributary-sdk, because the SDK workspace isn't built in this checkout. This change adds zero new errors.
  • app/package-lock.json was touched by my local npm install; deliberately not committed.

🤖 Generated with Claude Code

Adds a complete ko catalog, the "ko" member of the Language union, ko to the
readSavedLanguage allowlist so a saved preference survives a reload, and a KO
option in the language switcher.

All 103 catalog keys are translated - verified programmatically against the en
catalog: no missing keys, no extra keys, and every {placeholder} token
({id}, {amount}, {token}, {count}, {total}, {pct}, {bps}, {address},
{controller}) matches its English counterpart exactly. That matters because t()
falls back to the raw KEY rather than to English when a key is absent, so a
partial catalog would render identifiers in the UI.

Korean has no plural inflection for these strings, so counts read naturally
with the interpolated number ("수취인 {count}명").

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.

Add Korean (ko) translation for the dashboard

2 participants