diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 6957bbcfdf..a7db582658 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -19,7 +19,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 = "737e9f61493dc977faf28df4666365c3f6b1764c416d39c40a6b17c021835dcb" +sha256 = "c1f833a5a61b7d3503d831691deee0e95777f6ec7e9fe12ef0eb68cdcdcd5488" [[asset]] path = "crates/ui-egui/src/i18n/zh-hant.tsv" @@ -30,7 +30,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 = "278c6ba856aba62c5a561c9f1b0cc44b2724c8357d91dcdf2d8a5164789ff7db" +sha256 = "5aecc94622ac849c96a05af59c9d38cff790bf8f69351bfbf0ee5a55963ae3bb" [[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 = "Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "115ec3d852731d72f38ab578f87c4720d3703aa4476333b7b712550e35e8010d" +sha256 = "21c72b62bd3b0d6a3320e396e13ecc9dc952e76b8c457db5ed4d85f06c94370b" [[asset]] path = "crates/ui-egui/src/i18n/es.tsv" @@ -63,7 +63,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 = "86c0fe08c6b52b841147a8dffcb3e6c080f649557d979ae0f7a80e1f322ca511" +sha256 = "c6bbe72bf89e3642853a8e608386d8a015e31ab6657f508333d8ff666ab75bef" [[asset]] path = "crates/ui-egui/src/i18n/fr.tsv" @@ -74,7 +74,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 = "af81661d3c705efae149d77b5055980d37d5ee01c28bad41b27ef682b521a098" +sha256 = "c70f2295630e78c936da0f533fa4df33572047eb298e9bdc6b00357e428fa54d" [[asset]] path = "crates/ui-egui/src/i18n/de.tsv" @@ -85,7 +85,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 = "f5e62db505ba7e974eacc64fa7ac2e0ba4955bfb466b4726cc3ba80ef94b1fb6" +sha256 = "c5674c627fe69f8e2f103de58b09b3808b6de927a0c23d629e2aa5e4a9d0662a" [[asset]] path = "crates/ui-egui/src/i18n/te.tsv" @@ -96,7 +96,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 = "361eff32e4e7ef312667c7865adb2af3f2f684ce2bbb481124ba78e8a1715f2f" +sha256 = "614ec635e6a18770f5c7c2817dfd26f426239bb1610eab7f24d308882c59f1ba" [[asset]] path = "crates/ui-egui/src/i18n/it.tsv" @@ -107,7 +107,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 = "82235760fda93084ce58d3b4da992b584080ccb871f4dc8eb5acbb4dfb2a3df3" +sha256 = "08007ca54168afeb35391b2ee6477bf4a034cb285d79b4807a09218e4956d417" [[asset]] path = "crates/ui-egui/src/i18n/pl.tsv" @@ -118,7 +118,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 = "5aa16fca81c03f0c7e03760c057a1658a7fdbcc58fb9216b8549aab0e428902a" +sha256 = "d4f4821c5dfb4ef900d525b70471af487583e2704c841717f52337e9f69a2ebf" [[asset]] path = "crates/ui-egui/src/i18n/ru.tsv" @@ -129,7 +129,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 = "51441023d6960c92b799a80ff9c30acf63128e0061c945995548723802398068" +sha256 = "44f817bf7be5dafbd327c579fe1de7628bc623f060d1b995462b89ec9ced7fa4" [[asset]] path = "crates/ui-egui/src/i18n/hu.tsv" @@ -140,7 +140,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 = "a4e94a2d0deaf79923bf4165c31bc60ac308be5fd120c0132b10abf7fd5bf7c9" +sha256 = "7c3147a98d190d51d32b97baef3c70ff8e8897ef5daf455ab211fa83e80e89eb" [[asset]] path = "crates/ui-egui/src/i18n/bg.tsv" @@ -151,7 +151,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 = "13ff66c5924b9db68279f2f936d83802251ac5fc03ca11b5ce97eacfabffc5ae" +sha256 = "a5e7999bd91ebfce11bee791c8c1764ceceac89fd3d3ae841c97df63c1279394" [[asset]] path = "crates/ui-egui/src/i18n/ja.tsv" @@ -162,7 +162,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 = "41db30fd76339586c5325036249733f159866ed1628410134249edeb4c3a2182" +sha256 = "5b1c282abe4891fbe306187b5ff920ea4a943c68ce5f8dbdd95c75f5f42bdb70" [[asset]] path = "crates/ui-egui/src/i18n/uk.tsv" @@ -173,7 +173,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 = "9ce62e7d757116846bbacbb6977650de79c31603d30fe8568cb08c8a85a98e38" +sha256 = "d87966fe1ab113fd9560d0c4aab34185fff5b40821db01def22d41a9ff3c9762" [[asset]] path = "crates/ui-egui/src/i18n/ar.tsv" @@ -184,7 +184,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 = "cf1d78342ac5a45e03114cf9b7abf65b419a94d977bba94077c3046f0a7d8493" +sha256 = "78047120b89a9bc05863888bc7ec8898e3eac8a56cdae7bfa8a436c3080adacc" [[asset]] path = "assets/icons/accessibility.svg" diff --git a/crates/ui-egui/src/chrome.rs b/crates/ui-egui/src/chrome.rs index 0591fe671f..d9ad998ff0 100644 --- a/crates/ui-egui/src/chrome.rs +++ b/crates/ui-egui/src/chrome.rs @@ -321,7 +321,8 @@ pub fn mode_bar(app: &mut PdfCraftApp, ui: &mut egui::Ui) { if icons::button(ui, "printer", 32.0, false, &tip).clicked() { app.run_command("print.dialog"); } - if icons::button(ui, "save", 32.0, false, tl!("Save (M4)")).clicked() { + let tip = crate::commands::command_tip(ui.ctx(), tl!("Save ({key})"), "file.save"); + if icons::button(ui, "save", 32.0, false, &tip).clicked() { app.run_command("file.save"); } let tip = crate::commands::command_tip(ui.ctx(), tl!("Document properties ({key})"), "file.properties"); diff --git a/crates/ui-egui/src/i18n/ar.tsv b/crates/ui-egui/src/i18n/ar.tsv index 15c9a64619..66607f0355 100644 --- a/crates/ui-egui/src/i18n/ar.tsv +++ b/crates/ui-egui/src/i18n/ar.tsv @@ -116,7 +116,7 @@ Convert تحويل E-Sign توقيع إلكتروني Print ({key}) طباعة ({key}) - Save (M4) حفظ (M4) + Save ({key}) حفظ ({key}) Document properties ({key}) خصائص المستند ({key}) Find tools and commands البحث عن الأدوات والأوامر Fit to height ملاءمة الارتفاع diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index 7e1ed26885..e78dc818ad 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -1091,7 +1091,7 @@ Dark gray theme Тъмносива тема Light theme Светла тема Print ({key}) Печат ({key}) - Save (M4) Запиши (M4) + Save ({key}) Запиши ({key}) Document properties ({key}) Свойства на документа ({key}) Action Wizard… Съветник за действия… Add Bates numbering… Добави номериране на Бейтс… diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index f431690c5f..00b3568e55 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -88,7 +88,7 @@ Convert Konvertieren E-Sign E-Signatur Print ({key}) Drucken ({key}) - Save (M4) Speichern (M4) + Save ({key}) Speichern ({key}) Document properties ({key}) Dokumenteigenschaften ({key}) Find tools and commands Tools und Befehle suchen Fit to height Seitenhöhe diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 794576f1b8..148c030e89 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -109,7 +109,7 @@ Convert Convertir E-Sign Firma electrónica Print ({key}) Imprimir ({key}) - Save (M4) Guardar (M4) + Save ({key}) Guardar ({key}) Document properties ({key}) Propiedades del documento ({key}) Find tools and commands Buscar herramientas y comandos Fit to height Ajustar al alto diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 28cbb87ff5..c7dc5e51bd 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -88,7 +88,7 @@ Convert Convertir E-Sign Signature électronique Print ({key}) Imprimer ({key}) - Save (M4) Enregistrer (M4) + Save ({key}) Enregistrer ({key}) Document properties ({key}) Propriétés du document ({key}) Find tools and commands Rechercher des outils et des commandes Fit to height Ajuster à la hauteur diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index 9f5edc1b6c..8a239f87c3 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -86,7 +86,7 @@ Convert Konvertálás E-Sign E-aláírás Print ({key}) Nyomtatás ({key}) - Save (M4) Mentés (M4) + Save ({key}) Mentés ({key}) Document properties ({key}) Dokumentum tulajdonságai ({key}) Find tools and commands Eszközök és parancsok keresése Fit to height Magassághoz igazítás diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 9b5f37e39f..5ea6b21413 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -112,7 +112,7 @@ Convert Converti E-Sign Firma elettronica Print ({key}) Stampa ({key}) - Save (M4) Salva (M4) + Save ({key}) Salva ({key}) Document properties ({key}) Proprietà documento ({key}) Find tools and commands Trova strumenti e comandi Fit to height Adatta all'altezza diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index 0a0a51d1a2..a4132e7dac 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -115,7 +115,7 @@ Convert 変換 E-Sign 電子署名 Print ({key}) 印刷({key}) - Save (M4) 保存(M4) + Save ({key}) 保存({key}) Document properties ({key}) 文書のプロパティ({key}) Find tools and commands ツールとコマンドを検索 Fit to height 高さに合わせる diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index e61991ebb4..2f37f0a67d 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -111,7 +111,7 @@ Convert Konwertuj E-Sign Podpis elektroniczny Print (⌘P) Drukuj (⌘P) - Save (M4) Zapisz (M4) + Save ({key}) Zapisz ({key}) Document properties (⌘D) Właściwości dokumentu (⌘D) Find tools and commands Znajdź narzędzia i polecenia Fit to height Dopasuj do wysokości diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index d9409d36be..e519585d29 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -1033,7 +1033,7 @@ Dark gray theme Tema cinza escuro Light theme Tema claro Print ({key}) Imprimir ({key}) - Save (M4) Salvar (M4) + Save ({key}) Salvar ({key}) Document properties ({key}) Propriedades do documento ({key}) Action Wizard… Assistente de ações… Add Bates numbering… Adicionar numeração Bates… diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index 18a01e465c..ec1fc8a8e3 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -109,7 +109,7 @@ Convert Конвертация E-Sign Электронная подпись Print ({key}) Печать ({key}) - Save (M4) Сохранить (M4) + Save ({key}) Сохранить ({key}) Document properties ({key}) Свойства документа ({key}) Find tools and commands Найти инструменты и команды Fit to height По высоте diff --git a/crates/ui-egui/src/i18n/te.tsv b/crates/ui-egui/src/i18n/te.tsv index 4a0fc1e617..7ed4341486 100644 --- a/crates/ui-egui/src/i18n/te.tsv +++ b/crates/ui-egui/src/i18n/te.tsv @@ -92,7 +92,7 @@ comment menu Edit సవరించు Convert మార్పిడి E-Sign ఇ-సంతకం Print ({key}) ముద్రించు ({key}) - Save (M4) సేవ్ చేయి (M4) + Save ({key}) సేవ్ చేయి ({key}) Document properties ({key}) పత్ర లక్షణాలు ({key}) Find tools and commands సాధనాలను, కమాండ్‌లను కనుగొను Fit to height ఎత్తుకు సరిపోయేలా diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index 3f04ab9c27..9f7e31b1ba 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -114,7 +114,7 @@ Convert Перетворення E-Sign Електронний підпис Print ({key}) Друк ({key}) - Save (M4) Зберегти (M4) + Save ({key}) Зберегти ({key}) Document properties ({key}) Властивості документа ({key}) Find tools and commands Знайти інструменти й команди Fit to height За висотою diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index fb349fc3a1..fa9c4f16dc 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -1098,7 +1098,7 @@ Dark gray theme 深灰色主题 Light theme 浅色主题 Print ({key}) 打印 ({key}) - Save (M4) 保存 (M4) + Save ({key}) 保存 ({key}) Document properties ({key}) 文档属性 ({key}) Action Wizard… 操作向导… Add Bates numbering… 添加贝茨编号… diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index c1b1914ecf..4267ee03ce 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -1046,7 +1046,7 @@ Dark gray theme 深灰色主題 Light theme 淺色主題 Print ({key}) 列印({key}) - Save (M4) 儲存(M4) + Save ({key}) 儲存({key}) Document properties ({key}) 文件內容({key}) Action Wizard… 動作精靈… Add Bates numbering… 新增 Bates 編號… diff --git a/crates/ui-egui/tests/commands.rs b/crates/ui-egui/tests/commands.rs index 73e347e489..08d023778d 100644 --- a/crates/ui-egui/tests/commands.rs +++ b/crates/ui-egui/tests/commands.rs @@ -410,6 +410,24 @@ fn view_menu_and_tooltips_write_shortcuts_for_the_platform() { assert_eq!(h.query_all_by_label_contains("Ctrl+").count(), 0, "no Ctrl+ on macOS"); } +#[test] +fn the_top_bar_save_button_names_its_shortcut_not_a_milestone() { + // #962: on Windows the Save button's tooltip and accessibility name read "Save (M4)", + // an internal milestone tag, while Print and Document properties named their shortcuts. + let mut h = harness(); + h.ctx.set_os(OperatingSystem::Windows); + h.run_steps(2); + h.get_by_label("Save (Ctrl+S)"); + h.get_by_label("Print (Ctrl+P)"); + assert_eq!(h.query_all_by_label_contains("(M4)").count(), 0, "no milestone tag in the top bar"); + assert_eq!(h.query_all_by_label_contains("⌘").count(), 0, "no ⌘ outside macOS"); + + let mut h = harness(); + h.ctx.set_os(OperatingSystem::Mac); + h.run_steps(2); + h.get_by_label("Save (⌘S)"); +} + #[test] fn full_screen_toggles_by_shortcut_and_command_and_escape_leaves() { let mut h = harness();