← Back to PRs

#22570: feat(i18n): add Korean (ko) locale to Control UI

by hoonsikim open 2026-02-21 09:25 View on GitHub →
app: web-ui size: L
## Summary - Add full Korean (ko) locale to the gateway Control UI - Auto-detect Korean browsers via `navigator.language` - Add `languages.ko` entry to all existing locale files (en, zh-CN, zh-TW, pt-BR) ## Translation policy - Menu/tab names stay in English (Chat, Overview, Channels, etc.) - Descriptions, hints, and UI labels translated to Korean - Technical terms (WebSocket, Gateway Token, Tailscale) remain in English ## Changes | File | Change | |------|--------| | `ui/src/i18n/lib/types.ts` | Add `"ko"` to `Locale` union | | `ui/src/i18n/lib/translate.ts` | `SUPPORTED_LOCALES`, auto-detect, dynamic import | | `ui/src/i18n/locales/ko.ts` | **New** — complete Korean translation | | `ui/src/i18n/locales/en.ts` | Add `languages.ko` | | `ui/src/i18n/locales/zh-CN.ts` | Add `languages.ko` | | `ui/src/i18n/locales/zh-TW.ts` | Add `languages.ko` | | `ui/src/i18n/locales/pt-BR.ts` | Add `languages.ko` | | `ui/src/ui/views/overview.ts` | Add `<option value="ko">` to dropdown | ## Test plan - [ ] Verify ko.ts key structure matches en.ts exactly - [ ] Build passes (`vite build` in `ui/`) - [ ] Language dropdown shows 한국어 option - [ ] Selecting Korean switches all UI text - [ ] Korean browser auto-detects locale on first visit - [ ] Fallback to English works for missing keys <!-- greptile_comment --> <h3>Greptile Summary</h3> Adds complete Korean (ko) locale support to the gateway Control UI. The implementation properly adds `"ko"` to the `Locale` type union, updates the supported locales array, adds auto-detection for Korean browsers via `navigator.language`, and includes the dynamic import for lazy-loading Korean translations. All existing locale files have been updated to include the `languages.ko` entry, and the language dropdown in the Overview view now includes the Korean option. - Translation structure matches the English baseline exactly with all required keys - Follows the stated translation policy: menu/tab names remain in English, descriptions/hints/labels are translated - Technical terms (WebSocket, Gateway Token, Tailscale) preserved in English as specified - Auto-detection logic correctly identifies `"ko"` prefixed locales - Lazy-loading implementation follows the existing pattern for other locales <h3>Confidence Score: 5/5</h3> - This PR is safe to merge with minimal risk - The changes are purely additive (adding a new locale) with no modifications to existing logic. The Korean translation file follows the exact structure of other locale files, all necessary integration points have been updated (type definition, supported locales array, auto-detection, dynamic import, UI dropdown), and the implementation is consistent with the existing i18n pattern used for other languages. - No files require special attention <sub>Last reviewed commit: b5ee1b0</sub> <!-- greptile_other_comments_section --> <sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub> <!-- /greptile_comment -->

Most Similar PRs