* i18n(cs): translate dynamic labels the literal scanner can't see The Czech catalog covered every enforced key (menus, tl! literals, blend modes, preferences) but not the labels built at run time: filter and Filter Gallery parameter names and choices humanized from their keys, Camera Raw controls, the Flame / Picture Frame / Tree render filters, measurement columns, file info fields and the macOS application menu. Those showed in English under Czech. Adds 853 entries (2,441 -> 3,294) for keys that the other catalogs already translate and that still exist in the code. Existing entries are unchanged. Translated clean-room from the plain meaning of the English labels, with the terminology already used in cs.tsv; no proprietary localisation was consulted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(cs): credit the Czech catalog in ATTRIBUTION.md and LICENSE-translations.txt cs.tsv is a bundled translation asset but had no row in ATTRIBUTION.md and was not named in LICENSE-translations.txt. Add both, worded like the other catalogs (PhotoCraft contributors, original translations, MIT OR Apache-2.0). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(cs): terminology review fixes for the new dynamic labels Changes from an independent review pass over the added block: - "Create By" (De-Interlace: how the missing lines are made) reads "Vytvořit pomocí", not "Vytvořil" (author) - luminance is "jas" in Camera Raw, as in the existing "Luminance" label ("Detail jasu", "HSL – jas", "Jas") - slider labels are nouns, like the existing "Redukce šumu" (Reduce Color Noise, Sharpen Details, Lighten Grout) - grain and flame choices agree in gender with their neighbours; "Shadow" matches "Highlight"/"Světla" as "Stíny"; "At" is "Pozice"; "Water Paper" is "Mokrý papír"; "Leaves" is "listů" everywhere Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * contributors: add my own people.toml entry Own entry only, as AGENTS.md describes: credited by the name on my public GitHub profile (sync_github_name), otherwise by @username. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(cs): drop three rows that main added in the meantime "Columns", "Margin" and "Automatic" were added to cs.tsv on main while this branch was open, with the same translations, so the appended block no longer needs them (the catalog has no duplicate keys). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n (cs): translate two strings that are still missing from cs.tsv "Drag (lasso) or click points (polygonal) ..." and "The current gradient (pick one in Window > Gradients)" exist in the other catalogs but not yet in cs.tsv on main. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * i18n (cs): translate context-menu, channel and layer-style labels These labels are rendered through tl!() with a variable, so the literal-based coverage test does not see them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Localize Czech status messages and notice wrappers Translate shell messages before interpolating file names and engine errors. Use the existing plural API for counted objects and preserve English fallback. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Localize Czech UI labels and hardware information Translate brush controls, accessibility names and rasterization prompts at render sites. Preserve adapter, driver and display/profile identifiers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Localize Czech composed labels and distinguish Navigator zoom Translate profile, preset and shortcut messages before interpolation, and use a Navigator context for the zoom level. Keep shortcut warning state separate from translated text and preserve document names and shortcut codes. Cover remaining visible counts and add rendering/glyph regression tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Fix Czech UI localization review follow-ups Keep copied System Info and API diagnostics in English while localizing the on-screen text. Avoid double translation of accessible names, honor command-id shortcut labels, and translate stored auto backend values only for display. Refine Czech warning punctuation and catalog wording, simplify template blocks, and correct the documented catalog count to 3,522 rows. Add four regression tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * people.toml: keep axlecoffee's sync_github_name with their entry Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Losminek <301412321+Losminek@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
6.1 KiB
Localization parity
Last reviewed: 2026-10-10 · Last updated: 2026-10-11 · Change: minor (Czech review follow-ups) · Target: Adobe Photoshop 2026
Per-language status of PhotoCraft's UI. How catalogs work and how to add one:
localization.md. Language notes: Korean, Spanish,
Simplified Chinese.
How measured. cargo xtask i18n-coverage (xtask/src/i18n_coverage.rs) defines the key
universe: tl!("…") literals and trn( plurals in ui-egui (tests excluded), menu-catalog
labels and path segments, menus.rs UI commands, and engine CommandSpec labels and menu paths:
1,608 English keys on 2026-10-10. Each catalog (crates/ui-egui/src/i18n/<code>.tsv) was
checked against that universe by a source script replicating the xtask (no build). Catalogs hold
more rows than the universe because they also translate dynamic tl!(expr) strings (~159 call
sites the tool can't enumerate). Not covered anywhere: engine error and status messages and
filter parameter help, which are English in every language; so no language is full.
Photoshop 2026 ships UI language packs for cs, da, de, en, es, fi, fr (and fr-CA), hu, it,
ja, ko, nb, nl, pl, pt-BR, ru, sk, sv, tr, uk, zh-Hans, zh-Hant (24 .lproj markers; one pack is
installed per Creative Cloud install, here en_US). It has no Hindi, Arabic, Indonesian or
Vietnamese UI; Arabic and Hebrew users get English "Middle East" builds with the World-Ready
composer, and its text engine handles RTL, Devanagari and Indic scripts.
Summary. 7 of the 12 key languages at 100% of measured keys (status partial because of the
engine messages), 3 absent (Hindi, Arabic, Vietnamese), plus 8 other languages. Weighted by
speakers, ~55% ready. Remaining: 80–140 h, plus native-speaker review (none recorded for any
catalog).
The twelve key languages
| Language | Code | UI strings (measured keys) | Catalog rows | Dialogs / tooltips / help | Script support | Native review | Status | To full |
|---|---|---|---|---|---|---|---|---|
| English | en |
1,608 / 1,608 (100%) | source | all | Latin | – | full | 0 h |
| Simplified Chinese | zh-hans |
1,608 / 1,608 (100%) | 2,366 | dialogs, tooltips yes; engine messages English | CJK fonts (lazy loader), IME preedit/commit, vertical type | no | partial | 8–12 h |
| Spanish | es |
1,608 / 1,608 (100%) | 2,413 | as above | Latin | no | partial | 6–10 h |
| Hindi | hi |
0 (0%) | – | – | Devanagari shaping in the text engine (parley/HarfRust); no Devanagari fallback font (TYPE-218-3) | no | none | 20–30 h |
| Arabic | ar |
0 (0%) | – | – | Arabic shaping and bidi in the text engine, Arabic fallback font; RTL shell layout but not inside panels, and UI labels in LTR word order (DIST-220-4), paragraph direction has no UI (TYPE-218-2), layer names as tofu (#1408, #1693) | no | none | 40–60 h |
| French | fr |
1,608 / 1,608 (100%) | 2,766 | as above | Latin | no | partial | 6–10 h |
| Portuguese (Brazil) | pt-br |
1,608 / 1,608 (100%) | 2,788 | as above | Latin; every pt locale uses it |
no | partial | 6–10 h |
| Indonesian | id |
1,608 / 1,608 (100%) | 2,764 | as above | Latin | no | partial | 6–10 h |
| Japanese | ja |
1,608 / 1,608 (100%) | 3,356 | as above | CJK fonts, IME (Windows IME broken, #590), vertical type (tategaki); installed Japanese fonts missing from the list (#2330) | no | partial | 10–16 h |
| German | de |
1,608 / 1,608 (100%) | 2,400 | as above | Latin | no | partial | 6–10 h |
| Korean | ko |
1,608 / 1,608 (100%) | 2,936 | as above; terminology from Photoshop's Korean UI (notes) | Hangul fonts, IME | no | partial | 6–10 h |
| Vietnamese | vi |
0 (0%) | – | – | Latin with stacked diacritics (shaping supported) | no | none | 12–18 h |
Other shipped languages
8 more, each at 1,608 / 1,608 measured keys, status partial for the same reason: Traditional
Chinese zh-hant (2,329 rows), Russian ru (2,544), Ukrainian uk (3,375), Czech cs (3,522),
Polish pl (3,366), Greek el (3,481), Dutch nl (3,568), Italian it (2,411).
Czech UI follow-up (2026-10-11): status and notice wrappers, hardware labels, brush and
transform accessibility names, rasterization prompts, profile mismatch messages and preset
counts now translate at their render/assignment sites. Navigator's zoom level uses a context
(Zvětšení), while the tool remains Lupa. Engine errors, profile/file/document names stay
verbatim; copied System Info and control API diagnostics remain English while their on-screen
labels translate. Import warning counts use parentheses in Czech. New dynamic templates fall
back to English in catalogs without entries. This is additional UI coverage, not a claim that
engine localization or native review is complete.
Cross-language gaps
- Engine error, status and parameter-help messages are English in every language.
- Right-to-left UI layout is partial (2026-10-10): the shell mirrors for Arabic, Hebrew, Persian,
Urdu and other right-to-left codes (
direction.rs), but panel interiors, dialogs, menu rows, submenus and document tabs stay left to right. UI labels also lack an Arabic fallback font, and egui 0.36 joins letters within a word but orders a line's words left to right (no bidi). - Web build: no browser-locale detection, no CJK web fonts.
- WebAssembly plug-ins disappear from Filter › Plug-ins when the UI isn't English (#2540).
- A user couldn't find the language option (#2532): it is in Preferences › Interface.
Revision history
| Date | Change | Summary |
|---|---|---|
| 2026-10-10 | major | First version, measured from the catalogs with the i18n-coverage rules |
| 2026-10-10 | minor | Right-to-left shell layout (menu bar, title, options and status bars, toolbox and dock sides) |
| 2026-10-11 | minor | Czech dynamic status/notice and hardware text, render labels and Navigator zoom context; engine messages remain English |
| 2026-10-11 | minor | Czech review follow-ups: English System Info diagnostics, id-aware shortcut labels, display-only auto translation, warning punctuation and wording; catalog row count refreshed |