Repository navigation
Add Korean on the Mac and on Windows - #305
Conversation
Every key in the catalog now has a Korean value — 842 of 842, including 37 release-note strings that had no catalog entry at all. Korean joins the Language picker as 한국어 and the bundle's localizations. Terms follow the Korean the Windows tray already spoke (후크, 새로 고침, 설정…, 종료) and macOS conventions elsewhere. Watch limit and Critical limit read 주의 표시 기준 / 위험 표시 기준: they are the points where a ring changes colour, not a quota. Product names, units and language names stay as written. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The hover card gets a Korean table like the ones Ukrainian, Russian and both Chinese already have, so a Korean machine no longer shows a translated tray above an English card. The tray fills in the keys Korean was missing — Refresh now, Open %@, Current session, Included usage, API usage, limit names, reset countdowns — and Settings gets its last three untranslated strings. The card's "Updated 20m ago" line moves from a dictionary prefix to a per-language formatter, beside the reset ones: Korean puts the time first (20분 전에 마지막 업데이트됨), which a prefix cannot say. The other languages keep their word order. Existing Korean is brought in line with the Mac catalog: reading is 측정값 throughout, Off is 끄기, Medium is 중간. A node test drives the card's own lookup and formatters in Korean, and the tray test checks that card and tray agree on every shared name. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The catalog conflict with #305 was resolved structurally rather than by hand: the post-Korean catalog kept its order and the 590 uz values were grafted onto it, so neither language's entries moved. Two things of mine are in this commit rather than beside it: - Uzbek orthography. Uzbek Latin writes oʻ and gʻ with U+02BB and the glottal stop with U+02BC; an ASCII apostrophe is neither and reads as a typewriter mark. Normalised 233 values and the language's own name in the picker. - Four full-screen fold tests now use the pointer check this file already provides. handleActiveSpaceOrAppChange deliberately refuses to fold out from under the cursor, so those tests assert nothing when the notch has landed beneath it — which depends on what earlier tests left in Preferences, not on the test. They passed alone and failed in the full suite once 12 tests were added ahead of them. Thanks @SunnatilloDev.
|
Merged as The rest held up on inspection: the positional Two things you should know happened around this merge:
One small thing I left alone: you changed Windows 1,734 tests green, all four CI workflows green. |
Adds the release note's own strings to the catalog this time. 1.16.0's notes went out as L10n.t literals with no catalog entries, so they were English in every language until #305 noticed.
Also adds the 37 release-note keys the catalog was missing against ReleaseNotes.swift, so Korean covers every real call site rather than a stale snapshot of the file. Thanks @progh2.
The catalog conflict with vinzdg#305 was resolved structurally rather than by hand: the post-Korean catalog kept its order and the 590 uz values were grafted onto it, so neither language's entries moved. Two things of mine are in this commit rather than beside it: - Uzbek orthography. Uzbek Latin writes oʻ and gʻ with U+02BB and the glottal stop with U+02BC; an ASCII apostrophe is neither and reads as a typewriter mark. Normalised 233 values and the language's own name in the picker. - Four full-screen fold tests now use the pointer check this file already provides. handleActiveSpaceOrAppChange deliberately refuses to fold out from under the cursor, so those tests assert nothing when the notch has landed beneath it — which depends on what earlier tests left in Preferences, not on the test. They passed alone and failed in the full suite once 12 tests were added ahead of them. Thanks @SunnatilloDev.
Adds the release note's own strings to the catalog this time. 1.16.0's notes went out as L10n.t literals with no catalog entries, so they were English in every language until vinzdg#305 noticed.
Also adds the 37 release-note keys the catalog was missing against ReleaseNotes.swift, so Korean covers every real call site rather than a stale snapshot of the file. Thanks @progh2.
The catalog conflict with vinzdg#305 was resolved structurally rather than by hand: the post-Korean catalog kept its order and the 590 uz values were grafted onto it, so neither language's entries moved. Two things of mine are in this commit rather than beside it: - Uzbek orthography. Uzbek Latin writes oʻ and gʻ with U+02BB and the glottal stop with U+02BC; an ASCII apostrophe is neither and reads as a typewriter mark. Normalised 233 values and the language's own name in the picker. - Four full-screen fold tests now use the pointer check this file already provides. handleActiveSpaceOrAppChange deliberately refuses to fold out from under the cursor, so those tests assert nothing when the notch has landed beneath it — which depends on what earlier tests left in Preferences, not on the test. They passed alone and failed in the full suite once 12 tests were added ahead of them. Thanks @SunnatilloDev.
Adds the release note's own strings to the catalog this time. 1.16.0's notes went out as L10n.t literals with no catalog entries, so they were English in every language until vinzdg#305 noticed.
Summary
Korean joins the Mac catalog and the Language picker, and the Windows port's card, tray and Settings finish the Korean they had started. Same shape as #250 (Traditional Chinese on both platforms), with the release-note keys filled in the way #252 did for Japanese.
Every key in
Sources/Localizable.xcstringsnow has a Korean value — 842 of 842 — including 37 release-note strings (1.12 through 1.14) that had no catalog entry at all.Changes
The Mac
koadded toCFBundleLocalizations;AppLanguageoffers 한국어, following Add Traditional Chinese on the Mac and on Windows #250.state: translated.AppLanguageTests,CatalogCoverageTests,CatalogFormatTestsandLocalizationTests, mirroring the Traditional Chinese ones.Windows
notch.htmlgets a KoreanTEXT,PATTERNSandUItable, as Ukrainian, Russian and both Chinese already have, so a Korean machine no longer shows a translated tray above an English card.UIformatter beside the reset ones, because Korean puts the time first (20분 전에 마지막 업데이트됨) and a dictionary prefix cannot. The other languages keep their word order; theirUpdateddictionary rows move into the formatter.i18n.rsfills inrefresh_nowandopen_host;traymenu.rsfills inCurrent session,Included usage,API usage, the limit names and the reset countdowns. The comments saying the Mac catalog had no Korean are gone, because it now does.settings.htmlgets its last three untranslated strings, and the existing Korean is brought in line with the Mac catalog (reading is 측정값 throughout, Off is 끄기, Medium is 중간).windows/scripts/test-ko-i18n.cjsdrives the card's owntextCopyandUIformatters in Korean; it runs in the Windows workflow after the existing UI checks.Translation notes
Watch limitandCritical limitread 주의 표시 기준 / 위험 표시 기준 ("display threshold for caution / danger"): they name the points where a ring turns amber and red, not a quota — the same reading Japanese (しきい値) and Ukrainian (поріг) took.%2$@ 한도의 %1$lld%%를 사용했습니다.), as the Traditional Chinese one does since 1.13.1.What this does not touch
Only
kois added. No other language's value is modified — verified at the JSON level, along with the existing key set and its order (the 37 new keys are appended after the last existing one).Test Plan
make test-ci) — not run: this was prepared on Linux without Xcode. The four new Mac tests are written against the catalog values with the same helpers Add Traditional Chinese on the Mac and on Windows #250's tests use; CI will be the first to run them.%@/%lld/%%counts (positional forms normalised), no empty strings,state: translated, and no change to any other language's value or to the key order.node scripts/check-ui-scripts.mjs,node scripts/test-claude-auth-ui.cjs,node --test scripts/test-ko-i18n.cjspass.i18nandtraymenuunit tests pass (17/17, including the new Korean ones and the card-and-tray agreement check) when the two modules are compiled on their own; the fullcargo testneeds a Windows toolchain, so the Windows workflow will be the first to run it.Screenshots / Screen Recordings
None — no layout change; Korean strings only. Happy to add screenshots from a Korean Mac if a reviewer wants to see any pane in particular.
🤖 Generated with Claude Code