Skip to content

i18n: add Korean (ko) translation#578

Open
moduvoice wants to merge 2 commits into
iflytek:mainfrom
moduvoice:i18n/add-korean
Open

i18n: add Korean (ko) translation#578
moduvoice wants to merge 2 commits into
iflytek:mainfrom
moduvoice:i18n/add-korean

Conversation

@moduvoice

Copy link
Copy Markdown

Korean (ko) translation PR body template

Motivation

This adds Korean (ko) translation support — to help Korean-speaking users use this
open-source project more comfortably in their own language.

한국 사람들의 오픈소스 이용에 도움이 되게 하기 위해서 한글화 작업을 하였습니다.

Changes

  • Add web/src/i18n/locales/ko.json with a full Korean translation (1340 keys, 1:1 parity with en.json)
  • Register ko in web/src/i18n/config.ts i18next resources
  • Add Korean (한국어) to the language switcher in web/src/shared/components/language-switcher.tsx

Testing

  • Programmatic key-parity check: en.json and ko.json both have exactly 1340 keys, 0 missing/extra
  • Programmatic interpolation/tag check: all {{variable}} placeholders and <1>...</1> style tags match between en.json and ko.json
  • pnpm vitest run — 180 files / 609 tests passing
  • pnpm typecheck (tsc --noEmit) — clean
  • pnpm lint (eslint) — clean
  • Manual spot-check of terminology consistency across the file (스킬/에이전트/네임스페이스/거버넌스/승격/즐겨찾기/보관/복원/동결/회수 etc.), confirming consistent usage throughout
  • Confirmed the hardcoded bilingual (zh/en) legal-text components (login, terms, privacy, notification-content) are intentionally left untouched, as they are out of scope for this i18n-resource-based translation

Adds a complete Korean locale (web/src/i18n/locales/ko.json) mirroring
the full key structure of en.json (1340 leaf keys, 0 missing/extra),
with interpolation placeholders and inline tags verified to match
exactly. Registers ko in the i18next resource map (i18n/config.ts)
and the language switcher dropdown (LanguageSwitcher).

Verified with:
- python key-set diff (en vs ko): 0 missing, 0 extra
- python placeholder/tag diff ({{var}}, <1>...</1>): 0 mismatches
- pnpm vitest run (full suite): 180 files / 609 tests passed
- tsc --noEmit: no errors
- eslint on changed files: no issues
search.sort.stars was translated as "평점" (rating) instead of a
star-count term, conflating it with the separate rating concept used
elsewhere (e.g. skillDetail.rating). Changed to "즐겨찾기순" for
consistency with the "즐겨찾기" (starred) terminology used across the
other 60+ star-related keys in this file.
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

1 similar comment
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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