From 80088bbf25574ecb00b7a93b64a1007478ddacee Mon Sep 17 00:00:00 2001 From: dotCooCoo Date: Wed, 21 Oct 2026 06:26:48 -0700 Subject: [PATCH 1/2] Docs: localization parity row counts match the catalogs on main docs/localization-parity.md gave the zh-hant catalog 4,741 rows, 742 of them @msg, while the catalog in #2784 had 4,784 and 756. On main it has 4,892 and 790. Other rows that give a row count were also behind main. For example, the Korean row gave 4,151 rows (4,870 on main), and the Swedish row gave 668 @msg rows (795 on main). Thirteen rows now give the counts on main, with "(counted 2026-10-21)". A row is a non-blank line of the catalog that does not start with "#", the rule that gives the page's French reference of 4,020 rows at 01e165af. The method sentence now says that a row with a count date was counted on main on that date. The "N / 4,020" rows and every percentage stay as they were. The Bulgarian row said the tests hold its messages complete, but bg is not in COMPLETE_MESSAGES. It now says the tests hold its menus and tl! literals complete. The Portuguese row's "one|other plurals" gave the row nine cells in an eight-column table. It now reads "one/other plurals". Docs: docs/localization-parity.md. --- docs/localization-parity.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/localization-parity.md b/docs/localization-parity.md index d0cdd9d09..49240849f 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -7,7 +7,7 @@ Per-language status of VectorCraft's interface. How the catalogs work and how to [target-app-parity.md](target-app-parity.md). **How it is measured:** rows with a translation in each `crates/ui-egui/src/i18n/.tsv`, counted on -origin/main `01e165af`, except the Czech row updated against the current local catalog. +origin/main `01e165af`, except the rows that give a count date, which were counted on `main` on that date. 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 @@ -24,17 +24,17 @@ Chinese by `imachus`). Only Georgian is recorded as reviewed by a native speaker | 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` | 4,761 rows, 714 of them `@msg` (counted 2026-10-16): 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](type-parity.md)) | no | full | — (review) | +| 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](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` | 4,707 catalog entries: menus, `tl!` literals and messages complete (tests); one|other plurals | all | Latin | contributor is a Brazilian Portuguese speaker; further native review welcome | 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` | 0 | none | Latin | no | none | 5–8 | | 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,151 rows: 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,225 rows: menus, `tl!` literals and messages complete (tests); one plural form; 3,548 plain + 13 `@plural` + 12 contextual + 652 `@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) | +| 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: ~74%** (equal weights: 100 + 85 + 100 + 0 + 0 + 100 + 100 + 0 + 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 @@ -45,18 +45,18 @@ plus review. Native-speaker review is human work and isn't in the hours. | Language | Code | Translated | Status | |---|---|---|---| -| Traditional Chinese (Taiwan) | `zh-hant` | 4,741 rows, 742 of them `@msg` (counted 2026-10-17): menus, `tl!` literals and messages complete under the tests (80% overall) | partial | +| 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 | | Russian | `ru` | 4,009 / 4,020 | full | | Ukrainian | `uk` | 4,009 / 4,020 (one/few/many plurals) | full | -| Hungarian | `hu` | 4,524 rows: menus, `tl!` literals and messages complete (tests); one plural form | full | -| Polish | `pl` | 4,510 rows (counted 2026-10-13): menus, `tl!` literals and messages complete (tests); one/few/many plurals | full; native review pending | -| Finnish | `fi` | 5,218 rows: menus, `tl!` literals and messages complete (tests); one/other plurals, 769 `@msg` rows | full; AI-assisted, native proofreading pending | -| Czech | `cs` | 4,411 catalog entries, including 636 `@msg` rows (measured locally 2026-10-11); menu, literal and message coverage enforced by tests | catalog complete; render-site gaps reduced; native review pending | -| Swedish | `sv` | 4,770 rows, 668 of them `@msg` (counted 2026-10-15): menus, `tl!` literals and messages complete (tests); one/other plurals | full; native review welcome | -| Bulgarian | `bg` | 4,910 rows, 703 of them `@msg` (counted 2026-10-16): menus, `tl!` literals and messages complete (tests) | full; AI-drafted, native review pending | -| Greek | `el` | 4,880 rows, 709 of them `@msg` (counted 2026-10-16): menus, `tl!` literals and messages complete (tests) | full; native review welcome | -| Georgian | `ka` | 5,066 rows (counted 2026-10-18): menus, panels, dialogs, plurals (one count-neutral form) and messages, tested complete; reviewed by a native speaker | 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 | Nineteen 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 From bc6ffd9c1e08b0eeea623889ac12b15d3e30db72 Mon Sep 17 00:00:00 2001 From: dotCooCoo Date: Wed, 21 Oct 2026 08:20:45 -0700 Subject: [PATCH 2/2] Docs: localization parity names the counting commit and what each i18n check covers The rows with a count date were counted on main at cb0a7d9; the method sentence now names that commit. The sentence on the tests now says that complete_menus covers menu strings and tl! literals, COMPLETE_MESSAGES covers status and error messages, and Bulgarian is in the first only. --- docs/localization-parity.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 49240849f..119110d5f 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -7,13 +7,14 @@ Per-language status of VectorCraft's interface. How the catalogs work and how to [target-app-parity.md](target-app-parity.md). **How it is measured:** rows with a translation in each `crates/ui-egui/src/i18n/.tsv`, counted on -origin/main `01e165af`, except the rows that give a count date, which were counted on `main` on that date. +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. 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