mirror of
https://github.com/johrpan/musicus.git
synced 2025-10-27 04:07:25 +01:00
Add translation infrastructure and German translation
This commit is contained in:
parent
4b88eec93f
commit
a83b650398
23 changed files with 834 additions and 51 deletions
|
|
@ -2,6 +2,7 @@ use super::*;
|
|||
use crate::backend::*;
|
||||
use crate::database::*;
|
||||
use crate::widgets::*;
|
||||
use gettextrs::gettext;
|
||||
use glib::clone;
|
||||
use gtk::prelude::*;
|
||||
use gtk_macros::get_widget;
|
||||
|
|
@ -19,8 +20,7 @@ pub struct EnsembleScreen {
|
|||
|
||||
impl EnsembleScreen {
|
||||
pub fn new(backend: Rc<Backend>, ensemble: Ensemble) -> Rc<Self> {
|
||||
let builder =
|
||||
gtk::Builder::from_resource("/de/johrpan/musicus/ui/ensemble_screen.ui");
|
||||
let builder = gtk::Builder::from_resource("/de/johrpan/musicus/ui/ensemble_screen.ui");
|
||||
|
||||
get_widget!(builder, gtk::Box, widget);
|
||||
get_widget!(builder, libhandy::HeaderBar, header);
|
||||
|
|
@ -32,13 +32,13 @@ impl EnsembleScreen {
|
|||
|
||||
header.set_title(Some(&ensemble.name));
|
||||
|
||||
let edit_menu_item = gio::MenuItem::new(Some("Edit ensemble"), None);
|
||||
let edit_menu_item = gio::MenuItem::new(Some(&gettext("Edit ensemble")), None);
|
||||
edit_menu_item.set_action_and_target_value(
|
||||
Some("win.edit-ensemble"),
|
||||
Some(&glib::Variant::from(ensemble.id)),
|
||||
);
|
||||
|
||||
let delete_menu_item = gio::MenuItem::new(Some("Delete ensemble"), None);
|
||||
let delete_menu_item = gio::MenuItem::new(Some(&gettext("Delete ensemble")), None);
|
||||
delete_menu_item.set_action_and_target_value(
|
||||
Some("win.delete-ensemble"),
|
||||
Some(&glib::Variant::from(ensemble.id)),
|
||||
|
|
@ -73,7 +73,7 @@ impl EnsembleScreen {
|
|||
let text = recording.work.get_title() + &recording.get_performers();
|
||||
search.is_empty() || text.contains(&search)
|
||||
}),
|
||||
"No recordings found.",
|
||||
&gettext("No recordings found."),
|
||||
);
|
||||
|
||||
recording_frame.add(&recording_list.widget.clone());
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use super::*;
|
|||
use crate::backend::*;
|
||||
use crate::database::*;
|
||||
use crate::widgets::*;
|
||||
use gettextrs::gettext;
|
||||
use glib::clone;
|
||||
use gtk::prelude::*;
|
||||
use gtk_macros::get_widget;
|
||||
|
|
@ -35,13 +36,13 @@ impl PersonScreen {
|
|||
|
||||
header.set_title(Some(&person.name_fl()));
|
||||
|
||||
let edit_menu_item = gio::MenuItem::new(Some("Edit person"), None);
|
||||
let edit_menu_item = gio::MenuItem::new(Some(&gettext("Edit person")), None);
|
||||
edit_menu_item.set_action_and_target_value(
|
||||
Some("win.edit-person"),
|
||||
Some(&glib::Variant::from(person.id)),
|
||||
);
|
||||
|
||||
let delete_menu_item = gio::MenuItem::new(Some("Delete person"), None);
|
||||
let delete_menu_item = gio::MenuItem::new(Some(&gettext("Delete person")), None);
|
||||
delete_menu_item.set_action_and_target_value(
|
||||
Some("win.delete-person"),
|
||||
Some(&glib::Variant::from(person.id)),
|
||||
|
|
@ -64,7 +65,7 @@ impl PersonScreen {
|
|||
let title = work.title.to_lowercase();
|
||||
search.is_empty() || title.contains(&search)
|
||||
}),
|
||||
"No works found.",
|
||||
&gettext("No works found."),
|
||||
);
|
||||
|
||||
let recording_list = List::new(
|
||||
|
|
@ -90,7 +91,7 @@ impl PersonScreen {
|
|||
let text = recording.work.get_title() + &recording.get_performers();
|
||||
search.is_empty() || text.contains(&search)
|
||||
}),
|
||||
"No recordings found.",
|
||||
&gettext("No recordings found."),
|
||||
);
|
||||
|
||||
work_frame.add(&work_list.widget);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use crate::backend::*;
|
||||
use crate::database::*;
|
||||
use crate::widgets::*;
|
||||
use gettextrs::gettext;
|
||||
use glib::clone;
|
||||
use gtk::prelude::*;
|
||||
use gtk_macros::get_widget;
|
||||
|
|
@ -30,13 +31,13 @@ impl RecordingScreen {
|
|||
header.set_title(Some(&recording.work.get_title()));
|
||||
header.set_subtitle(Some(&recording.get_performers()));
|
||||
|
||||
let edit_menu_item = gio::MenuItem::new(Some("Edit recording"), None);
|
||||
let edit_menu_item = gio::MenuItem::new(Some(&gettext("Edit recording")), None);
|
||||
edit_menu_item.set_action_and_target_value(
|
||||
Some("win.edit-recording"),
|
||||
Some(&glib::Variant::from(recording.id)),
|
||||
);
|
||||
|
||||
let delete_menu_item = gio::MenuItem::new(Some("Delete recording"), None);
|
||||
let delete_menu_item = gio::MenuItem::new(Some(&gettext("Delete recording")), None);
|
||||
delete_menu_item.set_action_and_target_value(
|
||||
Some("win.delete-recording"),
|
||||
Some(&glib::Variant::from(recording.id)),
|
||||
|
|
@ -57,7 +58,7 @@ impl RecordingScreen {
|
|||
}
|
||||
|
||||
let title = if title_parts.is_empty() {
|
||||
String::from("Unknown")
|
||||
gettext("Unknown")
|
||||
} else {
|
||||
title_parts.join(", ")
|
||||
};
|
||||
|
|
@ -78,7 +79,7 @@ impl RecordingScreen {
|
|||
vbox.upcast()
|
||||
}),
|
||||
|_| true,
|
||||
"No tracks found.",
|
||||
&gettext("No tracks found."),
|
||||
);
|
||||
|
||||
frame.add(&list.widget);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use super::*;
|
|||
use crate::backend::*;
|
||||
use crate::database::*;
|
||||
use crate::widgets::*;
|
||||
use gettextrs::gettext;
|
||||
use glib::clone;
|
||||
use gtk::prelude::*;
|
||||
use gtk_macros::get_widget;
|
||||
|
|
@ -32,13 +33,13 @@ impl WorkScreen {
|
|||
header.set_title(Some(&work.title));
|
||||
header.set_subtitle(Some(&work.composer.name_fl()));
|
||||
|
||||
let edit_menu_item = gio::MenuItem::new(Some("Edit work"), None);
|
||||
let edit_menu_item = gio::MenuItem::new(Some(&gettext("Edit work")), None);
|
||||
edit_menu_item.set_action_and_target_value(
|
||||
Some("win.edit-work"),
|
||||
Some(&glib::Variant::from(work.id)),
|
||||
);
|
||||
|
||||
let delete_menu_item = gio::MenuItem::new(Some("Delete work"), None);
|
||||
let delete_menu_item = gio::MenuItem::new(Some(&gettext("Delete work")), None);
|
||||
delete_menu_item.set_action_and_target_value(
|
||||
Some("win.delete-work"),
|
||||
Some(&glib::Variant::from(work.id)),
|
||||
|
|
@ -73,7 +74,7 @@ impl WorkScreen {
|
|||
let text = recording.work.get_title() + &recording.get_performers();
|
||||
search.is_empty() || text.contains(&search)
|
||||
}),
|
||||
"No recordings found.",
|
||||
&gettext("No recordings found."),
|
||||
);
|
||||
|
||||
recording_frame.add(&recording_list.widget);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue