Skip to content

i18n: add Korean (ko) UI localization — full catalog, glossary-checked - #643

Open
riyenas0925 wants to merge 1 commit into
brickbots:mainfrom
riyenas0925:i18n-korean
Open

i18n: add Korean (ko) UI localization — full catalog, glossary-checked#643
riyenas0925 wants to merge 1 commit into
brickbots:mainfrom
riyenas0925:i18n-korean

Conversation

@riyenas0925

@riyenas0925 riyenas0925 commented Sep 6, 2026

Copy link
Copy Markdown

Adds Korean as a selectable UI language. All 696 msgids in the current main catalog are translated (device UI, web UI, SQM/Bortle descriptions), terminology was checked against the Korean Astronomical Society glossary and against everyday Korean amateur-astronomy usage, and the result was verified on a headless PiFinder run.

Background

#500 started Korean support earlier this year but has not been merged, and the string set has moved on since then. Rather than rebase that draft, this PR builds a fresh catalog against today's main. The code side lands on the same approach as #500 (reuse the Sarasa CJK font, restart on language switch, --lang ko, menu entry), so there is no design disagreement — thanks to @hjoungjoo for the groundwork. Happy to coordinate if merging into #500 is preferred.

Translations — 696 entries, 0 untranslated

  • Astronomical nouns follow the Korean Astronomical Society glossary (한국천문학회 천문학용어집): 산개성단, 구상성단, 행성상성운, 암흑성운, 이중성, 별자리, 황도광, 대일조, 대기광, 대암극, 성도, 초점거리, 구경, 극축 정렬.
  • Operational jargon follows what Korean amateur astronomers actually say rather than forced native coinages: plate solving → 솔빙, align → 얼라인 (which also frees 정렬 for sort), eyepiece → 아이피스, mount → 마운트, seeing → 시잉, catalog → 카탈로그, DSO → 딥스카이, reticle → 레티클. EPOCH, Knot, N/A stay in English because no Korean term is in common use.
  • EQ, Alt/Az, RA/Dec and GPS are kept verbatim per the i18n conventions.
  • Named placeholders, leading spaces, embedded newlines and Nerd-Font keypad glyphs are preserved exactly; checked by script.
  • Multi-line hints (polar align, software update, GPS) were re-split across lines to read naturally in Korean word order.
  • Every entry carries the repo's # AI-TRANSLATED (claude): needs human review marker so reviewers can find and clear them. One low-confidence entry (Appeal → 매력도) is also marked #, fuzzy and falls back to English until reviewed.
  • The other four catalogs only gain the two new msgids (Korean, Language: ko).

Code changes

  • main.py, server.py: accept ko in the --lang validation list and the Flask accept_languages list.
  • ui/menu_structure.py: Korean entry in Settings → Language, plus the Language: ko marker string.
  • ui/fonts.py: zh and ko both use sarasa-mono-sc-light-nerd-font+patched.ttf (verified via fontTools that it carries the full Hangul range).
  • ui/callbacks.py: restart after switching to ko, same as zh, since the font set changes.
  • docs/source/menu_map.rst: Korean added to the Language values.

Verification

  • pybabel compile --statistics: 696/696 for de, es, fr, ko, zh.
  • Ran headless (--display headless, 128×128) with language: ko and walked main menu, Settings → Chart/Language/User Pref, Objects → By Catalog, Tools → Equipment, SQM. No missing glyphs, no truncation at base font size.
  • ruff check on the five touched files; pytest -m smoke passes (web/Selenium tests skipped, no grid).

Not addressed here

  • Switching from ko/zh back to a Latin language does not trigger a restart, so the CJK font stays loaded until the next boot. Pre-existing behaviour for zh; left as is.
  • Korean glyphs are double-width, so a few long menu labels sit close to the right edge on the 128 px panel. Nothing clips at the sizes shipped, but the 176 px panel was not screenshot-checked.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WErqKyPNdq326xqryfMJLX

@riyenas0925
riyenas0925 force-pushed the i18n-korean branch 3 times, most recently from 2429f48 to bb7f525 Compare September 6, 2026 01:20
Add Korean as a selectable UI language. All 696 msgids in the current
catalog are translated (device UI, web UI, SQM/Bortle descriptions).
Astronomical nouns follow the Korean Astronomical Society glossary;
operational jargon follows common Korean amateur-astronomy usage
(plate solving -> 솔빙, align -> 얼라인, eyepiece -> 아이피스, ...).
EQ / Alt/Az / RA/Dec / GPS are kept verbatim per the i18n conventions.

Code: accept "ko" in the --lang validation list and the Flask
accept_languages list, add the Korean menu entry, reuse the Sarasa
CJK font for ko as for zh, and restart after switching to ko since
the font set changes. docs: add Korean to the Language values.

Every ko entry carries the AI-TRANSLATED review marker; "Appeal" is
additionally fuzzy. The other four catalogs only gain the two new
msgids ("Korean", "Language: ko").

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WErqKyPNdq326xqryfMJLX
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