Merge main into fix/a-symbol-instance-written-as-its-art-reads-back

This commit is contained in:
dotCooCoo
2026-11-15 02:11:11 -08:00
28 changed files with 113 additions and 9 deletions
+5 -1
View File
@@ -146,7 +146,11 @@ fn text(k: &str, v: &Value, multiline: bool) -> Result<String> {
return Err(bad(C, format!("{k} is too long (at most {MAX_TEXT} characters)")));
}
if s.chars().any(|c| c.is_control() && !(multiline && matches!(c, '\n' | '\r' | '\t'))) {
return Err(bad(C, format!("{k} has control characters{}", if multiline { "" } else { " or line breaks" })));
return Err(if multiline {
bad(C, format!("{k} has control characters"))
} else {
bad(C, format!("{k} has control characters or line breaks"))
});
}
Ok(s.to_string())
}
+23
View File
@@ -81,6 +81,29 @@ fn junk_is_rejected() {
assert_eq!(s.doc().unwrap().doc.metadata, DocMetadata { created: s.doc().unwrap().doc.metadata.created, ..Default::default() });
}
/// A control character inside a value is refused with the field's rule: Description and Copyright
/// Notice take line breaks and tabs, the other text fields and each keyword in a list take none.
#[test]
fn control_characters_are_refused_with_the_field_rule() {
let mut s = session();
for (params, msg) in [
(json!({"description": "a\u{7}b"}), "description has control characters"),
(json!({"copyrightNotice": "a\u{0}b"}), "copyrightNotice has control characters"),
(json!({"title": "a\nb"}), "title has control characters or line breaks"),
(json!({"author": "a\rb"}), "author has control characters or line breaks"),
(json!({"authorTitle": "a\tb"}), "authorTitle has control characters or line breaks"),
(json!({"copyrightUrl": "a\u{7}b"}), "copyrightUrl has control characters or line breaks"),
(json!({"keywords": ["ok", "a\nb"]}), "keywords has control characters or line breaks"),
] {
match s.execute("file.info", &params) {
Err(EngineError::BadParams { cmd, msg: got }) => assert_eq!((cmd.as_str(), got.as_str()), ("file.info", msg), "{params}"),
other => panic!("{params}: {other:?}"),
}
}
s.execute("file.info", &json!({"description": "two\nlines\tand a tab", "copyrightNotice": "a\r\nb"})).unwrap();
assert_eq!(s.doc().unwrap().doc.metadata.description, "two\nlines\tand a tab");
}
#[test]
fn file_info_round_trips_and_old_files_load() {
let mut s = session();
+2
View File
@@ -2483,6 +2483,8 @@ digits Malayalam Malaiàlam
Save Variable Library… Desa la biblioteca de variables…
@msg a variable library holds text variables, and the document has none una biblioteca de variables conté variables de text, i el document no en té cap
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` la variable `{name}` no es pot desar en una biblioteca de variables: canvieu-li el nom perquè comenci amb una lletra o `_`, sense espais ni símbols que no siguin `-`, `_` i `.`
@msg {k} has control characters {k} conté caràcters de control
@msg {k} has control characters or line breaks {k} conté caràcters de control o salts de línia
@msg data set `{name}` holds a control character, which a variable library can't hold el conjunt de dades `{name}` conté un caràcter de control, que una biblioteca de variables no pot contenir
@msg data set `{name}` starts or ends with white space, which a variable library can't hold el conjunt de dades `{name}` comença o acaba amb un espai en blanc, que una biblioteca de variables no pot contenir
Loaded Texture Textura carregada
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -6277,6 +6277,8 @@ mark-style Japanese Japonské
Save Variable Library… Uložit knihovnu proměnných…
@msg a variable library holds text variables, and the document has none knihovna proměnných obsahuje textové proměnné a dokument žádné nemá
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` proměnnou `{name}` nelze uložit do knihovny proměnných: přejmenujte ji tak, aby začínala písmenem nebo `_` a neobsahovala mezery ani jiné symboly než `-`, `_` a `.`
@msg {k} has control characters {k} obsahuje řídicí znaky
@msg {k} has control characters or line breaks {k} obsahuje řídicí znaky nebo zalomení řádků
@msg data set `{name}` holds a control character, which a variable library can't hold sada dat `{name}` obsahuje řídicí znak, který knihovna proměnných nemůže obsahovat
@msg data set `{name}` starts or ends with white space, which a variable library can't hold sada dat `{name}` začíná nebo končí prázdným znakem, který knihovna proměnných nemůže obsahovat
Make Graph Dynamic Nastavit graf jako dynamický
Can't render this file because it is too large.
+2
View File
@@ -6311,6 +6311,8 @@ mark-style Japanese Japansk
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` variablen `{name}` kan ikke gemmes i et variabelbibliotek: omdøb den, så den begynder med et bogstav eller `_`, uden mellemrum eller andre symboler end `-`, `_` og `.`
@msg data set `{name}` holds a control character, which a variable library can't hold datasættet `{name}` indeholder et kontroltegn, som et variabelbibliotek ikke kan indeholde
@msg data set `{name}` starts or ends with white space, which a variable library can't hold datasættet `{name}` begynder eller slutter med mellemrum, som et variabelbibliotek ikke kan indeholde
@msg {k} has control characters {k} indeholder kontroltegn
@msg {k} has control characters or line breaks {k} indeholder kontroltegn eller linjeskift
@msg variables that aren't text were left out: {kinds} variabler, der ikke er tekst, blev udeladt: {kinds}
@msg a new document won't read these variables back with their kind: {names} et nyt dokument læser ikke disse variabler tilbage med deres type: {names}
@msg a new document refuses this file because of these variables: {names} et nyt dokument afviser denne fil på grund af disse variabler: {names}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2 -1
View File
@@ -8994,7 +8994,8 @@ breakText Glyphs Glyphen
@msg {kind} files have no transparency, and the file would have {what}: flatten it first (object.flattenTransparency) {kind}-Dateien haben keine Transparenz, und die Datei hätte {what}: Reduzieren Sie sie zuerst (object.flattenTransparency)
@msg {kind} images can't be opened (see document.formats) {kind}-Bilder können nicht geöffnet werden (siehe document.formats)
@msg {k} `{v}` is not one of the choices {k} `{v}` ist keine der Auswahlmöglichkeiten
@msg {k} has control characters{_1} {k} enthält Steuerzeichen{_1}
@msg {k} has control characters {k} enthält Steuerzeichen
@msg {k} has control characters or line breaks {k} enthält Steuerzeichen oder Zeilenumbrüche
@msg {k} is too long (at most {MAX_TEXT} characters) {k} ist zu lang (höchstens {MAX_TEXT} Zeichen)
@msg {k} must be > 0 {k} muss > 0 sein
@msg {k} must be a number (pt) or a length such as "210 mm" {k} muss eine Zahl (pt) oder eine Länge wie „210 mm“ sein
Can't render this file because it is too large.
+2
View File
@@ -6134,6 +6134,8 @@ effect Points Σημεία
Save Variable Library… Αποθήκευση βιβλιοθήκης μεταβλητών…
@msg a variable library holds text variables, and the document has none μια βιβλιοθήκη μεταβλητών περιέχει μεταβλητές κειμένου και το έγγραφο δεν έχει καμία
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` η μεταβλητή `{name}` δεν μπορεί να αποθηκευτεί σε βιβλιοθήκη μεταβλητών: μετονομάστε την ώστε να ξεκινά με γράμμα ή `_`, χωρίς κενά ή σύμβολα εκτός από `-`, `_` και `.`
@msg {k} has control characters {k} περιέχει χαρακτήρες ελέγχου
@msg {k} has control characters or line breaks {k} περιέχει χαρακτήρες ελέγχου ή αλλαγές γραμμής
@msg data set `{name}` holds a control character, which a variable library can't hold το σύνολο δεδομένων `{name}` περιέχει χαρακτήρα ελέγχου, τον οποίο δεν μπορεί να περιέχει μια βιβλιοθήκη μεταβλητών
@msg data set `{name}` starts or ends with white space, which a variable library can't hold το σύνολο δεδομένων `{name}` ξεκινά ή τελειώνει με κενό διάστημα, το οποίο δεν μπορεί να περιέχει μια βιβλιοθήκη μεταβλητών
Filter Φίλτρο
Can't render this file because it is too large.
+2
View File
@@ -6222,6 +6222,8 @@ mark-style Japanese Japonesas
Save Variable Library… Guardar biblioteca de variables…
@msg a variable library holds text variables, and the document has none una biblioteca de variables contiene variables de texto y el documento no tiene ninguna
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` la variable `{name}` no se puede guardar en una biblioteca de variables: cámbiele el nombre para que empiece por una letra o `_`, sin espacios ni símbolos distintos de `-`, `_` y `.`
@msg {k} has control characters {k} contiene caracteres de control
@msg {k} has control characters or line breaks {k} contiene caracteres de control o saltos de línea
@msg data set `{name}` holds a control character, which a variable library can't hold el conjunto de datos `{name}` contiene un carácter de control, que una biblioteca de variables no puede contener
@msg data set `{name}` starts or ends with white space, which a variable library can't hold el conjunto de datos `{name}` empieza o termina con espacio en blanco, que una biblioteca de variables no puede contener
Make Graph Dynamic Hacer gráfico dinámico
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -6145,6 +6145,8 @@ mark-style Japanese Japanilainen
Save Variable Library… Tallenna muuttujakirjasto…
@msg a variable library holds text variables, and the document has none muuttujakirjasto sisältää tekstimuuttujia, eikä asiakirjassa ole yhtään
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` muuttujaa `{name}` ei voi tallentaa muuttujakirjastoon: nimeä se uudelleen niin, että se alkaa kirjaimella tai merkillä `_` eikä sisällä välilyöntejä tai muita symboleja kuin `-`, `_` ja `.`
@msg {k} has control characters {k} sisältää ohjausmerkkejä
@msg {k} has control characters or line breaks {k} sisältää ohjausmerkkejä tai rivinvaihtoja
@msg data set `{name}` holds a control character, which a variable library can't hold tietojoukko `{name}` sisältää ohjausmerkin, jota muuttujakirjasto ei voi sisältää
@msg data set `{name}` starts or ends with white space, which a variable library can't hold tietojoukko `{name}` alkaa tai päättyy tyhjeeseen, jota muuttujakirjasto ei voi sisältää
Filter Suodata
Can't render this file because it contains an unexpected character in line 2 and column 73.
+2
View File
@@ -6272,6 +6272,8 @@ theme Appearance Apparence
Save Variable Library… Enregistrer une bibliothèque de variables…
@msg a variable library holds text variables, and the document has none une bibliothèque de variables contient des variables de texte, et le document n’en a aucune
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` la variable `{name}` ne peut pas être enregistrée dans une bibliothèque de variables : renommez-la pour qu’elle commence par une lettre ou `_`, sans espaces ni symboles autres que `-`, `_` et `.`
@msg {k} has control characters {k} contient des caractères de contrôle
@msg {k} has control characters or line breaks {k} contient des caractères de contrôle ou des sauts de ligne
@msg data set `{name}` holds a control character, which a variable library can't hold le jeu de données `{name}` contient un caractère de contrôle, qu’une bibliothèque de variables ne peut pas contenir
@msg data set `{name}` starts or ends with white space, which a variable library can't hold le jeu de données `{name}` commence ou se termine par une espace, qu’une bibliothèque de variables ne peut pas contenir
Make Graph Dynamic Rendre le graphe dynamique
Can't render this file because it is too large.
+2 -1
View File
@@ -5939,7 +5939,8 @@ antiAlias Sharp शार्प
@msg {id} is not a slice {id} एक स्लाइस नहीं है
@msg {id} opens another app: only the person at the keyboard can run it {id} एक अन्य ऐप खोलता है: केवल कीबोर्ड पर व्यक्ति इसे चला सकता है
@msg {k} `{v}` is not one of the choices {k} `{v}` ऑप्शन में से एक नहीं है
@msg {k} has control characters{_1} {k} में नियंत्रण वर्ण हैं{_1}
@msg {k} has control characters {k} में नियंत्रण वर्ण हैं
@msg {k} has control characters or line breaks {k} में नियंत्रण वर्ण या लाइन ब्रेक हैं
@msg {k} is too long (at most {MAX_TEXT} characters) {k} बहुत लंबा है (अधिकांश {MAX_TEXT} वर्णों पर)
@msg {k} must be {{size?, position?}} {k} को {{size?, position?}} होना चाहिए
@msg {k} must be > 0 {k} होना चाहिए > 0
Can't render this file because it is too large.
+2
View File
@@ -6260,6 +6260,8 @@ imageTrace Outline Körvonal
Save Variable Library… Változókönyvtár mentése…
@msg a variable library holds text variables, and the document has none a változókönyvtár szöveges változókat tartalmaz, a dokumentumban pedig nincs ilyen
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` a(z) `{name}` változó nem menthető változókönyvtárba: nevezze át úgy, hogy betűvel vagy `_` jellel kezdődjön, szóközök és a `-`, `_` és `.` jeltől eltérő szimbólumok nélkül
@msg {k} has control characters {k} vezérlőkaraktereket tartalmaz
@msg {k} has control characters or line breaks {k} vezérlőkaraktereket vagy sortöréseket tartalmaz
@msg data set `{name}` holds a control character, which a variable library can't hold a(z) `{name}` adatkészlet vezérlőkaraktert tartalmaz, amelyet a változókönyvtár nem tartalmazhat
@msg data set `{name}` starts or ends with white space, which a variable library can't hold a(z) `{name}` adatkészlet szóközzel kezdődik vagy végződik, amelyet a változókönyvtár nem tartalmazhat
Make Graph Dynamic Diagram dinamikussá tétele
Can't render this file because it is too large.
+2 -1
View File
@@ -9044,7 +9044,8 @@ breakText Glyphs Glifi
@msg {kind} files have no transparency, and the file would have {what}: flatten it first (object.flattenTransparency) i file {kind} non hanno trasparenza, e il file avrebbe {what}: appiattiscila prima (object.flattenTransparency)
@msg {kind} images can't be opened (see document.formats) le immagini {kind} non possono essere aperte (vedi document.formats)
@msg {k} `{v}` is not one of the choices {k} `{v}` non è una delle scelte disponibili
@msg {k} has control characters{_1} {k} contiene caratteri di controllo{_1}
@msg {k} has control characters {k} contiene caratteri di controllo
@msg {k} has control characters or line breaks {k} contiene caratteri di controllo o interruzioni di riga
@msg {k} is too long (at most {MAX_TEXT} characters) {k} è troppo lungo (al massimo {MAX_TEXT} caratteri)
@msg {k} must be > 0 {k} deve essere > 0
@msg {k} must be a number (pt) or a length such as "210 mm" {k} deve essere un numero (pt) o una lunghezza come "210 mm"
Can't render this file because it is too large.
+2
View File
@@ -5941,6 +5941,8 @@ lighting Light ライト
Save Variable Library… 変数ライブラリを保存…
@msg a variable library holds text variables, and the document has none 変数ライブラリにはテキスト変数を保存しますが、このドキュメントにはテキスト変数がありません
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` 変数 `{name}` は変数ライブラリに保存できません: 英字または `_` で始まり、スペースや `-`、`_`、`.` 以外の記号を含まない名前に変更してください
@msg {k} has control characters {k} に制御文字が含まれています
@msg {k} has control characters or line breaks {k} に制御文字または改行が含まれています
@msg data set `{name}` holds a control character, which a variable library can't hold データセット `{name}` に変数ライブラリに保存できない制御文字が含まれています
@msg data set `{name}` starts or ends with white space, which a variable library can't hold データセット `{name}` の先頭または末尾に変数ライブラリに保存できない空白があります
Make Graph Dynamic グラフを動的にする
Can't render this file because it is too large.
+2
View File
@@ -5939,6 +5939,8 @@ imageTrace Outline კონტური
Save Variable Library… ცვლადების ბიბლიოთეკის შენახვა…
@msg a variable library holds text variables, and the document has none ცვლადების ბიბლიოთეკა ტექსტურ ცვლადებს შეიცავს, დოკუმენტს კი არცერთი არ აქვს
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` ცვლადი `{name}` ვერ შეინახება ცვლადების ბიბლიოთეკაში: გადაარქვით სახელი ისე, რომ იწყებოდეს ასოთი ან `_`-ით, ჰარეების და `-`, `_` და `.`-ის გარდა სხვა სიმბოლოების გარეშე
@msg {k} has control characters {k} შეიცავს მმართველ სიმბოლოებს
@msg {k} has control characters or line breaks {k} შეიცავს მმართველ სიმბოლოებს ან სტრიქონის წყვეტებს
@msg data set `{name}` holds a control character, which a variable library can't hold მონაცემთა ნაკრები `{name}` შეიცავს მმართველ სიმბოლოს, რომელსაც ცვლადების ბიბლიოთეკა ვერ შეინახავს
@msg data set `{name}` starts or ends with white space, which a variable library can't hold მონაცემთა ნაკრები `{name}` იწყება ან მთავრდება ჰარით, რომელსაც ცვლადების ბიბლიოთეკა ვერ შეინახავს
Make Graph Dynamic დიაგრამის დინამიკურად ქცევა
Can't render this file because it is too large.
+2
View File
@@ -5858,6 +5858,8 @@ lighting Light 광원
Save Variable Library… 변수 라이브러리 저장…
@msg a variable library holds text variables, and the document has none 변수 라이브러리에는 텍스트 변수가 들어가는데 문서에 텍스트 변수가 없습니다
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` 변수 `{name}`은(는) 변수 라이브러리에 저장할 수 없습니다: 문자나 `_`로 시작하고 공백이나 `-`, `_`, `.` 이외의 기호가 없도록 이름을 바꾸세요
@msg {k} has control characters {k}에 제어 문자가 있습니다
@msg {k} has control characters or line breaks {k}에 제어 문자 또는 줄 바꿈이 있습니다
@msg data set `{name}` holds a control character, which a variable library can't hold 데이터 세트 `{name}`에 변수 라이브러리에 담을 수 없는 제어 문자가 있습니다
@msg data set `{name}` starts or ends with white space, which a variable library can't hold 데이터 세트 `{name}`의 앞이나 뒤에 변수 라이브러리에 담을 수 없는 공백이 있습니다
Make Graph Dynamic 그래프를 동적으로 만들기
Can't render this file because it is too large.
+2
View File
@@ -8103,6 +8103,8 @@ mark-style Japanese Japans
Save Variable Library… Variabelenbibliotheek opslaan…
@msg a variable library holds text variables, and the document has none een variabelenbibliotheek bevat tekstvariabelen, en het document heeft er geen
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` variabele `{name}` kan niet in een variabelenbibliotheek worden opgeslagen: geef haar een naam die met een letter of `_` begint, zonder spaties of andere symbolen dan `-`, `_` en `.`
@msg {k} has control characters {k} bevat stuurtekens
@msg {k} has control characters or line breaks {k} bevat stuurtekens of regeleinden
@msg data set `{name}` holds a control character, which a variable library can't hold gegevensset `{name}` bevat een stuurteken, dat een variabelenbibliotheek niet kan bevatten
@msg data set `{name}` starts or ends with white space, which a variable library can't hold gegevensset `{name}` begint of eindigt met witruimte, die een variabelenbibliotheek niet kan bevatten
Make Graph Dynamic Grafiek dynamisch maken
Can't render this file because it is too large.
+2 -1
View File
@@ -6131,6 +6131,8 @@ mark-style Japanese Japońskie
Save Variable Library… Zapisz bibliotekę zmiennych…
@msg a variable library holds text variables, and the document has none biblioteka zmiennych zawiera zmienne tekstowe, a dokument nie ma żadnej
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` nie można zapisać zmiennej `{name}` w bibliotece zmiennych: zmień jej nazwę tak, aby zaczynała się literą lub `_`, bez spacji i symboli innych niż `-`, `_` i `.`
@msg {k} has control characters {k} zawiera znaki sterujące
@msg {k} has control characters or line breaks {k} zawiera znaki sterujące lub podziały wierszy
@msg data set `{name}` holds a control character, which a variable library can't hold zestaw danych `{name}` zawiera znak sterujący, którego biblioteka zmiennych nie może zawierać
@msg data set `{name}` starts or ends with white space, which a variable library can't hold zestaw danych `{name}` zaczyna się lub kończy białym znakiem, którego biblioteka zmiennych nie może zawierać
Make Graph Dynamic Uczyń wykres dynamicznym
@@ -9282,7 +9284,6 @@ breakText Glyphs Glify
@msg {kind} files have no transparency, and the file would have {what}: flatten it first (object.flattenTransparency) pliki {kind} nie obsługują przezroczystości, a plik zawierałby {what}: najpierw spłaszcz przezroczystość (object.flattenTransparency)
@msg {kind} images can't be opened (see document.formats) obrazów {kind} nie można otwierać (patrz document.formats)
@msg {k} `{v}` is not one of the choices {k} `{v}` nie jest jedną z dostępnych opcji
@msg {k} has control characters{_1} {k} zawiera znaki sterujące{_1}
@msg {k} is too long (at most {MAX_TEXT} characters) {k} jest zbyt długie (najwyżej {MAX_TEXT} znaków)
@msg {k} must be > 0 {k} musi być > 0
@msg {k} must be a number (pt) or a length such as "210 mm" {k} musi być liczbą (pt) lub długością, na przykład "210 mm"
Can't render this file because it is too large.
+2 -1
View File
@@ -9588,7 +9588,8 @@ swatch Yellow Green Verde-amarelado
@msg {kind} files have no transparency, and the file would have {what}: flatten it first (object.flattenTransparency) os arquivos {kind} não têm transparência, e o arquivo teria {what}: achate-a primeiro (object.flattenTransparency)
@msg {kind} images can't be opened (see document.formats) as imagens {kind} não podem ser abertas (veja document.formats)
@msg {k} `{v}` is not one of the choices {k} `{v}` não é uma das opções
@msg {k} has control characters{_1} {k} tem caracteres de controle{_1}
@msg {k} has control characters {k} tem caracteres de controle
@msg {k} has control characters or line breaks {k} tem caracteres de controle ou quebras de linha
@msg {k} is too long (at most {MAX_TEXT} characters) {k} é longo demais (no máximo {MAX_TEXT} caracteres)
@msg {k} must be > 0 {k} deve ser > 0
@msg {k} must be a number (pt) or a length such as "210 mm" {k} deve ser um número (pt) ou um comprimento como "210 mm"
Can't render this file because it is too large.
+2
View File
@@ -5884,6 +5884,8 @@ lighting Light Свет
Save Variable Library… Сохранить библиотеку переменных…
@msg a variable library holds text variables, and the document has none библиотека переменных содержит текстовые переменные, а в документе их нет
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` переменную `{name}` нельзя сохранить в библиотеке переменных: переименуйте её так, чтобы имя начиналось с буквы или `_` и не содержало пробелов и символов, кроме `-`, `_` и `.`
@msg {k} has control characters {k} содержит управляющие символы
@msg {k} has control characters or line breaks {k} содержит управляющие символы или разрывы строк
@msg data set `{name}` holds a control character, which a variable library can't hold набор данных `{name}` содержит управляющий символ, который не может храниться в библиотеке переменных
@msg data set `{name}` starts or ends with white space, which a variable library can't hold набор данных `{name}` начинается или заканчивается пробелом, который не может храниться в библиотеке переменных
Make Graph Dynamic Сделать диаграмму динамической
Can't render this file because it is too large.
+2 -1
View File
@@ -7575,7 +7575,8 @@ digits Hindi Hindi
@msg {g} is not a Live Paint group {g} är inte en direktmålningsgrupp
@msg {id} is not a slice {id} är inte en skiva
@msg {k} `{v}` is not one of the choices {k} `{v}` är inte ett av valen
@msg {k} has control characters{_1} {k} innehåller styrtecken{_1}
@msg {k} has control characters {k} innehåller styrtecken
@msg {k} has control characters or line breaks {k} innehåller styrtecken eller radbrytningar
@msg {k} is too long (at most {MAX_TEXT} characters) {k} är för lång (högst {MAX_TEXT} tecken)
@msg {k} must be {{size?, position?}} {k} måste vara {{size?, position?}}
@msg {k} must be > 0 {k} måste vara > 0
Can't render this file because it is too large.
+36
View File
@@ -2194,6 +2194,42 @@ fn recolor_notes_on_objects_left_unchanged_translate_with_their_counts() {
}
}
/// `file.info`'s refusal of a value with control characters is two whole messages, one for the
/// fields that take line breaks and one for the fields that don't, and each is translated in every
/// complete-message language with the field's key kept as written.
#[test]
fn file_info_control_character_refusals_translate_in_every_complete_catalog() {
use serde_json::json;
let literals = message_literals_in(&["engine"]);
for key in ["{k} has control characters", "{k} has control characters or line breaks"] {
assert!(literals.contains(key), "the message scan doesn't find {key:?}");
}
let mut s = vectorcraft_engine::Session::new();
s.execute("file.new", &json!({"width": 100, "height": 100})).unwrap();
let refusals = [
(json!({"description": "a\u{7}b"}), "description", "has control characters"),
(json!({"copyrightNotice": "a\u{7}b"}), "copyrightNotice", "has control characters"),
(json!({"title": "a\nb"}), "title", "has control characters or line breaks"),
(json!({"author": "a\nb"}), "author", "has control characters or line breaks"),
(json!({"authorTitle": "a\rb"}), "authorTitle", "has control characters or line breaks"),
(json!({"copyrightUrl": "a\u{7}b"}), "copyrightUrl", "has control characters or line breaks"),
(json!({"keywords": ["ok", "a\tb"]}), "keywords", "has control characters or line breaks"),
];
for (params, field, rule) in refusals {
let error = s.execute("file.info", &params).unwrap_err().to_string();
assert_eq!(error, format!("invalid parameters for `file.info`: {field} {rule}"));
for code in COMPLETE_MESSAGES {
let shown = message(Lang::from_code(code).expect("registered"), &error);
// Whole runs of Latin letters, so that Spanish's "control" is not read as English and
// Korean's `description에` still shows the key.
let words: Vec<&str> = shown.split(|c: char| !c.is_ascii_alphabetic()).collect();
let english = ["has", "characters", "or", "line", "breaks"];
assert!(words.iter().all(|w| !english.contains(w)), "{code}: {shown}");
assert!(words.contains(&field), "{code}: {shown}");
}
}
}
/// Every complete-message catalog has a row for each error that `type.compositeFonts.set`,
/// `.export` and `.import`, the composite font checks behind them and the Composite Fonts dialog
/// give, and translates them with the font name, the key and the class key kept, and the reason
+2
View File
@@ -6382,6 +6382,8 @@ theme Appearance Görünüm
Save Variable Library… Değişken Kitaplığını Kaydet…
@msg a variable library holds text variables, and the document has none değişken kitaplığı metin değişkenleri içerir ve belgede hiç metin değişkeni yok
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` `{name}` değişkeni değişken kitaplığına kaydedilemiyor: adını bir harf veya `_` ile başlayacak, boşluk ya da `-`, `_` ve `.` dışında simge içermeyecek şekilde değiştirin
@msg {k} has control characters {k} denetim karakterleri içeriyor
@msg {k} has control characters or line breaks {k} denetim karakterleri veya satır sonları içeriyor
@msg data set `{name}` holds a control character, which a variable library can't hold `{name}` veri kümesi, değişken kitaplığının tutamayacağı bir denetim karakteri içeriyor
@msg data set `{name}` starts or ends with white space, which a variable library can't hold `{name}` veri kümesi, değişken kitaplığının tutamayacağı bir boşlukla başlıyor veya bitiyor
Long Uzun
Can't render this file because it is too large.
+2 -1
View File
@@ -5877,6 +5877,8 @@ lighting Light Світло
Save Variable Library… Зберегти бібліотеку змінних…
@msg a variable library holds text variables, and the document has none бібліотека змінних містить текстові змінні, а в документі їх немає
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` змінну `{name}` не можна зберегти в бібліотеці змінних: перейменуйте її так, щоб ім’я починалося з літери або `_` і не містило пробілів і символів, крім `-`, `_` і `.`
@msg {k} has control characters {k} містить керівні символи
@msg {k} has control characters or line breaks {k} містить керівні символи або розриви рядків
@msg data set `{name}` holds a control character, which a variable library can't hold набір даних `{name}` містить керівний символ, який бібліотека змінних не може містити
@msg data set `{name}` starts or ends with white space, which a variable library can't hold набір даних `{name}` починається або закінчується пробілом, який бібліотека змінних не може містити
Make Graph Dynamic Зробити діаграму динамічною
@@ -9117,7 +9119,6 @@ breakText Glyphs Гліфи
@msg {kind} files have no transparency, and the file would have {what}: flatten it first (object.flattenTransparency) файли {kind} не мають прозорості, а файл містив би таке: {what}; спочатку зведіть прозорість (object.flattenTransparency)
@msg {kind} images can't be opened (see document.formats) зображення {kind} не можна відкрити (див. document.formats)
@msg {k} `{v}` is not one of the choices {k} `{v}` не є одним із варіантів
@msg {k} has control characters{_1} {k} містить керівні символи{_1}
@msg {k} is too long (at most {MAX_TEXT} characters) {k} задовгий (не більше {MAX_TEXT} символів)
@msg {k} must be > 0 {k} має бути > 0
@msg {k} must be a number (pt) or a length such as "210 mm" {k} має бути числом (pt) або довжиною на зразок "210 mm"
Can't render this file because it is too large.
+2
View File
@@ -5882,6 +5882,8 @@ theme Appearance Giao diện
Save Variable Library… Lưu thư viện biến số…
@msg a variable library holds text variables, and the document has none thư viện biến số chứa các biến số văn bản, và tài liệu không có biến số văn bản nào
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` không thể lưu biến số `{name}` vào thư viện biến số: hãy đổi tên để bắt đầu bằng một chữ cái hoặc `_`, không có khoảng trắng hay ký hiệu nào ngoài `-`, `_` và `.`
@msg {k} has control characters {k} chứa ký tự điều khiển
@msg {k} has control characters or line breaks {k} chứa ký tự điều khiển hoặc ngắt dòng
@msg data set `{name}` holds a control character, which a variable library can't hold tập dữ liệu `{name}` chứa ký tự điều khiển mà thư viện biến số không thể chứa
@msg data set `{name}` starts or ends with white space, which a variable library can't hold tập dữ liệu `{name}` bắt đầu hoặc kết thúc bằng khoảng trắng mà thư viện biến số không thể chứa
Make Graph Dynamic Tạo biểu đồ động
Can't render this file because it contains an unexpected character in line 205 and column 5.
+2 -1
View File
@@ -6119,6 +6119,8 @@ lighting Light 光源
Save Variable Library… 保存变量库…
@msg a variable library holds text variables, and the document has none 变量库包含文本变量,而文档中没有文本变量
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` 无法将变量 `{name}` 保存到变量库中:请重命名,使其以字母或 `_` 开头,且不含空格或 `-`、`_`、`.` 以外的符号
@msg {k} has control characters {k} 包含控制字符
@msg {k} has control characters or line breaks {k} 包含控制字符或换行
@msg data set `{name}` holds a control character, which a variable library can't hold 数据集 `{name}` 包含变量库无法保存的控制字符
@msg data set `{name}` starts or ends with white space, which a variable library can't hold 数据集 `{name}` 的开头或结尾有变量库无法保存的空白字符
Make Graph Dynamic 使图表动态化
@@ -9268,7 +9270,6 @@ breakText Glyphs 字形
@msg {kind} files have no transparency, and the file would have {what}: flatten it first (object.flattenTransparency) {kind} 文件不支持透明度,而该文件会包含 {what}:请先拼合 (object.flattenTransparency)
@msg {kind} images can't be opened (see document.formats) 无法打开 {kind} 图像 (参见 document.formats)
@msg {k} `{v}` is not one of the choices {k} `{v}` 不在可选项之中
@msg {k} has control characters{_1} {k} 含有控制字符{_1}
@msg {k} is too long (at most {MAX_TEXT} characters) {k} 过长 (最多 {MAX_TEXT} 个字符)
@msg {k} must be > 0 {k} 必须 > 0
@msg {k} must be a number (pt) or a length such as "210 mm" {k} 必须是数字 (pt) 或 "210 mm" 这样的长度
Can't render this file because it is too large.
+2
View File
@@ -5953,6 +5953,8 @@ lighting Light 光源
Save Variable Library… 儲存變數資料庫…
@msg a variable library holds text variables, and the document has none 變數資料庫包含文字變數,但文件中沒有文字變數
@msg variable `{name}` can't be saved in a variable library: rename it to start with a letter or `_`, without spaces or symbols other than `-`, `_` and `.` 無法將變數 `{name}` 儲存到變數資料庫:請重新命名,使其以字母或 `_` 開頭,且不含空格或 `-`、`_`、`.` 以外的符號
@msg {k} has control characters {k} 包含控制字元
@msg {k} has control characters or line breaks {k} 包含控制字元或換行
@msg data set `{name}` holds a control character, which a variable library can't hold 資料集 `{name}` 包含變數資料庫無法儲存的控制字元
@msg data set `{name}` starts or ends with white space, which a variable library can't hold 資料集 `{name}` 的開頭或結尾有變數資料庫無法儲存的空白字元
Make Graph Dynamic 使圖表動態化
Can't render this file because it is too large.
+1
View File
@@ -990,6 +990,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
- The errors of the blend spine commands (Move Spine Point, Reshape Spine Segment, Add Spine Point and Delete Spine Point) show in the status bar in the interface language: each has a row in every catalog that translates all status and error messages and in Bulgarian (`blend_spine_param_errors_are_translated`).
- The errors of the 3D effects (Extrude & Bevel, Revolve, Inflate, Rotate and their Classic forms) show in the status bar in the interface language: the art a 3D effect cannot build a solid from, invalid light, graphics and surface settings, and the notes for an object that draws no 3D faces or more wireframe edges than the limit. Each has a row in every catalog that translates all status and error messages, and the effect's name and the values in the message are translated or kept as written (`three_d_refusals_are_translated_in_every_complete_catalog`, `three_d_refusals_translate_with_their_values`).
- The errors of the parameter checks that many commands share show in the status bar in the interface language: a value that is not a number where a number goes (`object.move` with `"dx": "60 mm"`, and `object.rotate`, `object.setBounds` and the other commands that call `check_numbers`), a missing number or index, `ids` that are not a list of object ids, an object id that is not a non-negative integer or names no object, and a date that is not Unix seconds. Each has a row in every catalog that translates all status and error messages, and in Bulgarian, Danish, Indonesian and Dutch (`shared_param_check_errors_are_translated`).
- File Info's (`file.info`) error for a value with control characters shows in the status bar in the interface language for every field: "description has control characters" for Description and Copyright Notice, which take line breaks and tabs, and "title has control characters or line breaks" for the other text fields and each keyword in a list. Each is its own message with a row in every catalog that translates all status and error messages, and the field's key stays as written (`file_info_control_character_refusals_translate_in_every_complete_catalog`, `control_characters_are_refused_with_the_field_rule`).
- A parameter schema's errors show in the status bar with what the value must be in the interface language, for every type a schema has (a number with each kind of range and with a unit, an integer and its range, true or false, a string, a list of names, an object id, a list of object ids, a color, a point, an object and a list), in every catalog that translates all status and error messages; the path, the refused value, the bounds, the unit and the names stay as the English gives them. The error for a value that is not one of its names is also translated in Bulgarian, Bosnian, Danish, Indonesian and Dutch (`parameter_schema_expected_phrases_are_translated`, `bracketed_message_parts_translate_only_as_exact_messages`).
- The untranslated report lists the status and error messages of the effects, swatch libraries, raster sizes and encoders, 3D solids and path operations that a catalog lacks, the messages that a `.map_err` closure or a named error handler returns, and the phrases a parameter schema's error builds for what a value must be (`untranslated_report_checks_every_message_crate_and_schema_phrase`, `message_scan_reads_map_err_closures`, `message_scan_reads_named_map_err_handlers`).
- Spanish messages (2026-11-13): the Spanish catalog (`crates/ui-egui/src/i18n/es.tsv`) has an `@msg` row for 114 of the 167 status and error messages that the untranslated report (`untranslated_report`) lists as missing in all 23 complete-message languages: the errors of the image encoders, color profiles, swatch exchange files and color books, 3D and Revolve, path operations, DXF import, the script engine and the parameter checks. Open #7211 and #7378 translate 51 of the others (the composite font and SVG filter errors), and 2 stay in English. The rows keep the placeholders, backticked names, accepted values and limits of their English (`spanish_translates_encoder_profile_swatch_revolve_and_parameter_errors`); native review remains; scores and estimates unchanged.