Skip to content

i18n: translate the read-root, linked JavaScript and graph design refusals - #7405

Merged
bflatastic merged 5 commits into
storytold:mainfrom
dotCooCoo:fix/i18n-read-roots-graph-design-rows
Nov 15, 2026
Merged

bflatastic merged 5 commits into
storytold:mainfrom
dotCooCoo:fix/i18n-read-roots-graph-design-rows

Conversation

@dotCooCoo

@dotCooCoo dotCooCoo commented Nov 14, 2026 •

Copy link
Copy Markdown
Contributor

What and why

Two error reasons that #7264 and #7320 added had no @msg row in any of the 23 complete-message catalogs, so the status bar showed them in English in every language: "a linked JavaScript file is outside the read roots" (crates/engine/src/cmd/fileio/access.rs, an SVG or SVGZ export or save of a document that links a script outside the read roots) and "the art of a graph design in a graph series is drawn again from the design: edit the design to change it" (crates/engine/src/cmd/appearance.rs, an appearance edit of only that art). Two reasons of the same features, "the library's file is outside the read roots" (swatch.library.copyToUser) and "{file} names more than one linked JavaScript file" (svgInteractivity.removeFile), had no row in ca, el, fi, hi, ka and vi.

Engine, CLI and MCP errors stay in English; only the desktop's display of these messages changes.

How it was tested

New test i18n::tests::read_root_script_and_graph_design_reasons_are_translated (crates/ui-egui/src/i18n/tests.rs), which fails without the rows (no complete-message catalog has a `@msg` row for "a linked JavaScript file is outside the read roots"): each reason is a message literal of the engine and has a row in at least one COMPLETE_MESSAGES catalog, and in every such catalog that has a row for it, the row is translated with the same {file} count, message() returns that row, and the invalid-parameters error of the command that returns the reason shows the translated reason with the command id.

Focused checks on the final tree, on main at 1e4e353:

  • cargo fmt -p vectorcraft-ui-egui -- --check. cargo fmt --all -- --check reports only crates/svg/src/lib.rs, which this pull request does not change; main at 1e4e353 has the same formatting difference.
  • cargo clippy -p vectorcraft-ui-egui --all-targets -- -D warnings
  • cargo check --workspace --tests
  • cargo test -p vectorcraft-ui-egui --lib i18n: 116 passed, 0 failed.
  • cargo xtask brands, layers (30 crates) and assets (337 files).
  • cargo xtask ci runs in this pull request's CI.

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.

…usals

No complete-message catalog had a row for "a linked JavaScript file is
outside the read roots" (an SVG or SVGZ export or save of a document
that links a script outside the read roots) or for "the art of a graph
design in a graph series is drawn again from the design: edit the
design to change it" (an appearance edit of only that art), so the
status bar showed both in English. "the library's file is outside the
read roots" (Copy to User Defined) and "{file} names more than one
linked JavaScript file" (svgInteractivity.removeFile) had no row in ca,
el, fi, hi, ka and vi.

- Add the two refusals to 20 complete-message catalogs and the two
  siblings to ca, el, fi, hi, ka and vi (52 rows), next to each
  catalog's read-root and graph-design link rows, using their terms.
  The nl, sv and tr rows and the other catalogs' sibling rows are in
  storytold#7362, storytold#7370, storytold#7359, storytold#7355, storytold#7316, storytold#7307, storytold#7354, storytold#7314, storytold#7350, storytold#7337
  and storytold#7352.
- Add a test that checks each reason's row in every complete-message
  catalog that has one (translated, keeps `{file}`, and shown inside
  the invalid-parameters error of the command that returns it), and
  requires at least one catalog to have a row for each reason.
@coderabbitai

coderabbitai Bot commented Nov 14, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 32 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 9ddbf25 and 672615f.

Files ignored due to path filters: 19

  • crates/ui-egui/src/i18n/ca.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/cs.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/el.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/es.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/fi.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/fr.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/hi.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/hu.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/it.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/ja.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/ka.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/ko.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/pl.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/pt-br.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/ru.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/uk.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/vi.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/zh-hans.tsv is excluded by !**/*.tsv
  • crates/ui-egui/src/i18n/zh-hant.tsv is excluded by !**/*.tsv
Files selected for processing: 1

  • crates/ui-egui/src/i18n/tests.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

bflatastic pushed a commit that referenced this pull request Nov 14, 2026
…t no catalog had

untranslated_report lists 167 status and error messages that no
complete-message catalog translates. zh-hans.tsv gains 114 @msg rows for
the ones no open pull request covers: 3D and Revolve limits, image export
and encoding errors, color profiles, color books and swatch exchange
files, binary DXF and DWG import, path operations, swatch, graphic style
and action set libraries, and zip, script and regular expression errors.
Placeholders, backticked names, command ids and listed values stay as the
English writes them.

The other 53 (composite fonts, SVG filters, read roots and graph design)
are left to #7211, #7378 and #7405. docs/localization-parity.md and
docs/target-app-parity.md give the new counts: 3,554 @msg rows, and 55
messages the report lists for zh-hans, all of them translated by open
pull requests.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
The untranslated report listed 167 status and error messages that no
complete-message catalog translated. pt-br.tsv now has an @msg row for
the 114 of them that no open pull request already translates: messages
of the 3D and Revolve effects, the image encoders, color profiles, swatch
exchange files, color books and DXF import. Placeholders, parameter names
and literal values stay as the English writes them.

