Main now rejects ✕ (U+2715) in translations, since Noto Sans Georgian has no
glyph for it (0c3c500e); × reads the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The German catalog mixed du and Sie. It now uses du everywhere: the 11
messages that used Sie (imperatives such as "Wählen Sie", and "Ihr Name oder
Studio") changed; "Sie" and "Ihr" that mean they and their stay.
docs/localization-parity.md records the choice for the next batch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Help → What's New now reads in German down to the oldest entry: every
wrapped line of docs/whats-new.md without a German entry has one. Dates
read DD.MM.YYYY; issue numbers, code spans, file names and link targets
are unchanged, and link texts stay English because the pages they open
are English. Each wrapped line is its own catalog key, so the German
lines break near the English line breaks. "Raw(s)" is "RAW-Datei(en)",
menu paths use →, and the text keeps the catalog's "du" form.
Held back: the 59 lines whose English text contains a ▸ menu path.
Their translations are ready (with →) and go in once #2016 (for #1950)
renames those keys; adding them now would only conflict with it.
localization-parity.md and ROADMAP.md: German re-measured with the
documented count over the catalogs, 2,572 → 3,644 of 3,754 messages
(80% → 97%). The denominator grows because German now translates
What's New lines no other catalog has; other rows keep their counts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every command, control and menu label and every tr() message in the
interface that another catalog already translates now has a German
entry too: mask effect presets, print and contact sheet, slideshow
settings and templates, External Editing (PhotoCraft / other editor),
monitor profiles (Settings → Display), HDR editing (SDR sliders, HDR
headroom), Tool Overlay and Loupe Overlay, keyword commands, background
tasks and face model setup.
Terms follow the existing catalog (Vorgabe, Stichwort, Maske,
Begleitdatei, Überlagerung, Dia, RAW-Datei) and its "du" form; menu
paths use → instead of ▸. The one English message that contains ▸
(the PhotoCraft help text in Settings → General) is left for after
#1950, which renames those source strings.
i18n::tests now report no missing German display labels.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`cargo xtask ci` fails with the craft-fonts input supplied, which CLAUDE.md says
releases always build with:
ka in Proportional (faces: ["Noto Sans Georgian"]) lack glyphs: ✕
Two strings in ka.json use ✕ (U+2715). Noto Sans Georgian has no glyph for it
and egui's bundled fonts do not either, so a Georgian reader gets a blank where
the text describes the activity stack's stop control. Without the fonts input
those twenty tests skip, so a plain `cargo xtask ci` is green and this stayed
invisible.
The two Georgian values use × (U+00D7) instead: it reads the same at text size
and every face has it. The English keys are untouched — they are the source text
from docs/whats-new.md, and the test checks values, which is the right scope. An
English reader's font covers ✕; the problem is a translation carrying it into a
script whose face does not.
`translated_catalogs_do_not_use_missing_menu_triangles` already forbids ▸ and ▾
in locale JSON for the same reason, so ✕ joins them in one list. That matters
because ✕ is in the English source of those two strings: every language that
translates them next would hit the same failure, and a cheap test now catches it
instead of the font-dependent one.