feat(i18n): add Korean (ko) translation for the CLI/TUI#6356
Merged
Conversation
The CLI/TUI had locales for en, zh-CN, and uk only; Korean users saw the entire terminal interface (launcher, init wizard, all TUI screens, doctor, status) in English even though the dashboard and backend error catalog already shipped ko. Add locales/ko/main.ftl mirroring en/main.ftl exactly — same key order, comments, multiline blocks, and plural selectors — covering all 1906 message keys. Brand names, shell commands, identifiers, and config keys are intentionally left untranslated. Wire ko into i18n.rs (KO_FTL, SUPPORTED_LANGUAGES, bundle_for) and add renders_korean_translation, which fails closed if the bundle does not parse (a parse error makes init fall back to English).
houko
enabled auto-merge (squash)
June 29, 2026 05:13
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the Korean (
ko) locale for the CLI / TUI.Before this PR,
crates/librefang-cli/locales/shipped onlyen,zh-CN, anduk.Korean users saw the entire terminal surface — the launcher, the
initwizard, every TUI screen (agents, workflows, triggers, memory, extensions, skills, dashboard),doctor, andstatus— in English, even though the dashboard SPA and the backend error catalog already had Korean.This was the last runtime surface without
ko.Changes
crates/librefang-cli/locales/ko/main.ftl— all 1906 message keys, translated.en/main.ftlexactly: identical key order, section comments, multiline value blocks, and the four{ $count -> [one] … *[other] … }plural selectors. A new key added toenshows up as a one-line diff againstko.kointocrates/librefang-cli/src/i18n.rs: addKO_FTL, extendSUPPORTED_LANGUAGES, and add thebundle_formatch arm — the same three-point pattern the other locales use.detect_system_language()now also resolves ako*system locale.renders_korean_translationnext to the existing zh/uk tests. It fails closed: a Fluent parse error inko/main.ftlmakesinit("ko")fall back to English, so the assertion catches a malformed bundle.What is intentionally left in English
Brand / product names (OpenAI, Telegram, Claude Code, …), shell commands and anything copy-pasteable (
librefang start,pip install librefang-sdk,librefang auth pool add …), CLI flags, config keys and file names (agent.toml,secrets.env,manifest.json), URLs, env vars, trigger-type enum names (AgentSpawned,Webhook, …), and single-token identifiers (API,ID,URL,PID).Keyboard hints keep their key tokens (
↑↓,j/k,Enter,Esc,PgUp) and translate only the action words.Verification
ko/main.ftlre-parsed with the same message/comment/blank tokenizer yields a record skeleton identical toen/main.ftl(same 1906 keys, same comments, same multiline / selector blocks) — 0 structural drift.{ $var }multiset matches the English source for every one of the 1906 keys — 0 mismatches.koandeneach have 807{/ 807}— no stray Fluent braces introduced.[one]/*[other]variants are preserved verbatim in all four count messages.renders_korean_translation(runs in the unit-fast CI lane) validates that the bundle parses and loads.Notes
These are first-pass translations following the glossary established for the dashboard and error-catalog Korean work; a native Korean-speaker review before the next release is welcome.