Files
gridcraft/docs/localization-parity.md
T
LosminekandClaude Sonnet 5.5 819dc49c44 Merge origin/main into cs-pr
Upstream added German (de) in the meantime, in the same places where the
Czech language is registered (module list, Language enum and ALL, name,
code, tag parsing, translate, tests, theme font loop, control protocol
list). Both languages kept, German first. contributors/people.toml, the
ROADMAP and docs/localization-parity.md counters: all entries kept.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 18:16:03 +02:00

5.7 KiB
Raw Blame History

Localization parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-11 · Change: minor (German and Czech ribbon tables added) · Target: Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4

Per-language status against Excel, which ships its UI in dozens of languages (Windows language packs cover 100+), with localized function names, argument separators, number and date formats, right-to-left sheets and full complex-script support. Part of target-app-parity.md. Localization: ~10% ready, 100–165 h (estimated).

Where we are (measured from source on main, after the 2026-10-10 merges)

  • A first catalog exists, for the ribbon only. crates/ui-egui/src/i18n.rs (merged 10-10 in #31, #104, #82; German added 10-11, Czech 10-11) adds an interface-language preference that defaults to the system language (closes #20) and a View-tab switcher, with English-keyed lookup tables: Japanese 268 labels, Simplified Chinese, Korean, Russian, Brazilian Portuguese, German and Czech 266 each. The tables are used by the ribbon, sheet tabs and widgets (ribbon.rs, tabs.rs, widgets.rs); dialogs, menus, context menus, task panes, status messages, command labels and function descriptions are still English literals. Untranslated labels fall back to English.
  • About 2,200 user-visible strings in all (heuristic source scan: ~1,700 UI and command strings plus ~500 function descriptions), so each shipped language covers ~12% (measured count / estimated total).
  • en-US only formulas and formats. Function names, , argument separator, . decimal separator, en-US number and date formats (crates/numfmt says "en-US only"). Users ask for localized function names and ; separators (#45). German with localized numbers and formulas is in PR #163 (open).
  • Script support. System-font fallback for CJK, Thai and Hebrew landed in #38 (closes #32; #142 is still open pending confirmation). There is no complex-text shaping: Arabic and Devanagari don't join or reorder, and there is no bidirectional layout. Sheet Right-to-Left is a stored flag (view.rightToLeft) but the grid doesn't mirror (#146). IME input goes through egui/winit and is unverified for Chinese, Japanese and Korean.
  • PDF export uses only the 14 standard PDF fonts: non-Latin text cannot export.

Languages

UI strings translated are measured counts against the ~2,200 estimate. Estimates to full include the rest of the catalog work below (10–20 h, counted once), localized function names, separators, number/date formats, machine translation with agent review, and script work.

Language Code UI strings translated Dialogs / tooltips / help Script support Native review Status Estimate to full
English en ~2,200 / ~2,200 (100%, source) yes Latin: yes yes full —
Simplified Chinese (Mandarin) zh-Hans 266 (~12%) no CJK system-font fallback (#38); IME unverified; PDF can't export no menus only 8–13 h
Spanish es 0 (0%) no Latin: yes no none 6–10 h
Hindi hi 0 (0%) no Devanagari: no shaping no none 12–18 h
Arabic ar 0 (0%) no no shaping, no RTL UI, RTL sheet flag not rendered (#146) no none 25–35 h
French fr 0 (0%) no Latin: yes no none 6–10 h
Portuguese pt-BR 266 (~12%) no Latin: yes no menus only 4–8 h
Indonesian id 0 (0%) no Latin: yes no none 5–8 h
Japanese ja 268 (~12%) no CJK system-font fallback; IME unverified; no furigana display no menus only 8–12 h
German de 266 (~12%) no Latin: yes no menus only 4–8 h
Korean ko 266 (~12%) no Hangul via the CJK fallback; IME unverified no menus only 6–10 h
Vietnamese vi 0 (0%) no Latin with stacked diacritics: unverified no none 6–10 h

Other shipped languages: Russian (ru), German (de) and Czech (cs), 266 labels each (~12%), menus only. Czech formulas stay en-US (no Czech function names, ; separator or decimal comma yet).

Total: catalog work 10–20 h + languages 92–144 h ≈ 100–165 h. Parallelizes almost fully once the catalog covers dialogs and commands. Needs a human: native-speaker review of every language (none so far) and of localized function names.

Infrastructure (do first)

  1. Extend the catalog from the ribbon to every user-visible string (dialogs, menus, task panes, status and error messages, command labels, function descriptions), with a missing-key check in cargo xtask ci. Language switching and the system-language default already exist (#31).
  2. Locale-aware formulas: localized function-name tables and separators at the formula-bar boundary only (files keep en-US invariant names), locale number and date formats, list separators in CSV.
  3. Text shaping and fallback: a shaping engine for grid, editor and PDF text (Arabic, Devanagari, Thai), system font fallback for CJK, bidirectional runs, and a real right-to-left sheet layout; embedded subset fonts in PDF.

Revision history

Date Change Summary
2026-10-11 minor German ribbon catalog (i18n/de.rs, 266 labels, ~12%); de locale tags (de-DE, de-AT, de-CH…) resolve to German. PR #163 (localized German formulas/numbers) still open
2026-10-11 minor Czech (cs) ribbon table: 266 labels (~12%), menus only
2026-10-10 minor Re-measured after #31, #104, #82, #38 merged: ribbon translated into ja, zh, ko, pt-BR and ru (266–268 labels, ~12%), system-language default, CJK/Thai/Hebrew font fallback; ~10% ready, 100–165 h
2026-10-10 major Created: English only, no catalog, ~2,200 strings, script-support gaps, open language PRs