Skip to content

i18n: add Korean (ko) locale support#4347

Closed
moduvoice wants to merge 1 commit into
Hmbown:mainfrom
moduvoice:i18n/add-korean
Closed

i18n: add Korean (ko) locale support#4347
moduvoice wants to merge 1 commit into
Hmbown:mainfrom
moduvoice:i18n/add-korean

Conversation

@moduvoice

Copy link
Copy Markdown
Contributor

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 crates/tui/locales/ko.json with all 752 leaf keys translated to Korean.
  • Added Locale::Ko to crates/tui/src/localization.rs (enum variant, tag, display name, all()/onboarding lists, translated helper strings, parse_locale, test locale-file mapping).
  • Added Locale::Ko match arms in crates/tui/src/tui/setup/mod.rs for the guided constitution/onboarding wizard (freeform principle, evidence, communication style, privacy, autonomy, authority, ratification preview, and related test fixtures) — purely additive, mirroring the existing per-language arms with no changes to shared logic.
  • Added Locale::Ko arms to crates/tui/src/commands/groups/config/config.rs (locale tag display) and crates/tui/src/commands/groups/debug/change.rs (locale display name).
  • Added the Korean option ('9', "ko", "한국어", "(Korean)") to crates/tui/src/tui/onboarding/language.rs.
  • Updated OnboardLanguageFooter in all six existing locale files (en, es-419, ja, pt-BR, vi, zh-Hans) from "Press 1-8" to "Press 1-9" since the onboarding language picker now has 9 options.

Testing

  • cargo check -p codewhale-tui --locked passes clean.
  • Verified programmatically that ko.json has exactly the same 752 leaf keys as en.json (0 missing, 0 extra).
  • Diffed each of the 6 other locale files individually to confirm only the single "1-8" → "1-9" line changed, nothing else.
  • Spot-checked ~50+ translated strings across onboarding, config, settings, help, and the constitution/setup wizard for natural, register-consistent Korean (plain-form UI labels, 합쇼체 for sentences, no banmal).

Adds full Korean translation (752/752 keys) and registers Locale::Ko
throughout the codebase, mirroring the existing vi/ja/zh-Hans/es-419/
pt-BR pattern:

- crates/tui/locales/ko.json: new 752-key Korean translation
- crates/tui/src/localization.rs: Locale::Ko enum variant, code/display
  name, ALL_LOCALES lists, locale-specific string match arms, and
  locale-code parsing
- crates/tui/src/tui/setup/mod.rs: (Locale::Ko, ...) match arms for
  setup-flow strings
- crates/tui/src/commands/groups/config/config.rs: Locale::Ko display
  in `/config` output
- crates/tui/src/commands/groups/debug/change.rs: Locale::Ko display
  name in language switcher
- crates/tui/src/tui/onboarding/language.rs: Korean added as option 9
  in the onboarding language picker
- All 6 pre-existing locale JSON files: fixed onboarding
  OnboardLanguageFooter hint from "Press 1-8" to "Press 1-9" to
  account for the new 9th language option
@moduvoice moduvoice requested a review from Hmbown as a code owner July 11, 2026 12:21
@github-actions

Copy link
Copy Markdown

Thanks @moduvoice for taking the time to contribute.

This repository is observing a maintainer-managed PR intake gate in dry-run mode, so this pull request is staying open. This note helps maintainers prepare the allowlist before any enforcement is considered.

Please read CONTRIBUTING.md for the expected contribution shape. A maintainer can grant recurring PR access by commenting /lgtm on a pull request.

Hmbown pushed a commit that referenced this pull request Jul 12, 2026
Adds full Korean translation (752/752 keys) and registers Locale::Ko
throughout the codebase, mirroring the existing vi/ja/zh-Hans/es-419/
pt-BR pattern:

- crates/tui/locales/ko.json: new 752-key Korean translation
- crates/tui/src/localization.rs: Locale::Ko enum variant, code/display
  name, ALL_LOCALES lists, locale-specific string match arms, and
  locale-code parsing
- crates/tui/src/tui/setup/mod.rs: (Locale::Ko, ...) match arms for
  setup-flow strings
- crates/tui/src/commands/groups/config/config.rs: Locale::Ko display
  in `/config` output
- crates/tui/src/commands/groups/debug/change.rs: Locale::Ko display
  name in language switcher
- crates/tui/src/tui/onboarding/language.rs: Korean added as option 9
  in the onboarding language picker
- All 6 pre-existing locale JSON files: fixed onboarding
  OnboardLanguageFooter hint from "Press 1-8" to "Press 1-9" to
  account for the new 9th language option

Harvested from PR #4347 by @moduvoice
Hmbown added a commit that referenced this pull request Jul 12, 2026
Add canonical GitHub-noreply identities for moduvoice (PR #4347),
qinlinwang (PR #4346), and knqiufan (PR #4348) so the co-author gate can
verify machine-readable credit on the harvested commits. ci4ic4 was
already mapped.
Hmbown added a commit that referenced this pull request Jul 12, 2026
Summarize the underwater interaction system, treatment/motion
independence, compact-room fixes, footer notice ownership, ASCII tier,
and localization parity work in the 0.8.68 changelog section, and credit
the harvested community work: Korean locale (PR #4347 @moduvoice),
Anthropic schema sanitization (PR #4346 @qinlinwang), Anthropic
cache-write pricing (PR #4348 @knqiufan), NetBSD bindgen (PR #4349
@ci4ic4), and the #4208 copy-pollution report (@eugenicum).
@github-actions

Copy link
Copy Markdown

Thanks @moduvoice — your contribution landed in 19f01092e6e4 on main:

i18n: add Korean (ko) locale support

Closing this PR now that the code is on main. Credit lives in the commit message and (where applicable) the CHANGELOG.md entry for the next release. Apologies for not closing this at the time of the merge — the auto-close workflow is new in v0.8.31.

If you want to land more work and would prefer your future PRs merge cleanly without a harvest step, the CONTRIBUTING.md doc has a short note on what makes a contribution mergeable as-is.

@github-actions github-actions Bot closed this Jul 12, 2026
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