diff options
| author | Rubén Beltrán del Río <jj@r.bdr.sh> | 2026-01-17 00:36:49 +0100 |
|---|---|---|
| committer | Rubén Beltrán del Río <jj@r.bdr.sh> | 2026-01-17 02:43:21 +0100 |
| commit | 17898fbabde35ab346c133114e78614e707c0eca (patch) | |
| tree | 90f0fd36211c036a507a0af092aac3c5fb8e7ac8 /src/dialogs.rs | |
| parent | 90b12c34debaa4aa816d4e6862cdb4e39c7181e4 (diff) | |
Add localization
Diffstat (limited to 'src/dialogs.rs')
| -rw-r--r-- | src/dialogs.rs | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/dialogs.rs b/src/dialogs.rs index f7fb9cf..8f5b951 100644 --- a/src/dialogs.rs +++ b/src/dialogs.rs @@ -25,13 +25,14 @@ use crate::AppModel; use crate::actions::{Action, ImageFormat}; use crate::constants; use crate::file_registry; +use crate::tr; /// Creates a file filter for .wmap files in file pickers. pub fn create_file_filter() -> gtk::FileFilter { let filter = gtk::FileFilter::new(); filter.add_pattern(&format!("*.{}", constants::FILE_EXTENSION)); filter.add_mime_type(constants::MIME_TYPE); - filter.set_name(Some("Wardley Map Files")); + filter.set_name(Some(&tr!("dialog.file_type.wmap"))); filter } @@ -58,12 +59,12 @@ pub fn show_open_dialog( sender: ComponentSender<AppModel>, ) { let dialog = gtk::FileChooserDialog::new( - Some("Open Map"), + Some(&tr!("dialog.open.title")), Some(window), gtk::FileChooserAction::Open, &[ - ("Cancel", gtk::ResponseType::Cancel), - ("Open", gtk::ResponseType::Accept), + (&tr!("dialog.action.cancel"), gtk::ResponseType::Cancel), + (&tr!("dialog.action.open"), gtk::ResponseType::Accept), ], ); dialog.add_filter(&create_file_filter()); @@ -98,26 +99,27 @@ pub fn show_save_dialog( sender: ComponentSender<AppModel>, ) { let dialog = gtk::FileChooserDialog::new( - Some("Save Map As"), + Some(&tr!("dialog.save.title")), Some(window), gtk::FileChooserAction::Save, &[ - ("Cancel", gtk::ResponseType::Cancel), - ("Save", gtk::ResponseType::Accept), + (&tr!("dialog.action.cancel"), gtk::ResponseType::Cancel), + (&tr!("dialog.action.save"), gtk::ResponseType::Accept), ], ); dialog.add_filter(&create_file_filter()); + let default_filename = "map.wmap"; if let Some(ref current_path) = current_file { if let Some(parent) = current_path.parent() { let folder = gtk::gio::File::for_path(parent); dialog.set_current_folder(Some(&folder)).ok(); } if let Some(filename) = current_path.file_name() { - dialog.set_current_name(filename.to_str().unwrap_or("map.wmap")); + dialog.set_current_name(filename.to_str().unwrap_or(default_filename)); } } else { - dialog.set_current_name("map.wmap"); + dialog.set_current_name(default_filename); } dialog.connect_response(move |dialog, response| { @@ -143,12 +145,12 @@ pub fn show_unsaved_changes_dialog( gtk::DialogFlags::MODAL | gtk::DialogFlags::DESTROY_WITH_PARENT, gtk::MessageType::Warning, gtk::ButtonsType::None, - "Save changes before closing?", + tr!("dialog.unsaved_changes.message"), ); - dialog.set_title(Some("Unsaved Changes")); - dialog.add_button("Don't Save", gtk::ResponseType::Reject); - dialog.add_button("Cancel", gtk::ResponseType::Cancel); - dialog.add_button("Save", gtk::ResponseType::Accept); + dialog.set_title(Some(&tr!("dialog.unsaved_changes.title"))); + dialog.add_button(&tr!("dialog.action.dont_save"), gtk::ResponseType::Reject); + dialog.add_button(&tr!("dialog.action.cancel"), gtk::ResponseType::Cancel); + dialog.add_button(&tr!("dialog.action.save"), gtk::ResponseType::Accept); let window = window.clone(); dialog.connect_response(move |dialog, response| { @@ -179,10 +181,10 @@ fn create_image_filter(format: ImageFormat) -> gtk::FileFilter { filter.add_pattern(&format!("*.{}", format.extension())); filter.add_mime_type(format.mime_type()); let name = match format { - ImageFormat::Png => "PNG Image", - ImageFormat::Svg => "SVG Image", + ImageFormat::Png => tr!("dialog.file_type.png"), + ImageFormat::Svg => tr!("dialog.file_type.svg"), }; - filter.set_name(Some(name)); + filter.set_name(Some(&name)); filter } @@ -193,12 +195,12 @@ pub fn show_export_dialog( sender: ComponentSender<AppModel>, ) { let dialog = gtk::FileChooserDialog::new( - Some("Export Map as Image"), + Some(&tr!("dialog.export.title")), Some(window), gtk::FileChooserAction::Save, &[ - ("Cancel", gtk::ResponseType::Cancel), - ("Export", gtk::ResponseType::Accept), + (&tr!("dialog.action.cancel"), gtk::ResponseType::Cancel), + (&tr!("dialog.action.export"), gtk::ResponseType::Accept), ], ); |