From fe57d88f6bb544ca4cb4ad4cc729d9c29fb746d2 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 12 Mar 2026 16:30:03 +0600 Subject: [PATCH] Fixed localisation --- locale/ubinstall-gtk.pot | 4 +++ locale/ubinstall-gtk_ru.po | 3 ++ source/ubinstall-gtk-ui-lang.c | 36 ++++++++++++++++++++++-- source/ubinstall-gtk.c | 50 +++++++++++++++++++++------------- source/ubinstall-gtk.h | 8 +++++- 5 files changed, 79 insertions(+), 22 deletions(-) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index 1688abc..02b2f0c 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -5320,4 +5320,8 @@ msgid "Vietnamese (US)" msgstr "" msgid "Vietnamese (France)" +msgstr "" + +#: source/libublsettingsui-gtk3.h:675 +msgid "Grant root access" msgstr "" \ No newline at end of file diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 3049e25..fed073e 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -5517,3 +5517,6 @@ msgstr "Вьетнамский (США)" msgid "Vietnamese (France)" msgstr "Вьетнамский (Франция)" +#: source/libublsettingsui-gtk3.h:675 +msgid "Grant root access" +msgstr "Предоставить root-доступ" \ No newline at end of file diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 9b343fd..32e61b8 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -234,6 +234,33 @@ gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *w } +void yon_gtk_widget_set_translation(GtkWidget *target){ + GObject *cur_widget = NULL; + char *widget_text = NULL; + if (GTK_IS_BUTTON(target)){ + cur_widget = G_OBJECT(target); + widget_text = yon_char_new(gtk_button_get_label(GTK_BUTTON(cur_widget))); + } else if (GTK_IS_LABEL(target)){ + cur_widget = G_OBJECT(target); + widget_text = yon_char_new(gtk_label_get_label(GTK_LABEL(cur_widget))); + } else if (GTK_IS_TREE_VIEW_COLUMN(target)){ + cur_widget = G_OBJECT(target); + widget_text = yon_char_new(gtk_tree_view_column_get_title(GTK_TREE_VIEW_COLUMN(cur_widget))); + } else if (GTK_IS_MENU_ITEM(target)){ + cur_widget = G_OBJECT(target); + GList *list = gtk_container_get_children(GTK_CONTAINER(cur_widget)); + if (list) { + GtkWidget *widget = target; + g_list_free(list); + if (GTK_IS_BOX(widget)){ + return; + } + } + widget_text = yon_char_new(gtk_menu_item_get_label(GTK_MENU_ITEM(cur_widget))); + } else return; + g_object_set_data(G_OBJECT(cur_widget),"original_label",(void*)widget_text); +} + void yon_translation_init(GtkBuilder *builder){ GSList *list = gtk_builder_get_objects(builder); @@ -270,9 +297,14 @@ void yon_translation_init(GtkBuilder *builder){ void yon_update_translation(main_window *widgets){ GtkBuilder *builder = widgets->builder; GSList *list = gtk_builder_get_objects(builder); - list = g_slist_append(list,widgets->DocumentationMenuItem); - list = g_slist_append(list,widgets->AboutMenuItem); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->DocumentationMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->AboutMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->root_button),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->ConfigurationModeMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->EnableVNCMenuItem),"Label")); + list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->EnableRDPMenuItem),"Label")); GSList *iter; + for (iter = list; iter; iter = iter->next){ if (iter->data == widgets->LicenceLabel){ yon_licence_load(widgets); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 8c4d573..407e957 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -818,25 +818,13 @@ void yon_main_window_create(main_window *widgets){ } yon_window_config_load(path); yon_window_config_add_instant_parameter("fullscreen","window",&fullscreen,YON_TYPE_BOOLEAN); - - yon_startup_language_init(); - yon_locale_init(); - yon_main_window_update_locale(widgets); - - yon_gtk_window_setup(GTK_WINDOW(widgets->MainWindow),NULL,TITLE_LABEL,icon_path,NULL); - - gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); - - gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL); - gtk_overlay_add_overlay(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox); - gtk_overlay_set_overlay_pass_through(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox,1); - gtk_widget_hide(widgets->TimeZoneMapOverlayBox); - g_thread_new("Partitions_thread",(GThreadFunc)yon_partitions_list_load,widgets); { widgets->EnableRDPMenuItem = gtk_menu_item_new(); GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *Label = gtk_label_new(ENABLE_RDP_LABEL); GtkWidget *Check = gtk_check_button_new(); + yon_gtk_widget_set_translation(Label); + g_object_set_data(G_OBJECT(widgets->EnableRDPMenuItem),"Label",Label); gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0); gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0); gtk_container_add(GTK_CONTAINER(widgets->EnableRDPMenuItem),Box); @@ -850,6 +838,8 @@ void yon_main_window_create(main_window *widgets){ GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *Label = gtk_label_new(ENABLE_VNC_LABEL); GtkWidget *Check = gtk_check_button_new(); + yon_gtk_widget_set_translation(Label); + g_object_set_data(G_OBJECT(widgets->EnableVNCMenuItem),"Label",Label); gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0); gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0); gtk_container_add(GTK_CONTAINER(widgets->EnableVNCMenuItem),Box); @@ -862,6 +852,8 @@ void yon_main_window_create(main_window *widgets){ widgets->ConfigurationModeMenuItem = gtk_menu_item_new(); GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *Label = gtk_label_new(CONFIGURATION_MODE_LABEL); + yon_gtk_widget_set_translation(Label); + g_object_set_data(G_OBJECT(widgets->ConfigurationModeMenuItem),"Label",Label); widgets->ConfigurationModeCheck = gtk_check_button_new(); gtk_box_pack_start(GTK_BOX(Box),widgets->ConfigurationModeCheck,0,0,0); gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0); @@ -874,6 +866,29 @@ void yon_main_window_create(main_window *widgets){ gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,0); } } + { + widgets->root_button = yon_root_button_new(main_config.argv,main_config.argc); + GtkWidget *Label = g_object_get_data(G_OBJECT(widgets->root_button),"Label"); + yon_gtk_widget_set_translation(Label); + gtk_style_context_add_class(gtk_widget_get_style_context(widgets->root_button),"menuitemtop"); + gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->AboutMenuItem)),widgets->root_button); + + yon_root_button_init(widgets->root_button,GTK_WINDOW(widgets->MainWindow)); + } + + yon_startup_language_init(); + yon_locale_init(); + yon_main_window_update_locale(widgets); + + yon_gtk_window_setup(GTK_WINDOW(widgets->MainWindow),NULL,TITLE_LABEL,icon_path,NULL); + + gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); + + gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL); + gtk_overlay_add_overlay(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox); + gtk_overlay_set_overlay_pass_through(GTK_OVERLAY(widgets->RegionMapOverlay),widgets->TimeZoneMapOverlayBox,1); + gtk_widget_hide(widgets->TimeZoneMapOverlayBox); + g_thread_new("Partitions_thread",(GThreadFunc)yon_partitions_list_load,widgets); { if (main_config.lock_load_global == 1){ @@ -963,6 +978,8 @@ main_window *yon_main_window_complete(){ } int main(int argc, char *argv[]){ + main_config.argv=argv; + main_config.argc = argc; // __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); config_str unfound = NULL; int size=0; @@ -1003,11 +1020,6 @@ int main(int argc, char *argv[]){ -1); { widgets = yon_main_window_complete(); - GtkWidget *root_button = yon_root_button_new(argv,argc); - gtk_style_context_add_class(gtk_widget_get_style_context(root_button),"menuitemtop"); - gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->AboutMenuItem)),root_button); - - yon_root_button_init(root_button,GTK_WINDOW(widgets->MainWindow)); on_config_global_load(NULL,widgets); } diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index ab2be00..cfa66a5 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -472,6 +472,9 @@ typedef struct config_str modules; int modules_size; + + config_str argv; + int argc; } config; extern config main_config; @@ -798,6 +801,8 @@ typedef struct gboolean slider_stop; + GtkWidget *root_button; + } main_window; enum ADVANCED_PART_TYPE @@ -1561,4 +1566,5 @@ void yon_advanced_part_to_data(advanced_part_widgets *part, advanced_part_data * void yon_advanced_part_save_part(advanced_part_data *data); void yon_advanced_part_remove_for_part(const char *part_name, main_window *widgets); int yon_software_check_packages_size(GtkWidget *, main_window *widgets); -void yon_user_admin_check(GtkWidget *self, main_window *widgets); \ No newline at end of file +void yon_user_admin_check(GtkWidget *self, main_window *widgets); +void yon_gtk_widget_set_translation(GtkWidget *target); \ No newline at end of file