Skip to content

feat: add Korean (ko) language support#291

Open
cskwork wants to merge 1 commit intoHKUDS:mainfrom
cskwork:feat/korean-translation
Open

feat: add Korean (ko) language support#291
cskwork wants to merge 1 commit intoHKUDS:mainfrom
cskwork:feat/korean-translation

Conversation

@cskwork
Copy link
Copy Markdown
Contributor

@cskwork cskwork commented Apr 11, 2026

Summary

Adds Korean (ko) as a selectable UI language alongside the existing English (en) and Chinese (zh). The default remains en — this PR only adds Korean as an option for users who want it.

Hi maintainers! I'm a Korean user who has been enjoying DeepTutor. I translated the entire UI into Korean and would love to contribute it upstream so other Korean users can benefit. Happy to iterate on wording or style if you have preferences.

Changes

Frontend (web/)

  • New locales/ko/app.json — 859 keys, full parity with en/app.json
  • New locales/ko/common.json
  • Extended AppLanguage type union with "ko" in i18n/init.ts, context/AppShellContext.tsx, lib/datetime.ts, and the settings page
  • Settings language picker now offers English / 中文 / 한국어
  • Added ko-KR locale mapping in lib/datetime.ts
  • Added language.korean label to en/common.json and zh/common.json for symmetry

Backend (deeptutor/)

  • UISettings and LanguageUpdate Pydantic Literal extended to accept "ko" (default still "en")
  • _normalize_language recognizes ko / korean / kr aliases

Translation notes

  • Followed the zh/app.json convention of translating feature names (e.g., Deep Solve → 딥 솔브, Vision Solver → 비전 솔버, Co-Writer → 코라이터, Playground → 플레이그라운드)
  • Kept universally-recognized technical acronyms in English (LLM, TTS, RAG, API Key, Base URL, gpt-4o, file paths)
  • Verified 859/859 key parity with en/app.json via a parity check script
  • npx tsc --noEmit passes cleanly in web/

Test plan

  • Select 한국어 in Settings → Appearance and verify the UI switches
  • Verify en / zh remain unaffected
  • Verify the language selection persists across reloads
  • Verify GET /api/v1/settings/ui and PUT /api/v1/settings/ui accept "ko"
  • Spot-check a few screens (Dashboard, Settings, Co-Writer, TutorBot, Solver) for layout regressions with longer Korean strings

Adds Korean as a selectable UI language alongside existing en/zh.
Default language is unchanged (en remains the default).

Frontend
- web/locales/ko/app.json: 859 keys, full parity with en/app.json
- web/locales/ko/common.json: matching common namespace
- Extended AppLanguage type union with "ko" in i18n init,
  AppShellContext, lib/datetime, and settings page
- Settings language picker now offers English / 中文 / 한국어
- Added ko-KR locale mapping for date formatting
- Added "language.korean" label to en/zh common.json for symmetry

Backend
- UISettings and LanguageUpdate Pydantic Literal extended to
  accept "ko" (default still "en")
- _normalize_language recognizes ko / korean / kr aliases
@pancacake
Copy link
Copy Markdown
Collaborator

Thanks for your contribution! Howver, DeepTutor is updating frequently nowadays, so i'll try to merge this when our update frequency is lower.

@pancacake pancacake added the enhancement New feature or request label Apr 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants