Skip to content

i18n (cs): Pathfinder Add reads "Sjednotit", plus the remaining looked-up strings - #1226

Merged
bflatastic merged 3 commits into
storytold:mainfrom
Losminek:cs-pathfinder-add
Oct 11, 2026
Merged

bflatastic merged 3 commits into
storytold:mainfrom
Losminek:cs-pathfinder-add

Conversation

@Losminek

@Losminek Losminek commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

What this does

Follow-up to #1189, on the Add note in the merge comment.

The key Add is shared by three places that need different Czech words:

Place Meaning Czech
Effect › Pathfinder › Add (pathfinder.add, PathfinderOp::Unite) unite shapes Sjednotit
File Info › keyword button add an entry Přidat
Raster effects dialog label add Přidat

A single plain row cannot fit all of them, and the other catalogs simply use their generic word
everywhere. So the plain row stays "Přidat", and the Pathfinder effect gets its own row keyed by
the effect id.

Changes

  • cs.tsv: one @id row, pathfinder.add = "Sjednotit".
  • menus.rs: all Effect menu items run effect.apply / effect.dialog, so the command id can't
    tell them apart. effect_item_label() looks the effect's own id up first (an @id row) and
    falls back to the normal label translation; "Last Effect: {name}" uses the same lookup.
  • panels/appearance.rs: the Appearance panel's effect labels use the same lookup (t_id).
  • i18n/tests.rs: bundled_catalogs_are_consistent now accepts an @id row that names an
    effect id, not only a command id (otherwise the new row is flagged as an unknown command);
    czech_reads_as_czech pins Add → "Přidat" and pathfinder.add → "Sjednotit".

No other catalog has an @id row, so their behaviour is unchanged. Nothing changes for any
language when the catalog has no row for the effect id.

Checks

Clean environment, Rust 1.99, --locked, on main at d1a6926f:

  • cargo fmt --all -- --check: clean
  • cargo test --locked -p vectorcraft-ui-egui: 1,028 passed, 0 failed
  • cargo clippy --locked -p vectorcraft-ui-egui --all-targets -- -D warnings: clean

I didn't run the whole workspace xtask ci; the change is limited to vectorcraft-ui-egui.

About the translation

I'm a native Czech speaker. The catalog from #1189 was drafted with AI assistance and I haven't
read every row line by line yet. Short generic labels are where one word can't fit every place, so
those are the likeliest to need a context like this one; if I find more, I'll send them together.

Update: the rest of the looked-up strings

Two more commits complete the Czech catalog for strings that reach tl!/tr at render time but had no
Czech row. Most of them are passed through a variable or a widget helper (tl!(name), dropdowns, tab bars),
so the literal-based coverage test can't see them. Only cs.tsv changes, no Rust code:

  • new-document presets (49) and their categories (5);
  • Keyboard Shortcuts dialog (16 + one @plural), which the coverage scan misses because
    tl_literals() splits on the first #[cfg(test)], and that one sits inside a macro near the top of
    shortcut_editor.rs;
  • the multi-line tl!( note in dialogs/print.rs (also invisible to the scan) and the print/PDF choice! labels;
  • arrowheads (35), colour harmony rules (21), rendering intents, recolor modes, gradient kinds, DXF options,
    generated layer names (<Clip Group> …), Liquify tools, flattener/web export/EPS/encoder options;
  • toolbar group labels Draw/Modify/Navigate shortened to Kresba/Úpravy/Pohled, so the single-column
    toolbar no longer cuts them to "Kres…", "Upra…", "Navi…".

Workspace names stay English, as MENU_KEEP_AS_IS asks. A few strings would need a code change to be
translatable (file-dialog filters passed straight to rfd, the render/fps readout, the composed
"{kind} Gradient", the same Japanese key used for both a language and a mark style); I'll leave those
for a separate PR if you want them.

Checks for the update, same environment: cargo fmt --all -- --check clean, cargo test --locked -p vectorcraft-ui-egui all passed (one Czech line initially used "⚠", which the bundled UI font lacks; the
bundled_fonts_cover_the_catalogs test caught it and the line now says "Pozor:"). Clippy wasn't re-run,
since nothing but the catalog changed.

Rows worth a native speaker's look: Kite → "Deltoid", Chevron → "Véčko", Barbed → "S protihroty"
(arrowheads), and "Run Length" → "Délka běhu".

🤖 Generated with Claude Code

@Losminek Losminek changed the title i18n (cs): Effect > Pathfinder > Add reads "Sjednotit" (keyed by the effect id) i18n (cs): Pathfinder Add reads "Sjednotit", plus the remaining looked-up strings Oct 11, 2026
Losminek and others added 3 commits October 12, 2026 01:26
…effect id

The key "Add" is shared by Effect > Pathfinder > Add (PathfinderOp::Unite),
the File Info button and a label in the raster effects dialog. One plain row
cannot fit all three: "Přidat" is right for the button, but the Pathfinder
effect unites shapes, so it reads "Sjednotit".

- cs.tsv: `@id pathfinder.add` = "Sjednotit"; the plain "Add" row stays
  "Přidat".
- menus.rs: Effect menu items all run effect.apply / effect.dialog, so the
  command id cannot tell them apart. effect_item_label() looks the effect's
  own id up first (an @id row), and "Last Effect: {name}" does the same.
- appearance.rs: the Appearance panel's effect labels use the same lookup.
- i18n/tests.rs: an @id row may now name an effect id as well as a command
  id; czech_reads_as_czech pins Add and pathfinder.add.

No other catalog has an @id row, so their behaviour is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, arrowheads, colour harmony, presets categories, …)

These strings reach tl!/tr at render time but had no Czech entry; several are passed through variables or helpers, so the literal-based coverage test does not see them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bflatastic
bflatastic merged commit 734afd5 into storytold:main Oct 11, 2026
1 check passed
@bflatastic

Copy link
Copy Markdown
Member

Thanks @Losminek, merged! Keying the label by the effect id is a clean way to tell the two Adds apart.

Rebased onto main, including your two newer catalog commits (the remaining Czech strings). The full local gate passed, catalog consistency tests included.

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