diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index be9e2c448e..bb269fb1a3 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -7,7 +7,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Greek UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "cefa955aa92790d6773cb1d1e15e19019b3165a00528d57d6617362e1d1988ab" +sha256 = "ab55155f8f6380fb23fe450aff8e40dff5b4cb1f50ae24c8a9ab976b78570c3a" # ATTRIBUTION.toml: one entry per asset (AGENTS.md §1). The source of truth for provenance and licences. # ATTRIBUTION.md is generated from this file: `cargo xtask assets --write`. Checked by `cargo xtask assets` (part of `xtask ci`). @@ -30,7 +30,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Simplified Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "dbfebf4e9b2e9ac31ecf72202c2098173e72ebfaf90e9fee8f0563a6734fe31f" +sha256 = "a4eb6808240d303170ca0beadc46b0c246ee30e3a30bdaaaa11631c342bfd817" [[asset]] path = "crates/ui-egui/src/i18n/zh-hant.tsv" @@ -41,7 +41,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Traditional Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "0b0dafa3806a6b3508684f64e1f07b435113f8efd0e59201d12250c63c1d9547" +sha256 = "65a0c9b8537f27346649455df42a030c76f06faa2797415500f3a631316d0230" [[asset]] path = "crates/ui-egui/src/i18n/cs.tsv" @@ -52,7 +52,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Czech UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "898a5240fa59cac42ef6b99cb60bcfca0094ac27370e1c8d020bd27936b56517" +sha256 = "05593aedf7365d0d3cf5ea6104f9c7db439cae47917565267755ddc84cc12ad0" [[asset]] path = "crates/ui-egui/src/i18n/pt-br.tsv" @@ -63,7 +63,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "b4745c94797575529cd0e78c18c71fa2c0dfddfbf19b9c40b41dc2057c6f6543" +sha256 = "efdd1dc820ab9c9bbcd85c47dea9734a8185474cad813a9f53b027ed33b0b920" [[asset]] path = "crates/ui-egui/src/i18n/es.tsv" @@ -74,7 +74,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "2acb3f6522d6d1f744343f474fe4c51ebec610a888a7fa83fc9422228e6fa3c1" +sha256 = "f734e631389b6975842c895b25bb5d9538ec59e99662b86ad5f4071662b0482d" [[asset]] path = "crates/ui-egui/src/i18n/fr.tsv" @@ -85,7 +85,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "French UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "1b739478a4f186a49900cce84edbe136206a53b46340322df4caf77bb3fb5b12" +sha256 = "660c42850bbcde194af1d37a0eb54c95f0026e64b20e12c6966c38287ed3bbda" [[asset]] path = "crates/ui-egui/src/i18n/de.tsv" @@ -96,7 +96,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "German UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "da3b71608ff7fe6e230b076207cee96ac01f66e068ca1be83af1ad56ac9c60eb" +sha256 = "ef5f24485251bcdb7414f11612edc7ed717ec0ee50ed7b5f7c4fab719fc15a1f" [[asset]] path = "crates/ui-egui/src/i18n/te.tsv" @@ -107,7 +107,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Telugu UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "989d2e5f57cf22c21a85951835ca9fbd05e314da67eb4c17332df1f03679fa00" +sha256 = "8f9c39cf5b8b9b026da8ccf9478bc08f7fc94f796ea93e57d262314985753004" [[asset]] path = "crates/ui-egui/src/i18n/it.tsv" @@ -118,7 +118,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Italian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "5e84916e3ad8670216360695689fe8fd624365a29886f66a3c655ba126892f5b" +sha256 = "2572b6b58a29bac3dfa9d4800480ae5ba0e5bc84831c44930673bf0066d4acbc" [[asset]] path = "crates/ui-egui/src/i18n/pl.tsv" @@ -129,7 +129,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Polish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "988bcf2e0322a46c0464ff7b91ab5d90193b0ea7f454812d12595eb843de6fc7" +sha256 = "7bd63fc65c3a891b794a4c6b3353fee127ba5e9a6e626339b977c5f6f8b0dd1c" [[asset]] path = "crates/ui-egui/src/i18n/ru.tsv" @@ -140,7 +140,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Russian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "084f4ea06f31c632ad90b0e87f66240ce5b5dc012ac7770987d44918ee66f452" +sha256 = "7caff1c3546b1f7ce3edca0eacc24c5c4556bcadeceeefe1470e95e9e8555008" [[asset]] path = "crates/ui-egui/src/i18n/hu.tsv" @@ -151,7 +151,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Hungarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "973cd90ec34c8a973d146a0e2c73c1d632e17357c3d87ccf10c59e64d12c1587" +sha256 = "17510c5039299cc35289775b4e6bca966f7312a0e3d1f1ede0d90902e85cf081" [[asset]] path = "crates/ui-egui/src/i18n/bg.tsv" @@ -162,7 +162,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Bulgarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "485f85d4053c9661ddda2ed9394a0644c77b489feb598d02f12ef209e11f2ee3" +sha256 = "958a7136eec752947ef200b7cb5b8e37ac5c9b6f59177eb51317e7cf184de06c" [[asset]] path = "crates/ui-egui/src/i18n/kk.tsv" @@ -173,7 +173,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Kazakh UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "24524864022ab2abeff68b5979519eee4e92134d0c4053d40c741bc7f01c249c" +sha256 = "85e7ffec6e91bc2d8f2ab70bee3420dc4e576e38260efcac100a3d6bdf67228a" [[asset]] path = "crates/ui-egui/src/i18n/ja.tsv" @@ -184,7 +184,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Japanese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "bc6d123bdb34d5d7c22717fed1a86ff20e7e493acc1e155e61e61e2dc74459aa" +sha256 = "4f776786c3c7260b7dc360a737f166dde95b79f8837d391ae6346a1b6f7358ce" [[asset]] path = "crates/ui-egui/src/i18n/uk.tsv" @@ -195,7 +195,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Ukrainian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "82678dbe730f56062037ea78de165b2c016b3fa670fb1cbfc7cd713eca900bac" +sha256 = "9f1165faa16b01637bfc1ef2faf51102489e106228ba9893ab1ec1f540cda72f" [[asset]] path = "crates/ui-egui/src/i18n/ar.tsv" @@ -206,7 +206,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "304d661b27cdb5246f6b2974b4b5e78667f0928cda3588440be3d8f35f254679" +sha256 = "cd1258152af7665554ed24f0deaf19f74d369f043d9e4142073ea4a901ebfe2f" [[asset]] path = "crates/ui-egui/src/i18n/tr.tsv" @@ -217,7 +217,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "05e2b7d5401166d362ba055120fba9a1645d6ec324997cf670e19fafcb0c54cf" +sha256 = "36c78fe67a68d0373037532a8836d4c4950447f6a094469033c07b0c0578f063" [[asset]] path = "crates/ui-egui/src/i18n/lt.tsv" @@ -228,7 +228,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "17c8579e0e9d1524ffbeb87e7b30c14562dbaac64400826ee786cecfe31648fa" +sha256 = "0c504821fe9702475402d5437e0a278dd42feaa566193af898c463789e680b72" [[asset]] @@ -3352,7 +3352,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Vietnamese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "2d1c4b4276d02512a4e20101be95a1671de5c4f5cdfd661887af5ebab0db06a6" +sha256 = "2cf0f9254b386f1635ae06600179b777b3e3a11d73654b711908ec73fd7655b1" [[asset]] path = "crates/ui-egui/src/i18n/sl.tsv" @@ -3363,7 +3363,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Slovene UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "8f8a259264cda06eb6d9a9bf91dc7d873a8561213a9a9e7acbd32623bef40be0" +sha256 = "fd5f8a28aa3db6d06634163c88bbb4003e77de0f5638d75c96e3fd5c5ff775ad" [[asset]] diff --git a/crates/ui-egui/src/i18n/ar.tsv b/crates/ui-egui/src/i18n/ar.tsv index 5a0e6e9c96..45af73b765 100644 --- a/crates/ui-egui/src/i18n/ar.tsv +++ b/crates/ui-egui/src/i18n/ar.tsv @@ -1188,6 +1188,7 @@ Off متوقف Flip on long edge قلب على الحافة الطويلة Flip on short edge قلب على الحافة القصيرة + Printer default افتراضي الطابعة Paper: الورق: Pages to Print الصفحات المراد طباعتها More options: خيارات أخرى: diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index 90791f4a86..1649de4af8 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -869,6 +869,7 @@ Off Изключено Flip on long edge Обръщане по дългия ръб Flip on short edge Обръщане по късия ръб + Printer default По подразбиране за принтера Paper: Хартия: Pages to Print Страници за печат More options: Още опции: diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 4bbb9a5e77..cfe715b043 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -1256,6 +1256,7 @@ key Space Mezerník Off Vypnuto Flip on long edge Převrátit podle delší strany Flip on short edge Převrátit podle kratší strany + Printer default Podle tiskárny Paper: Papír: Pages to Print Stránky k tisku More options: Další možnosti: diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index 7965435257..8d1d80a7c9 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -1174,6 +1174,7 @@ Off Aus Flip on long edge An langer Kante wenden Flip on short edge An kurzer Kante wenden + Printer default Druckerstandard Paper: Papier: Pages to Print Zu druckende Seiten More options: Weitere Optionen: diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index 57de6eef07..fb387c2903 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -763,6 +763,7 @@ Two-sided: Εκτύπωση διπλής όψης: Flip on long edge Αναστροφή στη μεγάλη πλευρά Flip on short edge Αναστροφή στη μικρή πλευρά + Printer default Προεπιλογή εκτυπωτή Paper: Χαρτί: Pages to Print Σελίδες προς εκτύπωση More options: Περισσότερες επιλογές: diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index e4eb634468..99ac480c2f 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -1183,6 +1183,7 @@ Off Desactivado Flip on long edge Voltear por el borde largo Flip on short edge Voltear por el borde corto + Printer default Predeterminado de la impresora Paper: Papel: Pages to Print Páginas que imprimir More options: Más opciones: diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 62acea1da8..3cffad57b0 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -1169,6 +1169,7 @@ Off Désactivé Flip on long edge Retourner sur le bord long Flip on short edge Retourner sur le bord court + Printer default Par défaut de l'imprimante Paper: Papier : Pages to Print Pages à imprimer More options: Plus d'options : diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index 2238e1ade5..4a8a4a448b 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -1159,6 +1159,7 @@ Off Ki Flip on long edge Hosszú él mentén Flip on short edge Rövid él mentén + Printer default Nyomtató alapértéke Paper: Papír: Pages to Print Nyomtatandó oldalak More options: További beállítások: diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 3fa2263a0b..2b3a09bcb4 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -1185,6 +1185,7 @@ Off Disattivato Flip on long edge Rilegatura sul lato lungo Flip on short edge Rilegatura sul lato corto + Printer default Come da stampante Paper: Carta: Pages to Print Pagine da stampare More options: Altre opzioni: diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index ee9439e311..3c54ab8c1a 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -1189,6 +1189,7 @@ Off オフ Flip on long edge 長辺とじ Flip on short edge 短辺とじ + Printer default プリンターの既定 Paper: 用紙: Pages to Print 印刷するページ More options: 詳細オプション: diff --git a/crates/ui-egui/src/i18n/kk.tsv b/crates/ui-egui/src/i18n/kk.tsv index 827165ae3a..2533fc6050 100644 --- a/crates/ui-egui/src/i18n/kk.tsv +++ b/crates/ui-egui/src/i18n/kk.tsv @@ -1133,6 +1133,7 @@ Off Өшірулі Flip on long edge Ұзын жиек бойынша аудару Flip on short edge Қысқа жиек бойынша аудару + Printer default Принтер әдепкісі Paper: Қағаз: Pages to Print Басып шығарылатын беттер More options: Қосымша параметрлер: diff --git a/crates/ui-egui/src/i18n/lt.tsv b/crates/ui-egui/src/i18n/lt.tsv index 56a785cd3e..b048715fa8 100644 --- a/crates/ui-egui/src/i18n/lt.tsv +++ b/crates/ui-egui/src/i18n/lt.tsv @@ -591,6 +591,7 @@ Flip horizontal Apversti horizontaliai Flip on long edge Apversti per ilgąją kraštinę Flip on short edge Apversti per trumpąją kraštinę + Printer default Pagal spausdintuvą Flip vertical Apversti vertikaliai Folders Aplankai Font Size: Šrifto dydis: diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 3dbb247056..e76cf7e91d 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -1172,6 +1172,7 @@ Off Wyłączony Flip on long edge Odwracaj wzdłuż długiej krawędzi Flip on short edge Odwracaj wzdłuż krótkiej krawędzi + Printer default Domyślne drukarki Paper: Papier: Pages to Print Strony do wydrukowania More options: Więcej opcji: diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index 8b3baa2d39..03679bdf00 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -815,6 +815,7 @@ Off Desativado Flip on long edge Virar na borda longa Flip on short edge Virar na borda curta + Printer default Padrão da impressora Paper: Papel: Pages to Print Páginas a imprimir More options: Mais opções: diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index d0f8fc239c..32cdc2b923 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -1189,6 +1189,7 @@ Off Выкл Flip on long edge Переворот по длинной стороне Flip on short edge Переворот по короткой стороне + Printer default По умолчанию для принтера Paper: Бумага: Pages to Print Страницы для печати More options: Дополнительные параметры: diff --git a/crates/ui-egui/src/i18n/sl.tsv b/crates/ui-egui/src/i18n/sl.tsv index 92d9c9a6e3..8ec04d0629 100644 --- a/crates/ui-egui/src/i18n/sl.tsv +++ b/crates/ui-egui/src/i18n/sl.tsv @@ -837,6 +837,7 @@ Flip image Prezrcali sliko Flip on long edge Obrni po dolgem robu Flip on short edge Obrni po kratkem robu + Printer default Privzeto tiskalnika Flip vertical Prezrcali navpično Folders Mape Font Size: Velikost pisave: diff --git a/crates/ui-egui/src/i18n/te.tsv b/crates/ui-egui/src/i18n/te.tsv index 07b716eac1..db0522eca3 100644 --- a/crates/ui-egui/src/i18n/te.tsv +++ b/crates/ui-egui/src/i18n/te.tsv @@ -1159,6 +1159,7 @@ comment menu Edit సవరించు Off ఆఫ్ Flip on long edge పొడవైన అంచున తిరగేయి Flip on short edge పొట్టి అంచున తిరగేయి + Printer default ప్రింటర్ డిఫాల్ట్ Paper: కాగితం: Pages to Print ముద్రించాల్సిన పేజీలు More options: మరిన్ని ఎంపికలు: diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv index 30e19f2132..d70cad08c5 100644 --- a/crates/ui-egui/src/i18n/tr.tsv +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -1146,6 +1146,7 @@ Off Kapalı Flip on long edge Uzun kenardan çevir Flip on short edge Kısa kenardan çevir + Printer default Yazıcı varsayılanı Paper: Kağıt: Pages to Print Yazdırılacak Sayfalar More options: Diğer seçenekler: diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index c60799ef1f..ccf9619a6a 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -1186,6 +1186,7 @@ Off Вимкнено Flip on long edge Перевертати за довгим краєм Flip on short edge Перевертати за коротким краєм + Printer default За замовчуванням принтера Paper: Папір: Pages to Print Сторінки для друку More options: Додаткові параметри: diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index b072755236..a037d50a38 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -588,6 +588,7 @@ theme Appearance Giao diện Flip horizontal Lật ngang Flip on long edge Lật theo cạnh dài Flip on short edge Lật theo cạnh ngắn + Printer default Mặc định của máy in Flip vertical Lật dọc Folders Thư mục Font Size: Cỡ chữ: diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index 2297d1269a..19c0d23cbc 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -876,6 +876,7 @@ Off 关 Flip on long edge 沿长边翻转 Flip on short edge 沿短边翻转 + Printer default 打印机默认 Paper: 纸张: Pages to Print 要打印的页面 More options: 更多选项: diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index 2ddb33dd6d..49a15d4fb1 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -820,6 +820,7 @@ Off 關 Flip on long edge 沿長邊翻轉 Flip on short edge 沿短邊翻轉 + Printer default 印表機預設 Paper: 紙張: Pages to Print 要列印的頁面 More options: 更多選項: diff --git a/crates/ui-egui/src/print_ui.rs b/crates/ui-egui/src/print_ui.rs index 4e0f065885..ad9b4d2f9d 100644 --- a/crates/ui-egui/src/print_ui.rs +++ b/crates/ui-egui/src/print_ui.rs @@ -51,7 +51,8 @@ pub struct PrintDraft { pub copies: u32, pub collate: bool, pub grayscale: bool, - pub duplex: spool::Duplex, + /// `None` = the printer's own default (its Properties), as Acrobat does. + pub duplex: Option, pub which: Which, pub range: String, /// The pages `Which::Selected` prints (0-based, in page order); empty when none were picked. @@ -106,7 +107,7 @@ impl Default for PrintDraft { copies: 1, collate: true, grayscale: false, - duplex: spool::Duplex::Off, + duplex: None, which: Which::All, range: String::new(), selected: Vec::new(), @@ -145,7 +146,7 @@ impl Default for PrintDraft { impl PrintDraft { /// The engine settings for this draft (page count and labels from the document). pub fn settings(&self, count: usize, labels: &[String]) -> Result { - if self.handling == Handling::Multiple && self.order == PageOrder::CutStack && self.duplex != spool::Duplex::Off { + if self.cut_and_stack() && matches!(self.duplex, Some(spool::Duplex::LongEdge | spool::Duplex::ShortEdge)) { return Err("Cut and stack needs Two-sided: Off. Print single-sided sheets.".into()); } let range = match self.which { @@ -188,12 +189,17 @@ impl PrintDraft { }) } + fn cut_and_stack(&self) -> bool { + self.handling == Handling::Multiple && self.order == PageOrder::CutStack + } + pub fn job(&self, title: &str) -> spool::Job { spool::Job { printer: self.printer.clone(), copies: self.copies.max(1), collate: self.collate, - duplex: Some(self.duplex), + // Cut and stack needs single-sided sheets, whatever the printer's default. + duplex: if self.cut_and_stack() { Some(spool::Duplex::Off) } else { self.duplex }, scaling: spool::Scaling::Exact, grayscale: self.grayscale, title: title.to_string(), @@ -895,9 +901,10 @@ pub(crate) fn body( "duplex", &mut d.duplex, &[ - (spool::Duplex::Off, tl!("Off")), - (spool::Duplex::LongEdge, tl!("Flip on long edge")), - (spool::Duplex::ShortEdge, tl!("Flip on short edge")), + (None, tl!("Printer default")), + (Some(spool::Duplex::Off), tl!("Off")), + (Some(spool::Duplex::LongEdge), tl!("Flip on long edge")), + (Some(spool::Duplex::ShortEdge), tl!("Flip on short edge")), ], 160.0, ); @@ -1274,11 +1281,25 @@ mod tests { #[test] fn composed_sheets_keep_exact_scaling_and_the_dialogs_duplex_choice() { - let draft = PrintDraft { duplex: spool::Duplex::LongEdge, ..PrintDraft::default() }; + let draft = PrintDraft { duplex: Some(spool::Duplex::LongEdge), ..PrintDraft::default() }; let job = draft.job("report.pdf"); assert_eq!(job.scaling, spool::Scaling::Exact); assert_eq!(job.duplex, Some(spool::Duplex::LongEdge)); - assert_eq!(PrintDraft::default().job("report.pdf").duplex, Some(spool::Duplex::Off)); + let off = PrintDraft { duplex: Some(spool::Duplex::Off), ..PrintDraft::default() }; + assert_eq!(off.job("report.pdf").duplex, Some(spool::Duplex::Off)); + } + + /// Untouched, Two-sided sends nothing, so the duplex set in the printer's Properties applies + /// (#2422); cut and stack still asks for single-sided sheets. + #[test] + fn two_sided_follows_the_printer_until_chosen() { + assert_eq!(PrintDraft::default().duplex, None); + assert_eq!(PrintDraft::default().job("report.pdf").duplex, None); + let mut cut = PrintDraft { handling: Handling::Multiple, order: PageOrder::CutStack, ..PrintDraft::default() }; + assert_eq!(cut.job("report.pdf").duplex, Some(spool::Duplex::Off)); + assert!(cut.settings(4, &[]).is_ok(), "the printer's default doesn't block cut and stack"); + cut.duplex = Some(spool::Duplex::ShortEdge); + assert!(cut.settings(4, &[]).is_err()); } /// A job being spooled holds the progress card, counting its sheets as the spooler reports diff --git a/crates/ui-egui/tests/print.rs b/crates/ui-egui/tests/print.rs index f3d10238cd..919367428b 100644 --- a/crates/ui-egui/tests/print.rs +++ b/crates/ui-egui/tests/print.rs @@ -182,11 +182,11 @@ fn cut_stack_dialog_previews_saves_and_refuses_duplex() { h.get_by_label("›").click(); h.run_steps(2); h.get_by_label("Sheet 2 of 3"); - h.state_mut().print_draft.duplex = Duplex::LongEdge; + h.state_mut().print_draft.duplex = Some(Duplex::LongEdge); h.run_steps(2); h.get_by_label_contains("Cut and stack needs Two-sided: Off"); assert!(!h.state_mut().print_now()); - h.state_mut().print_draft.duplex = Duplex::Off; + h.state_mut().print_draft.duplex = Some(Duplex::Off); h.state_mut().print_draft.printer = None; let out = std::env::temp_dir().join(format!("pdfcraft-cut-stack-ui-{}.pdf", std::process::id())); h.state_mut().save_override = Some(out.to_string_lossy().into_owned()); diff --git a/parity/acrobat-features.toml b/parity/acrobat-features.toml index 6dbc34f35f..7ecd6b4031 100644 --- a/parity/acrobat-features.toml +++ b/parity/acrobat-features.toml @@ -8020,8 +8020,8 @@ milestone = "M10" status = "shipped" commands = ["print.dialog"] tools = ["doc_print"] -evidence = ["crates/print/src/tests.rs::spooler_arguments_and_printer_list"] -notes = "long/short edge via the spooler: lp -o sides=…, and the Windows driver's Duplex setting" +evidence = ["crates/print/src/tests.rs::spooler_arguments_and_printer_list", "crates/ui-egui/src/print_ui.rs::two_sided_follows_the_printer_until_chosen"] +notes = "long/short edge via the spooler: lp -o sides=…, and the Windows driver's Duplex setting. Two-sided starts at Printer default, as in Acrobat: nothing is sent, so the printer's own default (its Properties) applies until Off or an edge is chosen. Missing: the document's /ViewerPreferences /Duplex preset isn't read yet" [[feature]] id = "print.n-up"