desktop: Internationalize file pickers

This commit is contained in:
Kamil Jarosz 2024-08-21 22:13:01 +02:00 committed by TÖRÖK Attila
parent 490c02bb58
commit 14302b8287
3 changed files with 16 additions and 5 deletions

View File

@ -0,0 +1,3 @@
file-picker-title-open-file = Open a single file
file-picker-filter-flash-files = Flash Files
file-picker-filter-all-files = All Files

View File

@ -66,7 +66,7 @@ impl Dialogs {
window: Weak<winit::window::Window>, window: Weak<winit::window::Window>,
event_loop: EventLoopProxy<RuffleEvent>, event_loop: EventLoopProxy<RuffleEvent>,
) -> Self { ) -> Self {
let picker = FilePicker::new(window); let picker = FilePicker::new(window, preferences.clone());
Self { Self {
preferences_dialog: None, preferences_dialog: None,
bookmarks_dialog: None, bookmarks_dialog: None,

View File

@ -1,3 +1,5 @@
use super::text;
use crate::preferences::GlobalPreferences;
use rfd::AsyncFileDialog; use rfd::AsyncFileDialog;
use std::{ use std::{
path::PathBuf, path::PathBuf,
@ -16,14 +18,16 @@ pub struct FilePicker {
struct FilePickerData { struct FilePickerData {
parent: Weak<Window>, parent: Weak<Window>,
picking: AtomicBool, picking: AtomicBool,
preferences: GlobalPreferences,
} }
impl FilePicker { impl FilePicker {
pub fn new(parent: Weak<Window>) -> Self { pub fn new(parent: Weak<Window>, preferences: GlobalPreferences) -> Self {
Self { Self {
data: Arc::new(FilePickerData { data: Arc::new(FilePickerData {
parent, parent,
picking: AtomicBool::new(false), picking: AtomicBool::new(false),
preferences,
}), }),
} }
} }
@ -34,10 +38,14 @@ impl FilePicker {
return None; return None;
} }
let locale = &self.data.preferences.language();
let mut dialog = AsyncFileDialog::new() let mut dialog = AsyncFileDialog::new()
.add_filter("Flash Files", &["swf", "spl", "ruf"]) .add_filter(
.add_filter("All Files", &["*"]) text(locale, "file-picker-filter-flash-files"),
.set_title("Load a Flash File"); &["swf", "spl", "ruf"],
)
.add_filter(text(locale, "file-picker-filter-all-files"), &["*"])
.set_title(text(locale, "file-picker-title-open-file"));
if let Some(dir) = dir { if let Some(dir) = dir {
dialog = dialog.set_directory(dir); dialog = dialog.set_directory(dir);