diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index 247bb7283..8041aa9a3 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -2993,7 +2993,7 @@ font-technology Variable Променливи Size/Leading Размер/Интервал Size: Размер: Ridges per segment: Изпъкналости на сегмент: - Size: {size} Tracking: {tracking} Размер: {size} Интервал: {tracking} + Size: {size} Tracking: {tracking} Размер: {size} Разредка: {tracking} Skew Искавяване Skin Tone Ramps Градиенти за цвят на кожата Skip Blank Artboards Пропускане на празни работни области diff --git a/crates/ui-egui/src/i18n/da.tsv b/crates/ui-egui/src/i18n/da.tsv index b334e5bf3..3816a2b89 100644 --- a/crates/ui-egui/src/i18n/da.tsv +++ b/crates/ui-egui/src/i18n/da.tsv @@ -5033,7 +5033,7 @@ mark-style Japanese Japansk This system has no screen color sampler Dette system har ingen skærmfarvesampler Color blindness – Tritanopia-type Farveblindhed – tritanopitype Panels Except Tools and Control Paneler undtagen værktøjer og kontrol - Reset Tracking and Kerning Nulstil spærring og kerning + Reset Tracking and Kerning Nulstil sporing og kerning Reset Horizontal Scale Nulstil vandret skalering @msg span must be "object" or "selection", got {v} span skal være "object" eller "selection", fik {v} @msg span: "selection" places a `gradient`, not a swatch span: "selection" placerer en `gradient`, ikke en farveprøve diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index d7969cb2d..8453a2da5 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -3458,7 +3458,7 @@ theme Appearance Εμφάνιση Size Tile to Art Προσαρμογή μεγέθους πλακιδίου στο σχέδιο Size/Leading Μέγεθος/διάστιχο Ridges per segment: Ράχες ανά τμήμα: - Size: {size} Tracking: {tracking} Μέγεθος: {size} Αραίωση: {tracking} + Size: {size} Tracking: {tracking} Μέγεθος: {size} Απόσταση χαρακτήρων: {tracking} Skin Tone Ramps Χρωματικές κλίμακες τόνων δέρματος Skip Blank Artboards Παράλειψη κενών πινάκων σχεδίασης Sky Gradients Ντεγκραντέ ουρανού diff --git a/crates/ui-egui/src/i18n/id.tsv b/crates/ui-egui/src/i18n/id.tsv index 6fece04c5..bda640804 100644 --- a/crates/ui-egui/src/i18n/id.tsv +++ b/crates/ui-egui/src/i18n/id.tsv @@ -5033,7 +5033,7 @@ mark-style Japanese Jepang This system has no screen color sampler Sistem ini tidak memiliki pengambil warna layar Color blindness – Tritanopia-type Buta warna – tipe Tritanopia Panels Except Tools and Control Semua panel kecuali Alat dan Kontrol - Reset Tracking and Kerning Atur ulang pelacakan dan kerning + Reset Tracking and Kerning Atur ulang tracking dan kerning Reset Horizontal Scale Atur ulang skala horizontal @msg span must be "object" or "selection", got {v} span harus "object" atau "selection", diterima {v} @msg span: "selection" places a `gradient`, not a swatch span: "selection" menempatkan `gradient`, bukan swatch diff --git a/crates/ui-egui/src/i18n/nl.tsv b/crates/ui-egui/src/i18n/nl.tsv index 9f89ed98f..59d7280d8 100644 --- a/crates/ui-egui/src/i18n/nl.tsv +++ b/crates/ui-egui/src/i18n/nl.tsv @@ -1524,7 +1524,7 @@ lighting Light Licht Threshold Drempel Trace Traceren Trace the image with the Default preset De afbeelding traceren met de standaardvoorinstelling - Size: {size} Tracking: {tracking} Grootte: {size} Spatiëring: {tracking} + Size: {size} Tracking: {tracking} Grootte: {size} Tracking: {tracking} Create New Layer Nieuwe laag maken Create New Sublayer Nieuwe sublaag maken @@ -5045,7 +5045,7 @@ mark-style Japanese Japans This system has no screen color sampler Dit systeem heeft geen schermkleurkiezer Color blindness – Tritanopia-type Kleurenblindheid – type tritanopie Panels Except Tools and Control Alle panelen behalve Gereedschap en Bediening - Reset Tracking and Kerning Spatiëring en kerning herstellen + Reset Tracking and Kerning Tracking en kerning herstellen Reset Horizontal Scale Horizontale schaal herstellen @msg span must be "object" or "selection", got {v} span moet "object" of "selection" zijn, maar is {v} @msg span: "selection" places a `gradient`, not a swatch span: "selection" plaatst een `gradient`, geen staal diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index 6856cd77d..1c6b7a218 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -1382,7 +1382,7 @@ Keep Plain Text Manter Texto Simples Keep both sides the same width Manter os dois lados com a mesma largura Keep this row's colors (exclude) Manter as cores desta linha (excluir) - Kerning (0 = Auto) Entrelinhamento (0 = Automático) + Kerning (0 = Auto) Kerning (0 = Automático) Keyboard Increment Incremento do Teclado Keyboard Shortcut Conflicts Conflitos de Atalhos de Teclado Keyboard Shortcut Set Conjunto de Atalhos de Teclado diff --git a/crates/ui-egui/src/i18n/tests.rs b/crates/ui-egui/src/i18n/tests.rs index a34d6184b..8b423bde1 100644 --- a/crates/ui-egui/src/i18n/tests.rs +++ b/crates/ui-egui/src/i18n/tests.rs @@ -486,6 +486,42 @@ fn no_translated_word_mixes_latin_cyrillic_and_greek_letters() { assert!(bad.is_empty(), "words that mix scripts:\n{}", bad.join("\n")); } +/// Each catalog gives the Character panel's Kerning, Leading and Tracking fields three different +/// names, every word of the Tracking and Kerning names appears in the Reset Tracking and Kerning +/// row, and every word of the Tracking name appears in the Info panel's type line outside its +/// placeholders (ignoring case). +/// A catalog without one of these rows is skipped for the checks that need it. +#[test] +fn character_panel_terms_agree_within_each_catalog() { + let mut bad = Vec::new(); + for l in LANGUAGES.iter().filter(|l| !l.source.is_empty()) { + let (entries, _) = parse_entries(l.source); + let row = |src: &str| entries.iter().find(|(ctx, s, _)| ctx.is_empty() && s == src).map(|(_, _, tr)| tr.to_lowercase()); + let kerning = row("Kerning (0 = Auto)").map(|tr| tr.split(" (").next().unwrap_or_default().trim().to_string()); + let leading = row("Leading"); + let tracking = row("Tracking"); + for (a, b) in [(&kerning, &leading), (&kerning, &tracking), (&leading, &tracking)] { + if let (Some(a), Some(b)) = (a, b) + && a == b + { + bad.push(format!("{}: two Character panel fields are both {a:?}", l.code)); + } + } + let mut uses = |row_src: &str, term: &Option| { + if let (Some(text), Some(term)) = (row(row_src), term) { + let bare = placeholders(&text).iter().fold(text.clone(), |t, p| t.replace(&format!("{{{p}}}"), " ")); + for word in term.split_whitespace().filter(|w| !bare.contains(*w)) { + bad.push(format!("{}: {row_src:?} → {text:?} lacks {word:?} from the field {term:?}", l.code)); + } + } + }; + uses("Reset Tracking and Kerning", &tracking); + uses("Reset Tracking and Kerning", &kerning); + uses("Size: {size} Tracking: {tracking}", &tracking); + } + assert!(bad.is_empty(), "Character panel terms that disagree:\n{}", bad.join("\n")); +} + /// Every `tl!("…")` literal in this crate's sources (test modules aside). pub fn tl_literals() -> std::collections::BTreeSet { let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("src"); diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv index 94fcfc71c..e0c17f972 100644 --- a/crates/ui-egui/src/i18n/tr.tsv +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -1106,7 +1106,7 @@ font-technology Variable Değişken Decrease Font Size by Five Steps Yazı Tipi Boyutunu Beş Adım Azaltın Increase Font Size Yazı Tipi Boyutunu Artır Increase Font Size by Five Steps Yazı Tipi Boyutunu Beş Adım Artırın - Reset Tracking and Kerning İzlemeyi ve Karakter Aralığını Sıfırla + Reset Tracking and Kerning Takip ve Karakter Aralığını Sıfırla Reset Horizontal Scale Yatay Ölçeği Sıfırla Spacing Aralık Step Type Adım Türü