Skip to content

Fix #514: Italian interface (it) - #515

Merged
bflatastic merged 3 commits into
storytold:mainfrom
callmeBalloch:i18n-italian
Oct 8, 2026
Merged

bflatastic merged 3 commits into
storytold:mainfrom
callmeBalloch:i18n-italian

Conversation

@callmeBalloch

@callmeBalloch callmeBalloch commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #514.

Italian (it) interface by @callmeBalloch, covering the whole UI at the same scope as Spanish (#387): every menu string, every tl! literal, the plural messages, and every status/error message (@msg).

Catalog: crates/ui-egui/src/i18n/it.tsv, 3,549 rows in the same order as es.tsv (3,019 UI strings, 514 @msg templates, 13 plurals, 3 axis labels).

  • Standard Italian, sentence case, imperative commands (Apri, Salva, Mostra). Sentences address the user as "tu".
  • Uses the feature names Italian users of vector software know: Tavola da disegno, Campioni, Traccia, Riempimento, Tracciato, Punto di ancoraggio, Penna, Selezione diretta, Elaborazione tracciati, Motivo, Preset.
  • Clean-room: written from the meaning of the English labels. No other application's Italian localisation was copied.
  • Left in English on purpose, as in es/ja: the product name, OpenType, the workspace names, the perspective grid presets, and the language names in the picker.

Registration (i18n/mod.rs): it / "Italiano", plural_one_other (zero takes the plural, as in English), complete_menus: true. it_IT, it-CH, it_SM and other it-* tags resolve here.

Tests (i18n/tests.rs):

  • it joins KEEPS_MENU_NAMES (menu-label coverage, Show/Hide pairs, context menu) and COMPLETE_MESSAGES (every message literal).
  • New italian_reads_as_italian checks vocabulary and the one/other plural, including zero.
  • tags_map_to_languages covers the Italian locale tags.
  • The bundled-font glyph test also covers à è ì ò ù À È Ì Ò Ù « » ’ (renamed czech_spanish_and_italian_glyphs_are_available_without_system_fonts).

Docs: README, ROADMAP (Localised UI, Interface languages) and docs/development.md list Italian. docs/development.md notes that a new message needs an it.tsv row as well as an es.tsv row.

For maintainers: with it in COMPLETE_MESSAGES, a new Err("…")/status(…) literal needs Italian as well as Spanish. If that is too much friction, drop "it" from COMPLETE_MESSAGES: menus and panels stay enforced, and messages without a row show in English.

Checks (Linux x86_64; run on de4f836, rebased onto f12188a, which only changes README and versions):

  • cargo test -p vectorcraft-ui-egui --locked: 722 passed, including all 27 i18n tests.
  • cargo clippy -p vectorcraft-ui-egui --all-targets --locked -- -D warnings: clean.
  • cargo fmt --all -- --check: clean.
  • Not run: the full cargo xtask ci and cargo xtask wasm (no wasm target on that machine). The change is a catalog file, a registry row and tests.

Looked at it: I ran the desktop app with VECTORCRAFT_LOCALE=it_IT.UTF-8 (glow backend under Xvfb) and checked the main window, the Object menu and Preferences. It picks Italian from the locale, accents render with the bundled fonts, and nothing clips. Two Properties-panel buttons were too long at first; they now read "Imposta documento" and "Modifica tavole", which fit the fixed widths as the Spanish labels do.

Spotted while translating, not changed here:

  • The gradient kinds in {kind} Gradient ("Linear", "Freeform") have no catalog row, so they show in English in every language.
  • The Delete key and the "Target" arrowhead share rows with the Delete command and Target, so they can't be translated separately.
  • es.tsv translates Object › Graph › "Type…" as text ("Texto…") rather than graph type.

Reviews from other Italian speakers are welcome. Placeholders, the trailing "…" and fragment spacing are enforced by the tests.

🤖 Generated with Claude Code

https://claude.ai/code/session_011iayep93edeimiAE8oSfaT

callmeBalloch and others added 3 commits October 8, 2026 23:04
Adds an Italian catalog (crates/ui-egui/src/i18n/it.tsv, 3,549 rows in
es.tsv's order) covering every menu string, every tl! literal, the
plurals and every status/error message, at the same scope as Spanish.
Standard Italian in sentence case, written clean-room from the meaning
of the English labels; the product, workspace, perspective preset and
language names stay in English as in es and ja.

Registered as "Italiano" with the one/other plural rule and
complete_menus; every it-* locale resolves to it. Tests: it joins
KEEPS_MENU_NAMES and COMPLETE_MESSAGES, italian_reads_as_italian checks
vocabulary and plurals, tags_map_to_languages the locale tags, and the
bundled-font glyph test covers Italian accents and guillemets. README,
ROADMAP and docs/development.md list the language.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011iayep93edeimiAE8oSfaT
… and fit fixes (review of #515)

- Italian rows for the strings main gained after the PR's base: the
  floating panels of #513 (Float Panel, Dock Panel, the drag hints, two
  window.float messages) and the GPU fallback status message of #519, so
  the completeness tests pass on current main.
- File > Document Setup... reads "Imposta documento..." like the dialog
  title and the Properties button, instead of "Impostazione documento...".
- The Properties panel's quick action "Arrange: Bring to Front" reads
  "Porta in primo piano": "Disponi: Porta in primo piano" was clipped at
  both ends of its fixed-width button.
- OpenType figure style "Proportional Oldstyle" reads "Proporzionali stile
  antico", matching "Tabulari stile antico".
- Blank line between the Italian test and the next item; ROADMAP's
  "Last updated" lists the Italian interface (#514).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bflatastic
bflatastic merged commit 8b036df into storytold:main Oct 8, 2026
@bflatastic

Copy link
Copy Markdown
Member

Grazie mille, @callmeBalloch! This is a superb first contribution: a complete Italian interface, with every menu, panel, dialog and status/error message, consistent terminology, and tests for the plural rule and the locale tags. We read the whole catalog against the English source and ran the app in Italian (menus, Offset Path and Document Setup, Preferences, the Control bar and floating panels). It reads naturally, and the accents render with the bundled fonts.

We rebased it onto current main and added one small commit on top of yours:

  • Italian rows for the strings that landed after your branch: the floating panels from Fix #495: panels, panel groups and the Tools panel undock into floating panels #513 and the new GPU-fallback status message.
  • File › Document Setup… now reads "Imposta documento…", like the dialog title and your Properties button.
  • The Properties quick action now reads "Porta in primo piano": the longer "Disponi: Porta in primo piano" was clipped in its fixed-width button.
  • Proportional Oldstyle is now "Proporzionali stile antico", matching "Tabulari stile antico".

Full cargo xtask ci passed on the integrated stack. Come and say hi on our Discord, where Italian users and translators are very welcome: https://discord.gg/artcraft

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.

Request: Italian (it) interface translation

2 participants