Files
vectorcraft/docs/localization-parity.md
T
dotCooCoo a3e7dc9e41 i18n: the message scan reads errors made with bad() and error variants, and new ones need rows
complete_languages_translate_every_message read a message literal only
right after a marker such as Err( or Other(. It did not read the
message given to the engine's bad(cmd, ...), so this test did not
require a row for a parameter error. It also did not read the messages
given to the engine's err() and error(), to the PDF writer's bad() and
failed(), or to an error enum's variant such as PsError::Limit(...).
1,122 of these messages have no row in any complete catalog.

The scan now reads those messages, a literal or a format! string, in
the same template form as the catalogs' rows. It skips PsError::Ps and
EngineError::UnknownCommand, whose first argument is a PostScript error
name or a command id. The 1,122 messages are listed in
untranslated_messages.txt next to the tests, together with the 71 that
pull requests open at 009384b add without rows, and the test lets a
listed message through whether or not it has rows. Every other message
needs a row in each complete catalog, so a new message made this way
fails the test until it has its rows.
VECTORCRAFT_I18N_DUMP_UNTRANSLATED=<file> writes the messages in the
sources that lack a row. No catalog rows change.

Docs: docs/development.md, docs/localization-parity.md.
2026-10-22 00:40:10 +07:00

12 KiB
Raw Blame History

Localization parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-16 · Change: minor (Georgian (ka) interface catalog; Bulgarian (bg) and Greek (el) catalogs complete under the tests, #1909, #2076; Finnish (fi) catalog added, complete under the tests; Swedish (sv) catalog added, complete under the tests; scores and estimates unchanged; Brazilian Portuguese (pt-br) catalog completed under the tests: menus, tl! literals and messages; 12-language score 71% → 74%; #1914) · Target: Adobe Illustrator 2026 (30.x)

Per-language status of VectorCraft's interface. How the catalogs work and how to add a language: development.md › Localisation. Part of target-app-parity.md.

How it is measured: rows with a translation in each crates/ui-egui/src/i18n/<code>.tsv, counted on origin/main 01e165af, except the rows that give a count date, which were counted on main at cb0a7d9 (2026-10-21). The reference is the French catalog, which the tests hold complete: 3,416 interface strings (menus, command labels, tl! literals: panels, dialogs, tooltips, Preferences) plus 604 @msg status and error messages, 4,020 in all. A language's % is its rows over 4,020 (capped at 100% per part). The complete_menus flag and COMPLETE_MESSAGES list make i18n::tests fail if a complete language misses a string, so "full" here is enforced by tests. The messages listed in crates/ui-egui/src/i18n/untranslated_messages.txt are not translated yet, and the tests let them through. No language has help content: there is no translated (or English) in-app help, and the docs are English. error messages, 4,020 in all. A language's % is its rows over 4,020 (capped at 100% per part). i18n::tests fail if a language with the complete_menus flag misses a menu string or tl! literal, or if a language in the COMPLETE_MESSAGES list misses a status or error message. Every non-English language marked "full" has the flag, and all of them except Bulgarian are in the list. No language has help content: there is no translated (or English) in-app help, and the docs are English.

Native review: every catalog was written clean-room from the English meaning, most of it by agents (bflatastic), with community contributors adding or correcting (German by dwetscher, Japanese and Traditional Chinese by imachus). Only Georgian is recorded as reviewed by a native speaker; the other catalog headers ask for one.

The twelve key languages

Language Code UI strings translated Dialogs / tooltips / messages Script support Native review Status To full (h)
English en source, 100% all Latin — full —
Simplified Chinese (Mandarin) zh-hans 5,102 rows, 791 of them @msg (counted 2026-10-21): menus, tl! literals and messages complete (tests) all CJK UI font from craft-fonts (BIZ UDPGothic) when embedded, else a system font; IME with marked text at the caret; vertical type partial (type-parity.md) no full — (review)
Spanish es 4,009 / 4,020 (99.7%) all (604 messages) Latin no full — (review)
Hindi hi 0 none Devanagari: the document's text shapes (HarfRust), with tests of conjuncts, reph, pre-base matras, nukta forms and caret stops that run when an OpenType Devanagari font is installed, but the egui interface does no complex shaping no none 20–30
Arabic ar 0 none document text: bidi layout and Paragraph Direction; interface: no right-to-left layout, no Arabic shaping in egui no none 25–40
French fr 4,020 / 4,020 (100%) all Latin no full — (review)
Portuguese pt-br 5,194 catalog entries (counted 2026-10-21): menus, tl! literals and messages complete (tests); one/other plurals all Latin contributor is a Brazilian Portuguese speaker; further native review welcome full — (review)
Indonesian id 5,279 rows, 750 of them @msg (counted 2026-10-21): menus and tl! literals complete (tests); the tests do not hold its messages complete; one plural form dialogs and tooltips all; 750 message rows (French has 796) Latin no full — (review)
Japanese ja 4,004 / 4,020 (99.6%) all CJK UI font as above; Japanese IME; vertical type partial; Japanese crop marks and composition settings no full — (review)
German de 3,952 / 4,020 (98%; tests hold menus, literals and messages complete) all (602 of 604 message rows; landed 2026-10-10) Latin contributor-written, not reviewed full — (review)
Korean ko 4,870 rows (counted 2026-10-21): menus, tl! literals and messages complete (tests); one plural form all Hangul from an installed system font on the desktop (Apple SD Gothic Neo, Malgun Gothic, Noto Sans CJK KR…); the web build has no Korean UI font yet (craft-fonts); IME path exists no (AI-drafted) full — (review; web font)
Vietnamese vi 4,886 rows (counted 2026-10-21): menus, tl! literals and messages complete (tests); one plural form; 4,046 plain + 18 @plural + 28 contextual + 794 @msg all Latin with Vietnamese diacritics (precomposed forms; glyph tests pass) contributor is a Vietnamese speaker; AI-assisted draft, further native review welcome full — (review)

12-language score: ~82% (equal weights: 100 + 85 + 100 + 0 + 0 + 100 + 100 + 100 + 100 + 98 + 100 + 100, over 12). To full for all twelve: ~50–85 h, most of it Arabic (right-to-left interface) and Hindi (interface shaping). Each new Latin-script catalog is ~4,000 rows; the existing ones were written in a few agent hours each plus review. Native-speaker review is human work and isn't in the hours.

Other shipped languages

Language Code Translated Status
Traditional Chinese (Taiwan) zh-hant 4,892 rows, 790 of them @msg (counted 2026-10-21): menus, tl! literals and messages complete under the tests (80% overall) partial
Italian it 4,011 / 4,020 full
Dutch nl 5,317 rows, 777 of them @msg (counted 2026-10-21): menus and tl! literals complete (tests); the tests do not hold its messages complete; one/other plurals full
Danish da 5,279 rows, 750 of them @msg (counted 2026-10-21): menus and tl! literals complete (tests); the tests do not hold its messages complete; one/other plurals full
Russian ru 4,009 / 4,020 full
Ukrainian uk 4,009 / 4,020 (one/few/many plurals) full
Hungarian hu 5,253 rows (counted 2026-10-21): menus, tl! literals and messages complete (tests); one plural form full
Polish pl 5,130 rows (counted 2026-10-21): menus, tl! literals and messages complete (tests); one/few/many plurals full; native review pending
Finnish fi 5,318 rows (counted 2026-10-21): menus, tl! literals and messages complete (tests); one/other plurals, 797 @msg rows full; AI-assisted, native proofreading pending
Czech cs 5,240 catalog entries, including 795 @msg rows (counted 2026-10-21); menu, literal and message coverage enforced by tests catalog complete; render-site gaps reduced; native review pending
Swedish sv 5,251 rows, 795 of them @msg (counted 2026-10-21): menus, tl! literals and messages complete (tests); one/other plurals full; native review welcome
Bulgarian bg 5,245 rows, 763 of them @msg (counted 2026-10-21): menus and tl! literals complete (tests); the tests do not hold its messages complete full; AI-drafted, native review pending
Greek el 5,251 rows, 795 of them @msg (counted 2026-10-21): menus, tl! literals and messages complete (tests) full; native review welcome
Georgian ka 5,200 rows (counted 2026-10-21): menus, panels, dialogs, plurals (one count-neutral form) and messages, tested complete; reviewed by a native speaker full

Twenty-three non-English catalogs in all. Illustrator, as its public documentation lists, ships around two dozen interface languages (including Polish, Dutch, Turkish, the Nordic languages, Hungarian, and Middle East editions with Arabic and Hebrew); it doesn't ship Hindi, Indonesian or Vietnamese.

Czech render-site follow-up

The desktop and web file pickers look up filter labels at assignment time; format names and extensions stay unchanged. Diagnostics retain numeric values and units. New Document's suggested preset name uses Preset {number}. Contributor tooltips use named placeholders and Czech plurals; handles and chosen names remain unchanged. Gradient descriptions reuse {kind} Gradient with a contextual radial adjective. PDF/Print mark styles use mark-style, so Japanese displays as Japonské while the language name stays Japonština; their Summary uses the same context.

The search placeholder, Home screen, toolbar/panel tooltips and Preferences already use lookups. No new tl!("literal") keys were needed: only cs.tsv adds 19 AI-draft rows and revises the gradient template. Every other complete catalog (complete_menus) has the same rows and a Roman row for the other mark style; complete_catalogs_translate_render_site_labels fails when one of them lacks a row. Native review is still needed, and catalog coverage does not prove that every variable in the UI is translated.

Not done in any language

Locale-aware number and date formats, a right-to-left interface, translated help, and a Traditional Chinese UI font for the web build.

Revision history

Date Change Summary
2026-10-16 minor Bulgarian (bg, #1909) and Greek (el, #2076) catalogs added, complete under the tests; Swedish (#2139) and Finnish (#1994) rows for strings added since; eighteen non-English catalogs
2026-10-16 minor Finnish (fi) catalog added, complete under the tests (menus, literals, messages; one/other plurals); AI-assisted, native proofreading pending
2026-10-15 minor Swedish (sv) catalog added, complete under the tests (menus, literals, messages; one/other plurals); every sv-* locale resolves to it; AI-drafted, native review welcome; scores and estimates unchanged
2026-10-14 minor Brazilian Portuguese (pt-br, #1914): catalog completed under the tests (menus, literals, messages); 12-language score 71% → 74%, hours 55–90 → 50–85
2026-10-13 minor The Polish translator confirmed the Polish rows the maintainers had added after the catalog was written (#1614); Tool flyouts are as wide as their longest translated name and shortcut need, so names no longer run into shortcuts in Spanish and other languages (#1650, fixes #1616); scores and estimates unchanged
2026-10-13 minor Polish (pl, #1498): the row count is corrected to the 4,510 rows in pl.tsv (it said 4,492), 654 of them @msg rows; AI-drafted, native review pending; scores and estimates unchanged
2026-10-13 minor French: the 423 strings added since the catalog was last complete are translated, and 188 entries are reworded to the feature names French users know (#1511); Hungarian: one message uses the informal address like the rest of the interface (#1474); the entry counts in the tables are the earlier measurements; native review still pending; scores and estimates unchanged
2026-10-12 minor Vietnamese (vi) catalog added, complete under the tests (menus, literals, messages; one plural form); 12-language score 63% → 71%, hours 60–100 → 55–90
2026-10-13 minor Czech: 128 more strings translated (tool names, PDF and Image Trace presets, pie graph options and others added since the catalog was completed; #1461); the entry count in the table is the 2026-10-11 measurement; native review still pending; scores and estimates unchanged
)
2026-10-12 minor Korean (ko) catalog added, complete under the tests (menus, literals, messages); 12-language score 54% → 63%, hours 70–110 → 60–100
2026-10-12 minor Polish (pl) catalog added, complete under the tests (menus, literals, messages; one/few/many plurals)
2026-10-12 minor Hungarian (hu) catalog added, complete under the tests
2026-10-12 minor Georgian (ka) catalog, complete
2026-10-11 minor Czech render-site follow-up: file-dialog filters, diagnostics, preset numbering, contributor tooltips/plurals, gradient grammar and contextual printer mark styles; estimates unchanged
2026-10-10 major First per-language table, measured from the catalog row counts against the complete French catalog