mirror of
https://github.com/storytold/designcraft.git
synced 2026-11-11 16:30:16 -06:00
155 lines
12 KiB
Markdown
155 lines
12 KiB
Markdown
# Localization parity
|
||
|
||
> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-30 · **Change:** minor (current-main integration with retained catalogs and regression tests; older catalog counts retain their dated measurement) · **Target:** Adobe InDesign 2026 (21.6)
|
||
|
||
Per-language status of the DesignCraft interface and of document typesetting in each script.
|
||
Script-specific typesetting detail: [cjk.md](cjk.md), [cjk-typography.md](cjk-typography.md),
|
||
[arabic-typography.md](arabic-typography.md). Overall numbers: [target-app-parity.md](target-app-parity.md).
|
||
|
||
**Dimension score: ~45% ready (estimated), 120–180 h** plus native-speaker review (human).
|
||
|
||
## How it was measured
|
||
|
||
Interface strings live in `crates/ui-egui/src/i18n/table.rs` (a shared table with German, French,
|
||
Spanish, Japanese and Simplified Chinese columns) and `crates/ui-egui/src/i18n/{ar,cs,de,fr,hu,it,ja,ka,pl,pt_br,ru,uk}.rs`.
|
||
Untranslated strings fall back to English. A script (2026-10-10) built the set of English
|
||
interface strings as the union of every catalog's keys, every engine command label and every
|
||
literal passed to `tr`/`t` in the UI crate: **1,724 strings**. A further ~145 capitalized literals
|
||
in the UI crate appear in no catalog (some are test data or proper names), so the true total is
|
||
somewhat higher and every percentage below is a slight overestimate. Help: DesignCraft has no
|
||
help content in any language (Help ▸ opens the project's pages).
|
||
|
||
Missing translations normally fall back to English and are reported without blocking a build.
|
||
Targeted regression tests can require specific captions, such as the Data Merge arrangement
|
||
label, in every registered interface language. `cargo xtask i18n-report` (also a step of
|
||
`cargo xtask ci`, so the list is in every gate log) prints how many interface strings each
|
||
language lacks, then the strings.
|
||
|
||
InDesign 2026 ships 25 interface localizations (`.lproj` folders: cs, da, de, el, en, en_GB, es,
|
||
fi, fr, hu, it, ja, ko, nb, nl, pl, pt, ro, ru, sq, sv, tr, uk, zh_CN, zh_TW); Arabic and Hebrew
|
||
come as Middle East editions with an English or French interface and right-to-left features.
|
||
|
||
## Key languages
|
||
|
||
| Language | Code | InDesign 2026 UI | UI strings translated | Dialogs / tooltips / help | Script support (documents and UI) | Native review | Status | To `full` (h) |
|
||
|---|---|---|---|---|---|---|---|---|
|
||
| English | en | ✓ | 1,724 / 1,724 (100%) | all / all / none | Latin ✓ | yes | full | 0 |
|
||
| Simplified Chinese (Mandarin) | zh | ✓ (zh_CN) | 1,438 (83%) | menus, panels, most dialogs; tooltips partly; no help | CJK typesetting ✓ (cjk.md); canvas IME ✓, not checked by hand with a system IME (#322); CJK UI font not embedded in release builds, so boxes on Linux (#332) | no | partial | 25–40 |
|
||
| Spanish | es | ✓ | 1,438 (83%) | menus, panels, most dialogs; no help | Latin ✓; Spanish hyphenation ✓ (#222) | no | partial | 5–8 |
|
||
| Hindi | hi | ✗ | 0 (0%) | none | Devanagari shaped by harfrust in documents but untested; no Hindi hyphenation or spelling | no | none | 20–30 |
|
||
| Arabic | ar | Middle East edition (English/French UI) | 1,459 (85%) | menus, panels, most dialogs; no help | RTL UI text (`rtl.rs`: bidi + shaping); Arabic composition, kashida, digits, RTL stories and tables ✓ (arabic-typography.md); list bullets and multi-column RTL open (#100) | no | partial | 15–25 |
|
||
| French | fr | ✓ | 1,438 (83%) | menus, panels, most dialogs; no help | Latin ✓; French hyphenation ✓ (hyph-fr) | no | partial | 6–10 |
|
||
| Portuguese (Brazil) | pt-br | ✓ (pt) | 1,057 (61%) | menus, panels, some dialogs; no help | Latin ✓; Portuguese hyphenation ✓ | no | partial | 8–12 |
|
||
| Indonesian | id | ✗ | 0 (0%) | none | Latin ✓ | no | none | 12–18 |
|
||
| Japanese | ja | ✓ | 1,644 (95%) | whole interface (#272), vertical-type commands; no help | vertical text, kinsoku, aki, ruby, warichu ✓ (partial depth, cjk.md); canvas IME ✓, not checked by hand (#322); Japanese UI and Mincho fonts from craft-fonts | no | partial | 6–10 (+ IME checks, shared with zh) |
|
||
| German | de | ✓ | 1,438 (83%) | menus, panels, most dialogs; no help | Latin ✓; German 2006 hyphenation ✓ (hyph-de-1996, MIT) | no | partial | 6–10 |
|
||
| Korean | ko | ✓ | 0 (0%) | none | Korean line breaking at spaces ✓; canvas IME ✓, not checked by hand (#322) | no | none | 15–25 |
|
||
| Vietnamese | vi | ✗ | 0 (0%) | none | Latin with stacked diacritics via harfrust, untested | no | none | 12–18 |
|
||
|
||
Percentages are of the 1,724 measured strings. A language is `full` only when every user-visible
|
||
string is translated and its script renders and edits correctly; none but English is.
|
||
|
||
Japanese follow-up (2026-10-11): print ranges, imported style handling, the built-in `(import)`
|
||
caption, table row/column movement and row-height distribution now use the existing translation
|
||
catalog. Print, import options and an active table were rendered in Japanese and English with
|
||
craft-fonts. The language totals above retain their dated measurement; this is a targeted fix.
|
||
|
||
Hungarian follow-up (2026-10-17): `hu.rs` adds **1,917 entries and two context-specific
|
||
captions**, including the 37 tool names. This is a partial interface catalog based on an earlier
|
||
source snapshot, not a new coverage measurement against current main. It was prepared with AI
|
||
assistance and initially reviewed by a native Hungarian contributor with over 30 years of DTP
|
||
experience; further terminology and in-context review is welcome. Preferences lists `Magyar`;
|
||
untranslated/new strings fall back to English. Hungarian spelling and hyphenation are separate
|
||
follow-up work and are not enabled by selecting this interface language.
|
||
Review corrections (2026-10-20) distinguish numbers from counts and text columns from grid
|
||
columns, use formal Hungarian address consistently, and align translated menu paths with
|
||
their visible labels. These corrections do not add new catalog keys or change coverage.
|
||
Test integration (2026-10-23) registers Hungarian in the shared catalog checks and restores
|
||
assertions from both merge parents. That snapshot has **1,904 entries and four context
|
||
captions** after removing 11 untranslated interface-language names (the selector displays their
|
||
native names directly) and two unused internal tint keys. Seventeen live UI labels are retained
|
||
and added to the integrity test's known-label list. No used Hungarian translation was removed.
|
||
|
||
Data Merge follow-up (2026-10-25): `Arrangement` is translated as `Elrendezés`, bringing the
|
||
Hungarian catalog to **1,905 entries and four context captions**. The shared all-language
|
||
arrangement check and the Hungarian catalog and toolbar tests are retained alongside the
|
||
main-branch egui API update. This is a targeted addition, not a new coverage measurement.
|
||
|
||
Georgian menu follow-up (2026-10-25): `File Info…` and `Check for Updates…` now have
|
||
Georgian catalog entries. The existing complete-menu translation assertion is unchanged.
|
||
This targeted addition retains the dated coverage figures below; the two new captions have
|
||
not had a separate native-speaker review.
|
||
|
||
Module-layout integration (2026-10-27): catalog lookup stays in `i18n.rs`, while the shared
|
||
table and localization tests live in `i18n/table.rs` and `i18n/tests.rs`. Menu and toolbar
|
||
regressions from both branches are retained in `menus/tests.rs` and `toolbar/tests.rs`.
|
||
Hungarian catalog contents and the dated coverage measurements are unchanged. Toolbar
|
||
coverage follows the current platform-specific keymap captions and checks a user-assigned
|
||
chord alongside translated flyout text; row sizing measures the displayed shortcut.
|
||
|
||
Main integration (2026-10-30): retain every prior Hungarian entry and both branches’
|
||
localization, menu and toolbar regressions while adopting upstream’s current file-dialog test
|
||
harness and toolbar proxy refactor. Add `Show/Hide Depth Ruler` as `Mélységmérő
|
||
megjelenítése/elrejtése`, bringing the catalog to **1,906 entries and four context captions**.
|
||
The upstream all-language depth-ruler assertion is retained. The unchanged complete Georgian
|
||
menu assertions run through a helper so the existing language-switch test meets upstream’s
|
||
new complexity limit. The two Georgian menu captions now also exist in main; retain each
|
||
identical translation once, keeping the direct lookup and complete-menu assertions. The
|
||
progress log keeps both branches’ dated entries; this targeted addition is not a new coverage
|
||
measurement.
|
||
|
||
## Other shipped languages
|
||
|
||
| Language | Code | UI strings translated | Status |
|
||
|---|---|---|---|
|
||
| Hungarian | hu | 1,906 entries + 4 context captions (2026-10-30); initial catalog native-reviewed | partial |
|
||
| Czech | cs | 1,722 (99%), plural categories handled | partial |
|
||
| Italian | it | 1,464 (85%) | partial |
|
||
| Ukrainian | uk | 1,432 (83%), plural categories handled | partial |
|
||
| Polish | pl | 1,717 (99%), count captions category-first; AI-drafted, awaiting native review | partial |
|
||
| Georgian | ka | 1,724 (~100%: every catalog key plus the command labels the others lack), count captions as `noun: n` | partial (reviewed by a native speaker) |
|
||
|
||
DesignCraft ships **6** interface languages beyond the twelve; InDesign ships 17 beyond its
|
||
eight of the twelve (cs, da, el, en_GB, fi, hu, it, nb, nl, pl, ro, ru, sq, sv, tr, uk, zh_TW).
|
||
|
||
## Document languages
|
||
|
||
InDesign 2026 hyphenates and spell-checks ~40 languages (Hunspell and Duden dictionaries).
|
||
DesignCraft hyphenates **English, French, German (2006 reform), Greek, Italian, Norwegian, Portuguese and Spanish** and spell-checks **English** only. Text language
|
||
can be set per paragraph and character (Properties, Character panel) and drives quotes and
|
||
locale shaping. See [typography-parity.md](typography-parity.md).
|
||
German hyphenation accepts `German: 2006 Reform`, `German: Swiss 2006 Reform` and `de` locale
|
||
codes without a spelling year or with `2006`. Traditional names, `de_DE_1901` and unknown
|
||
German variants have no automatic hyphenation; their German shaping and quotes are unchanged.
|
||
|
||
## Remaining effort
|
||
|
||
| Work | Opus 5.5 h |
|
||
|---|---|
|
||
| Fill the 83–85% catalogs (de, fr, es, zh, ar, it, uk; ~290 strings each) | 25–40 |
|
||
| pt-BR to full | 8–12 |
|
||
| New: Hindi, Indonesian, Korean, Vietnamese (1,724 strings, plural rules, tests) | 50–75 |
|
||
| Canvas IME (zh, ja, ko): checks by hand with system IMEs, and fixes | 10–20 |
|
||
| CJK UI font in every release build; Devanagari and Vietnamese rendering tests | 10–15 |
|
||
| Catalog completeness test: every `tr` key and command label present in every catalog | 4–8 |
|
||
| Help content (at least English, then the twelve) | 15–25 |
|
||
| **Total** | **120–180** + native-speaker review for 11 languages (human) |
|
||
|
||
## Revision history
|
||
|
||
| Date | Change | Summary |
|
||
|---|---|---|
|
||
| 2026-10-30 | minor | Integrate current main; retain both branches’ entries/tests; add Hungarian Depth Ruler caption (1,906 entries + four context captions) |
|
||
| 2026-10-27 | minor | Adopt shared module layout; preserve both parents' tests and all Hungarian catalog entries |
|
||
| 2026-10-25 | minor | Hungarian Data Merge arrangement caption added; 1,905 entries and four context captions; both merge parents' tests retained |
|
||
| 2026-10-25 | minor | Georgian File Info and Check for Updates captions added; complete-menu regression retained |
|
||
| 2026-10-20 | minor | Hungarian review: four context captions, formal address, consistent menu paths; corrected other-language count to six |
|
||
| 2026-10-17 | minor | Hungarian (`hu`) interface added: 1,917 entries and two context captions; initial native-speaker review |
|
||
| 2026-10-23 | minor | Hungarian test integration restored; 1,904 active catalog entries and four context captions after removing unused keys |
|
||
| 2026-10-11 | minor | Localized Japanese print, import and table controls; checked Japanese and English renders |
|
||
| 2026-10-14 | minor | Georgian (`ka`) interface added |
|
||
| 2026-10-10 | major | Created: catalogs measured (1,724 strings), the twelve key languages plus Italian and Ukrainian |
|
||
| 2026-10-11 | minor | Czech (cs) added: 1,722 strings, plural categories handled |
|
||
| 2026-10-13 | minor | Polish interface added (1,717 strings) |
|
||
| 2026-10-22 | minor | French and Italian hyphenation (hyph-fr, hyph-it): the French row and Document languages updated |
|