From f059aa29ca8079d992a5446f6786553bd3dde885 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 10:36:29 +0600 Subject: [PATCH 01/23] Fixed title localisation --- source/ubinstall-gtk.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 9440563..00940fc 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -874,6 +874,7 @@ void yon_main_window_create(main_window *widgets){ } gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL); + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder,"headerTopic")),TITLE_LABEL); gtk_window_set_icon_name(GTK_WINDOW(widgets->MainWindow),icon_path); } gtk_builder_connect_signals(builder,NULL); @@ -956,13 +957,11 @@ main_window *yon_main_window_complete(){ int main(int argc, char *argv[]){ // __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); - textdomain(LocaleName); - yon_ubl_connect_config((_template_config*)&main_config); - config_init(); config_str unfound = NULL; int size=0; opterr=0; - yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); + yon_ubl_connect_config((_template_config*)&main_config); + textdomain(LocaleName); yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS); if (size) { int option_index = 0; @@ -987,6 +986,8 @@ int main(int argc, char *argv[]){ } } gtk_init(&argc,&argv); + config_init(); + yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); main_window *widgets = NULL; GtkCssProvider *css=gtk_css_provider_new(); gtk_css_provider_load_from_resource(css,CssPath); From b8965520dd922cd95b751d9aaa35db8e3dba2127 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 11:31:21 +0600 Subject: [PATCH 02/23] Test fix for modules loading compiler optimizing --- source/ubinstall-gtk-components.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index a74bd29..703725a 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -146,8 +146,9 @@ void *yon_modules_list_load(main_window *widgets){ config_str modules = yon_config_load(yon_debug_output("%s\n",get_modules_command),&size); for(int i=1;iversion = parsed[3]; row->name = parsed[1]; From eab28f708171c710844bfac8621aae5802c8bef1 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 11:31:33 +0600 Subject: [PATCH 03/23] Localisation fix --- source/ubinstall-gtk-region.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 5b49075..6beee65 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -105,6 +105,7 @@ void on_zone_changed(GtkWidget *, main_window *widgets){ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){ if (!location) return; g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); + g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_changed),widgets); char *zone = yon_char_new(cc_timezone_location_get_zone(location)); char *region = yon_char_divide_search(zone,"/",-1); @@ -124,6 +125,7 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind char *utc = yon_timezone_get_utc(tz); yon_map_status_show(widgets,NULL,MAP_TITLE_LABEL(utc),render); found = 1; + break; } } @@ -139,6 +141,7 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind if (!yon_char_is_empty(region)) free(region); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionEntry),G_CALLBACK(on_region_entry_changed),widgets); } From d478faf37fb3c5452908c5403f88b67660f6a6b2 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 11:32:09 +0600 Subject: [PATCH 04/23] Startup arguments fix --- source/ubinstall-gtk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 00940fc..8ecde4c 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -962,6 +962,7 @@ int main(int argc, char *argv[]){ opterr=0; yon_ubl_connect_config((_template_config*)&main_config); textdomain(LocaleName); + config_init(); yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS); if (size) { int option_index = 0; @@ -986,7 +987,6 @@ int main(int argc, char *argv[]){ } } gtk_init(&argc,&argv); - config_init(); yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); main_window *widgets = NULL; GtkCssProvider *css=gtk_css_provider_new(); From 32dab2c4f15feadf24c450bcf2d976f73fd05b77 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 11:39:00 +0600 Subject: [PATCH 05/23] Languages window empty string entry setting fix --- source/ubinstall-gtk-language.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-language.c b/source/ubinstall-gtk-language.c index 38e752b..536e4a5 100644 --- a/source/ubinstall-gtk-language.c +++ b/source/ubinstall-gtk-language.c @@ -183,7 +183,9 @@ language_window *yon_language_window_new(char *chosen_languages){ g_signal_connect(G_OBJECT(window->ToggleCell),"toggled",G_CALLBACK(on_locale_toggle),window); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(window->LanguagesTree)); - gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),chosen_languages); + if (!yon_char_is_empty(window->languages)){ + gtk_entry_set_text(GTK_ENTRY(window->ManualEntry),chosen_languages); + } gtk_overlay_add_overlay(GTK_OVERLAY(window->LoadingOverlay),window->LoadingSpinner); g_thread_new("locales-thread",(GThreadFunc)yon_locales_load_func,window); From 075336bc9e162028d1e627da5cb31ce05dca1ac1 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 12:05:14 +0600 Subject: [PATCH 06/23] Added keyboard window search --- source/ubinstall-gtk-keyboard.c | 21 +++++++++++++++++++-- source/ubinstall-gtk.c | 2 +- source/ubinstall-gtk.h | 3 ++- ubinstall-gtk-keyboard.glade | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 9e1c7f1..3492b9a 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -216,6 +216,22 @@ void on_system_layouts_add(GtkWidget *, main_window *widgets){ yon_layouts_add(GTK_TREE_VIEW(widgets->KeyboardLayoutTree),widgets->LayoutsList,widgets); } +gboolean on_keyboard_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){ + char *target; + char *loc_target; + char *code; + gtk_tree_model_get(model, iter, 0,&code, 4,&target, 2, &loc_target,-1); + char *string_utf = g_utf8_casefold(key,-1); + char *target_utf = g_utf8_casefold(target,-1); + char *loc_target_utf = g_utf8_casefold(loc_target,-1); + + char *string_normalized = g_utf8_strdown(g_utf8_normalize(string_utf,-1,G_NORMALIZE_DEFAULT),-1); + char *target_normalized = g_utf8_strdown(g_utf8_normalize(target_utf,-1,G_NORMALIZE_DEFAULT),-1); + char *loc_target_normalized = g_utf8_strdown(g_utf8_normalize(loc_target_utf,-1,G_NORMALIZE_DEFAULT),-1); + + return !(g_str_has_prefix(target_normalized,string_normalized) || g_str_has_prefix(loc_target_normalized,string_normalized) || !strcmp(code,string_normalized)); +} + layouts_window *yon_layouts_window_new(){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path); layouts_window *window = malloc(sizeof(layouts_window)); @@ -227,6 +243,7 @@ layouts_window *yon_layouts_window_new(){ window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree"); window->parameters = yon_char_new(config(xkblayout_parameter)); + gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(window->MainTree),(GtkTreeViewSearchEqualFunc)on_keyboard_search_func,window,NULL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->ChosenCell),"toggled",G_CALLBACK(on_layouts_chosen),window); return window; @@ -351,14 +368,14 @@ void yon_layout_build(layouts_window *window){ int parsed_size; config_str parsed = yon_char_parse(layouts[i],&parsed_size,"|"); gtk_tree_store_append(window->list,&parent,NULL); - gtk_tree_store_set(window->list,&parent,0,parsed[0],2,_(parsed[1]),-1); + gtk_tree_store_set(window->list,&parent,0,parsed[0],2,_(parsed[1]),4,parsed[1],-1); int variants_size; config_str variants = yon_layout_get_children(parsed[0],&variants_size); yon_char_parsed_free(parsed,parsed_size); for (int k=0;klist,&iter,&parent); - gtk_tree_store_set(window->list,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),-1); + gtk_tree_store_set(window->list,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),4,parsed[2],-1); yon_char_parsed_free(parsed,parsed_size); } yon_char_parsed_free(variants,variants_size); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 8ecde4c..67bde5c 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -204,7 +204,7 @@ void config_init(){ } yon_char_parsed_free(languages,size); - main_config.layouts_store = gtk_tree_store_new(4,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN); + main_config.layouts_store = gtk_tree_store_new(5,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN,G_TYPE_STRING); main_config.variants_list = yon_config_load(layouts_variant_command,&main_config.variants_size); main_config.layouts_list = yon_config_load(layouts_command,&main_config.layouts_size); for (int i=0;iTrue True treeviewcolumn1 - 0 + 2 From f2ded94c20dfbb6a0af2a9c996d77eba189aae65 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 13:12:10 +0600 Subject: [PATCH 07/23] Localisation fix --- ubinstall-gtk-keyboard-layouts.glade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubinstall-gtk-keyboard-layouts.glade b/ubinstall-gtk-keyboard-layouts.glade index a44c65a..6fcecff 100644 --- a/ubinstall-gtk-keyboard-layouts.glade +++ b/ubinstall-gtk-keyboard-layouts.glade @@ -1,6 +1,6 @@ - + True From e4b160225b6363c975ea8f6c3b838cfdb39d4df4 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 13:12:43 +0600 Subject: [PATCH 08/23] Removed unused glade file --- gresource.xml | 1 - source/CMakeLists.txt | 1 - source/ubinstall-gtk-keyboard.c | 1 + source/ubinstall-gtk.h | 1 - ubinstall-gtk-keyboard.glade | 164 -------------------------------- 5 files changed, 1 insertion(+), 167 deletions(-) delete mode 100644 ubinstall-gtk-keyboard.glade diff --git a/gresource.xml b/gresource.xml index 27a572a..8c06030 100644 --- a/gresource.xml +++ b/gresource.xml @@ -3,7 +3,6 @@ ubinstall-gtk.glade ubinstall-gtk-language.glade - ubinstall-gtk-keyboard.glade ubinstall-gtk-log-view.glade ubinstall-gtk-warning.glade ubinstall-gtk-user.glade diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 5117240..6b070d8 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -48,7 +48,6 @@ add_custom_target(GLADE ubinstall-gtk.glade) set(DEPENDFILES ../ubinstall-gtk.glade ../ubinstall-gtk-language.glade - ../ubinstall-gtk-keyboard.glade ../ubinstall-gtk-log-view.glade ../ubinstall-gtk-warning.glade ../ubinstall-gtk-user.glade diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 3492b9a..9ee5753 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -233,6 +233,7 @@ gboolean on_keyboard_search_func(GtkTreeModel *model, gint ,const char *key, Gtk } layouts_window *yon_layouts_window_new(){ + textdomain(LocaleName); GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path); layouts_window *window = malloc(sizeof(layouts_window)); memset(window,0,sizeof(layouts_window)); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index fae28b7..47a38e5 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -20,7 +20,6 @@ #define _(String) gettext(String) #define glade_path "/com/ublinux/ui/ubinstall-gtk.glade" -#define glade_path_ubinstall_keyboard "/com/ublinux/ui/ubinstall-gtk-keyboard.glade" #define glade_path_ubinstall_language "/com/ublinux/ui/ubinstall-gtk-language.glade" #define glade_path_network_info "/com/ublinux/ui/ubinstall-gtk-network-box.glade" #define glade_path_log_view "/com/ublinux/ui/ubinstall-gtk-log-view.glade" diff --git a/ubinstall-gtk-keyboard.glade b/ubinstall-gtk-keyboard.glade deleted file mode 100644 index f61ae10..0000000 --- a/ubinstall-gtk-keyboard.glade +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - 200 - 400 - False - True - 800 - com.ublinux.ubinstall-gtk - - - True - False - vertical - 5 - - - True - False - vertical - - - - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - vertical - 5 - - - True - True - in - - - True - True - treeviewcolumn1 - 2 - - - - - - Chosen - - - - 2 - 3 - - - - - - - Id - True - 0 - - - - 0 - - - - - - - Layout - - - - 1 - - - - - - - - - True - True - 1 - - - - - True - True - 1 - - - - - - - True - False - - - True - False - Keyboard layout language - - - - - - - - True - False - 32 - com.ublinux.ubinstall-gtk - - - - - Cancel - True - True - True - - - 1 - - - - - Ok - True - True - True - - - end - 2 - - - - - - - From c37e1624e8b41b56a0148336c7bc0e284f84a500 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 13:21:22 +0600 Subject: [PATCH 09/23] Configuration hub page back button sensitiveness --- source/ubinstall-gtk-page-switch.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 39a7aef..91db373 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -164,6 +164,9 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); break; + case YON_PAGE_CONFIG_HUB: + gtk_widget_set_sensitive(widgets->BackButton,0); + break; case YON_PAGE_COMPLETED: case YON_PAGE_RECOVERY_COMPLETION: case YON_PAGE_INSTALL_ERROR: From 3c442f2fd52388f61e8fb05d3083af125b71bc0f Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 16:03:40 +0600 Subject: [PATCH 10/23] Fixed bootload user password --- source/ubinstall-gtk-bootloader.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index 2897eb3..55a0348 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -46,6 +46,8 @@ void yon_password_change(GtkWidget *, bootloader_user_window *window){ yon_password_window *dialog = yon_password_open(output_target); yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window),NULL,icon_path,"password_window"); gtk_widget_show(window->Window); + yon_password_hash_list_set(dialog,NULL,NULL,0); + // gtk_widget_hide(window->AdminCheck); } @@ -68,7 +70,7 @@ void on_bootloader_user_accept(GtkWidget *, bootloader_user_window *window){ } } } - const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); + char *password = yon_char_new(gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry))); if (yon_char_is_empty(username)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->UsernameEntry); @@ -78,6 +80,11 @@ void on_bootloader_user_accept(GtkWidget *, bootloader_user_window *window){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->PasswordEntry); return; + } else { + if (strstr(password,"|")){ + int pos = yon_char_find_last(password,'|'); + free(yon_char_divide(password,pos)); + } } if (!yon_char_is_empty(window->prev_name)&&strcmp(username,window->prev_name)){ yon_config_remove_by_key(GRUB_PASSWORD(window->prev_name)); @@ -96,6 +103,7 @@ void on_bootloader_user_accept(GtkWidget *, bootloader_user_window *window){ } } yon_config_register(GRUB_PASSWORD(username),GRUB_SUPERUSERS_parameter_command,(char*)password); + free(password); GtkTreeIter iter; gtk_list_store_append(widgets->BootloadUsersList,&iter); gtk_list_store_set(widgets->BootloadUsersList,&iter,0,gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck)),1,username,2,"******",-1); From 5a5a618fce6545d1af1ad234fbcdef5e2c774f35 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 17:11:59 +0600 Subject: [PATCH 11/23] Fixed keyboard layout localisation --- locale/ubinstall-gtk.pot | 1762 ++++++++++++++++++++++++++++++++++++ locale/ubinstall-gtk_ru.po | 1623 ++++++++++++++++++++++++++++++++- 2 files changed, 3384 insertions(+), 1 deletion(-) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index 8014d98..bd4aeb5 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -3555,4 +3555,1766 @@ msgid "Zulu" msgstr "" msgid "Zurich" +msgstr "" +msgid "Albanian" +msgstr "" + +msgid "Amharic" +msgstr "" + +msgid "Armenian" +msgstr "" + +msgid "Arabic" +msgstr "" + +msgid "Arabic (Egypt)" +msgstr "" + +msgid "Arabic (Iraq)" +msgstr "" + +msgid "Arabic (Morocco)" +msgstr "" + +msgid "Arabic (Syria)" +msgstr "" + +msgid "Azerbaijani" +msgstr "" + +msgid "Bambara" +msgstr "" + +msgid "Bangla" +msgstr "" + +msgid "Belarusian" +msgstr "" + +msgid "Belgian" +msgstr "" + +msgid "Berber (Algeria, Latin)" +msgstr "" + +msgid "Bosnian" +msgstr "" + +msgid "Braille" +msgstr "" + +msgid "Bulgarian" +msgstr "" + +msgid "Burmese" +msgstr "" + +msgid "Chinese" +msgstr "" + +msgid "Croatian" +msgstr "" + +msgid "Czech" +msgstr "" + +msgid "Danish" +msgstr "" + +msgid "Dari" +msgstr "" + +msgid "Dhivehi" +msgstr "" + +msgid "Dutch" +msgstr "" + +msgid "Dzongkha" +msgstr "" + +msgid "English (Australia)" +msgstr "" + +msgid "English (Cameroon)" +msgstr "" + +msgid "English (Ghana)" +msgstr "" + +msgid "English (New Zealand)" +msgstr "" + +msgid "English (Nigeria)" +msgstr "" + +msgid "English (South Africa)" +msgstr "" + +msgid "English (UK)" +msgstr "" + +msgid "English (US)" +msgstr "" + +msgid "Esperanto" +msgstr "" + +msgid "Estonian" +msgstr "" + +msgid "Faroese" +msgstr "" + +msgid "Filipino" +msgstr "" + +msgid "Finnish" +msgstr "" + +msgid "French" +msgstr "" + +msgid "French (Canada)" +msgstr "" + +msgid "French (Democratic Republic of the Congo)" +msgstr "" + +msgid "French (Togo)" +msgstr "" + +msgid "Georgian" +msgstr "" + +msgid "German" +msgstr "" + +msgid "German (Austria)" +msgstr "" + +msgid "German (Switzerland)" +msgstr "" + +msgid "Greek" +msgstr "" + +msgid "Hebrew" +msgstr "" + +msgid "Hungarian" +msgstr "" + +msgid "Icelandic" +msgstr "" + +msgid "Indian" +msgstr "" + +msgid "Indonesian (Latin)" +msgstr "" + +msgid "Irish" +msgstr "" + +msgid "Italian" +msgstr "" + +msgid "Japanese" +msgstr "" + +msgid "Kazakh" +msgstr "" + +msgid "Khmer (Cambodia)" +msgstr "" + +msgid "Korean" +msgstr "" + +msgid "Kyrgyz" +msgstr "" + +msgid "Lao" +msgstr "" + +msgid "Latvian" +msgstr "" + +msgid "Lithuanian" +msgstr "" + +msgid "Macedonian" +msgstr "" + +msgid "Malay (Jawi, Arabic Keyboard)" +msgstr "" + +msgid "Maltese" +msgstr "" + +msgid "Moldavian" +msgstr "" + +msgid "Mongolian" +msgstr "" + +msgid "Montenegrin" +msgstr "" + +msgid "Nepali" +msgstr "" + +msgid "N'Ko (AZERTY)" +msgstr "" + +msgid "Norwegian" +msgstr "" + +msgid "Persian" +msgstr "" + +msgid "Polish" +msgstr "" + +msgid "Portuguese" +msgstr "" + +msgid "Portuguese (Brazil)" +msgstr "" + +msgid "Romanian" +msgstr "" + +msgid "Russian" +msgstr "" + +msgid "Serbian" +msgstr "" + +msgid "Sinhala (phonetic)" +msgstr "" + +msgid "Slovak" +msgstr "" + +msgid "Slovenian" +msgstr "" + +msgid "Spanish" +msgstr "" + +msgid "Spanish (Latin American)" +msgstr "" + +msgid "Swahili (Kenya)" +msgstr "" + +msgid "Swahili (Tanzania)" +msgstr "" + +msgid "Swedish" +msgstr "" + +msgid "Taiwanese" +msgstr "" + +msgid "Tajik" +msgstr "" + +msgid "Thai" +msgstr "" + +msgid "Tswana" +msgstr "" + +msgid "Turkmen" +msgstr "" + +msgid "Turkish" +msgstr "" + +msgid "Ukrainian" +msgstr "" + +msgid "Urdu (Pakistan)" +msgstr "" + +msgid "Uzbek" +msgstr "" + +msgid "Vietnamese" +msgstr "" + +msgid "Wolof" +msgstr "" + +msgid "A user-defined custom Layout" +msgstr "" +msgid "Albanian (Plisi)" +msgstr "" + +msgid "Albanian (Veqilharxhi)" +msgstr "" + +msgid "Armenian (phonetic)" +msgstr "" + +msgid "Armenian (alt. phonetic)" +msgstr "" + +msgid "Armenian (eastern)" +msgstr "" + +msgid "Armenian (alt. eastern)" +msgstr "" + +msgid "Armenian (western)" +msgstr "" + +msgid "Arabic (Eastern Arabic numerals)" +msgstr "" + +msgid "Arabic (AZERTY)" +msgstr "" + +msgid "Arabic (AZERTY, Eastern Arabic numerals)" +msgstr "" + +msgid "Arabic (Buckwalter)" +msgstr "" + +msgid "Arabic (Macintosh)" +msgstr "" + +msgid "Arabic (Macintosh, phonetic)" +msgstr "" + +msgid "Arabic (OLPC)" +msgstr "" + +msgid "Kurdish (Iraq, Latin Q)" +msgstr "" + +msgid "Kurdish (Iraq, Latin Alt-Q)" +msgstr "" + +msgid "Kurdish (Iraq, F)" +msgstr "" + +msgid "Kurdish (Iraq, Arabic-Latin)" +msgstr "" + +msgid "Berber (Morocco, Tifinagh)" +msgstr "" + +msgid "Berber (Morocco, Tifinagh alt.)" +msgstr "" + +msgid "Berber (Morocco, Tifinagh phonetic, alt.)" +msgstr "" + +msgid "Berber (Morocco, Tifinagh extended)" +msgstr "" + +msgid "Berber (Morocco, Tifinagh phonetic)" +msgstr "" + +msgid "Berber (Morocco, Tifinagh extended phonetic)" +msgstr "" + +msgid "French (Morocco)" +msgstr "" + +msgid "Tarifit" +msgstr "" + +msgid "Syriac" +msgstr "" + +msgid "Syriac (phonetic)" +msgstr "" + +msgid "Kurdish (Syria, Latin Q)" +msgstr "" + +msgid "Kurdish (Syria, Latin Alt-Q)" +msgstr "" + +msgid "Kurdish (Syria, F)" +msgstr "" + +msgid "Azerbaijani (Cyrillic)" +msgstr "" + +msgid "French (Mali, alt.)" +msgstr "" + +msgid "English (Mali, US, Macintosh)" +msgstr "" + +msgid "English (Mali, US, intl.)" +msgstr "" + +msgid "Bangla (Probhat)" +msgstr "" + +msgid "Belarusian (legacy)" +msgstr "" + +msgid "Belarusian (Latin)" +msgstr "" + +msgid "Belarusian (intl.)" +msgstr "" + +msgid "Belarusian (phonetic)" +msgstr "" + +msgid "Russian (Belarus)" +msgstr "" + +msgid "Belgian (alt.)" +msgstr "" + +msgid "Belgian (Latin-9 only, alt.)" +msgstr "" + +msgid "Belgian (ISO, alt.)" +msgstr "" + +msgid "Belgian (no dead keys)" +msgstr "" + +msgid "Belgian (Wang 724 AZERTY)" +msgstr "" + +msgid "Berber (Algeria, Tifinagh)" +msgstr "" + +msgid "Kabyle (AZERTY, with dead keys)" +msgstr "" + +msgid "Kabyle (QWERTY, UK, with dead keys)" +msgstr "" + +msgid "Kabyle (QWERTY, US, with dead keys)" +msgstr "" + +msgid "Arabic (Algeria)" +msgstr "" + +msgid "Bosnian (with guillemets)" +msgstr "" + +msgid "Bosnian (with Bosnian digraphs)" +msgstr "" + +msgid "Bosnian (US, with Bosnian digraphs)" +msgstr "" + +msgid "Bosnian (US)" +msgstr "" + +msgid "Braille (left-handed)" +msgstr "" + +msgid "Braille (left-handed inverted thumb)" +msgstr "" + +msgid "Braille (right-handed)" +msgstr "" + +msgid "Braille (right-handed inverted thumb)" +msgstr "" + +msgid "Bulgarian (traditional phonetic)" +msgstr "" + +msgid "Bulgarian (new phonetic)" +msgstr "" + +msgid "Bulgarian (enhanced)" +msgstr "" + +msgid "Burmese (Zawgyi)" +msgstr "" + +msgid "Mon" +msgstr "" + +msgid "Mon (A1)" +msgstr "" + +msgid "Shan" +msgstr "" + +msgid "Shan (Zawgyi)" +msgstr "" + +msgid "Hanyu Pinyin Letters (with AltGr dead keys)" +msgstr "" + +msgid "Mongolian (Bichig)" +msgstr "" + +msgid "Mongolian (Todo)" +msgstr "" + +msgid "Mongolian (Xibe)" +msgstr "" + +msgid "Mongolian (Manchu)" +msgstr "" + +msgid "Mongolian (Galik)" +msgstr "" + +msgid "Mongolian (Todo Galik)" +msgstr "" + +msgid "Mongolian (Manchu Galik)" +msgstr "" + +msgid "Tibetan" +msgstr "" + +msgid "Tibetan (with ASCII numerals)" +msgstr "" + +msgid "Uyghur" +msgstr "" + +msgid "Croatian (with guillemets)" +msgstr "" + +msgid "Croatian (with Croatian digraphs)" +msgstr "" + +msgid "Croatian (US, with Croatian digraphs)" +msgstr "" + +msgid "Croatian (US)" +msgstr "" + +msgid "Czech (extra backslash)" +msgstr "" + +msgid "Czech (QWERTY)" +msgstr "" + +msgid "Czech (QWERTY, extra backslash)" +msgstr "" + +msgid "Czech (QWERTZ, Windows)" +msgstr "" + +msgid "Czech (QWERTY, Windows)" +msgstr "" + +msgid "Czech (QWERTY, Macintosh)" +msgstr "" + +msgid "Czech (UCW, only accented letters)" +msgstr "" + +msgid "Czech (US, Dvorak, UCW support)" +msgstr "" + +msgid "Russian (Czechia, phonetic)" +msgstr "" + +msgid "Danish (no dead keys)" +msgstr "" + +msgid "Danish (Windows)" +msgstr "" + +msgid "Danish (Macintosh)" +msgstr "" + +msgid "Danish (Macintosh, no dead keys)" +msgstr "" + +msgid "Danish (Dvorak)" +msgstr "" + +msgid "Pashto" +msgstr "" + +msgid "Uzbek (Afghanistan)" +msgstr "" + +msgid "Dari (Afghanistan, OLPC)" +msgstr "" + +msgid "Pashto (Afghanistan, OLPC)" +msgstr "" + +msgid "Uzbek (Afghanistan, OLPC)" +msgstr "" + +msgid "Dutch (US)" +msgstr "" + +msgid "Dutch (Macintosh)" +msgstr "" + +msgid "Dutch (standard)" +msgstr "" + +msgid "French (Cameroon)" +msgstr "" + +msgid "Cameroon Multilingual (QWERTY, intl.)" +msgstr "" + +msgid "Cameroon (AZERTY, intl.)" +msgstr "" + +msgid "Cameroon (Dvorak, intl.)" +msgstr "" + +msgid "Mmuock" +msgstr "" + +msgid "English (Ghana, multilingual)" +msgstr "" + +msgid "English (Ghana, GILLBT)" +msgstr "" + +msgid "Akan" +msgstr "" + +msgid "Avatime" +msgstr "" + +msgid "Ewe" +msgstr "" + +msgid "Fula" +msgstr "" + +msgid "Ga" +msgstr "" + +msgid "Hausa (Ghana)" +msgstr "" + +msgid "Maori" +msgstr "" + +msgid "Hausa (Nigeria)" +msgstr "" + +msgid "Igbo" +msgstr "" + +msgid "Yoruba" +msgstr "" + +msgid "English (UK, extended, Windows)" +msgstr "" + +msgid "English (UK, intl., with dead keys)" +msgstr "" + +msgid "English (UK, Dvorak)" +msgstr "" + +msgid "English (UK, Dvorak, with UK punctuation)" +msgstr "" + +msgid "English (UK, Macintosh)" +msgstr "" + +msgid "English (UK, Macintosh, intl.)" +msgstr "" + +msgid "English (UK, Colemak)" +msgstr "" + +msgid "English (UK, Colemak-DH)" +msgstr "" + +msgid "Scottish Gaelic" +msgstr "" + +msgid "Polish (British keyboard)" +msgstr "" + +msgid "English (US, euro on 5)" +msgstr "" + +msgid "English (US, intl., with dead keys)" +msgstr "" + +msgid "English (US, alt. intl.)" +msgstr "" + +msgid "English (intl., with AltGr dead keys)" +msgstr "" + +msgid "English (Macintosh)" +msgstr "" + +msgid "English (Colemak)" +msgstr "" + +msgid "English (Colemak-DH)" +msgstr "" + +msgid "English (Colemak-DH Wide)" +msgstr "" + +msgid "English (Colemak-DH Ortholinear)" +msgstr "" + +msgid "English (Colemak-DH ISO)" +msgstr "" + +msgid "English (Colemak-DH Wide ISO)" +msgstr "" + +msgid "English (Dvorak)" +msgstr "" + +msgid "English (Dvorak, intl., with dead keys)" +msgstr "" + +msgid "English (Dvorak, alt. intl.)" +msgstr "" + +msgid "English (Dvorak, left-handed)" +msgstr "" + +msgid "English (Dvorak, right-handed)" +msgstr "" + +msgid "English (classic Dvorak)" +msgstr "" + +msgid "English (programmer Dvorak)" +msgstr "" + +msgid "English (Dvorak, Macintosh)" +msgstr "" + +msgid "English (Norman)" +msgstr "" + +msgid "English (US, Symbolic)" +msgstr "" + +msgid "English (Workman)" +msgstr "" + +msgid "English (Workman, intl., with dead keys)" +msgstr "" + +msgid "English (the divide/multiply toggle the layout)" +msgstr "" + +msgid "Cherokee" +msgstr "" + +msgid "Hawaiian" +msgstr "" + +msgid "Russian (US, phonetic)" +msgstr "" + +msgid "Serbo-Croatian (US)" +msgstr "" + +msgid "Esperanto (legacy)" +msgstr "" + +msgid "Estonian (no dead keys)" +msgstr "" + +msgid "Estonian (Dvorak)" +msgstr "" + +msgid "Estonian (US)" +msgstr "" + +msgid "Faroese (no dead keys)" +msgstr "" + +msgid "Filipino (QWERTY, Baybayin)" +msgstr "" + +msgid "Filipino (Capewell-Dvorak, Latin)" +msgstr "" + +msgid "Filipino (Capewell-Dvorak, Baybayin)" +msgstr "" + +msgid "Filipino (Capewell-QWERF 2006, Latin)" +msgstr "" + +msgid "Filipino (Capewell-QWERF 2006, Baybayin)" +msgstr "" + +msgid "Filipino (Colemak, Latin)" +msgstr "" + +msgid "Filipino (Colemak, Baybayin)" +msgstr "" + +msgid "Filipino (Dvorak, Latin)" +msgstr "" + +msgid "Filipino (Dvorak, Baybayin)" +msgstr "" + +msgid "Finnish (Windows)" +msgstr "" + +msgid "Finnish (classic)" +msgstr "" + +msgid "Finnish (classic, no dead keys)" +msgstr "" + +msgid "Finnish (Macintosh)" +msgstr "" + +msgid "Northern Saami (Finland)" +msgstr "" + +msgid "French (no dead keys)" +msgstr "" + +msgid "French (alt.)" +msgstr "" + +msgid "French (alt., no dead keys)" +msgstr "" + +msgid "French (alt., Latin-9 only)" +msgstr "" + +msgid "French (legacy, alt.)" +msgstr "" + +msgid "French (legacy, alt., no dead keys)" +msgstr "" + +msgid "French (AZERTY)" +msgstr "" + +msgid "French (AZERTY, AFNOR)" +msgstr "" + +msgid "French (BEPO)" +msgstr "" + +msgid "French (BEPO, Latin-9 only)" +msgstr "" + +msgid "French (BEPO, AFNOR)" +msgstr "" + +msgid "French (Dvorak)" +msgstr "" + +msgid "French (Macintosh)" +msgstr "" + +msgid "French (US)" +msgstr "" + +msgid "Breton (France)" +msgstr "" + +msgid "Occitan" +msgstr "" + +msgid "Georgian (France, AZERTY Tskapo)" +msgstr "" + +msgid "French (Canada, Dvorak)" +msgstr "" + +msgid "French (Canada, legacy)" +msgstr "" + +msgid "Canadian (CSA)" +msgstr "" + +msgid "English (Canada)" +msgstr "" + +msgid "Inuktitut" +msgstr "" + +msgid "Georgian (ergonomic)" +msgstr "" + +msgid "Georgian (MESS)" +msgstr "" + +msgid "Ossetian (Georgia)" +msgstr "" + +msgid "Russian (Georgia)" +msgstr "" + +msgid "German (dead acute)" +msgstr "" + +msgid "German (dead grave acute)" +msgstr "" + +msgid "German (dead tilde)" +msgstr "" + +msgid "German (no dead keys)" +msgstr "" + +msgid "German (E1)" +msgstr "" + +msgid "German (E2)" +msgstr "" + +msgid "German (T3)" +msgstr "" + +msgid "German (US)" +msgstr "" + +msgid "German (Dvorak)" +msgstr "" + +msgid "German (Macintosh)" +msgstr "" + +msgid "German (Macintosh, no dead keys)" +msgstr "" + +msgid "German (Neo 2)" +msgstr "" + +msgid "German (QWERTY)" +msgstr "" + +msgid "Lower Sorbian" +msgstr "" + +msgid "Lower Sorbian (QWERTZ)" +msgstr "" + +msgid "Romanian (Germany)" +msgstr "" + +msgid "Romanian (Germany, no dead keys)" +msgstr "" + +msgid "Russian (Germany, phonetic)" +msgstr "" + +msgid "Turkish (Germany)" +msgstr "" + +msgid "German (Austria, no dead keys)" +msgstr "" + +msgid "German (Austria, Macintosh)" +msgstr "" + +msgid "German (Switzerland, no dead keys)" +msgstr "" + +msgid "German (Switzerland, Macintosh)" +msgstr "" + +msgid "German (Switzerland, legacy)" +msgstr "" + +msgid "French (Switzerland)" +msgstr "" + +msgid "French (Switzerland, no dead keys)" +msgstr "" + +msgid "French (Switzerland, Macintosh)" +msgstr "" + +msgid "Greek (simple)" +msgstr "" + +msgid "Greek (no dead keys)" +msgstr "" + +msgid "Greek (polytonic)" +msgstr "" + +msgid "Hebrew (SI-1452-2)" +msgstr "" + +msgid "Hebrew (lyx)" +msgstr "" + +msgid "Hebrew (phonetic)" +msgstr "" + +msgid "Hebrew (Biblical, Tiro)" +msgstr "" + +msgid "Hungarian (standard)" +msgstr "" + +msgid "Hungarian (no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY)" +msgstr "" + +msgid "Hungarian (QWERTZ, 101-key, comma, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTZ, 101-key, comma, no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTZ, 101-key, dot, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTZ, 101-key, dot, no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 101-key, comma, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 101-key, comma, no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 101-key, dot, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 101-key, dot, no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTZ, 102-key, comma, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTZ, 102-key, comma, no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTZ, 102-key, dot, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTZ, 102-key, dot, no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 102-key, comma, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 102-key, comma, no dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 102-key, dot, dead keys)" +msgstr "" + +msgid "Hungarian (QWERTY, 102-key, dot, no dead keys)" +msgstr "" + +msgid "Icelandic (Macintosh, legacy)" +msgstr "" + +msgid "Icelandic (Macintosh)" +msgstr "" + +msgid "Icelandic (Dvorak)" +msgstr "" + +msgid "Assamese (KaGaPa, phonetic)" +msgstr "" + +msgid "Bangla (India)" +msgstr "" + +msgid "Bangla (India, Probhat)" +msgstr "" + +msgid "Bangla (India, Baishakhi)" +msgstr "" + +msgid "Bangla (India, Bornona)" +msgstr "" + +msgid "Bangla (India, KaGaPa, phonetic)" +msgstr "" + +msgid "Bangla (India, Gitanjali)" +msgstr "" + +msgid "Bangla (India, Baishakhi InScript)" +msgstr "" + +msgid "English (India, with rupee)" +msgstr "" + +msgid "Gujarati" +msgstr "" + +msgid "Gujarati (KaGaPa, phonetic)" +msgstr "" + +msgid "Hindi (Bolnagri)" +msgstr "" + +msgid "Hindi (Wx)" +msgstr "" + +msgid "Hindi (KaGaPa, phonetic)" +msgstr "" + +msgid "Kannada" +msgstr "" + +msgid "Kannada (KaGaPa, phonetic)" +msgstr "" + +msgid "Malayalam" +msgstr "" + +msgid "Malayalam (Lalitha)" +msgstr "" + +msgid "Malayalam (enhanced InScript, with rupee)" +msgstr "" + +msgid "Malayalam (Poorna, extended InScript)" +msgstr "" + +msgid "Manipuri (Meitei)" +msgstr "" + +msgid "Marathi (KaGaPa, phonetic)" +msgstr "" + +msgid "Marathi (enhanced InScript)" +msgstr "" + +msgid "Oriya" +msgstr "" + +msgid "Oriya (Bolnagri)" +msgstr "" + +msgid "Oriya (Wx)" +msgstr "" + +msgid "Punjabi (Gurmukhi)" +msgstr "" + +msgid "Punjabi (Gurmukhi Jhelum)" +msgstr "" + +msgid "Sanskrit (KaGaPa, phonetic)" +msgstr "" + +msgid "Santali (Ol Chiki)" +msgstr "" + +msgid "Tamil (TamilNet '99)" +msgstr "" + +msgid "Tamil (TamilNet '99 with Tamil numerals)" +msgstr "" + +msgid "Tamil (TamilNet '99, TAB encoding)" +msgstr "" + +msgid "Tamil (TamilNet '99, TSCII encoding)" +msgstr "" + +msgid "Tamil (InScript, with Arabic numerals)" +msgstr "" + +msgid "Tamil (InScript, with Tamil numerals)" +msgstr "" + +msgid "Telugu" +msgstr "" + +msgid "Telugu (KaGaPa, phonetic)" +msgstr "" + +msgid "Telugu (Sarala)" +msgstr "" + +msgid "Urdu (phonetic)" +msgstr "" + +msgid "Urdu (alt. phonetic)" +msgstr "" + +msgid "Urdu (Windows)" +msgstr "" + +msgid "Indic IPA" +msgstr "" + +msgid "Indonesian (Arab Melayu, phonetic)" +msgstr "" + +msgid "Indonesian (Arab Melayu, extended phonetic)" +msgstr "" + +msgid "Indonesian (Arab Pegon, phonetic)" +msgstr "" + +msgid "Javanese" +msgstr "" + +msgid "Irish (UnicodeExpert)" +msgstr "" + +msgid "CloGaelach" +msgstr "" + +msgid "Ogham" +msgstr "" + +msgid "Ogham (IS434)" +msgstr "" + +msgid "Italian (no dead keys)" +msgstr "" + +msgid "Italian (Windows)" +msgstr "" + +msgid "Italian (Macintosh)" +msgstr "" + +msgid "Italian (US)" +msgstr "" + +msgid "Italian (IBM 142)" +msgstr "" + +msgid "Friulian (Italy)" +msgstr "" + +msgid "Sicilian" +msgstr "" + +msgid "Georgian (Italy)" +msgstr "" + +msgid "Japanese (Kana)" +msgstr "" + +msgid "Japanese (Kana 86)" +msgstr "" + +msgid "Japanese (OADG 109A)" +msgstr "" + +msgid "Japanese (Macintosh)" +msgstr "" + +msgid "Japanese (Dvorak)" +msgstr "" + +msgid "Kazakh (with Russian)" +msgstr "" + +msgid "Kazakh (extended)" +msgstr "" + +msgid "Kazakh (Latin)" +msgstr "" + +msgid "Russian (Kazakhstan, with Kazakh)" +msgstr "" + +msgid "Korean (101/104-key compatible)" +msgstr "" + +msgid "Kyrgyz (phonetic)" +msgstr "" + +msgid "Lao (STEA)" +msgstr "" + +msgid "Latvian (apostrophe)" +msgstr "" + +msgid "Latvian (tilde)" +msgstr "" + +msgid "Latvian (F)" +msgstr "" + +msgid "Latvian (Modern Latin)" +msgstr "" + +msgid "Latvian (Modern Cyrillic)" +msgstr "" + +msgid "Latvian (ergonomic, ŪGJRMV)" +msgstr "" + +msgid "Latvian (adapted)" +msgstr "" + +msgid "Lithuanian (standard)" +msgstr "" + +msgid "Lithuanian (US)" +msgstr "" + +msgid "Lithuanian (IBM)" +msgstr "" + +msgid "Lithuanian (LEKP)" +msgstr "" + +msgid "Lithuanian (LEKPa)" +msgstr "" + +msgid "Lithuanian (Ratise)" +msgstr "" + +msgid "Samogitian" +msgstr "" + +msgid "Macedonian (no dead keys)" +msgstr "" + +msgid "Malay (Jawi, phonetic)" +msgstr "" + +msgid "Maltese (US)" +msgstr "" + +msgid "Maltese (US, with AltGr overrides)" +msgstr "" + +msgid "Maltese (UK, with AltGr overrides)" +msgstr "" + +msgid "Gagauz (Moldova)" +msgstr "" + +msgid "Montenegrin (Cyrillic)" +msgstr "" + +msgid "Montenegrin (Cyrillic, ZE and ZHE swapped)" +msgstr "" + +msgid "Montenegrin (Cyrillic, with guillemets)" +msgstr "" + +msgid "Montenegrin (Latin, Unicode)" +msgstr "" + +msgid "Montenegrin (Latin, QWERTY)" +msgstr "" + +msgid "Montenegrin (Latin, Unicode, QWERTY)" +msgstr "" + +msgid "Montenegrin (Latin, with guillemets)" +msgstr "" + +msgid "Norwegian (no dead keys)" +msgstr "" + +msgid "Norwegian (Windows)" +msgstr "" + +msgid "Norwegian (Macintosh)" +msgstr "" + +msgid "Norwegian (Macintosh, no dead keys)" +msgstr "" + +msgid "Norwegian (Colemak)" +msgstr "" + +msgid "Norwegian (Colemak-DH)" +msgstr "" + +msgid "Norwegian (Colemak-DH Wide)" +msgstr "" + +msgid "Norwegian (Dvorak)" +msgstr "" + +msgid "Northern Saami (Norway)" +msgstr "" + +msgid "Northern Saami (Norway, no dead keys)" +msgstr "" + +msgid "Persian (with Persian keypad)" +msgstr "" + +msgid "Persian (Windows)" +msgstr "" + +msgid "Azerbaijani (Iran)" +msgstr "" + +msgid "Kurdish (Iran, Latin Q)" +msgstr "" + +msgid "Kurdish (Iran, Latin Alt-Q)" +msgstr "" + +msgid "Kurdish (Iran, F)" +msgstr "" + +msgid "Kurdish (Iran, Arabic-Latin)" +msgstr "" + +msgid "Polish (legacy)" +msgstr "" + +msgid "Polish (QWERTZ)" +msgstr "" + +msgid "Polish (Dvorak)" +msgstr "" + +msgid "Polish (Dvorak, with Polish quotes on quotemark key)" +msgstr "" + +msgid "Polish (Dvorak, with Polish quotes on key 1)" +msgstr "" + +msgid "Polish (programmer Dvorak)" +msgstr "" + +msgid "Kashubian" +msgstr "" + +msgid "Silesian" +msgstr "" + +msgid "Russian (Poland, phonetic Dvorak)" +msgstr "" + +msgid "Portuguese (no dead keys)" +msgstr "" + +msgid "Portuguese (Macintosh)" +msgstr "" + +msgid "Portuguese (Macintosh, no dead keys)" +msgstr "" + +msgid "Portuguese (Nativo)" +msgstr "" + +msgid "Portuguese (Nativo for US keyboards)" +msgstr "" + +msgid "Esperanto (Portugal, Nativo)" +msgstr "" + +msgid "Portuguese (Brazil, no dead keys)" +msgstr "" + +msgid "Portuguese (Brazil, Dvorak)" +msgstr "" + +msgid "Portuguese (Brazil, Nativo)" +msgstr "" + +msgid "Portuguese (Brazil, Nativo for US keyboards)" +msgstr "" + +msgid "Portuguese (Brazil, IBM/Lenovo ThinkPad)" +msgstr "" + +msgid "Esperanto (Brazil, Nativo)" +msgstr "" + +msgid "Russian (Brazil, phonetic)" +msgstr "" + +msgid "Romanian (standard)" +msgstr "" + +msgid "Romanian (Windows)" +msgstr "" + +msgid "Russian (phonetic)" +msgstr "" + +msgid "Russian (phonetic, Windows)" +msgstr "" + +msgid "Russian (phonetic, YAZHERTY)" +msgstr "" + +msgid "Russian (phonetic, AZERTY)" +msgstr "" + +msgid "Russian (phonetic, Dvorak)" +msgstr "" + +msgid "Russian (typewriter)" +msgstr "" + +msgid "Russian (engineering, RU)" +msgstr "" + +msgid "Russian (engineering, EN)" +msgstr "" + +msgid "Russian (legacy)" +msgstr "" + +msgid "Russian (typewriter, legacy)" +msgstr "" + +msgid "Russian (DOS)" +msgstr "" + +msgid "Russian (Macintosh)" +msgstr "" + +msgid "Abkhazian (Russia)" +msgstr "" + +msgid "Bashkirian" +msgstr "" + +msgid "Chuvash" +msgstr "" + +msgid "Chuvash (Latin)" +msgstr "" + +msgid "Kalmyk" +msgstr "" + +msgid "Komi" +msgstr "" + +msgid "Mari" +msgstr "" + +msgid "Ossetian (legacy)" +msgstr "" + +msgid "Ossetian (Windows)" +msgstr "" + +msgid "Serbian (Russia)" +msgstr "" + +msgid "Tatar" +msgstr "" + +msgid "Udmurt" +msgstr "" + +msgid "Yakut" +msgstr "" + +msgid "Serbian (Cyrillic, with guillemets)" +msgstr "" + +msgid "Serbian (Cyrillic, ZE and ZHE swapped)" +msgstr "" + +msgid "Serbian (Latin)" +msgstr "" + +msgid "Serbian (Latin, with guillemets)" +msgstr "" + +msgid "Serbian (Latin, Unicode)" +msgstr "" + +msgid "Serbian (Latin, QWERTY)" +msgstr "" + +msgid "Serbian (Latin, Unicode, QWERTY)" +msgstr "" + +msgid "Pannonian Rusyn" +msgstr "" + +msgid "Sinhala (US)" +msgstr "" + +msgid "Tamil (Sri Lanka, TamilNet '99)" +msgstr "" + +msgid "Tamil (Sri Lanka, TamilNet '99, TAB encoding)" +msgstr "" + +msgid "Slovak (extra backslash)" +msgstr "" + +msgid "Slovak (QWERTY)" +msgstr "" + +msgid "Slovak (QWERTY, extra backslash)" +msgstr "" + +msgid "Slovenian (with guillemets)" +msgstr "" + +msgid "Slovenian (US)" +msgstr "" + +msgid "Spanish (no dead keys)" +msgstr "" + +msgid "Spanish (dead tilde)" +msgstr "" + +msgid "Spanish (Windows)" +msgstr "" + +msgid "Spanish (Dvorak)" +msgstr "" + +msgid "Asturian (Spain, with bottom-dot H and L)" +msgstr "" + +msgid "Catalan (Spain, with middle-dot L)" +msgstr "" + +msgid "Spanish (Latin American, no dead keys)" +msgstr "" + +msgid "Spanish (Latin American, dead tilde)" +msgstr "" + +msgid "Spanish (Latin American, Dvorak)" +msgstr "" + +msgid "Spanish (Latin American, Colemak)" +msgstr "" + +msgid "Kikuyu" +msgstr "" + +msgid "Swedish (no dead keys)" +msgstr "" + +msgid "Swedish (Dvorak)" +msgstr "" + +msgid "Swedish (Dvorak, intl.)" +msgstr "" + +msgid "Swedish (Svdvorak)" +msgstr "" + +msgid "Swedish (Macintosh)" +msgstr "" + +msgid "Swedish (US)" +msgstr "" + +msgid "Swedish Sign Language" +msgstr "" + +msgid "Northern Saami (Sweden)" +msgstr "" + +msgid "Russian (Sweden, phonetic)" +msgstr "" + +msgid "Taiwanese (indigenous)" +msgstr "" + +msgid "Saisiyat (Taiwan)" +msgstr "" + +msgid "Tajik (legacy)" +msgstr "" + +msgid "Thai (TIS-820.2538)" +msgstr "" + +msgid "Thai (Pattachote)" +msgstr "" + +msgid "Turkmen (Alt-Q)" +msgstr "" + +msgid "Turkish (F)" +msgstr "" + +msgid "Turkish (E)" +msgstr "" + +msgid "Turkish (Alt-Q)" +msgstr "" + +msgid "Turkish (intl., with dead keys)" +msgstr "" + +msgid "Kurdish (Turkey, Latin Q)" +msgstr "" + +msgid "Kurdish (Turkey, F)" +msgstr "" + +msgid "Kurdish (Turkey, Latin Alt-Q)" +msgstr "" + +msgid "Ukrainian (phonetic)" +msgstr "" + +msgid "Ukrainian (typewriter)" +msgstr "" + +msgid "Ukrainian (Windows)" +msgstr "" + +msgid "Ukrainian (macOS)" +msgstr "" + +msgid "Ukrainian (legacy)" +msgstr "" + +msgid "Ukrainian (homophonic)" +msgstr "" + +msgid "Crimean Tatar (Turkish Q)" +msgstr "" + +msgid "Crimean Tatar (Turkish F)" +msgstr "" + +msgid "Crimean Tatar (Turkish Alt-Q)" +msgstr "" + +msgid "Urdu (Pakistan, CRULP)" +msgstr "" + +msgid "Urdu (Pakistan, NLA)" +msgstr "" + +msgid "Arabic (Pakistan)" +msgstr "" + +msgid "Sindhi" +msgstr "" + +msgid "Uzbek (Latin)" +msgstr "" + +msgid "Vietnamese (US)" +msgstr "" + +msgid "Vietnamese (France)" msgstr "" \ No newline at end of file diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index e6268b4..19dd992 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -3891,4 +3891,1625 @@ msgid "Zulu" msgstr "Зулу" msgid "Zurich" -msgstr "Цюрих" \ No newline at end of file +msgstr "Цюрих" + +msgid "Amharic" +msgstr "Амхарский" + +msgid "Arabic (Egypt)" +msgstr "Арабский (Египет)" + +msgid "Arabic (Iraq)" +msgstr "Арабский (Ирак)" + +msgid "Arabic (Morocco)" +msgstr "Арабский (Марокко)" + +msgid "Arabic (Syria)" +msgstr "Арабский (Сирия)" + +msgid "Bambara" +msgstr "Бамбара" + +msgid "Bangla" +msgstr "Бангла" + +msgid "Belgian" +msgstr "Бельгийский" + +msgid "Berber (Algeria, Latin)" +msgstr "Берберийский (Алжир, латынь)" + +msgid "Braille" +msgstr "Брайль" + +msgid "Burmese" +msgstr "Бирманский" + +msgid "Dari" +msgstr "Дари" + +msgid "Dhivehi" +msgstr "Дивехи" + +msgid "Dzongkha" +msgstr "Дзонгкха" + +msgid "English (Australia)" +msgstr "Английский (Австралия)" + +msgid "English (Cameroon)" +msgstr "Английский (Камерун)" + +msgid "English (Ghana)" +msgstr "Английский (Гана)" + +msgid "English (New Zealand)" +msgstr "Английский (Новая Зеландия)" + +msgid "English (Nigeria)" +msgstr "Английский (Нигерия)" + +msgid "English (South Africa)" +msgstr "Английский (Южная Африка)" + +msgid "English (UK)" +msgstr "Английский (Великобритания)" + +msgid "English (US)" +msgstr "Английский (США)" + +msgid "Esperanto" +msgstr "Эсперанто" + +msgid "Faroese" +msgstr "Фаруитский" + +msgid "Filipino" +msgstr "Филиппинский" + +msgid "French (Canada)" +msgstr "Французский (Канада)" + +msgid "French (Democratic Republic of the Congo)" +msgstr "Французский (Демократическая Республика Конго)" + +msgid "French (Togo)" +msgstr "Французский (Того)" + +msgid "German (Austria)" +msgstr "Немецкий (Австрия)" + +msgid "German (Switzerland)" +msgstr "Немецкий (Швейцария)" + +msgid "Indonesian (Latin)" +msgstr "Индонезийский (латынь)" + +msgid "Irish" +msgstr "Ирландский" + +msgid "Khmer (Cambodia)" +msgstr "Кхмерский (Камбоджа)" + +msgid "Kyrgyz" +msgstr "Кыргызский" + +msgid "Lao" +msgstr "Лаосский" + +msgid "Malay (Jawi, Arabic Keyboard)" +msgstr "Малайский (джави, арабская клавиатура)" + +msgid "Moldavian" +msgstr "Молдавский" + +msgid "Mongolian" +msgstr "Монгольский" + +msgid "Montenegrin" +msgstr "Черногорский" + +msgid "Nepali" +msgstr "Непальский" + +msgid "N'Ko (AZERTY)" +msgstr "Нко (Азербайджанский)" + +msgid "Norwegian" +msgstr "Норвежский" + +msgid "Persian" +msgstr "Персидский" + +msgid "Portuguese (Brazil)" +msgstr "Португальский (Бразилия)" + +msgid "Sinhala (phonetic)" +msgstr "Сингальский (фонетический)" + +msgid "Spanish (Latin American)" +msgstr "Испанский (Латинская Америка)" + +msgid "Swahili (Kenya)" +msgstr "Суахили (Кения)" + +msgid "Swahili (Tanzania)" +msgstr "Суахили (Танзания)" + +msgid "Taiwanese" +msgstr "Тайваньский" + +msgid "Tajik" +msgstr "Таджикский" + +msgid "Tswana" +msgstr "Тсвана" + +msgid "Turkmen" +msgstr "Туркменский" + +msgid "Urdu (Pakistan)" +msgstr "Урду (Пакистан)" + +msgid "Uzbek" +msgstr "Узбекский" + +msgid "Wolof" +msgstr "Волоф" + +msgid "A user-defined custom Layout" +msgstr "Пользовательский макет" + +msgid "Albanian (Plisi)" +msgstr "Албанский (Плиси)" + +msgid "Albanian (Veqilharxhi)" +msgstr "Албанский (Векильхархи)" + +msgid "Armenian (phonetic)" +msgstr "Армянский (фонетический)" + +msgid "Armenian (alt. phonetic)" +msgstr "Армянский (альтернативный фонетический)" + +msgid "Armenian (eastern)" +msgstr "Армянский (восточный)" + +msgid "Armenian (alt. eastern)" +msgstr "Армянский (альтернативный восточный)" + +msgid "Armenian (western)" +msgstr "Армянский (западный)" + +msgid "Arabic (Eastern Arabic numerals)" +msgstr "Арабский (восточные арабские цифры)" + +msgid "Arabic (AZERTY)" +msgstr "Арабский (Азерти)" + +msgid "Arabic (AZERTY, Eastern Arabic numerals)" +msgstr "Арабский (Азерти, восточные арабские цифры)" + +msgid "Arabic (Buckwalter)" +msgstr "Арабский (Баквальтер)" + +msgid "Arabic (Macintosh)" +msgstr "Арабский (Макинтош)" + +msgid "Arabic (Macintosh, phonetic)" +msgstr "Арабский (Макинтош, фонетический)" + +msgid "Arabic (OLPC)" +msgstr "Арабский (OLPC)" + +msgid "Kurdish (Iraq, Latin Q)" +msgstr "Курдский (Ирак, латинский Q)" + +msgid "Kurdish (Iraq, Latin Alt-Q)" +msgstr "Курдский (Ирак, латинский Alt-Q)" + +msgid "Kurdish (Iraq, F)" +msgstr "Курдский (Ирак, F)" + +msgid "Kurdish (Iraq, Arabic-Latin)" +msgstr "Курдский (Ирак, арабско-латинский)" + +msgid "Berber (Morocco, Tifinagh)" +msgstr "Берберский (Марокко, Тифинаг)" + +msgid "Berber (Morocco, Tifinagh alt.)" +msgstr "Берберский (Марокко, Тифинаг альтернативный)" + +msgid "Berber (Morocco, Tifinagh phonetic, alt.)" +msgstr "Берберский (Марокко, Тифинаг фонетический, (альтерн.)" + +msgid "Berber (Morocco, Tifinagh extended)" +msgstr "Берберский (Марокко, расширенный Тифинаг)" + +msgid "Berber (Morocco, Tifinagh phonetic)" +msgstr "Берберский (Марокко, фонетический Тифинаг)" + +msgid "Berber (Morocco, Tifinagh extended phonetic)" +msgstr "Берберский (Марокко, расширенный фонетический Тифинаг)" + +msgid "French (Morocco)" +msgstr "Французский (Марокко)" + +msgid "Tarifit" +msgstr "Тарифит" + +msgid "Syriac" +msgstr "Сирийский" + +msgid "Syriac (phonetic)" +msgstr "Сирийский (фонетический)" + +msgid "Kurdish (Syria, Latin Q)" +msgstr "Курдский (Сирия, латинский Q)" + +msgid "Kurdish (Syria, Latin Alt-Q)" +msgstr "Курдский (Сирия, латинский Alt-Q)" + +msgid "Kurdish (Syria, F)" +msgstr "Курдский (Сирия, F)" + +msgid "Azerbaijani (Cyrillic)" +msgstr "Азербайджанский (кириллица)" + +msgid "French (Mali, alt.)" +msgstr "Французский (Мали, альтерн.)" + +msgid "English (Mali, US, Macintosh)" +msgstr "Английский (Мали, США, Macintosh)" + +msgid "English (Mali, US, intl.)" +msgstr "Английский (Мали, США, международный)" + +msgid "Bangla (Probhat)" +msgstr "Бенгальский (пробхат)" + +msgid "Belarusian (legacy)" +msgstr "Белорусский (наследие)" + +msgid "Belarusian (Latin)" +msgstr "Белорусский (латинский)" + +msgid "Belarusian (intl.)" +msgstr "Белорусский (международный)" + +msgid "Belarusian (phonetic)" +msgstr "Белорусский (фонетический)" + +msgid "Russian (Belarus)" +msgstr "Русский (Беларусь)" + +msgid "Belgian (alt.)" +msgstr "Бельгийский (альтерн.)" + +msgid "Belgian (Latin-9 only, alt.)" +msgstr "Бельгийский (Только латиница 9, альтернативный вариант)" + +msgid "Belgian (ISO, alt.)" +msgstr "Бельгийский (ISO, альтернативный вариант)" + +msgid "Belgian (no dead keys)" +msgstr "Бельгийский (без неработающих клавиш)" + +msgid "Belgian (Wang 724 AZERTY)" +msgstr "Бельгийский (Wang 724 AZERTY)" + +msgid "Berber (Algeria, Tifinagh)" +msgstr "Берберский (Алжир, Тифинаг)" + +msgid "Kabyle (AZERTY, with dead keys)" +msgstr "Кабиле (AZERTY, с неработающими клавишами)" + +msgid "Kabyle (QWERTY, UK, with dead keys)" +msgstr "Кабиле (QWERTY, Великобритания, с неработающими клавишами)" + +msgid "Kabyle (QWERTY, US, with dead keys)" +msgstr "Кабиле (QWERTY, США, с неработающими клавишами)" + +msgid "Arabic (Algeria)" +msgstr "Арабский (Алжир)" + +msgid "Bosnian (with guillemets)" +msgstr "Боснийский (с гильеметами)" + +msgid "Bosnian (with Bosnian digraphs)" +msgstr "Боснийский (с боснийскими диграфами)" + +msgid "Bosnian (US, with Bosnian digraphs)" +msgstr "Боснийский (США, с боснийскими диграфами)" + +msgid "Bosnian (US)" +msgstr "Боснийский (США)" + +msgid "Braille (left-handed)" +msgstr "Шрифт Брайля (для левшей)" + +msgid "Braille (left-handed inverted thumb)" +msgstr "Шрифт Брайля (для левшей, с вывернутым большим пальцем)" + +msgid "Braille (right-handed)" +msgstr "Шрифт Брайля (для правшей)" + +msgid "Braille (right-handed inverted thumb)" +msgstr "Шрифт Брайля (для правшей, с вывернутым большим пальцем)" + +msgid "Bulgarian (traditional phonetic)" +msgstr "Болгарский (традиционный фонетический)" + +msgid "Bulgarian (new phonetic)" +msgstr "Болгарский (новый) фонетический)" + +msgid "Bulgarian (enhanced)" +msgstr "Болгарский (расширенный)" + +msgid "Burmese (Zawgyi)" +msgstr "Бирманский (Завги)" + +msgid "Mon" +msgstr "Мон" + +msgid "Mon (A1)" +msgstr "Мон (A1)" + +msgid "Shan" +msgstr "Шаньский" + +msgid "Shan (Zawgyi)" +msgstr "Шаньский (Завги)" + +msgid "Hanyu Pinyin Letters (with AltGr dead keys)" +msgstr "Ханьюй Пиньинь (с неактивными клавишами AltGr)" + +msgid "Mongolian (Bichig)" +msgstr "Монгольский (Бичиг)" + +msgid "Mongolian (Todo)" +msgstr "Монгольский (Тодо)" + +msgid "Mongolian (Xibe)" +msgstr "Монгольский (Сибе)" + +msgid "Mongolian (Manchu)" +msgstr "Монгольский (Маньчжурский)" + +msgid "Mongolian (Galik)" +msgstr "Монгольский (Галик)" + +msgid "Mongolian (Todo Galik)" +msgstr "Монгольский (Тодо Галик)" + +msgid "Mongolian (Manchu Galik)" +msgstr "Монгольский (Маньчжурский Галик)" + +msgid "Tibetan" +msgstr "Тибетский" + +msgid "Tibetan (with ASCII numerals)" +msgstr "Тибетский (с цифрами ASCII)" + +msgid "Uyghur" +msgstr "Уйгурский" + +msgid "Croatian (with guillemets)" +msgstr "Хорватский (с гильеметами)" + +msgid "Croatian (with Croatian digraphs)" +msgstr "Хорватский (с хорватскими диграфами)" + +msgid "Croatian (US, with Croatian digraphs)" +msgstr "Хорватский (США, с хорватскими диграфами)" + +msgid "Croatian (US)" +msgstr "Хорватский (США)" + +msgid "Czech (extra backslash)" +msgstr "Чешский (дополнительная обратная косая черта)" + +msgid "Czech (QWERTY)" +msgstr "Чешский (QWERTY)" + +msgid "Czech (QWERTY, extra backslash)" +msgstr "Чешский (QWERTY, дополнительная обратная косая черта)" + +msgid "Czech (QWERTZ, Windows)" +msgstr "Чешский (QWERTZ, Windows)" + +msgid "Czech (QWERTY, Windows)" +msgstr "Чешский (QWERTY, Windows)" + +msgid "Czech (QWERTY, Macintosh)" +msgstr "Чешский (QWERTY, Macintosh)" + +msgid "Czech (UCW, only accented letters)" +msgstr "Чешский (UCW, только буквы с диакритическими знаками)" + +msgid "Czech (US, Dvorak, UCW support)" +msgstr "Чешский (США, Дворак, поддержка UCW)" + +msgid "Russian (Czechia, phonetic)" +msgstr "Русский (Чехия, фонетический)" + +msgid "Danish (no dead keys)" +msgstr "Датский (без мертвых клавиш)" + +msgid "Danish (Windows)" +msgstr "Датский (Windows)" + +msgid "Danish (Macintosh)" +msgstr "Датский (Macintosh)" + +msgid "Danish (Macintosh, no dead keys)" +msgstr "Датский (Macintosh, без мертвых клавиш)" + +msgid "Danish (Dvorak)" +msgstr "Датский (Дворак)" + +msgid "Pashto" +msgstr "Пушту" + +msgid "Uzbek (Afghanistan)" +msgstr "Узбекский (Афганистан)" + +msgid "Dari (Afghanistan, OLPC)" +msgstr "Дари (Афганистан, OLPC)" + +msgid "Pashto (Afghanistan, OLPC)" +msgstr "Пушту (Афганистан, OLPC)" + +msgid "Uzbek (Afghanistan, OLPC)" +msgstr "Узбекский (Афганистан, OLPC)" + +msgid "Dutch (US)" +msgstr "Голландский (США)" + +msgid "Dutch (Macintosh)" +msgstr "Голландский (Macintosh)" + +msgid "Dutch (standard)" +msgstr "Голландский (стандартный)" + +msgid "French (Cameroon)" +msgstr "Французский (Камерун)" + +msgid "Cameroon Multilingual (QWERTY, intl.)" +msgstr "Камерун Многоязычный (QWERTY, международный)" + +msgid "Cameroon (AZERTY, intl.)" +msgstr "Камерун (AZERTY, (международный)" + +msgid "Cameroon (Dvorak, intl.)" +msgstr "Камерун (Дворак, международный)" + +msgid "Mmuock" +msgstr "Ммуок" + +msgid "English (Ghana, multilingual)" +msgstr "Английский (Гана, многоязычный)" + +msgid "English (Ghana, GILLBT)" +msgstr "Английский (Гана, GILLBT)" + +msgid "Akan" +msgstr "Акан" + +msgid "Avatime" +msgstr "Аватиме" + +msgid "Ewe" +msgstr "Эве" + +msgid "Fula" +msgstr "Фула" + +msgid "Ga" +msgstr "Га" + +msgid "Hausa (Ghana)" +msgstr "Хауса (Гана)" + +msgid "Maori" +msgstr "Маори" + +msgid "Hausa (Nigeria)" +msgstr "Хауса (Нигерия)" + +msgid "Igbo" +msgstr "Игбо" + +msgid "Yoruba" +msgstr "Йоруба" + +msgid "English (UK, extended, Windows)" +msgstr "Английский (Великобритания, расширенный, Windows)" + +msgid "English (UK, intl., with dead keys)" +msgstr "Английский (Великобритания, международный, с неактивными клавишами)" + +msgid "English (UK, Dvorak)" +msgstr "Английский (Великобритания, Дворак)" + +msgid "English (UK, Dvorak, with UK punctuation)" +msgstr "Английский (Великобритания, Дворак, с британской пунктуацией)" + +msgid "English (UK, Macintosh)" +msgstr "Английский (Великобритания, Macintosh)" + +msgid "English (UK, Macintosh, intl.)" +msgstr "Английский (Великобритания, Macintosh, международный)" + +msgid "English (UK, Colemak)" +msgstr "Английский (Великобритания, Colemak)" + +msgid "English (UK, Colemak-DH)" +msgstr "Английский (Великобритания, Colemak-DH)" + +msgid "Scottish Gaelic" +msgstr "Шотландский гэльский" + +msgid "Polish (British keyboard)" +msgstr "Польский (Британская клавиатура)" + +msgid "English (US, euro on 5)" +msgstr "Английский (США, евро на 5)" + +msgid "English (US, intl., with dead keys)" +msgstr "Английский (США, международный, с неактивными клавишами)" + +msgid "English (US, alt. intl.)" +msgstr "Английский (США, альтернативный международный)" + +msgid "English (intl., with AltGr dead keys)" +msgstr "Английский (международный, с AltGr мертвые клавиши)" + +msgid "English (Macintosh)" +msgstr "Английский (Macintosh)" + +msgid "English (Colemak)" +msgstr "Английский (Colemak)" + +msgid "English (Colemak-DH)" +msgstr "Английский (Colemak-DH)" + +msgid "English (Colemak-DH Wide)" +msgstr "Английский (Colemak-DH Wide)" + +msgid "English (Colemak-DH Ortholinear)" +msgstr "Английский (Colemak-DH Ortholinear)" + +msgid "English (Colemak-DH ISO)" +msgstr "Английский (Colemak-DH ISO)" + +msgid "English (Colemak-DH Wide ISO)" +msgstr "Английский (Colemak-DH Wide ISO)" + +msgid "English (Dvorak)" +msgstr "Английский (Дворака)" + +msgid "English (Dvorak, intl., with dead keys)" +msgstr "Английский (Дворака, международный, с мертвыми клавишами)" + +msgid "English (Dvorak, alt. intl.)" +msgstr "Английский (Дворака, альтернативный международный)" + +msgid "English (Dvorak, left-handed)" +msgstr "Английский (Дворака, для левшей)" + +msgid "English (Dvorak, right-handed)" +msgstr "Английский (Дворака, для правшей)" + +msgid "English (classic Dvorak)" +msgstr "Английский (классический Дворака)" + +msgid "English (programmer Dvorak)" +msgstr "Английский (Дворака для программистов)" + +msgid "English (Dvorak, Macintosh)" +msgstr "Английский (Дворака, Macintosh)" + +msgid "English (Norman)" +msgstr "Английский (Норман)" + +msgid "English (US, Symbolic)" +msgstr "Английский (США, символический)" + +msgid "English (Workman)" +msgstr "Английский (Workman)" + +msgid "English (Workman, intl., with dead keys)" +msgstr "Английский (Workman, международный, с мертвыми клавишами)" + +msgid "English (the divide/multiply toggle the layout)" +msgstr "Английский (разделение/умножение переключает раскладку)" + +msgid "Cherokee" +msgstr "Чероки" + +msgid "Hawaiian" +msgstr "Гавайский" + +msgid "Russian (US, phonetic)" +msgstr "Русский (США, фонетический)" + +msgid "Serbo-Croatian (US)" +msgstr "Сербско-хорватский (США)" + +msgid "Esperanto (legacy)" +msgstr "Эсперанто (наследие)" + +msgid "Estonian (no dead keys)" +msgstr "Эстонский (без мертвых ключей)" + +msgid "Estonian (Dvorak)" +msgstr "Эстонский (Дворжак)" + +msgid "Estonian (US)" +msgstr "Эстонский (США)" + +msgid "Faroese (no dead keys)" +msgstr "Фарерский (без мертвых ключей)" + +msgid "Filipino (QWERTY, Baybayin)" +msgstr "Филиппинский (QWERTY, Байбайин)" + +msgid "Filipino (Capewell-Dvorak, Latin)" +msgstr "Филиппинский (Кейпвелл-Дворжак, латынь)" + +msgid "Filipino (Capewell-Dvorak, Baybayin)" +msgstr "Филиппинский (Кейпвелл-Дворак, Байбайин)" + +msgid "Filipino (Capewell-QWERF 2006, Latin)" +msgstr "Филиппинский (Capewell-QWERF 2006, латынь)" + +msgid "Filipino (Capewell-QWERF 2006, Baybayin)" +msgstr "Филиппинский (Capewell-QWERF 2006, Байбайин)" + +msgid "Filipino (Colemak, Latin)" +msgstr "Филиппинский (Колемак, латынь)" + +msgid "Filipino (Colemak, Baybayin)" +msgstr "Филиппинский (Колемак, Байбайин)" + +msgid "Filipino (Dvorak, Latin)" +msgstr "Филиппинский (Дворжак, латынь)" + +msgid "Filipino (Dvorak, Baybayin)" +msgstr "Филиппинский (Двожак, Байбайин)" + +msgid "Finnish (Windows)" +msgstr "Финский (Windows)" + +msgid "Finnish (classic)" +msgstr "Финский (классический)" + +msgid "Finnish (classic, no dead keys)" +msgstr "Финский (классический, без мертвых ключей)" + +msgid "Finnish (Macintosh)" +msgstr "финский (Макинтош)" + +msgid "Northern Saami (Finland)" +msgstr "Северосаамский (Финляндия)" + +msgid "French (no dead keys)" +msgstr "Французский (без неработающих клавиш)" + +msgid "French (alt.)" +msgstr "Французский (альтернативный)" + +msgid "French (alt., no dead keys)" +msgstr "Французский (альтернативный, без неработающих клавиш)" + +msgid "French (alt., Latin-9 only)" +msgstr "Французский (альтернативный, только Latin-9)" + +msgid "French (legacy, alt.)" +msgstr "Французский (старый, альтернативный)" + +msgid "French (legacy, alt., no dead keys)" +msgstr "Французский (старый, альтернативный, без неработающих клавиш)" + +msgid "French (AZERTY)" +msgstr "Французский (AZERTY)" + +msgid "French (AZERTY, AFNOR)" +msgstr "Французский (AZERTY, AFNOR)" + +msgid "French (BEPO)" +msgstr "Французский (BEPO)" + +msgid "French (BEPO, Latin-9 only)" +msgstr "Французский (BEPO, только Latin-9)" + +msgid "French (BEPO, AFNOR)" +msgstr "Французский (BEPO, AFNOR)" + +msgid "French (Dvorak)" +msgstr "Французский (Дворжак)" + +msgid "French (Macintosh)" +msgstr "Французский (Макинтош)" + +msgid "French (US)" +msgstr "Французский (США)" + +msgid "Breton (France)" +msgstr "Бретонский (Франция)" + +msgid "Occitan" +msgstr "Окситанский" + +msgid "Georgian (France, AZERTY Tskapo)" +msgstr "Грузинский (Франция, AZERTY Tskapo)" + +msgid "French (Canada, Dvorak)" +msgstr "Французский (Канада, Дворжак)" + +msgid "French (Canada, legacy)" +msgstr "Французский (Канада, старый)" + +msgid "Canadian (CSA)" +msgstr "Канадский (CSA)" + +msgid "English (Canada)" +msgstr "Английский (Канада)" + +msgid "Inuktitut" +msgstr "Инуктитут" + +msgid "Georgian (ergonomic)" +msgstr "Грузинский (эргономичный)" + +msgid "Georgian (MESS)" +msgstr "Грузинский (MESS)" + +msgid "Ossetian (Georgia)" +msgstr "Осетинский (Грузия)" + +msgid "Russian (Georgia)" +msgstr "Русский (Грузия)" + +msgid "German (dead acute)" +msgstr "Немецкий (мертвая акута)" + +msgid "German (dead grave acute)" +msgstr "Немецкий (мертвая тильда)" + +msgid "German (dead tilde)" +msgstr "Немецкий (мертвая тильда)" + +msgid "German (no dead keys)" +msgstr "Немецкий (нет мертвых клавиш)" + +msgid "German (E1)" +msgstr "Немецкий (E1)" + +msgid "German (E2)" +msgstr "Немецкий (E2)" + +msgid "German (T3)" +msgstr "Немецкий (T3)" + +msgid "German (US)" +msgstr "Немецкий (США)" + +msgid "German (Dvorak)" +msgstr "Немецкий (Дворак)" + +msgid "German (Macintosh)" +msgstr "Немецкий (Macintosh)" + +msgid "German (Macintosh, no dead keys)" +msgstr "Немецкий (Macintosh, нет мертвых клавиш)" + +msgid "German (Neo 2)" +msgstr "Немецкий (Neo 2)" + +msgid "German (QWERTY)" +msgstr "Немецкий (QWERTY)" + +msgid "Lower Sorbian" +msgstr "Нижнесорбский" + +msgid "Lower Sorbian (QWERTZ)" +msgstr "Нижнесорбский (QWERTZ)" + +msgid "Romanian (Germany)" +msgstr "Румынский (Германия)" + +msgid "Romanian (Germany, no dead keys)" +msgstr "Румынский (Германия,(без мертвых клавиш)" + +msgid "Russian (Germany, phonetic)" +msgstr "Русский (Германия, фонетический)" + +msgid "Turkish (Germany)" +msgstr "Турецкий (Германия)" + +msgid "German (Austria, no dead keys)" +msgstr "Немецкий (Австрия, без мертвых клавиш)" + +msgid "German (Austria, Macintosh)" +msgstr "Немецкий (Австрия, Macintosh)" + +msgid "German (Switzerland, no dead keys)" +msgstr "Немецкий (Швейцария, без мертвых клавиш)" + +msgid "German (Switzerland, Macintosh)" +msgstr "Немецкий (Швейцария, Macintosh)" + +msgid "German (Switzerland, legacy)" +msgstr "Немецкий (Швейцария, устаревшая версия)" + +msgid "French (Switzerland)" +msgstr "Французский (Швейцария)" + +msgid "French (Switzerland, no dead keys)" +msgstr "Французский (Швейцария, без мертвых клавиш)" + +msgid "French (Switzerland, Macintosh)" +msgstr "Французский (Швейцария, Macintosh)" + +msgid "Greek (simple)" +msgstr "Греческий (простой)" + +msgid "Greek (no dead keys)" +msgstr "Греческий (без мертвых клавиш)" + +msgid "Greek (polytonic)" +msgstr "Греческий (политонический)" + +msgid "Hebrew (SI-1452-2)" +msgstr "Иврит (SI-1452-2)" + +msgid "Hebrew (lyx)" +msgstr "Иврит (lyx)" + +msgid "Hebrew (phonetic)" +msgstr "Иврит (фонетический)" + +msgid "Hebrew (Biblical, Tiro)" +msgstr "Иврит (библейский, Tiro)" + +msgid "Hungarian (standard)" +msgstr "Венгерский (стандартный)" + +msgid "Hungarian (no dead keys)" +msgstr "Венгерский (без мертвых клавиш)" + +msgid "Hungarian (QWERTY)" +msgstr "Венгерский (QWERTY)" + +msgid "Hungarian (QWERTZ, 101-key, comma, dead keys)" +msgstr "Венгерский (QWERTZ, 101 клавиша, запятая, мертвые клавиши)" + +msgid "Hungarian (QWERTZ, 101-key, comma, no dead keys)" +msgstr "Венгерский (QWERTZ, 101 клавиша, запятая, нет неработающих клавиш)" + +msgid "Hungarian (QWERTZ, 101-key, dot, dead keys)" +msgstr "Венгерская (QWERTZ, 101 клавиша, точка, неработающие клавиши)" + +msgid "Hungarian (QWERTZ, 101-key, dot, no dead keys)" +msgstr "Венгерская (QWERTZ, 101 клавиша, точка, нет неработающих клавиш)" + +msgid "Hungarian (QWERTY, 101-key, comma, dead keys)" +msgstr "Венгерская (QWERTY, 101 клавиша, запятая, неработающие клавиши)" + +msgid "Hungarian (QWERTY, 101-key, comma, no dead keys)" +msgstr "Венгерская (QWERTY, 101 клавиша, запятая, нет неработающих клавиш)" + +msgid "Hungarian (QWERTY, 101-key, dot, dead keys)" +msgstr "Венгерская (QWERTY, 101 клавиша, точка, неработающие клавиши)" + +msgid "Hungarian (QWERTY, 101-key, dot, no dead keys)" +msgstr "Венгерская (QWERTY, 101 клавиша, точка, нет неработающих клавиш)" + +msgid "Hungarian (QWERTZ, 102-key, comma, dead keys)" +msgstr "Венгерская (QWERTZ, 102 клавиши, запятая, неработающие клавиши)" + +msgid "Hungarian (QWERTZ, 102-key, comma, no dead keys)" +msgstr "Венгерская (QWERTZ, 102 клавиши, запятая, нет неработающих клавиш)" + +msgid "Hungarian (QWERTZ, 102-key, dot, dead keys)" +msgstr "Венгерская (QWERTZ, 102 клавиши, запятая, неработающие клавиши)" + +msgid "Hungarian (QWERTZ, 102-key, dot, no dead keys)" +msgstr "Венгерская (QWERTZ, 102-клавишный, точечный, не битых клавиш)" + +msgid "Hungarian (QWERTY, 102-key, comma, dead keys)" +msgstr "Венгерский (QWERTY, 102 клавиши, запятая, неработающие клавиши)" + +msgid "Hungarian (QWERTY, 102-key, comma, no dead keys)" +msgstr "Венгерский (QWERTY, 102 клавиши, запятая, неработающие клавиши)" + +msgid "Hungarian (QWERTY, 102-key, dot, dead keys)" +msgstr "Венгерский (QWERTY, 102 клавиши, точка, неработающие клавиши)" + +msgid "Hungarian (QWERTY, 102-key, dot, no dead keys)" +msgstr "Венгерский (QWERTY, 102 клавиши, точка, неработающие клавиши)" + +msgid "Icelandic (Macintosh, legacy)" +msgstr "Исландский (Macintosh, устаревший)" + +msgid "Icelandic (Macintosh)" +msgstr "Исландский (Макинтош)" + +msgid "Icelandic (Dvorak)" +msgstr "Исландский (Дворжак)" + +msgid "Assamese (KaGaPa, phonetic)" +msgstr "Ассамский (КаГаПа, фонетический)" + +msgid "Bangla (India)" +msgstr "Бангла (Индия)" + +msgid "Bangla (India, Probhat)" +msgstr "Бангла (Индия, Пробхат)" + +msgid "Bangla (India, Baishakhi)" +msgstr "Бангла (Индия, Байшакхи)" + +msgid "Bangla (India, Bornona)" +msgstr "Бангла (Индия, Борнона)" + +msgid "Bangla (India, KaGaPa, phonetic)" +msgstr "Бангла (Индия, КаГаПа, фонетика)" + +msgid "Bangla (India, Gitanjali)" +msgstr "Бангла (Индия, Гитанджали)" + +msgid "Bangla (India, Baishakhi InScript)" +msgstr "Бангла (Индия, Байшахи Инскрипт)" + +msgid "English (India, with rupee)" +msgstr "Английский (Индия, рупия)" + +msgid "Gujarati (KaGaPa, phonetic)" +msgstr "Гуджарати (КаГаПа, фонетика)" + +msgid "Hindi (Bolnagri)" +msgstr "Хинди (Болнагри)" + +msgid "Hindi (Wx)" +msgstr "Хинди (Wx)" + +msgid "Hindi (KaGaPa, phonetic)" +msgstr "Хинди (КаГаПа, фонетический)" + +msgid "Kannada (KaGaPa, phonetic)" +msgstr "Каннада (КаГаПа, фонетический)" + +msgid "Malayalam (Lalitha)" +msgstr "Малаялам (Лалита)" + +msgid "Malayalam (enhanced InScript, with rupee)" +msgstr "Малаялам (расширенный InScript, с рупиями)" + +msgid "Malayalam (Poorna, extended InScript)" +msgstr "Малаялам (Пурна, расширенный InScript)" + +msgid "Manipuri (Meitei)" +msgstr "Манипури (Мэйтей)" + +msgid "Marathi (KaGaPa, phonetic)" +msgstr "Маратхи (КаГаПа, фонетический)" + +msgid "Marathi (enhanced InScript)" +msgstr "Маратхи (расширенный InScript)" + +msgid "Oriya (Bolnagri)" +msgstr "Ория (Болнагри)" + +msgid "Oriya (Wx)" +msgstr "Ория (Wx)" + +msgid "Punjabi (Gurmukhi)" +msgstr "Пенджаби (Гурмухи)" + +msgid "Punjabi (Gurmukhi Jhelum)" +msgstr "Пенджаби (Гурмухи Джелум)" + +msgid "Sanskrit (KaGaPa, phonetic)" +msgstr "Санскрит (КаГаПа, фонетический)" + +msgid "Santali (Ol Chiki)" +msgstr "Сантали (Ол Чики)" + +msgid "Tamil (TamilNet '99)" +msgstr "Тамильский (TamilNet '99)" + +msgid "Tamil (TamilNet '99 with Tamil numerals)" +msgstr "Тамильский (TamilNet '99 с тамильскими цифрами)" + +msgid "Tamil (TamilNet '99, TAB encoding)" +msgstr "Тамильский (TamilNet '99, кодировка TAB)" + +msgid "Tamil (TamilNet '99, TSCII encoding)" +msgstr "Тамильский (TamilNet '99, кодировка TSCII)" + +msgid "Tamil (InScript, with Arabic numerals)" +msgstr "Тамильский (InScript, с арабскими цифрами)" + +msgid "Tamil (InScript, with Tamil numerals)" +msgstr "Тамильский (InScript, с тамильскими цифрами)" + +msgid "Telugu (KaGaPa, phonetic)" +msgstr "Телугу (KaGaPa, фонетический)" + +msgid "Telugu (Sarala)" +msgstr "Телугу (Sarala)" + +msgid "Urdu (phonetic)" +msgstr "Урду (фонетический)" + +msgid "Urdu (alt. phonetic)" +msgstr "Урду (альтернативный фонетический)" + +msgid "Urdu (Windows)" +msgstr "Урду (Windows)" + +msgid "Indic IPA" +msgstr "Индийский IPA" + +msgid "Indonesian (Arab Melayu, phonetic)" +msgstr "Индонезийский (Arab Melayu, фонетический)" + +msgid "Indonesian (Arab Melayu, extended phonetic)" +msgstr "Индонезийский (Arab Melayu, расширенный фонетический)" + +msgid "Indonesian (Arab Pegon, phonetic)" +msgstr "Индонезийский (Arab Pegon, фонетический)" + +msgid "Javanese" +msgstr "Яванский" + +msgid "Irish (UnicodeExpert)" +msgstr "Ирландский (UnicodeExpert)" + +msgid "CloGaelach" +msgstr "CloGaelach" + +msgid "Ogham" +msgstr "Огам" + +msgid "Ogham (IS434)" +msgstr "Огам (IS434)" + +msgid "Italian (no dead keys)" +msgstr "Итальянский (без мертвых клавиш)" + +msgid "Italian (Windows)" +msgstr "Итальянский (Windows)" + +msgid "Italian (Macintosh)" +msgstr "Итальянский (Macintosh)" + +msgid "Italian (US)" +msgstr "Итальянский (США)" + +msgid "Italian (IBM 142)" +msgstr "Итальянский (IBM 142)" + +msgid "Friulian (Italy)" +msgstr "Фриульский (Италия)" + +msgid "Sicilian" +msgstr "Сицилийский" + +msgid "Georgian (Italy)" +msgstr "Грузинский (Италия)" + +msgid "Japanese (Kana)" +msgstr "Японский (кана)" + +msgid "Japanese (Kana 86)" +msgstr "Японский (кана 86)" + +msgid "Japanese (OADG 109A)" +msgstr "Японский (OADG 109A)" + +msgid "Japanese (Macintosh)" +msgstr "Японский (Macintosh)" + +msgid "Japanese (Dvorak)" +msgstr "Японский (Дворака)" + +msgid "Kazakh (with Russian)" +msgstr "Казахский (с русским)" + +msgid "Kazakh (extended)" +msgstr "Казахский (расширенный)" + +msgid "Kazakh (Latin)" +msgstr "Казахский (латинский)" + +msgid "Russian (Kazakhstan, with Kazakh)" +msgstr "Русский (Казахстан, с казахским)" + +msgid "Korean (101/104-key compatible)" +msgstr "Корейский (совместимый с 101/104 клавишами)" + +msgid "Kyrgyz (phonetic)" +msgstr "Кыргызский (фонетический)" + +msgid "Lao (STEA)" +msgstr "Лаосский (STEA)" + +msgid "Latvian (apostrophe)" +msgstr "Латвийский (апостроф)" + +msgid "Latvian (tilde)" +msgstr "Латвийский (тильда)" + +msgid "Latvian (F)" +msgstr "Латвийский (французский)" + +msgid "Latvian (Modern Latin)" +msgstr "Латвийский (современная латынь)" + +msgid "Latvian (Modern Cyrillic)" +msgstr "Латвийский (современная кириллица)" + +msgid "Latvian (ergonomic, ŪGJRMV)" +msgstr "Латвийский (эргономичный, ŪGJRMV)" + +msgid "Latvian (adapted)" +msgstr "Латвийский (адаптированный)" + +msgid "Lithuanian (standard)" +msgstr "Литовский (стандартный)" + +msgid "Lithuanian (US)" +msgstr "Литовский (США)" + +msgid "Lithuanian (IBM)" +msgstr "Литовский (IBM)" + +msgid "Lithuanian (LEKP)" +msgstr "Литовский (LEKP)" + +msgid "Lithuanian (LEKPa)" +msgstr "Литовский (LEKPa)" + +msgid "Lithuanian (Ratise)" +msgstr "Литовский (Ratise)" + +msgid "Samogitian" +msgstr "Жегиты" + +msgid "Macedonian (no dead keys)" +msgstr "Македонский (без мертвых клавиш)" + +msgid "Malay (Jawi, phonetic)" +msgstr "Малайский (джави, фонетический)" + +msgid "Maltese (US)" +msgstr "Мальтийский (США)" + +msgid "Maltese (US, with AltGr overrides)" +msgstr "Мальтийский (США, с переопределением AltGr)" + +msgid "Maltese (UK, with AltGr overrides)" +msgstr "Мальтийский (Великобритания, с переопределением AltGr)" + +msgid "Gagauz (Moldova)" +msgstr "Гагаузский (Молдова)" + +msgid "Montenegrin (Cyrillic)" +msgstr "Черногорский (кириллица)" + +msgid "Montenegrin (Cyrillic, ZE and ZHE swapped)" +msgstr "Черногорский (кириллица, ZE и ZHE поменяны местами)" + +msgid "Montenegrin (Cyrillic, with guillemets)" +msgstr "Черногорский (кириллица, с гильошированными знаками)" + +msgid "Montenegrin (Latin, Unicode)" +msgstr "Черногорский (лат., Unicode)" + +msgid "Montenegrin (Latin, QWERTY)" +msgstr "Черногорский (лат., QWERTY)" + +msgid "Montenegrin (Latin, Unicode, QWERTY)" +msgstr "Черногорский (лат., Unicode, QWERTY)" + +msgid "Montenegrin (Latin, with guillemets)" +msgstr "Черногорский (лат., с гильеметы)" + +msgid "Norwegian (no dead keys)" +msgstr "Норвежский (без неработающих клавиш)" + +msgid "Norwegian (Windows)" +msgstr "Норвежский (Windows)" + +msgid "Norwegian (Macintosh)" +msgstr "Норвежский (Macintosh)" + +msgid "Norwegian (Macintosh, no dead keys)" +msgstr "Норвежский (Macintosh, без неработающих клавиш)" + +msgid "Norwegian (Colemak)" +msgstr "Норвежский (Colemak)" + +msgid "Norwegian (Colemak-DH)" +msgstr "Норвежский (Colemak-DH)" + +msgid "Norwegian (Colemak-DH Wide)" +msgstr "Норвежский (Colemak-DH Wide)" + +msgid "Norwegian (Dvorak)" +msgstr "Норвежский (Дворака)" + +msgid "Northern Saami (Norway)" +msgstr "Северосаамский (Норвегия)" + +msgid "Northern Saami (Norway, no dead keys)" +msgstr "Северосаамский (Норвегия, без неработающих клавиш)" + +msgid "Persian (with Persian keypad)" +msgstr "Персидский (с персидской клавиатурой)" + +msgid "Persian (Windows)" +msgstr "Персидский (Windows)" + +msgid "Azerbaijani (Iran)" +msgstr "Азербайджанский (Иран)" + +msgid "Kurdish (Iran, Latin Q)" +msgstr "Курдский (Иран, латинская Q)" + +msgid "Kurdish (Iran, Latin Alt-Q)" +msgstr "Курдский (Иран, латинская Alt-Q)" + +msgid "Kurdish (Iran, F)" +msgstr "Курдский (Иран, F)" + +msgid "Kurdish (Iran, Arabic-Latin)" +msgstr "Курдский (Иран, арабско-латинский)" + +msgid "Polish (legacy)" +msgstr "Польский (устаревшая версия)" + +msgid "Polish (QWERTZ)" +msgstr "Польский (QWERTZ)" + +msgid "Polish (Dvorak)" +msgstr "Польский (Дворака)" + +msgid "Polish (Dvorak, with Polish quotes on quotemark key)" +msgstr "Польский (Дворака, с польскими кавычками в ключе кавычек)" + +msgid "Polish (Dvorak, with Polish quotes on key 1)" +msgstr "Польский (Дворжак, с польскими кавычками в ключе 1)" + +msgid "Polish (programmer Dvorak)" +msgstr "Польский (программист Дворжак)" + +msgid "Kashubian" +msgstr "Кашубский" + +msgid "Silesian" +msgstr "Силезский" + +msgid "Russian (Poland, phonetic Dvorak)" +msgstr "Русский (Польша, фонетический Дворжак)" + +msgid "Portuguese (no dead keys)" +msgstr "Португальский (без мертвых ключей)" + +msgid "Portuguese (Macintosh)" +msgstr "Португальский (Макинтош)" + +msgid "Portuguese (Macintosh, no dead keys)" +msgstr "Португальский (Macintosh, нерабочие клавиши)" + +msgid "Portuguese (Nativo)" +msgstr "Португальский (Родной)" + +msgid "Portuguese (Nativo for US keyboards)" +msgstr "Португальский (родной для клавиатуры США)" + +msgid "Esperanto (Portugal, Nativo)" +msgstr "Эсперанто (Португалия, Нативо)" + +msgid "Portuguese (Brazil, no dead keys)" +msgstr "Португальский (Бразилия, нет мертвых ключей)" + +msgid "Portuguese (Brazil, Dvorak)" +msgstr "Португальский (Бразилия, Дворжак)" + +msgid "Portuguese (Brazil, Nativo)" +msgstr "Португальский (Бразилия, Нативо)" + +msgid "Portuguese (Brazil, Nativo for US keyboards)" +msgstr "Португальский (Бразилия, Nativo для клавиатур США)" + +msgid "Portuguese (Brazil, IBM/Lenovo ThinkPad)" +msgstr "Португальский (Бразилия, IBM/Lenovo ThinkPad)" + +msgid "Esperanto (Brazil, Nativo)" +msgstr "Эсперанто (Бразилия, Нативо)" + +msgid "Russian (Brazil, phonetic)" +msgstr "Русский (Бразилия, фонетический)" + +msgid "Romanian (standard)" +msgstr "румынский (стандартный)" + +msgid "Romanian (Windows)" +msgstr "Румынский (Windows)" + +msgid "Russian (phonetic)" +msgstr "Русский (фонетический)" + +msgid "Russian (phonetic, Windows)" +msgstr "Русский (фонетический, Windows)" + +msgid "Russian (phonetic, YAZHERTY)" +msgstr "Русский (фонетический, ЯЖЕРТИ)" + +msgid "Russian (phonetic, AZERTY)" +msgstr "Русский (фонетический, АЗЕРТИ)" + +msgid "Russian (phonetic, Dvorak)" +msgstr "Русский (фонетический, Дворжак)" + +msgid "Russian (typewriter)" +msgstr "Русский (печатная машинка)" + +msgid "Russian (engineering, RU)" +msgstr "Русский (инженерный, RU)" + +msgid "Russian (engineering, EN)" +msgstr "Русский (инженерный, EN)" + +msgid "Russian (legacy)" +msgstr "Русский (устаревший)" + +msgid "Russian (typewriter, legacy)" +msgstr "Русский (печатная машинка, устаревший)" + +msgid "Russian (DOS)" +msgstr "Русский (DOS)" + +msgid "Russian (Macintosh)" +msgstr "Русский (Macintosh)" + +msgid "Abkhazian (Russia)" +msgstr "Абхазский (Россия)" + +msgid "Bashkirian" +msgstr "Башкирский" + +msgid "Chuvash" +msgstr "Чувашский" + +msgid "Chuvash (Latin)" +msgstr "Чувашский (лат.)" + +msgid "Kalmyk" +msgstr "Калмыцкий" + +msgid "Komi" +msgstr "Коми" + +msgid "Mari" +msgstr "Мари" + +msgid "Ossetian (legacy)" +msgstr "Осетианский (устаревший)" + +msgid "Ossetian (Windows)" +msgstr "Осетианский (Windows)" + +msgid "Serbian (Russia)" +msgstr "Сербияn (Россия)" + +msgid "Tatar" +msgstr "Татарский" + +msgid "Udmurt" +msgstr "Удмуртский" + +msgid "Yakut" +msgstr "Якутский" + +msgid "Serbian (Cyrillic, with guillemets)" +msgstr "Сербский (кириллица, с гильошированными знаками)" + +msgid "Serbian (Cyrillic, ZE and ZHE swapped)" +msgstr "Сербский (кириллица, ZE и ZHE поменяны местами)" + +msgid "Serbian (Latin)" +msgstr "Сербский (лат.)" + +msgid "Serbian (Latin, with guillemets)" +msgstr "Сербский (лат., с гильошированными знаками)" + +msgid "Serbian (Latin, Unicode)" +msgstr "Сербский (лат., Unicode)" + +msgid "Serbian (Latin, QWERTY)" +msgstr "Сербский (лат., QWERTY)" + +msgid "Serbian (Latin, Unicode, QWERTY)" +msgstr "Сербский (лат., Unicode, QWERTY)" + +msgid "Pannonian Rusyn" +msgstr "Паннонский русинский" + +msgid "Sinhala (US)" +msgstr "Сингальский (США)" + +msgid "Tamil (Sri Lanka, TamilNet '99)" +msgstr "Тамильский (Шри-Ланка, TamilNet '99)" + +msgid "Tamil (Sri Lanka, TamilNet '99, TAB encoding)" +msgstr "Тамильский (Шри-Ланка, TamilNet '99, кодировка TAB)" + +msgid "Slovak (extra backslash)" +msgstr "Словацкий (дополнительная обратная косая черта)" + +msgid "Slovak (QWERTY)" +msgstr "Словацкий (QWERTY)" + +msgid "Slovak (QWERTY, extra backslash)" +msgstr "Словацкий (QWERTY, дополнительная обратная косая черта)" + +msgid "Slovenian (with guillemets)" +msgstr "Словенский (с гильошированными знаками)" + +msgid "Slovenian (US)" +msgstr "Словенский (США)" + +msgid "Spanish (no dead keys)" +msgstr "Испанский (без мертвых клавиш)" + +msgid "Spanish (dead tilde)" +msgstr "Испанский (мертвая тильда)" + +msgid "Spanish (Windows)" +msgstr "Испанский (Windows)" + +msgid "Spanish (Dvorak)" +msgstr "Испанский (Дворяк)" + +msgid "Asturian (Spain, with bottom-dot H and L)" +msgstr "Астурский (Испания, с нижней точкой H и L)" + +msgid "Catalan (Spain, with middle-dot L)" +msgstr "Каталанский (Испания, со средней точкой L)" + +msgid "Spanish (Latin American, no dead keys)" +msgstr "Испанский (Латинско-американский, без мертвых клавиш)" + +msgid "Spanish (Latin American, dead tilde)" +msgstr "Испанский (Латинско-американский, мертвая тильда)" + +msgid "Spanish (Latin American, Dvorak)" +msgstr "Испанский (Латинско-американский, Дворяк)" + +msgid "Spanish (Latin American, Colemak)" +msgstr "Испанский (Латинско-американский, Колемак)" + +msgid "Kikuyu" +msgstr "Кикуйю" + +msgid "Swedish (no dead keys)" +msgstr "Шведский (без мертвых клавиш)" + +msgid "Swedish (Dvorak)" +msgstr "Шведский (Дворяк)" + +msgid "Swedish (Dvorak, intl.)" +msgstr "Шведский (Дворяк, международный)" + +msgid "Swedish (Svdvorak)" +msgstr "Шведский (Свдворак)" + +msgid "Swedish (Macintosh)" +msgstr "Шведский (Макинтош)" + +msgid "Swedish (US)" +msgstr "Шведский (США)" + +msgid "Swedish Sign Language" +msgstr "Шведский язык жестов" + +msgid "Northern Saami (Sweden)" +msgstr "Северносаами (Швеция)" + +msgid "Russian (Sweden, phonetic)" +msgstr "Русский (Швеция, фонетический)" + +msgid "Taiwanese (indigenous)" +msgstr "Тайваньский (коренной)" + +msgid "Saisiyat (Taiwan)" +msgstr "Сайсият (Тайвань)" + +msgid "Tajik (legacy)" +msgstr "Таджикский (наследие)" + +msgid "Thai (TIS-820.2538)" +msgstr "Тайский (TIS-820.2538)" + +msgid "Thai (Pattachote)" +msgstr "Тайский (паттахотский)" + +msgid "Turkmen (Alt-Q)" +msgstr "Туркменский (Alt-Q)" + +msgid "Turkish (F)" +msgstr "Турецкой (F)" + +msgid "Turkish (E)" +msgstr "Турецкой (E)" + +msgid "Turkish (Alt-Q)" +msgstr "Турецкой (Alt-Q)" + +msgid "Turkish (intl., with dead keys)" +msgstr "Турецкой (международный, с неактивными клавишами)" + +msgid "Kurdish (Turkey, Latin Q)" +msgstr "Курдский (Турция, латинский Q)" + +msgid "Kurdish (Turkey, F)" +msgstr "Курдский (Турция, F)" + +msgid "Kurdish (Turkey, Latin Alt-Q)" +msgstr "Курдский (Турция, латинский Alt-Q)" + +msgid "Ukrainian (phonetic)" +msgstr "Украинский (фонетический)" + +msgid "Ukrainian (typewriter)" +msgstr "Украинский (печатный)" + +msgid "Ukrainian (Windows)" +msgstr "Украинский (Windows)" + +msgid "Ukrainian (macOS)" +msgstr "Украинский (macOS)" + +msgid "Ukrainian (legacy)" +msgstr "Украинский (устаревший)" + +msgid "Ukrainian (homophonic)" +msgstr "Украинский (гомофонический)" + +msgid "Crimean Tatar (Turkish Q)" +msgstr "Крымский татарский (турецкий Q)" + +msgid "Crimean Tatar (Turkish F)" +msgstr "Крымский татарский (турецкий F)" + +msgid "Crimean Tatar (Turkish Alt-Q)" +msgstr "Крымский татарский (турецкий Alt-Q)" + +msgid "Urdu (Pakistan, CRULP)" +msgstr "Урду (Пакистан, CRULP)" + +msgid "Urdu (Pakistan, NLA)" +msgstr "Урду (Пакистан, NLA)" + +msgid "Arabic (Pakistan)" +msgstr "Арабский (Пакистан)" + +msgid "Sindhi" +msgstr "Синдхи" + +msgid "Uzbek (Latin)" +msgstr "Узбекский (Латинский)" + +msgid "Vietnamese (US)" +msgstr "Вьетнамский (США)" + +msgid "Vietnamese (France)" +msgstr "Вьетнамский (Франция)" + From a8db6f303dd2c68e1e1450f324cff546f8001f96 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Mon, 2 Mar 2026 17:27:32 +0600 Subject: [PATCH 12/23] Config hub page back button sensitivity --- source/ubinstall-gtk-page-switch.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 91db373..b6de2b9 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -164,9 +164,6 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL); break; - case YON_PAGE_CONFIG_HUB: - gtk_widget_set_sensitive(widgets->BackButton,0); - break; case YON_PAGE_COMPLETED: case YON_PAGE_RECOVERY_COMPLETION: case YON_PAGE_INSTALL_ERROR: @@ -219,7 +216,7 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ } break; case YON_PAGE_CONFIG_HUB:{ gtk_widget_show(widgets->NextButton); - gtk_widget_show(widgets->BackButton); + gtk_widget_hide(widgets->BackButton); gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL); GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton)); gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON); From c30b87db1af0fb23811c3fe5ddd3d41963973983 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 3 Mar 2026 09:46:02 +0600 Subject: [PATCH 13/23] Fixed boot load saving & loading --- source/ubinstall-gtk-bootloader.c | 114 ++++++++++++++++-------------- 1 file changed, 61 insertions(+), 53 deletions(-) diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index 55a0348..875f4a7 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -7,9 +7,9 @@ int yon_bootloader_save(main_window *widgets){ } else { yon_config_remove_by_key(GRUB_TIMEOUT_parameter); } - if (gtk_switch_get_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch))){ + if (!gtk_switch_get_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch))){ + yon_config_register(AUTOLOGINUSER_parameter,AUTOLOGINUSER_parameter_command,"no"); GtkTreeIter iter; - yon_config_register(AUTOLOGINUSER_parameter,AUTOLOGINUSER_parameter_command,"yes"); GtkTreeModel *model = GTK_TREE_MODEL(widgets->BootloadUsersList); int admin_size=0; config_str admin_list = NULL; @@ -22,8 +22,12 @@ int yon_bootloader_save(main_window *widgets){ } char *admin_string = yon_char_parsed_to_string(admin_list,admin_size,","); yon_config_register(GRUB_PASSWORD_parameter(username),GRUB_PASSWORD_parameter_command(username),password); - yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,admin_string); - free(admin_string); + if (!yon_char_is_empty(admin_string)){ + yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,admin_string); + free(admin_string); + } else { + yon_config_remove_by_key(GRUB_SUPERUSERS_parameter); + } } } else { int size; @@ -31,7 +35,7 @@ int yon_bootloader_save(main_window *widgets){ for (int i=0;iprev_name)&&strcmp(username,window->prev_name)){ - yon_config_remove_by_key(GRUB_PASSWORD(window->prev_name)); - int size; - char *superusers = config(GRUB_SUPERUSERS_parameter); - config_str parsed = yon_char_parse(superusers,&size,","); - int pos = yon_char_parsed_check_exist(parsed,size,(char*)username); - if (pos>-1){ - parsed = yon_char_parsed_rip(parsed,&size,pos); - char *superusers = yon_char_parsed_to_string(parsed,size,","); - if (!yon_char_is_empty(superusers)){ - yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); - } else { - yon_config_remove_by_key(GRUB_SUPERUSERS_parameter); - } - } - } - yon_config_register(GRUB_PASSWORD(username),GRUB_SUPERUSERS_parameter_command,(char*)password); - free(password); + // if (!yon_char_is_empty(window->prev_name)&&strcmp(username,window->prev_name)){ + // yon_config_remove_by_key(GRUB_PASSWORD(window->prev_name)); + // int size; + // char *superusers = config(GRUB_SUPERUSERS_parameter); + // config_str parsed = yon_char_parse(superusers,&size,","); + // int pos = yon_char_parsed_check_exist(parsed,size,(char*)username); + // if (pos>-1){ + // parsed = yon_char_parsed_rip(parsed,&size,pos); + // char *superusers = yon_char_parsed_to_string(parsed,size,","); + // if (!yon_char_is_empty(superusers)){ + // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); + // } else { + // yon_config_remove_by_key(GRUB_SUPERUSERS_parameter); + // } + // } + // } + // yon_config_register(GRUB_PASSWORD(username),GRUB_SUPERUSERS_parameter_command,(char*)password); GtkTreeIter iter; gtk_list_store_append(widgets->BootloadUsersList,&iter); - gtk_list_store_set(widgets->BootloadUsersList,&iter,0,gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck)),1,username,2,"******",-1); - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck))){ - int size; - char *superusers = config(GRUB_SUPERUSERS_parameter); - config_str parsed = yon_char_parse(superusers,&size,","); - if (yon_char_parsed_check_exist(parsed,size,(char*)username)==-1){ - yon_char_parsed_add_or_create_if_exists(parsed,&size,(char*)username); - char *superusers = yon_char_parsed_to_string(parsed,size,","); - yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); - } - } else { - int size; - char *superusers = config(GRUB_SUPERUSERS_parameter); - config_str parsed = yon_char_parse(superusers,&size,","); - int pos = yon_char_parsed_check_exist(parsed,size,(char*)username); - if (pos!=-1){ - parsed = yon_char_parsed_rip(parsed,&size,pos); - - char *superusers = yon_char_parsed_to_string(parsed,size,","); - yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); - } - } + gtk_list_store_set(widgets->BootloadUsersList,&iter,0,gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck)),1,username,2,password,3,"******",-1); + + // free(password); + // if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck))){ + // int size; + // char *superusers = config(GRUB_SUPERUSERS_parameter); + // config_str parsed = yon_char_parse(superusers,&size,","); + // if (yon_char_parsed_check_exist(parsed,size,(char*)username)==-1){ + // yon_char_parsed_add_or_create_if_exists(parsed,&size,(char*)username); + // char *superusers = yon_char_parsed_to_string(parsed,size,","); + // // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); + // } + // } else { + // int size; + // char *superusers = config(GRUB_SUPERUSERS_parameter); + // config_str parsed = yon_char_parse(superusers,&size,","); + // int pos = yon_char_parsed_check_exist(parsed,size,(char*)username); + // if (pos!=-1){ + // parsed = yon_char_parsed_rip(parsed,&size,pos); + + // char *superusers = yon_char_parsed_to_string(parsed,size,","); + // // yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_parameter_command,superusers); + // } + // } on_subwindow_close(window->Window); } @@ -466,23 +470,27 @@ void yon_bootloader_init(main_window *widgets){ } else { gtk_entry_set_text(GTK_ENTRY(widgets->BootloadDefaultOSEntry),DEFAULT_BOOTLOAD_MENU_ITEM_LABEL); } - if (!yon_char_is_empty(autologin)&&(!strcmp(autologin,"yes")||!strcmp(autologin,"enable"))){ + if (!yon_char_is_empty(autologin)&&(!strcmp(autologin,"no")||!strcmp(autologin,"disable"))){ gtk_list_store_clear(widgets->BootloadUsersList); - gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),1); + gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),0); int admins_size; config_str admins_parsed = yon_char_parse(admins,&admins_size,","); GtkTreeIter iter; for (int i=0;iBootloadUsersList,&iter); - gtk_list_store_set(widgets->BootloadUsersList,&iter,0,yon_char_parsed_check_exist(admins_parsed,admins_size,key),1,key,2,parameter,3,"******",-1); + gtk_list_store_set(widgets->BootloadUsersList,&iter,0,yon_char_parsed_check_exist(admins_parsed,admins_size,subkey)>-1,1,subkey,2,parameter,3,"******",-1); free(parameter); free(parameter_name); - free(key); + free(subkey); } yon_char_parsed_free(admins_parsed,admins_size); + } else { + gtk_switch_set_active(GTK_SWITCH(widgets->BootloadNoPasswordSwitch),1); } } \ No newline at end of file From e50cc95fe9e0cb5f0b08db6eefd33c622fdf5736 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 3 Mar 2026 10:02:54 +0600 Subject: [PATCH 14/23] Test for for environment set error --- source/ubinstall-gtk-ui-lang.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index a5aa06b..5b3c1be 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -102,7 +102,7 @@ void yon_main_window_update_locale(main_window *widgets){ } } } - locale = setlocale(LC_ALL,(char *)locale); + setlocale(LC_ALL,(char *)locale); yon_config_register(installer_locale_parameter,installer_locale_parameter_command,(char*)locale); // gtk_widget_destroy(widgets->MainWindow); From b0536d54379f9ea9e93e5ccbd1706f9d5b99db33 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 3 Mar 2026 11:37:12 +0600 Subject: [PATCH 15/23] Localisation changes --- source/ubinstall-gtk-components.c | 2 +- source/ubinstall-gtk-keyboard.c | 2 +- source/ubinstall-gtk.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 703725a..5bb7878 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -197,7 +197,7 @@ gboolean yon_os_component_insert(struct row_data *row_input){ main_window *widgets = row_input->widgets; g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(yon_os_components_check_packages_size),widgets); gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1); - yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,_(row_input->description), row_input->source, row_input->size); + yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,!yon_char_is_empty(row_input->description)?(row_input->description):"", row_input->source, row_input->size); char *modules = config(modules_parameter); if (yon_char_is_empty(modules)||yon_char_check_element(modules,row_input->name,",")||!strcmp(modules,"auto")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index 9ee5753..1095337 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -252,7 +252,7 @@ layouts_window *yon_layouts_window_new(){ void yon_layouts_add(GtkTreeView *, GtkListStore *, main_window *widgets){ layouts_window *window = yon_layouts_window_new(); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),TITLE_LABEL,icon_path,"layout_window"); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),KEYBOARD_LAYOUT_LABEL,icon_path,"layout_window"); window->list = main_config.layouts_store; diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 47a38e5..9f2957a 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -183,7 +183,7 @@ layout && /description:/ {\ #define xkbvariant_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBVARIANT']" #define xkboptions_parameter "AUTOINSTALL[ubconfig set [keyboard] XKBOPTIONS]" #define xkboptions_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBOPTIONS']" -#define hostname_parameter "AUTOINSTALL[ubconfig set [system] HOSTNAME]" +#define hostname_parameter "AUTOINSTALL[ubconfig set [system] HOSTNAMEe]" #define hostname_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [system] HOSTNAME']" #define zone_parameter "AUTOINSTALL[ubconfig set [clock] ZONE]" #define zone_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [clock] ZONE']" From 1a24968abd719ac44bf72f9dd74bbb0b4d7bd2bc Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 3 Mar 2026 18:02:10 +0600 Subject: [PATCH 16/23] WIP Advanced installation page partitions removing --- source/ubinstall-gtk-advanced.c | 54 ++++++++++++++++++++++++++++++--- source/ubinstall-gtk.h | 4 ++- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c index 91f9a83..3d3f274 100644 --- a/source/ubinstall-gtk-advanced.c +++ b/source/ubinstall-gtk-advanced.c @@ -3,6 +3,46 @@ #define toggled_icon_name "com.ublinux.libublsettingsui-gtk3.toggled-symbolic" #define untoggled_icon_name "com.ublinux.libublsettingsui-gtk3.untoggled-symbolic" +void on_advanced_part_remove_part(GtkWidget *self, main_window *widgets){ + advanced_part_widgets *part = g_object_get_data(G_OBJECT(self),"advanced_part_widgets"); + advanced_part_data *data = g_object_get_data(G_OBJECT(self),"advanced_part_data"); + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->PartitionsList); + for_iter (model, &iter){ + char *target; + gtk_tree_model_get(model,&iter,0,&target,-1); + if (!strcmp(data->partition,target)){ + gtk_widget_destroy(part->MainBox); + gtk_list_store_set(widgets->PartitionsList,&iter,7,0,-1); + free(part); + } + } +} + +void on_advanced_part_remove_device(GtkWidget *self, main_window *widgets){ + advanced_part_widgets *part = g_object_get_data(G_OBJECT(self),"advanced_part_widgets"); + advanced_part_data *data = g_object_get_data(G_OBJECT(self),"advanced_part_data"); + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->DevicesList); + for_iter (model, &iter){ + char *target; + gtk_tree_model_get(model,&iter,0,&target,-1); + if (!strcmp(data->device,target)){ + gtk_widget_destroy(part->MainBox); + free(part); + } + } +} + +void on_advanced_part_remove_virtual(GtkWidget *, main_window *widgets){ + // advanced_part_widgets *part = g_object_get_data(G_OBJECT(self),"advanced_part_widgets"); + // g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); + // gtk_widget_destroy(part->MainBox); + // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); + // free(part); +} + void on_format_changed(GtkWidget *self, advanced_part_widgets *part){ int active = gtk_combo_box_get_active(GTK_COMBO_BOX(self)); switch (active){ @@ -142,7 +182,7 @@ void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ advanced_part_data *data = g_object_get_data(G_OBJECT(part->MainBox),"advanced_part_data"); free(data->device); data->device = yon_char_new(device); - // yon_advanced_part_update_from_data(part, data); + yon_advanced_part_update_from_data(part, data); } else { if (yon_advanced_part_check_count(widgets)){ advanced_part_data *data = yon_advanced_part_data_new(); @@ -150,7 +190,8 @@ void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ data->device = yon_char_new(device); advanced_part_widgets *part = yon_advanced_part_create(data); gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); - // yon_advanced_part_update_from_data(part, data); + g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove_virtual),widgets); + yon_advanced_part_update_from_data(part, data); } else { gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); @@ -267,6 +308,8 @@ void yon_advanced_part_update_from_data(advanced_part_widgets *part, advanced_pa gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),0); } else if (pos == 1){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); } @@ -305,8 +348,9 @@ void yon_advanced_part_create_for_device(GtkTreeIter *iter, main_window *widgets advanced_part_data *data = yon_advanced_part_data_new(); data->device = target; advanced_part_widgets *part = yon_advanced_part_create(data); + g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove_device),widgets); gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); - // yon_advanced_part_update_from_data(part,data); + yon_advanced_part_update_from_data(part,data); } } @@ -317,8 +361,9 @@ void yon_advanced_part_create_for_part(GtkTreeIter *iter, main_window *widgets){ advanced_part_data *data = yon_advanced_part_data_new(); data->partition = target; advanced_part_widgets *part = yon_advanced_part_create(data); + g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove_part),widgets); gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); - // yon_advanced_part_update_from_data(part,data); + yon_advanced_part_update_from_data(part,data); } } @@ -480,6 +525,7 @@ advanced_part_widgets *yon_advanced_part_create(advanced_part_data *part_data){ g_object_set_data(G_OBJECT(part->MainBox),"advanced_part_data",part_data); g_object_set_data(G_OBJECT(part->SizeCombo),"advanced_part_widgets",part); g_object_set_data(G_OBJECT(part->RemoveButton),"advanced_part_widgets",part); + g_object_set_data(G_OBJECT(part->RemoveButton),"advanced_part_data",part_data); g_object_set_data(G_OBJECT(part->SystemSectionToggle),"advanced_part_widgets",part); g_object_set_data(G_OBJECT(part->UserDataSectionToggle),"advanced_part_widgets",part); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 9f2957a..0bff66e 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -1357,7 +1357,9 @@ void on_install_advanced_partition_chosen(GtkCellRenderer *, gchar *path, main_w void yon_devices_setup(main_window *widgets); void on_advanced_password_clicked(GtkWidget *, advanced_part_widgets *part); advanced_part_widgets *yon_advanced_partition_new(); -void on_advanced_part_remove(GtkWidget *self, main_window *widgets); +void on_advanced_part_remove_device(GtkWidget *self, main_window *widgets); +void on_advanced_part_remove_part(GtkWidget *self, main_window *widgets); +void on_advanced_part_remove_virtual(GtkWidget *self, main_window *widgets); int yon_advanced_get_part_size(main_window *widgets); void yon_advanced_partition_clear(main_window *widgets); void yon_os_row_setup(os_row *row, char *name, char *version, char *tags, char *description, char *source, char *size); From 0779f146ca40e6a32221e7fa8017dbc9d2d96525 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 4 Mar 2026 11:08:27 +0600 Subject: [PATCH 17/23] Memory fix --- source/ubinstall-gtk-kernel.c | 1 - source/ubinstall-gtk-region.c | 22 +++++++++++----------- source/ubinstall-gtk-ui-lang.c | 6 ++++++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index affd164..8b4e5e6 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -288,7 +288,6 @@ void on_kernel_addon_info(GtkLabel *self){ yon_packages_info *info_struct = yon_packages_get_info_struct(YON_PACKAGES_ALL,package); if (!info_struct) return; char* info_string = yon_packages_get_info_string(info_struct); - yon_debug_output("%s\n",info_string); config_str info = yon_char_parse(info_string,&size,"\n"); if (size>0){ info_element *element = yon_package_info_element_new(); diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 6beee65..22a3bf2 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -113,7 +113,7 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind char *timezone = (char*)cc_timezone_location_get_zone(location); GtkTreeIter iter; - int found = 0; + // int found = 0; for_iter(widgets->RegionTimezoneCompletionList,&iter){ char *render, *tz; gtk_tree_model_get(GTK_TREE_MODEL(widgets->RegionTimezoneCompletionList),&iter,0,&render,1,&tz,-1); @@ -124,20 +124,20 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),render); char *utc = yon_timezone_get_utc(tz); yon_map_status_show(widgets,NULL,MAP_TITLE_LABEL(utc),render); - found = 1; + // found = 1; break; } } - if (!found){ - const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo)); - const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); - char *timezone = yon_char_unite(region,"/",zone,NULL); - g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); - cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); - free(timezone); - } + // if (!found){ + // const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo)); + // const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); + // char *timezone = yon_char_unite(region,"/",zone,NULL); + // g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); + // cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone); + // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); + // free(timezone); + // } if (!yon_char_is_empty(region)) free(region); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); diff --git a/source/ubinstall-gtk-ui-lang.c b/source/ubinstall-gtk-ui-lang.c index 5b3c1be..9b343fd 100644 --- a/source/ubinstall-gtk-ui-lang.c +++ b/source/ubinstall-gtk-ui-lang.c @@ -67,17 +67,20 @@ void yon_startup_language_init(){ { if (size>0&&!yon_char_is_empty(parsed[0])&&strcmp(parsed[0],"(null)\n")){ yon_char_remove_last_symbol(parsed[0],'\n'); + if (strstr(parsed[0],"=")) free(yon_char_divide_search(parsed[0],"=",-1)); yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[0]); } if (size>1&&!yon_char_is_empty(parsed[1])&&strcmp(parsed[1],"(null)\n")){ yon_char_remove_last_symbol(parsed[1],'\n'); + if (strstr(parsed[0],"=")) free(yon_char_divide_search(parsed[1],"=",-1)); yon_char_remove_brackets(parsed[1]); yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[1]); } if (size>2&&!yon_char_is_empty(parsed[2])&&strcmp(parsed[2],"(null)\n")){ yon_char_remove_last_symbol(parsed[2],'\n'); + if (strstr(parsed[0],"=")) free(yon_char_divide_search(parsed[2],"=",-1)); yon_char_remove_brackets(parsed[2]); yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[2]); @@ -101,6 +104,9 @@ void yon_main_window_update_locale(main_window *widgets){ locale = lang; } } + if (yon_char_is_empty(locale)){ + locale = setlocale(LC_ALL,NULL); + } } setlocale(LC_ALL,(char *)locale); yon_config_register(installer_locale_parameter,installer_locale_parameter_command,(char*)locale); From 32c986e9caf8dac9f4f2249d9fab49dd56bdf0db Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 4 Mar 2026 11:51:03 +0600 Subject: [PATCH 18/23] Fixed main components page crash without root --- source/ubinstall-gtk-components.c | 52 ++++++++++++++++--------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 5bb7878..8c98556 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -142,32 +142,34 @@ os_row *yon_os_row_new(){ void *yon_modules_list_load(main_window *widgets){ - int size; - config_str modules = yon_config_load(yon_debug_output("%s\n",get_modules_command),&size); - for(int i=1;iversion = parsed[3]; - row->name = parsed[1]; - row->tags = yon_char_replace(parsed[2]," ",", "); - row->description = parsed[5]; - row->widgets=widgets; - row->source = parsed[0]; - - char sizemod; - char *temp = yon_char_from_double(yon_size_long_convert_automatic(atol(parsed[4]),&sizemod)); - char *size_str = yon_size_get_name_from_letter(sizemod); - row->size = yon_char_unite(temp," ", size_str,NULL); - free(temp); - g_idle_add((GSourceFunc)yon_os_component_insert,row); + if (!getuid()||!yon_char_is_empty(config(source_parameter))){ return 0; + int size; + config_str modules = yon_config_load(yon_debug_output("%s\n",get_modules_command),&size); + for(int i=1;iversion = parsed[3]; + row->name = parsed[1]; + row->tags = yon_char_replace(parsed[2]," ",", "); + row->description = parsed[5]; + row->widgets=widgets; + row->source = parsed[0]; + + char sizemod; + char *temp = yon_char_from_double(yon_size_long_convert_automatic(atol(parsed[4]),&sizemod)); + char *size_str = yon_size_get_name_from_letter(sizemod); + row->size = yon_char_unite(temp," ", size_str,NULL); + free(temp); + g_idle_add((GSourceFunc)yon_os_component_insert,row); + } + if (main_config.modules_size) yon_char_parsed_free(main_config.modules,main_config.modules_size); + main_config.modules = modules; + main_config.modules_size = size; } - g_idle_add((GSourceFunc)yon_spinner_switch_off,widgets->OSSpinner); - if (main_config.modules_size) yon_char_parsed_free(main_config.modules,main_config.modules_size); - main_config.modules = modules; - main_config.modules_size = size; + g_idle_add((GSourceFunc)yon_spinner_switch_off,widgets->OSSpinner); g_thread_exit(NULL); } From 66ac196686fea56c685f0b0528f69c59943589b2 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 4 Mar 2026 13:05:52 +0600 Subject: [PATCH 19/23] Fixed modules loading --- source/ubinstall-gtk-components.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 8c98556..2aa05d7 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -142,7 +142,7 @@ os_row *yon_os_row_new(){ void *yon_modules_list_load(main_window *widgets){ - if (!getuid()||!yon_char_is_empty(config(source_parameter))){ return 0; + if (!getuid()||!yon_char_is_empty(config(source_parameter))){ int size; config_str modules = yon_config_load(yon_debug_output("%s\n",get_modules_command),&size); for(int i=1;i Date: Wed, 4 Mar 2026 14:21:00 +0600 Subject: [PATCH 20/23] Test fix for bootloader saving --- locale/ubinstall-gtk.pot | 3 +++ locale/ubinstall-gtk_ru.po | 4 ++++ source/ubinstall-gtk-components.c | 6 ++++-- source/ubinstall-gtk-saving.c | 1 - source/ubl-strings.h | 3 ++- ubinstall-gtk.glade | 10 ++++++++++ 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index bd4aeb5..1688abc 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -1931,6 +1931,9 @@ msgid "" "network or the Internet (even over slow connection channels)." msgstr "" +msgid "No modules were found.\nSelect a different installation source." +msgstr "" + msgid "File system label" msgstr "" diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 19dd992..509ef85 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -2069,6 +2069,10 @@ msgstr "" "Позволяет загрузку системы для бездисковых и обычных рабочих станций через " "локальную сеть или Интернет (даже используя \"слабые\" каналы связи)" +msgid "No modules were found.\nSelect a different installation source." +msgstr "Модули не найдены.\n" +Выберите другой источник установки." + msgid "About" msgstr "О программе" diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 2aa05d7..50184cc 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -109,9 +109,11 @@ int yon_os_components_save(main_window *widgets){ yon_config_register(modules_parameter,modules_parameter_command,final); } else { // yon_config_remove_by_key(modules_parameter); - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + if(main_config.configure_mode) + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),MAIN_COMPONENTS_ALL_SELECTED_LABEL,5,BACKGROUND_IMAGE_INFO_TYPE); + else + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_highlight_incorrect(widgets->OSSoftwareListBox); - return 0; } return 1; } diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index d581a6c..865eaca 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -359,7 +359,6 @@ int yon_config_save(main_window *widgets){ SERVICES_ENABLE_parameter, GRUB_DEFAULT_parameter, GRUB_TIMEOUT_parameter, - AUTOLOGINUSER_parameter, GRUB_SUPERUSERS_parameter, DOMAIN_parameter, DOMAIN_admanger_parameter, diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 37bc047..881f0f1 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -578,4 +578,5 @@ For more information, visit our website the \"Support Levels\" section.") #define slide_22_title _("Network Boot") #define slide_22_text _("Allows system booting for diskless and standard workstations over a local network or the Internet (even over slow connection channels).") -#define MAIN_COMPONENTS_NOT_FOUND_LABEL _("Main components does not found. Proceed back to installation type selection page and use \"Select sources\" button from below") \ No newline at end of file +#define MAIN_COMPONENTS_NOT_FOUND_LABEL _("No modules were found.\nSelect a different installation source") +#define MAIN_COMPONENTS_ALL_SELECTED_LABEL _("All local modules of the system are selected") \ No newline at end of file diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index c248eae..ae9113c 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -2080,6 +2080,16 @@ agreement True False none + + + True + False + No modules were found. +Select a different installation source. + center + True + + True From 480bb985e116123c79d055131dafdf00285eb411 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 4 Mar 2026 14:58:01 +0600 Subject: [PATCH 21/23] Fixed memory leaks --- source/ubinstall-gtk-language.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubinstall-gtk-language.c b/source/ubinstall-gtk-language.c index 536e4a5..e4013b1 100644 --- a/source/ubinstall-gtk-language.c +++ b/source/ubinstall-gtk-language.c @@ -100,7 +100,7 @@ gboolean yon_locale_window_set_locales(struct locales_struct *data){ if(!yon_char_is_empty(data->lang)) free(data->lang); if(!yon_char_is_empty(data->locale)) free(data->locale); if(!yon_char_is_empty(data->territory)) free(data->territory); - if(!yon_char_is_empty(data->lang)) free(data); + if(data) free(data); return G_SOURCE_REMOVE; } From 273dc1bdf1edfb0a30a3e8d5e4e4694c71ed2d35 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 4 Mar 2026 16:40:41 +0600 Subject: [PATCH 22/23] Localisation fix --- locale/ubinstall-gtk_ru.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 509ef85..3049e25 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -2071,7 +2071,7 @@ msgstr "" msgid "No modules were found.\nSelect a different installation source." msgstr "Модули не найдены.\n" -Выберите другой источник установки." +"Выберите другой источник установки." msgid "About" msgstr "О программе" From 1d7890aabf9283c85b2461d168f3d9160ccaff7c Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 4 Mar 2026 18:09:35 +0600 Subject: [PATCH 23/23] WIP advanced installation; Installation commands changes --- source/ubinstall-gtk-advanced.c | 46 ++++++++++++++++++--------------- source/ubinstall-gtk.h | 7 ++--- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/source/ubinstall-gtk-advanced.c b/source/ubinstall-gtk-advanced.c index 3d3f274..a563377 100644 --- a/source/ubinstall-gtk-advanced.c +++ b/source/ubinstall-gtk-advanced.c @@ -35,12 +35,7 @@ void on_advanced_part_remove_device(GtkWidget *self, main_window *widgets){ } void on_advanced_part_remove_virtual(GtkWidget *, main_window *widgets){ - // advanced_part_widgets *part = g_object_get_data(G_OBJECT(self),"advanced_part_widgets"); - // g_signal_handlers_block_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); - // gtk_widget_destroy(part->MainBox); - // g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),G_CALLBACK(on_advanced_virtual_device_changed),widgets); - // free(part); } void on_format_changed(GtkWidget *self, advanced_part_widgets *part){ @@ -183,6 +178,7 @@ void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ free(data->device); data->device = yon_char_new(device); yon_advanced_part_update_from_data(part, data); + yon_update_part_sections(widgets); } else { if (yon_advanced_part_check_count(widgets)){ advanced_part_data *data = yon_advanced_part_data_new(); @@ -192,6 +188,7 @@ void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove_virtual),widgets); yon_advanced_part_update_from_data(part, data); + yon_update_part_sections(widgets); } else { gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo),0); @@ -211,6 +208,27 @@ void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets){ // yon_advanced_update(widgets); } +void yon_update_part_sections(main_window *widgets){ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); + int parts_size = g_list_length(list); + if (list){ + advanced_part_widgets *part = g_object_get_data(G_OBJECT(list->data),"advanced_part_widgets"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),1); + if (parts_size==2){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),0); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); + } + if (list->next){ + advanced_part_widgets *part = g_object_get_data(G_OBJECT(list->next->data),"advanced_part_widgets"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); + + } + g_list_free(list); + } +} + int yon_advanced_part_get_size(advanced_part_widgets *part, main_window *widgets){ GList *list = NULL; if (widgets){ @@ -298,20 +316,6 @@ void yon_advanced_part_update_from_data(advanced_part_widgets *part, advanced_pa gtk_label_set_text(GTK_LABEL(part->SectionLabel),source_string); //toggle buttons - int pos = yon_advanced_part_get_pos(part,NULL); - int size = yon_advanced_part_get_size(part,NULL); - if (size == 1){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); - } else if (pos == 0){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),0); - } else if (pos == 1){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->SystemSectionToggle),0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(part->UserDataSectionToggle),1); - } // format int format = 0; @@ -351,6 +355,7 @@ void yon_advanced_part_create_for_device(GtkTreeIter *iter, main_window *widgets g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove_device),widgets); gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); yon_advanced_part_update_from_data(part,data); + yon_update_part_sections(widgets); } } @@ -364,6 +369,7 @@ void yon_advanced_part_create_for_part(GtkTreeIter *iter, main_window *widgets){ g_signal_connect(G_OBJECT(part->RemoveButton),"clicked",G_CALLBACK(on_advanced_part_remove_part),widgets); gtk_box_pack_start(GTK_BOX(widgets->AdvancedPartitionAddBox),part->MainBox,0,0,0); yon_advanced_part_update_from_data(part,data); + yon_update_part_sections(widgets); } } @@ -392,8 +398,6 @@ void yon_advanced_part_add_parts_for_device(const char *device_name, main_window 6,free_space, 8,1, 9,yon_char_return_if_exist(parsed[7],""), 10,yon_char_return_if_exist(parsed[0],""), 11,yon_char_return_if_exist(parsed[10],""),-1); - // } else { - // gtk_list_store_set(widgets->PartitionsList,&iter, ); } } diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 0bff66e..2a9757d 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -264,9 +264,9 @@ layout && /description:/ {\ #define get_localisation_command "ubconfig -ea --source global get [autoinstall] AUTOINSTALL[installer_locale] -- get [autoinstall] AUTOINSTALL['ubconfig set [locale] LANG'] -- get [locale] LANG" -#define save_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] AUTOINSTALL[log]=yes ", parameters, "; nice ubinstall --debug autoinstall", NULL) +#define save_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] AUTOINSTALL[log]=yes ", parameters, "; nice ubinstall autoinstall --noautoconfig --noinstall_extra", NULL) -#define set_user_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] ", parameters, ";nice ubinstall autoconfig", NULL) +#define set_user_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] ", parameters, ";nice ubinstall autoconfig install_extra", NULL) #define save_additional_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] ", parameters, NULL) #define get_default_password_command "ubconfig --raw --conarg --source default get [users] NOSECUREROOTPASSWD" @@ -1549,4 +1549,5 @@ int yon_advanced_part_get_size(advanced_part_widgets *part, main_window *widgets void yon_advanced_part_update_from_data(advanced_part_widgets *part, advanced_part_data *data); void yon_advanced_part_data_unref(advanced_part_data *data); void on_advanced_part_content_changed(GtkWidget *, GtkWidget *, main_window *widgets); -gboolean on_keyboard_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *); \ No newline at end of file +gboolean on_keyboard_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *); +void yon_update_part_sections(main_window *widgets); \ No newline at end of file