feat(i18n): add Korean locale - #49
Conversation
Add ko-KR as a fifth UI language alongside en-US, zh-CN, zh-TW and ja-JP. - src/locales/ko-KR.json: full translation of every shared key (2,349 strings, aligned with the zh-CN key set) following Apple/Microsoft Korean UI conventions: noun-form labels for controls, polite formal sentences for descriptions and dialogs, endonym language names, single plural segment (no grammatical plural in Korean) except the three-segment zero-case message. - Register the locale in LANGUAGE_IDS / LANGUAGE_OPTIONS (browser prefix `ko`, no localized website path yet), the vue-i18n message graph, the vite locale chunk pattern, check-build-output and check-i18n-usage. - Add `settings.languageNames.koKR` to every locale resource. - Extend i18n and project-website tests with ko-KR expectations. - Add README.ko.md and link it from the other README language menus (screenshots reuse the English assets until Korean ones exist). Validated on macOS 26: pnpm check:frontend (706 tests, build verifies 5 locale chunks; locale-ko-kr chunk 237 KB), cargo test -p mangodisk-core, and a local `tauri build` run through every page in light and dark themes. Windows was not validated. Rust code is unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Thank you for contributing Korean support and for the detailed translation and validation work! The integration looks good overall. I also ran the frontend checks locally: all 706 tests passed, and the build produced all five locale chunks successfully. I noticed one small, non-blocking test coverage gap in To verify the gap, I temporarily set the Korean Thanks again for making MangoDisk more accessible to Korean-speaking users! |
|
CI note: both "Run Rust tests" failures look unrelated to this PR, which does not touch
Happy to rebase or re-run once those are addressed. |
|
Merged via rebase, keeping the history linear and preserving your original authorship and co-author credit. I also added Korean to the shared locale-resource checks in a small follow-up commit: 8ca1919. The full frontend checks pass with all 706 tests, and I verified that an empty Korean translation now correctly fails the validation test. Thank you for the thorough Korean translation, documentation, and the helpful investigation into the CI failures! The existing Rust test failures still need separate follow-up. I appreciate your contribution to making MangoDisk accessible to Korean-speaking users. |
Purpose
Add Korean (ko-KR) as a fifth UI language. macOS in Korean currently falls back to English because
kohas no locale registered; Korean users now get a native UI automatically and can also pick 한국어 in Settings.Changes
src/locales/ko-KR.json— full translation of every shared key (2,350 strings: the 2,349 existing keys plussettings.languageNames.koKR). Style follows Apple/Microsoft Korean UI conventions: noun-form labels for controls, polite formal sentences (합쇼체) for descriptions/dialogs, endonym language names, official OS terms (전체 디스크 접근 권한, 시스템 설정, 로그인 항목, 작업 표시줄, 파일 탐색기 …). Plural messages use a single segment (Korean has no grammatical plural), except the three-segment zero-case message which keeps all three.LANGUAGE_IDS.koKR/LANGUAGE_OPTIONS(browser prefixko,websitePath: ''becausemangodisk.app/kodoes not exist yet),src/i18n.ts,src/locales/modules/ko-kr.ts,vite.config.tslocale chunk pattern,scripts/check-build-output.mjs,scripts/check-i18n-usage.mjs.settings.languageNames.koKRadded to all five locale files.src/i18n.test.ts(label map,resolveSupportedLanguage(['ko-KR'])/['ko'], plural interpolation) andsrc/lib/utils/project-website.test.ts.README.ko.md+ Korean link in the language menu of the other READMEs. It reuses the English screenshot assets; swap toscreenshots/ko/*once they exist.Expected Impact
Korean-language users get a fully localized app (all pages, dialogs, cleanup rule names/descriptions/impacts, AI panel). No behavior change for other locales; Rust code is untouched (
valid_language_tagalready acceptsko-KR).Validation
pnpm check:frontend— source-architecture, i18n usage, style-system, lint (0 warnings), prettier, vitest 133 files / 706 tests, build (check-build-outputverifies 5 locale chunks;locale-ko-krchunk 237 KB, under the 280 KB limit)cargo test --manifest-path src-tauri/Cargo.toml -p mangodisk-core— 636 passedpnpm check— every frontend stage andrust:fmt:checkpass;rust:clippyfails on my machine with two clippy-1.98-only lints (chunks_exact_to_as_chunks,map_or_identity) inmangodisk-platformthat reproduce on unmodifiedmain(Homebrew Rust 1.98 vs the pinned 1.88 toolchain), so they are out of scope here.pnpm tauri build --bundles app --no-signon macOS 26 (Apple silicon): every page, the Settings language picker, About/update dialog and AI settings were checked in light and dark themes; a Korean macOS picks ko-KR automatically on first launch and switching languages applies immediately.Risks
websitePathis empty, so the About dialog links to the English site for Korean users until a/kopage exists.Next Steps
/kowebsite route sowebsitePathcan point to it.