👷 update translation for additional pages on locale change

This commit is contained in:
Vladislav Nepogodin 2023-03-21 00:27:10 +04:00
parent 8479878046
commit f89ec4bfd9
No known key found for this signature in database
GPG Key ID: B62C3D10C54D5DA9
2 changed files with 97 additions and 0 deletions

View File

@ -453,6 +453,8 @@ fn set_locale(use_locale: &str) {
let label = &third_child[0].clone().downcast::<gtk::Label>().unwrap();
label.set_markup(get_page(file_path.as_ref()).as_str());
}
pages::update_translations(&builder_ref);
}
fn set_autostart(autostart: bool) {

View File

@ -16,6 +16,82 @@ use subprocess::{Exec, Redirection};
static G_LOCAL_UNITS: Lazy<Mutex<SystemdUnits>> = Lazy::new(|| Mutex::new(SystemdUnits::new()));
static G_GLOBAL_UNITS: Lazy<Mutex<SystemdUnits>> = Lazy::new(|| Mutex::new(SystemdUnits::new()));
fn update_translation_apps_section(section_box: &gtk::Box) {
for section_box_element in section_box.children() {
if let Ok(section_label) = section_box_element.clone().downcast::<gtk::Label>() {
section_label.set_text(&fl!("applications"));
}
}
}
fn update_translation_fixes_section(section_box: &gtk::Box) {
for section_box_element in section_box.children() {
if let Ok(button_box) = section_box_element.clone().downcast::<gtk::Box>() {
for button_box_widget in button_box.children() {
let box_element_btn = button_box_widget.downcast::<gtk::Button>().unwrap();
let widget_name = box_element_btn.widget_name().to_string();
let translated_text = crate::localization::get_locale_text(&widget_name);
box_element_btn.set_label(&translated_text);
}
} else if let Ok(section_label) = section_box_element.clone().downcast::<gtk::Label>() {
section_label.set_text(&fl!("fixes"));
}
}
}
fn update_translation_options_section(section_box: &gtk::Box) {
for section_box_element in section_box.children() {
if let Ok(button_box) = section_box_element.clone().downcast::<gtk::Box>() {
for button_box_widget in button_box.children() {
let box_element_btn = button_box_widget.downcast::<gtk::Button>().unwrap();
let widget_name = box_element_btn.widget_name().to_string();
let translated_text = fl!("tweak-enabled-title", tweak = widget_name);
box_element_btn.set_label(&translated_text);
}
} else if let Ok(section_label) = section_box_element.clone().downcast::<gtk::Label>() {
section_label.set_text(&fl!("tweaks"));
}
}
}
pub fn update_translations(builder: &Builder) {
// Update buttons
let tweakbrowser_btn: gtk::Button = builder.object("tweaksBrowser").unwrap();
tweakbrowser_btn.set_label(&fl!("tweaksbrowser-label"));
let appbrowser_btn: gtk::Button = builder.object("appBrowser").unwrap();
appbrowser_btn.set_label(&fl!("appbrowser-label"));
let stack: gtk::Stack = builder.object("stack").unwrap();
{
if let Some(widget) = stack.child_by_name("tweaksBrowserpage") {
if let Ok(viewport) = widget.downcast::<gtk::Viewport>() {
let first_child = &viewport.children()[0].clone().downcast::<gtk::Box>().unwrap();
let second_child =
&first_child.children()[1].clone().downcast::<gtk::Box>().unwrap();
for second_child_child_widget in second_child.children() {
let second_child_child_box =
second_child_child_widget.downcast::<gtk::Box>().unwrap();
match second_child_child_box.widget_name().to_string().as_str() {
"tweaksBrowserpage_options" => {
update_translation_options_section(&second_child_child_box)
},
"tweaksBrowserpage_fixes" => {
update_translation_fixes_section(&second_child_child_box)
},
"tweaksBrowserpage_apps" => {
update_translation_apps_section(&second_child_child_box)
},
_ => panic!("Unknown widget!"),
}
}
}
}
}
}
fn create_fixes_section() -> gtk::Box {
let topbox = gtk::Box::new(gtk::Orientation::Vertical, 2);
let button_box_f = gtk::Box::new(gtk::Orientation::Horizontal, 10);
@ -34,6 +110,16 @@ fn create_fixes_section() -> gtk::Box {
let clear_pkgcache_btn = gtk::Button::with_label(&fl!("clear-pkgcache-title"));
let rankmirrors_btn = gtk::Button::with_label(&fl!("rankmirrors-title"));
{
removelock_btn.set_widget_name("remove-lock-title");
reinstall_btn.set_widget_name("reinstall-title");
refreshkeyring_btn.set_widget_name("refresh-keyrings-title");
update_system_btn.set_widget_name("update-system-title");
remove_orphans_btn.set_widget_name("remove-orphans-title");
clear_pkgcache_btn.set_widget_name("clear-pkgcache-title");
rankmirrors_btn.set_widget_name("rankmirrors-title");
}
removelock_btn.connect_clicked(move |_| {
// Spawn child process in separate thread.
std::thread::spawn(move || {
@ -136,6 +222,15 @@ fn create_options_section() -> gtk::Box {
let dnscrypt_btn =
gtk::CheckButton::with_label(&fl!("tweak-enabled-title", tweak = "DNSCrypt"));
{
psd_btn.set_widget_name("Profile-sync-daemon");
systemd_oomd_btn.set_widget_name("Systemd-oomd");
apparmor_btn.set_widget_name("Apparmor");
bluetooth_btn.set_widget_name("Bluetooth");
ananicy_cpp_btn.set_widget_name("Ananicy Cpp");
dnscrypt_btn.set_widget_name("DNSCrypt");
}
unsafe {
psd_btn.set_data("actionData", "psd.service");
psd_btn.set_data("actionType", "user_service");