mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-24 09:57:08 -06:00
i18n(es): complete dynamic UI translations (#4306)
* i18n(es): complete dynamic UI translations * es.tsv: keep Blur Angle once after merging main --------- Co-authored-by: gorevyoneticisi <gorevyoneticisi@users.noreply.github.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
This commit is contained in:
co-authored by
gorevyoneticisi
Brandon Thomas
parent
7e0f48a290
commit
8d840eab59
@@ -13,6 +13,7 @@ next to them.
|
||||
| `crates/codecs/src/codecs/xpm/x11_colors.rs` | X11 `rgb.txt` color-name lookup table (normalized X.Org RGB values) | X.Org Foundation and X11 contributors | <https://cgit.freedesktop.org/xorg/app/rgb/tree/rgb.txt> | MIT (X.Org app/rgb) |
|
||||
| `crates/ui-egui/src/i18n/el.tsv` | Greek UI translations | PhotoCraft contributors | Original translations of PhotoCraft's English labels | MIT OR Apache-2.0, [`LICENSE-translations.txt`](crates/ui-egui/src/i18n/LICENSE-translations.txt) |
|
||||
| `crates/ui-egui/src/i18n/de.tsv` | German UI translations | PhotoCraft contributors | Original translations of PhotoCraft's English labels | MIT OR Apache-2.0, [`LICENSE-translations.txt`](crates/ui-egui/src/i18n/LICENSE-translations.txt) |
|
||||
| `crates/ui-egui/src/i18n/es.tsv` | Spanish UI translations | @gorevyoneticisi; AI contributor: OpenAI Codex | Original translations of PhotoCraft's English labels | MIT OR Apache-2.0, [`LICENSE-translations.txt`](crates/ui-egui/src/i18n/LICENSE-translations.txt) |
|
||||
| `crates/ui-egui/src/i18n/it.tsv` | Italian UI translations | PhotoCraft contributors | Original translations of PhotoCraft's English labels | MIT OR Apache-2.0, [`LICENSE-translations.txt`](crates/ui-egui/src/i18n/LICENSE-translations.txt) |
|
||||
| `crates/ui-egui/src/i18n/ko.tsv` | Korean UI translations | PhotoCraft contributors | Original translations of PhotoCraft's English labels | MIT OR Apache-2.0, [`LICENSE-translations.txt`](crates/ui-egui/src/i18n/LICENSE-translations.txt) |
|
||||
| `crates/ui-egui/src/i18n/nl.tsv` | Dutch UI translations | PhotoCraft contributors | Original translations of PhotoCraft's English labels | MIT OR Apache-2.0, [`LICENSE-translations.txt`](crates/ui-egui/src/i18n/LICENSE-translations.txt) |
|
||||
|
||||
@@ -1367,6 +1367,12 @@ mod tests {
|
||||
assert!(missing.is_empty(), "missing Italian dynamic labels: {missing:#?}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn spanish_covers_generated_filter_options_and_gallery_names() {
|
||||
let missing = missing_generated_filter_labels(crate::i18n::lang_from_tag("es-ES").unwrap());
|
||||
assert!(missing.is_empty(), "missing Spanish dynamic labels: {missing:#?}");
|
||||
}
|
||||
|
||||
/// The Select menu's generated dialogs (Select and Mask, Modify ▸ …) show their
|
||||
/// params, choices and title in every UI language, not just Korean.
|
||||
#[test]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
PhotoCraft's Korean, German, Brazilian Portuguese, Italian, Ukrainian, Dutch, Czech, Turkish,
|
||||
Hungarian and Serbian UI translation catalogs are licensed under MIT OR Apache-2.0, at your option.
|
||||
PhotoCraft's Korean, German, Spanish, Brazilian Portuguese, Italian, Ukrainian, Dutch, Czech,
|
||||
Turkish, Hungarian and Serbian UI translation catalogs are licensed under MIT OR Apache-2.0,
|
||||
at your option.
|
||||
The full license texts are in ../../../../LICENSE-MIT and ../../../../LICENSE-APACHE.
|
||||
|
||||
Korean translations: PhotoCraft contributors, original translations of
|
||||
@@ -8,6 +9,11 @@ PhotoCraft's English labels; no proprietary translation resources were used.
|
||||
German translations: PhotoCraft contributors, original translations of
|
||||
PhotoCraft's English labels; no proprietary translation resources were used.
|
||||
|
||||
Spanish translations: contributed by @gorevyoneticisi with OpenAI Codex as an AI contributor.
|
||||
The resulting catalog is licensed under MIT OR Apache-2.0 as stated above; the translations are
|
||||
original translations of PhotoCraft's English labels, and no proprietary translation resources
|
||||
were used.
|
||||
|
||||
Brazilian Portuguese translations: PhotoCraft contributors, original translations of
|
||||
PhotoCraft's English labels; no proprietary translation resources were used.
|
||||
|
||||
|
||||
+1276
-4
File diff suppressed because it is too large
Load Diff
+27
-12
@@ -1,12 +1,12 @@
|
||||
# Spanish terminology
|
||||
# Spanish terminology and dynamic UI labels
|
||||
|
||||
This note goes with the review of the Spanish catalog
|
||||
(`crates/ui-egui/src/i18n/es.tsv`). The catalog already covered every measured key; the review
|
||||
aligned its wording with the terminology a Spanish-speaking Photoshop user already knows, fixed
|
||||
mistranslations, and made the register consistent. No proprietary translation resources, fonts,
|
||||
screenshots or user documents are included: the terms are the ones a Spanish Photoshop user sees
|
||||
in the product and its public help, and each was checked against the meaning of PhotoCraft's own
|
||||
English label.
|
||||
This note goes with the review and completion of the Spanish catalog
|
||||
(`crates/ui-egui/src/i18n/es.tsv`). It already covered every key measured by
|
||||
`cargo xtask i18n-coverage`; the terminology review aligned its wording with the vocabulary a
|
||||
Spanish-speaking image editor already knows, fixed mistranslations, and made the register
|
||||
consistent. A later pass added the 1,276 runtime-only labels it still lacked. No proprietary
|
||||
translation resources, fonts, screenshots or user documents are included: every translation was
|
||||
written from the meaning of PhotoCraft's own English label.
|
||||
|
||||
## Register and style
|
||||
|
||||
@@ -17,6 +17,19 @@ English label.
|
||||
- Quotation marks are «angulares»: «{name}».
|
||||
- Neutral Spanish, matching Adobe's single Spanish catalog (for example «coma flotante»).
|
||||
|
||||
## Dynamic UI coverage
|
||||
|
||||
After merging the newer upstream catalog rows, the catalog has 4,010 entries. It covers the
|
||||
complete Italian runtime key set and retains two Spanish profile-prompt labels that other
|
||||
catalogs also use. The additional labels include filter and adjustment parameters and choices,
|
||||
Filter Gallery names, Camera Raw, Lighting Effects, History and Layers controls, metadata,
|
||||
dialogs, status wrappers and System Info labels. Before this pass, those controls fell back to
|
||||
English because many are assembled dynamically and cannot be found by the static coverage scan.
|
||||
|
||||
`spanish_covers_generated_filter_options_and_gallery_names` in `filter_dialog.rs` enumerates the
|
||||
generated filter and adjustment surface and fails if a future label has no Spanish row. A few
|
||||
unused legacy labels are retained so the complete catalogs stay aligned.
|
||||
|
||||
## Terminology
|
||||
|
||||
| English source | Spanish UI | Was |
|
||||
@@ -61,7 +74,9 @@ Raw, droplet, OpenType, sRGB, Wayland) are not translated.
|
||||
|
||||
## Out of scope
|
||||
|
||||
Engine error, status and parameter-help messages are still English in every language (see
|
||||
[`localization-parity.md`](localization-parity.md)); this review does not change that. The review
|
||||
was AI-assisted, row by row against Photoshop's Spanish terminology; a review by a native
|
||||
speaker is still welcome.
|
||||
Engine-generated error details, status text and parameter help that do not pass through the UI
|
||||
catalog remain English in every language (see
|
||||
[`localization-parity.md`](localization-parity.md)). User document, layer and preset names and
|
||||
automation command IDs also remain unchanged. The completion was contributed by
|
||||
@gorevyoneticisi with OpenAI Codex as an AI contributor under the repository's MIT OR
|
||||
Apache-2.0 terms; a review by a native speaker is still welcome.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Localization parity
|
||||
|
||||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (Serbian catalog; previously minor: Italian native review) · **Target:** Adobe Photoshop 2026
|
||||
> **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-13 · **Change:** minor (Spanish dynamic labels; previously minor: Serbian catalog) · **Target:** Adobe Photoshop 2026
|
||||
|
||||
Per-language status of PhotoCraft's UI. How catalogs work and how to add one:
|
||||
[`localization.md`](localization.md). Language notes: [Korean](localization-ko.md), [Spanish](localization-es.md),
|
||||
@@ -32,7 +32,7 @@ speakers, ~55% ready. Remaining: 80–140 h, plus native-speaker review (recorde
|
||||
|---|---|---|---:|---|---|---|---|---:|
|
||||
| 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 |
|
||||
| Spanish | `es` | 1,844 / 1,844 (100%) | 4,010 | as above; complete dynamic UI key set | 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 |
|
||||
@@ -47,6 +47,7 @@ speakers, ~55% ready. Remaining: 80–140 h, plus native-speaker review (recorde
|
||||
|
||||
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` (4,008; also every dynamic label the
|
||||
Polish `pl` (3,366), Greek `el` (3,481), Dutch `nl` (3,568), Italian `it` (4,164; also every dynamic label the
|
||||
other catalogs translate; reviewed by a native speaker, [notes](localization-it.md)). Turkish `tr`
|
||||
(3,731 rows) also covers every measured key. Serbian `sr` (4,022 rows, Latin script, Ekavian, added 2026-10-12) covers every
|
||||
@@ -83,5 +84,6 @@ engine localization or native review is complete.
|
||||
| 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 |
|
||||
| 2026-10-11 | minor | Italian: 1,287 dynamic labels added (filter parameters, Camera Raw, lighting, panels, dialogs) and terminology made consistent |
|
||||
| 2026-10-12 | minor | Added Turkish (`tr`) catalog with 100% measured UI coverage |
|
||||
| 2026-10-12 | minor | Spanish: 1,276 runtime-only labels added (filter and adjustment parameters, Camera Raw, panels, dialogs and status wrappers); generated-label coverage test added |
|
||||
| 2026-10-12 | minor | Italian native-speaker review: mistranslations (Trap, HDR Toning, Display Text) and phrasing fixed |
|
||||
| 2026-10-12 | minor | Serbian (`sr`, Latin, Ekavian) catalog: every measured key plus the dynamic labels of the other catalogs |
|
||||
|
||||
Reference in New Issue
Block a user