Files
photocraft/docs/localization-ru.md
Stepan Pavlenko e4bc5c25e8 i18n(ru): translate the dynamic labels the Russian catalog was missing
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.
2026-10-18 02:27:44 +03:00

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: ru remains at 100% of the measured keys.
  • The offscreen snapshot example with PHOTOCRAFT_LOCALE=ru renders the dialogs with Russian labels, without missing glyphs or clipped text.