Merge upstream main into ka

Georgian joins the shared i18n tests #2013 introduced (locale table, look-alike codes,
font coverage for scripts egui's bundled faces lack) in place of its own copies. The
can_show gate and the language command's no-font message for ka match #1971, so this
branch alone keeps the interface in English without a Georgian face.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YMTAbGNRxnMEzRvYnQGphF
This commit is contained in:
Davit Matchakhelidze
2026-10-23 23:47:03 +04:00
co-authored by Claude Opus 5.5
301 changed files with 905 additions and 1484 deletions
+8 -8
View File
@@ -30,8 +30,8 @@ selection. Resetting palettes keeps the language choice.
The catalogs cover command and menu labels, tool groups and tooltips, the Start page,
file and model-space tabs, status controls, object snaps, drafting prompts, property labels,
dialogs, and the About window's controls. The command reference can be searched by English
command ID, English label, or translated label. Ukrainian has enforced coverage;
missing entries in the other catalogs are reported by tests and fall back to English.
command ID, English label, or translated label. A missing entry falls back to English and
never fails a build; `cargo xtask i18n` (a step of `cargo xtask ci`) lists each language's.
Czech has 1,202 catalog rows, covering the reference catalog and every marked UI
literal, including Options. Four `menu` entries distinguish menu headings from object/command
@@ -153,14 +153,14 @@ The implementation follows the display-time catalog pattern used by
- Windows retain explicit IDs based on their English source, and tool groups retain their
source names as keys, so switching languages preserves their state.
- Add a translation attribution row in `ATTRIBUTION.md`, update the language lists, and add
locale, plural, font-glyph and live-switch tests. Add the catalog to `REPORTED` in
`i18n/tests.rs`: only Ukrainian, the reference translation, is in `REQUIRED`, so adding a
command needs a row in one language, not in all of them.
the language's locale tags and plural rule. The rendering, font-glyph and live-switch tests
run for every catalog; no test checks one language's wording, and adding a command needs
only its English label.
- Catalogs are embedded and parsed once. Missing or malformed rows cannot crash the app;
tests reject invalid rows, duplicate keys, changed placeholders, and mismatched ellipses.
- `cargo test -p cadcraft-ui-egui i18n` checks menu/command/tool/snap coverage, every marked
UI literal, locale resolution, preferences, integer plurals, bundled glyphs and actual
egui renders with language switching. `cargo xtask assets` checks asset attribution;
- `cargo test -p cadcraft-ui-egui i18n` checks the catalogs, locale resolution, preferences,
integer plurals, bundled glyphs and actual egui renders with language switching.
`cargo xtask i18n` prints the strings each language shows in English. `cargo xtask assets` checks asset attribution;
`cargo xtask ci` runs the workspace quality gates.
Translations are original work under `MIT OR Apache-2.0`, written from the meaning of