aboutsummaryrefslogtreecommitdiff
path: root/src/dialogs.rs
diff options
context:
space:
mode:
authorRubén Beltrán del Río <jj@r.bdr.sh>2026-01-17 00:36:49 +0100
committerRubén Beltrán del Río <jj@r.bdr.sh>2026-01-17 02:43:21 +0100
commit17898fbabde35ab346c133114e78614e707c0eca (patch)
tree90f0fd36211c036a507a0af092aac3c5fb8e7ac8 /src/dialogs.rs
parent90b12c34debaa4aa816d4e6862cdb4e39c7181e4 (diff)
Add localization
Diffstat (limited to 'src/dialogs.rs')
-rw-r--r--src/dialogs.rs42
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),
],
);