Skip to content

feat(i18n): add Korean (ko) translation#52

Merged
Microck merged 2 commits into
Microck:masterfrom
moduvoice:feat/i18n-ko-translation
Jul 10, 2026
Merged

feat(i18n): add Korean (ko) translation#52
Microck merged 2 commits into
Microck:masterfrom
moduvoice:feat/i18n-ko-translation

Conversation

@moduvoice

@moduvoice moduvoice commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Motivation

This adds Korean (ko) translation support — to help Korean-speaking users use this
open-source project more comfortably in their own language.
(한국 사람들의 오픈소스 이용에 도움이 되게 하기 위해서 한글화 작업을 하였습니다.)

Changes

  • Added client-next/messages/ko.json — a complete Korean translation mirroring the exact key structure of client-next/messages/en.json (929/929 keys, same nesting as the existing zh-CN.json).
  • Registered ko in client-next/src/components/language-switcher.tsx: added { code: "ko", label: "한국어" } to the locales list, and added a "한" label for the switcher trigger button.

Testing

  • Programmatically flattened and diffed the key sets of en.json and ko.json: 929/929 keys match exactly (no missing, no extra keys).
  • Verified every {placeholder} token (e.g. {count}, {name}, {error}, {provider}) is preserved identically between en.json and ko.json for each key — 0 mismatches.
  • Ran npx tsc --noEmit, npm run lint, and npm run build inside client-next/ after npm install — all completed successfully. The one pre-existing lint error touching language-switcher.tsx (document.cookie assignment) was confirmed via git stash to already exist on master before this change.

AI Assistance Disclosure

  • agent_name: Claude Code
  • agent_version: 2.1.204
  • model_used: Claude Sonnet 5 (claude-sonnet-5)
  • human_testing: No human manually exercised the running application UI (e.g. clicking through screens with the locale switched to Korean) for this change. The checks that were run — and were run by the AI agent, not a human — are: a script-based key-parity and placeholder-parity diff between en.json and ko.json, npx tsc --noEmit, npm run lint, and npm run build, all of which passed. Flagging this explicitly per this repo's AI disclosure policy rather than claiming testing that did not happen.
  • contribution_summary: Added a complete Korean (ko) translation (929/929 keys) and registered it in the language switcher.

Greptile Summary

This PR adds Korean locale support to the client app. The main changes are:

  • New client-next/messages/ko.json translation catalog.
  • ko registered in the language switcher locale list.
  • Korean trigger label added for the language switcher button.

Confidence Score: 5/5

Safe to merge with minimal risk.

Changes are limited to a new translation catalog and locale registration in the existing switcher path. The message structure and placeholders align with the existing catalog. No functional issues were identified.

No files require special attention.

T-Rex T-Rex Logs

What T-Rex did

  • I started the Korean language switcher test on the setup-required surface and captured the pre-switcher UI state.
  • I attempted to switch to 한국어 and recorded the interaction flow in the Playwright video, which shows the blocker state.
  • I reviewed the backend and Playwright logs and confirmed the ERR_CONNECTION_REFUSED error and a timeout waiting for 한국어.
  • I ran i18n parity and build validations and confirmed the parity checker ran, the TypeScript noEmit step completed with EXIT_CODE: 0, and the Next.js build finished with EXIT_CODE: 0.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
client-next/messages/ko.json Adds the Korean translation catalog with matching structure and preserved ICU-style placeholders.
client-next/src/components/language-switcher.tsx Registers Korean in the language switcher locale list and trigger display without introducing functional issues.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant User
participant LanguageSwitcher
participant BrowserCookie as Browser cookie
participant NextIntl as next-intl request config
participant Messages as messages/ko.json

User->>LanguageSwitcher: Select 한국어 (`ko`)
LanguageSwitcher->>BrowserCookie: "Set `locale=ko`"
LanguageSwitcher->>NextIntl: Refresh route
NextIntl->>BrowserCookie: Read `locale`
NextIntl->>Messages: Import `../../messages/ko.json`
Messages-->>NextIntl: Korean translations
NextIntl-->>User: Render UI in Korean
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant User
participant LanguageSwitcher
participant BrowserCookie as Browser cookie
participant NextIntl as next-intl request config
participant Messages as messages/ko.json

User->>LanguageSwitcher: Select 한국어 (`ko`)
LanguageSwitcher->>BrowserCookie: "Set `locale=ko`"
LanguageSwitcher->>NextIntl: Refresh route
NextIntl->>BrowserCookie: Read `locale`
NextIntl->>Messages: Import `../../messages/ko.json`
Messages-->>NextIntl: Korean translations
NextIntl-->>User: Render UI in Korean
Loading

Reviews (2): Last reviewed commit: "Update client-next/src/components/langua..." | Re-trigger Greptile

Adds a complete Korean translation (929/929 keys, matching en.json's
structure) and registers ko in the language switcher.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 8, 2026

Copy link
Copy Markdown

@moduvoice is attempting to deploy a commit to the Projects Team on Vercel.

A member of the Team first needs to authorize it.

Comment thread client-next/src/components/language-switcher.tsx
Comment thread client-next/src/components/language-switcher.tsx
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@Microck
Microck merged commit 699c546 into Microck:master Jul 10, 2026
1 of 2 checks passed
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