Skip to content

i18n: the History panel translates the undo step names the sources write as literals - #2609

Merged
bflatastic merged 2 commits into
storytold:mainfrom
dotCooCoo:fix/history-labels-translated
Oct 17, 2026
Merged

bflatastic merged 2 commits into
storytold:mainfrom
dotCooCoo:fix/history-labels-translated

Conversation

@dotCooCoo

Copy link
Copy Markdown
Contributor

What and why

The History panel listed many steps in English in every interface language. The reference app's History panel lists a state for each change: "Each time you add any elements to the design, you can see new states being added to the History panel" (Undo edits and manage design history). VectorCraft's panel looks a step's name up with tl! (crates/ui-egui/src/panels/history.rs:45), which reads only a plain catalog row. 95 of the 427 step names that the engine, the tools and the shell record had no plain row in at least one complete catalog, among them Make Blend, Release Blend, New Guide, Pen, Reshape Spine and the Symbolism and Liquify tools. For 83 of them the catalogs had no row at all. For the other 12 (among them New Layer, New Sublayer and Assign Profile), and for many effects, the catalogs hold the name only with the ellipsis of its menu item. A step named after an effect has the effect's menu name without its ellipsis.

  • Each of the 19 complete catalogs has a row for every step name, 1,437 rows in all, in one block after its History rows. The rows use each catalog's existing terms, and Reshape Spine uses the spine term of i18n: each catalog names the blend spine with one term #2596.
  • The History panel reads a step's row, or else the row of the menu item with the same name plus an ellipsis, without the ellipsis (the trimming the effect dialog's heading uses, crates/ui-egui/src/dialogs/effect.rs:30-38). When the catalog has neither, it shows the name as recorded. No English text changes.
  • docs/target-app-parity.md has one line for it.

How it was tested

  • i18n::tests::every_undo_label_is_translated (vectorcraft-ui-egui) reads the step names from the engine, tools and shell sources, as every_tl_literal_is_translated reads tl! literals, adds every effect's name, and requires a row for each in every complete catalog. On main it fails with 69 untranslated names in el, the first catalog it checks.
  • panels::history::tests::effect_steps_read_the_menu_row checks that the Revolve and Feather steps, which have only an ellipsis row in Japanese, read the Japanese menu rows without the ellipsis, and that a name without a row gets none. With the ellipsis fallback removed it fails, and the first test then reports 40 untranslated names in el.

Targeted checks on the final tree: cargo clippy -p vectorcraft-ui-egui --all-targets -- -D warnings; CRAFT_FONTS_DIR=<craft-fonts checkout> cargo test -p vectorcraft-ui-egui --lib -- i18n panels::history (54 passed); cargo fmt --all -- --check; cargo xtask brands, layers and assets.

On Windows 11 (x86-64) with rustc 1.99.1, on top of main at 8bc6532:

  • CRAFT_FONTS_DIR=<craft-fonts checkout> cargo xtask ci passes its 9 steps: 7,366 tests passed, 0 failed, 11 ignored.

git merge-tree reports no conflicts with main at 8bc6532, or with #2596, #2578, #2590 and #2597. A pull request that adds a complete catalog (#2581, #2393, #2045, #2010, #1822, #1532) or a step name without rows (#1514, #613) needs rows for those names once this merges.

Checklist

  • cargo xtask ci passes (fmt, clippy, tests, assets, brands, layers, wasm).
  • No panics in shipped code: no unwrap(), expect(), panic!, unreachable!, todo! or
    unimplemented! outside tests, and no unchecked indexing on data from files, parameters or
    messages. Errors are returned as Result and shown to the user
    (why and how).
  • Clean-room: nothing copied from Adobe products or GPL/AGPL code (AGENTS.md).
  • Every new asset has a row in ASSETS.md.

dotCooCoo and others added 2 commits October 17, 2026 17:22
…ite as literals

The History panel looked up each step's name with tl!, which reads only
a plain catalog row. 95 of the 427 names that the engine, the tools and
the shell give their undo steps had no such row in at least one complete
catalog, and 83 had no row at all (Make Blend, New Guide, Pen, Reshape
Spine and others). A step named after an effect has the effect's menu
name without its ellipsis. For many effects, and for steps such as New
Layer, the catalogs hold that name only with the ellipsis. The panel
listed those steps in English.

Each complete catalog now has a row for every step name, written in the
catalog's own terms: 1,437 rows in the 19 catalogs. The History panel
reads a step's row, or else the row of the same name with an ellipsis,
without the ellipsis, and shows the name as recorded when the catalog
has neither. A new test reads the step names from the sources, as the
tl! and message tests read theirs, and requires a row for each in every
complete catalog.

Docs: docs/target-app-parity.md.
@bflatastic
bflatastic force-pushed the fix/history-labels-translated branch from 3b5a95d to 351612c Compare October 17, 2026 10:41
@bflatastic
bflatastic merged commit e78116e into storytold:main Oct 17, 2026
@bflatastic

Copy link
Copy Markdown
Member

Thanks @dotCooCoo, merged. Your new test needed the undo-step names in Danish, Dutch and Indonesian too (those catalogs became complete today), so we added the 69 labels in each in a commit on top. It went through the full gate (all 10 steps).

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.

2 participants