mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-24 09:57:08 -06:00
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.
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# 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`](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.
|
||||
Reference in New Issue
Block a user