The Russian catalog passed `cargo xtask i18n-coverage` (100% of measured keys) but lacked the runtime-only labels the other catalogs already carry, so they showed in English: filter and adjustment parameter names and choices, gallery names, Camera Raw panels (Balance/Clarity/Dehaze/Color Mixer/Texture/…), History/Layers/paths/channels menu labels, metadata and File Info fields, System Info and hardware status lines, rasterize prompts, composed status templates and dialog text. All of them are translated (1,229 keys added; the catalog is now 4,227 keys against upstream's 2,998), written from the meaning of the English labels and reusing the vocabulary the catalog already uses (Highlights → Света, Midtones → Полутона, Feather → Растушёвка, Pattern → узор). Filter and gallery names are aligned with the menu labels already in the catalog so a filter never reads two ways (Texturizer → Текстуризатор, Unsharp Mask → Нерезкое маскирование, Shape Blur → Размытие по фигуре, …). Tests: `russian_covers_generated_filter_options_and_gallery_names` (filter_dialog.rs, the Italian/Korean/Spanish check) and `russian_dynamic_status_hardware_and_dialog_labels_are_translated` (i18n/mod.rs). Docs: docs/localization-ru.md (terminology), localization-parity, gaps G13, ROADMAP, ATTRIBUTION and LICENSE-translations. Validated on a rebase onto upstream/main: `cargo test -p photocraft-ui-egui --lib` 2,998 passed / 0 failed; clippy clean (the only lint is a pre-existing `nonminimal_bool` in canvas.rs, untouched here and present on upstream main); `xtask layers` OK; `xtask wasm` OK; `xtask i18n-coverage` ru 1,863 / 1,863; offscreen `snapshot` in Russian checked.
4.6 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
russian_covers_generated_filter_options_and_gallery_names(crates/ui-egui/src/filter_dialog.rs) enumerates every filter and adjustment parameter, symbolic choice and gallery name and requires a Russian row for each, like the Korean and Italian tests.russian_dynamic_status_hardware_and_dialog_labels_are_translated(crates/ui-egui/src/i18n/mod.rs) covers the rasterize prompts, hardware status lines, composed status templates and a sample of filter labels.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.