Delete the coverage tests, the per-language parity checks and the tests of one language's exact wording. Catalog integrity, placeholder and plural-form checks stay, as do the engine tests (locale resolution, plural rules, fallback, language scoping, drawing in a language); those compare against tr() or the plural rule rather than catalog wording. Docs describe the report instead of a failing test.
4.3 KiB
Russian terminology and dynamic UI labels
This note goes with the completion of the Russian catalog (crates/ui-egui/src/i18n/ru.tsv).
The catalog already covered every key cargo xtask i18n-coverage measures, but it lacked the
labels that only exist at runtime and that other catalogs (Italian, Serbian, Czech, Hungarian)
already translate: filter and adjustment parameter names, Camera Raw panels, lighting effects,
History / Layers / paths / channels menu labels, metadata fields, status messages, System Info
and dialog text. In Russian those showed in English.
They are now translated, reusing the vocabulary the catalog already uses elsewhere so the same
term reads the same everywhere. Translations are written from the meaning of PhotoCraft's English
labels; no proprietary translation resources, fonts, screenshots or user documents are included.
Register and style
Commands are imperatives in the second person plural (Сохранить, Удалить, Заново);
where the catalog already uses a noun it is kept (Уровни…, Кривые…). Sentence case after the
first word, as in the rest of the catalog. Ellipses on dialog commands are preserved (Ветер…
→ Ветер…). Decimals use a comma (the file format's own labels keep their dots, e.g.
Landscape, 10 x 8 stays Альбомная, 10 x 8). Latin product and technology names are not
translated (PhotoCraft, Camera Raw, RGB, CMYK, Lab, LUT, WebP); Camera Raw keeps .xmp; the
HDR, HSL, HSB and W3C acronyms and the sGray/Pro Photo identifiers stay Latin.
Terminology
Existing choices were followed rather than re-invented, so the new rows use:
| English source | Russian | Note |
|---|---|---|
| Highlight(s) | Света | already in the catalog (Highlights → Света) |
| Midtone(s) | Полутона | already in the catalog |
| Shadow(s) | Тени | pairs with Света |
| Feather | Растушёвка | never перо |
| Fuzziness | Разброс | Color Range's tolerance |
| Dither | Дизеринг | |
| Pattern | Узор | also in Узорный штамп |
| Preset | Набор | Набор кистей, набор инструментов |
| Guide | Направляющая | Схема направляющих |
| Artboard | Монтажная область | |
| Workspace | Рабочая среда | |
| Stroke (contour) | Обводка | painterly strokes stay штрихи/мазки |
| Stroke (paint param) | Штрихи / мазки | Strokes → Штрихи |
| Amount | Величина | Штрихи, never количество, when it is a strength |
| Fill Opacity | Непрозрачность заливки | distinct from layer Непрозрачность |
| Feather Radius | Радиус растушёвки | |
| Sharpen | Резкость | Smart Sharpen → Умная резкость, Unsharp Mask → Контурная резкость |
| Noise | Шум | Reduce Noise → Уменьшить шум |
| Content-Aware | С учётом содержимого | |
| Camera Raw | Camera Raw | the panel name stays Latin (as German/Spanish do; Greek translates it) |
| Place Embedded / Linked | Поместить встроенный / связанный | |
| Rasterize | Растрировать |
Native review
The review was AI-assisted and each row was checked against the meaning of PhotoCraft's own English label. A review by a native speaker is still welcome.
Not covered
Engine error and status messages, user document, layer and preset names, and automation command
IDs stay in English, as in every language (localization-parity.md).
A few dynamic labels the other catalogs carry are not used by the current code; they are
translated to stay aligned with the other catalogs.
Validation
- Every filter and adjustment parameter, symbolic choice and gallery name has a Russian row, as do the rasterize prompts, hardware status lines and composed status templates.
cargo test -p photocraft-ui-egui --lib: 2,998 passed, 0 failed.cargo xtask i18n-coverage:ruremains at 100% of the measured keys.- The offscreen
snapshotexample withPHOTOCRAFT_LOCALE=rurenders the dialogs with Russian labels, without missing glyphs or clipped text.