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

2 participants