The other 53 (composite font, SVG filter, read root and graph design
messages) are translated by open #7211, #7378 and #7405; adding them here
too would make bundled_catalogs_are_consistent fail on a duplicate row
once those merge.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
The untranslated report lists 168 status and error messages that none
of the 23 complete-message catalogs translates, so a Catalan interface
showed them in English.

ca.tsv gets 115 @msg rows under one comment line at the end of the file,
written with the catalog's existing terms. Each row keeps the English
key, its placeholders, backticked names, parameter names and accepted
values (smallThumb, RGB, CMYK, Lab, Gray, sRGB, NaN, UTF-8) unchanged.
The 53 messages that open #7211, #7378 and #7405 translate are left out,
so the catalogs stay consistent.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
On main, the untranslated report lists 167 status and error messages
under "messages, all 23 languages checked": no complete-message catalog
has a row for them, so the Japanese interface shows them in English.

- ja.tsv gains 114 @msg rows for the listed messages: image export and
  encoding errors, color profiles, color books and swatch exchange
  files, binary DXF and DWG import, 3D and Revolve limits, and script,
  zip, line and file errors. The 53 listed messages that #7211, #7378
  and #7405 translate are left out.
- It gains 10 @msg rows for messages other catalogs translate and
  Japanese lacked: the Banner Hems and Grommets errors, a parameter
  range and the failed recovery save. The three script and RTF parsing
  errors that #7314 adds are left out.

Placeholders, parameter names, command ids and literal values stay as
the English writes them, and the rows follow the catalog's Japanese
message conventions.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
untranslated_report lists status and error messages that no
complete-message catalog translates. cs.tsv gains 114 @msg rows for the
ones no open pull request covers: 3D and Revolve limits, image export
and encoding errors, color profiles, color books and swatch exchange
files, binary DXF and DWG import, path operations, swatch, graphic style
and action set libraries, and zip, script and regular expression errors.
Placeholders, backticked names, command ids and listed values stay as the
English writes them.

The report still lists 54 messages for every language: 53 composite
font, SVG filter, read root and graph design errors left to #7211, #7378
and #7405, and "`index` must be a whole number". The Czech row of
docs/localization-parity.md gets the new counts, and
docs/target-app-parity.md lists the change.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
… had

untranslated_report lists 167 status and error messages under "messages,
all 23 languages checked". pl.tsv gains @msg rows for 114 of them, in one
commented block at the end of the file: image export and encoding
errors, color profiles, color books and swatch exchange files, binary
DXF and DWG import, 3D and Revolve limits, and script, zip, line and
file errors. Placeholders, parameter names, command ids and literal
values stay as the English writes them.

The other 53 are translated by #7211, #7378 and #7405 and are left out.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
…g had

untranslated_report lists 168 status and error messages that none of the
23 complete-message catalogs translates. fi.tsv gains a row for 115 of
them, in one commented block at the end of the file: image export and
encoding errors, color profiles, color books and swatch exchange files,
binary DXF and DWG import, 3D and Revolve limits, and script, zip, line
and file errors. Placeholders, parameter names and literal values stay
as the English writes them, and the rows use the catalog's existing
terms (Pyöräytä, Segmentit, Varjot, värimalli, väripiste, painolevy,
toimintosarjatiedosto).

The other 53 listed messages are left out because open pull requests
#7211, #7378, #7405 and #7434 add Finnish rows for them.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
The untranslated report listed 167 status and error messages with no
row in any complete-message catalog, and 13 more that other catalogs
translate but Italian did not, so with the interface in Italian these
messages showed in English.

- it.tsv gains 114 `@msg` rows for the listed messages: image export
  and encoding errors, color profiles, color books and swatch exchange
  files, binary DXF and DWG import, 3D and Revolve limits, and script,
  zip and file errors.
- it.tsv gains 12 `@msg` rows for the Banner Hems and Grommets errors,
  three parameter checks and the failed recovery save.
- The rows sit in two commented blocks after the existing message rows.
- The 53 listed messages that open #7211, #7378 and #7405 translate
  (composite fonts, SVG filters, read roots and graph designs), and the
  justification order error that open #7116 translates, are left out,
  so no row is added twice.
- Placeholders, parameter names, command ids and literal values stay as
  the English writes them. The translations use the catalog's existing
  terms.
- docs/localization-parity.md and docs/target-app-parity.md give the
  Italian counts: 3,560 `@msg` and 48 `@msgplural` rows, 54 messages
  still listed.
bflatastic pushed a commit that referenced this pull request Nov 14, 2026
The untranslated report listed 167 status and error messages that none
of the 23 complete-message catalogs translates. The Ukrainian catalog
now has an @msg row for 114 of them: the errors of the image encoders,
color profiles, swatch exchange files and color books, 3D and Revolve,
path operations, DXF import, the script engine and the parameter
checks. Placeholders, backticked names, accepted values and limits stay
as the English writes them. Open #7211, #7378 and #7405 translate the
other 53.
Main's German catalog gained the rows for the linked JavaScript read-root refusal and the graph design art refusal, so this branch's copies made bundled_catalogs_are_consistent fail on duplicate rows.
@bflatastic
bflatastic merged commit 282559c into storytold:main Nov 15, 2026
7 checks passed
@bflatastic

Copy link
Copy Markdown
Member

Merged, thanks @dotCooCoo! It passed its CI checks.

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