Skip to content

feat: add Korean (ko) translation support#1144

Open
moduvoice wants to merge 1 commit into
codexu:devfrom
moduvoice:feat/ko-i18n-translation
Open

feat: add Korean (ko) translation support#1144
moduvoice wants to merge 1 commit into
codexu:devfrom
moduvoice:feat/ko-i18n-translation

Conversation

@moduvoice

Copy link
Copy Markdown

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 messages/ko.json with a complete Korean translation of every key in messages/en.json (2341 keys, full parity), covering settings, records, chat/agent, editor, sync, and mobile UI strings.
  • Added messages/common/ko.json with Korean translations for the shared common namespace (39 keys).
  • Registered ko in SUPPORTED_LOCALES in src/i18n/config.ts so it is recognized by isSupportedLocale/normalizeLocale and loaded via loadMessagesWithFallback.
  • Added the "한국어" option to the language selector in src/app/core/setting/general/interface-settings/language.tsx.
  • Added a Korean (dayjs/locale/ko) mapping in src/components/sync-confirm-dialog.tsx so relative commit timestamps also render in Korean when the app locale is ko (mirroring the existing zh/ja/pt-BR handling).
  • All ICU placeholders (e.g. {count}, {name}, {provider}) were preserved exactly. For the few plural-form strings in the English source, Korean has no grammatical plural, so they were translated as plain {count}-based strings, matching the existing convention used by ja.json/zh-TW.json for the same keys.

Testing

  • Verified messages/ko.json and messages/common/ko.json are valid JSON and have exact leaf-key parity with messages/en.json / messages/common/en.json (no missing or extra keys) via a Python script.
  • Verified all ICU placeholders in each string are preserved between the English source and the Korean translation.
  • Ran next lint (via eslint) on the changed TypeScript files — no errors.
  • Ran tsc --noEmit — no type errors.
  • Ran a full next build --turbopack production build — completed successfully with all 52 routes generated, confirming the new locale files are picked up correctly by the dynamic import(\../../messages/${locale}.json`)` loader with no build-time issues.

Disclosure: this translation was produced with AI assistance (Claude) and reviewed for key parity and placeholder correctness before submitting.

Add full Korean UI translation (messages/ko.json, messages/common/ko.json)
and register the ko locale in src/i18n/config.ts and the language selector,
following the same pattern used for existing locales (en/zh/zh-TW/ja/pt-BR).
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.

1 participant