i18n: Character panel Kerning and Tracking terms agree in each catalog

In Brazilian Portuguese the Character panel's Kerning field was named
Entrelinhamento, the word the catalog uses for Leading, so the two
fields had the same name. In Danish, Turkish, Indonesian and Dutch the
Reset Tracking and Kerning command named tracking with a different word
from the Tracking field, and in Dutch, Bulgarian and Greek the Info
panel's type line did the same.

The pt-br Kerning field is now Kerning (0 = Automático). The reset row
in da, tr, id and nl and the Info panel row in nl, bg and el now use
the word of the catalog's Tracking field. A new test checks that the
three fields have different names in every catalog and that the reset
row and the Info panel row use the field words.
This commit is contained in:
dotCooCoo
2026-10-29 10:10:58 +07:00
committed by bflatastic
parent ef8d178441
commit 946ed6f12d
8 changed files with 44 additions and 8 deletions
+1 -1
View File
@@ -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 Пропускане на празни работни области
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1 -1
View File
@@ -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
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1 -1
View File
@@ -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 Ντεγκραντέ ουρανού
Can't render this file because it contains an unexpected character in line 2070 and column 19.
+1 -1
View File
@@ -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
Can't render this file because it contains an unexpected character in line 3857 and column 19.
+2 -2
View File
@@ -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}
<Opacity Mask> <Dekkingsmasker>
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
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1 -1
View File
@@ -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
Can't render this file because it contains an unexpected character in line 6 and column 47.
+36
View File
@@ -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<String>| {
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<String> {
let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("src");
+1 -1
View File
@@ -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ü
Can't render this file because it contains an unexpected character in line 5 and column 25.