From 103df1b592a751282bd7246ce97a2562a45420ca Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 18 Sep 2025 18:17:10 +0600 Subject: [PATCH] WIP localisatino switching --- languages.csv | 90 ++++++++++---- locales.csv | 259 +++++++++++++++++++++-------------------- source/ubinstall-gtk.c | 103 ++++++++++++---- source/ubinstall-gtk.h | 13 ++- ubinstall-gtk.glade | 45 ++++++- 5 files changed, 330 insertions(+), 180 deletions(-) diff --git a/languages.csv b/languages.csv index ee656e8..78f12e5 100644 --- a/languages.csv +++ b/languages.csv @@ -1,24 +1,66 @@ -af_ZA.UTF-8;Afrikaans, South Africa -ar_AE.UTF-8;Arabic, United Arab Emirates -az_AZ.UTF-8;Azerbaijani, Azerbaijan -ka_GE.UTF-8;Georgian -kk_KZ.UTF-8;Kazakh, Kazakhstan -kn_IN.UTF-8;Kannada, India -ko_KR.UTF-8;Korean, Korea -zh_CN.UTF-8;Simplified Chinese -zh_TW.UTF-8;Traditional Chinese -vi_VN.UTF-8;Vietnamese -uk_UA.UTF-8;Ukrainian -tr_TR.UTF-8;Turkish -th_TH.UTF-8;Thai -sv_SE.UTF-8;Swedish -sr_RS.UTF-8;Serbian -sq_AL.UTF-8;Albanian -sk_SK.UTF-8;Slovak, Slovakia -sl_SI.UTF-8;Slovenian -ru_RU.UTF-8;Russian -pt_PT.UTF-8;Portuguese, Portugal -ro_RO.UTF-8;Romanian -pl_PL.UTF-8;Polish -ms_MY.UTF-8;Malay, Malaysia -mt_MT.UTF-8;Maltese \ No newline at end of file +LANG_GROUP;LANG;LANG_NAME +af;af_ZA.UTF-8;Afrikaans +ar;ar_AE.UTF-8;Arabic +as;as_IN.UTF-8;Assamese +az;az_AZ.UTF-8;Azerbaijani +be;be_BY.UTF-8;Belarusian +bg;bg_BG.UTF-8;Bulgarian +bn;bn_IN.UTF-8;Bengali +bs;bs_BA.UTF-8;Bosnian +ca;ca_ES.UTF-8;Catalan +cs;cs_CZ.UTF-8;Czech +da;da_DK.UTF-8;Danish +de;de_DE.UTF-8;German +el;el_GR.UTF-8;Greek +en;en_GB.UTF-8;English +es;es_ES.UTF-8;Spanish +et;et_EE.UTF-8;Estonian +fi;fi_FI.UTF-8;Finnish +fr;fr_FR.UTF-8;French +gu;gu_IN.UTF-8;Gujarati +he;he_IL.UTF-8;Hebrew +hi;hi_IN.UTF-8;Hindi +hr;hr_HR.UTF-8;Croatian +hu;hu_HU.UTF-8;Hungarian +hy;hy_AM.UTF-8;Armenian +id;id_ID.UTF-8;Indonesian +is;is_IS.UTF-8;Icelandic +it;it_IT.UTF-8;Italian +ja;ja_JP.UTF-8;Japanese +ka;ka_GE.UTF-8;Georgian +kk;kk_KZ.UTF-8;Kazakh +kn;kn_IN.UTF-8;Kannada +ko;ko_KR.UTF-8;Korean +ks;ks_IN.UTF-8;Kashmiri +ku;ku_TR.UTF-8;Kurdish +ky;ky_KG.UTF-8;Kirghiz +lt;lt_LT.UTF-8;Lithuanian +lv;lv_LV.UTF-8;Latvian +mk;mk_MK.UTF-8;Macedonian +ml;ml_IN.UTF-8;Malayalam +mr;mr_IN.UTF-8;Marathi +ms;ms_MY.UTF-8;Malay +mt;mt_MT.UTF-8;Maltese +nb;nb_NO.UTF-8;Bokmal +nl;nl_NL.UTF-8;Dutch +nn;nn_NO.UTF-8;Nynorsk +or;or_IN.UTF-8;Oriya +pa;pa_IN.UTF-8;Punjabi +pl;pl_PL.UTF-8;Polish +pt;pt_PT.UTF-8;Portuguese +ro;ro_RO.UTF-8;Romanian +ru;ru_RU.UTF-8;Russian +sa;sa_IN.UTF-8;Sanskrit +sk;sk_SK.UTF-8;Slovak +sl;sl_SI.UTF-8;Slovenian +sq;sq_AL.UTF-8;Albanian +sr;sr_ME.UTF-8;Serbian +sr;sr_RS.UTF-8;Serbian +sv;sv_SE.UTF-8;Swedish +ta;ta_IN.UTF-8;Tamil +te;te_IN.UTF-8;Telugu +th;th_TH.UTF-8;Thai +tr;tr_TR.UTF-8;Turkish +uk;uk_UA.UTF-8;Ukrainian +vi;vi_VN.UTF-8;Vietnamese +zh;zh_CN.UTF-8;Simplified Chinese \ No newline at end of file diff --git a/locales.csv b/locales.csv index 543d3ee..b78f731 100644 --- a/locales.csv +++ b/locales.csv @@ -1,129 +1,130 @@ -af_ZA.UTF-8;Afrikaans, South Africa -ar_AE.UTF-8;Arabic, United Arab Emirates -ar_BH.UTF-8;Arabic, Bahrain -ar_DZ.UTF-8;Arabic, Algeria -ar_EG.UTF-8;Arabic, Egypt -ar_IQ.UTF-8;Arabic, Iraq -ar_JO.UTF-8;Arabic, Jordan -ar_KW.UTF-8;Arabic, Kuwait -ar_LY.UTF-8;Arabic, Libya -ar_MA.UTF-8;Arabic, Morocco -ar_OM.UTF-8;Arabic, Oman -ar_QA.UTF-8;Arabic, Qatar -ar_SA.UTF-8;Arabic, Saudi Arabia -ar_TN.UTF-8;Arabic, Tunisia -ar_YE.UTF-8;Arabic, Yemen -as_IN.UTF-8;Assamese, India -az_AZ.UTF-8;Azerbaijani, Azerbaijan -be_BY.UTF-8;Belarusian, Belarus -bg_BG.UTF-8;Bulgarian, Bulgaria -bn_IN.UTF-8;Bengali, India -bs_BA.UTF-8;Bosnian, Bosnia and Herzegovina -ca_ES.UTF-8;Catalan, Spain -cs_CZ.UTF-8;Czech, Czech Republic -da_DK.UTF-8;Danish, Denmark -de_AT.UTF-8;German, Austria -de_BE.UTF-8;German, Belgium -de_CH.UTF-8;German, Switzerland -de_DE.UTF-8;German, Germany -de_LI.UTF-8;German, Liechtenstein -de_LU.UTF-8;German, Luxembourg -el_CY.UTF-8;Greek, Cyprus -el_GR.UTF-8;Greek, Greece -en_AU.UTF-8;English, Australia -en_BW.UTF-8;English, Botswana -en_CA.UTF-8;English, Canada -en_GB.UTF-8;English, United Kingdom -en_HK.UTF-8;English, Hong Kong SAR China -en_IE.UTF-8;English, Ireland -en_IN.UTF-8;English, India -en_MT.UTF-8;English, Malta -en_NZ.UTF-8;English, New Zealand -en_PH.UTF-8;English, Philippines -en_SG.UTF-8;English, Singapore -en_US.UTF-8;English, U.S.A. -en_ZW.UTF-8;English, Zimbabwe -es_AR.UTF-8;Spanish, Argentina -es_BO.UTF-8;Spanish, Bolivia -es_CL.UTF-8;Spanish, Chile -es_CO.UTF-8;Spanish, Colombia -es_CR.UTF-8;Spanish, Costa Rica -es_DO.UTF-8;Spanish, Dominican Republic -es_EC.UTF-8;Spanish, Ecuador -es_ES.UTF-8;Spanish, Spain -es_GT.UTF-8;Spanish, Guatemala -es_HN.UTF-8;Spanish, Honduras -es_MX.UTF-8;Spanish, Mexico -es_NI.UTF-8;Spanish, Nicaragua -es_PA.UTF-8;Spanish, Panama -es_PE.UTF-8;Spanish, Peru -es_PR.UTF-8;Spanish, Puerto Rico -es_PY.UTF-8;Spanish, Paraguay -es_SV.UTF-8;Spanish, El Salvador -es_US.UTF-8;Spanish, U.S.A. -es_UY.UTF-8;Spanish, Uruguay -es_VE.UTF-8;Spanish, Venezuela -et_EE.UTF-8;Estonian, Estonia -fi_FI.UTF-8;Finnish, Finland -fr_BE.UTF-8;French, Belgium -fr_CA.UTF-8;French, Canada -fr_CH.UTF-8;French, Switzerland -fr_FR.UTF-8;French, France -fr_LU.UTF-8;French, Luxembourg -gu_IN.UTF-8;Gujarati, India -he_IL.UTF-8;Hebrew, Israel -hi_IN.UTF-8;Hindi, India -hr_HR.UTF-8;Croatian, Croatia -hu_HU.UTF-8;Hungarian, Hungary -hy_AM.UTF-8;Armenian, Armenia -id_ID.UTF-8;Indonesian, Indonesia -is_IS.UTF-8;Icelandic, Iceland -it_CH.UTF-8;Italian, Switzerla;nd -it_IT.UTF-8;Italian, Italy -ja_JP.UTF-8;Japanese, Japan -ka_GE.UTF-8;Georgian, Georgia -kk_KZ.UTF-8;Kazakh, Kazakhstan -kn_IN.UTF-8;Kannada, India -ko_KR.UTF-8;Korean, Korea -ks_IN.UTF-8;Kashmiri, India -ku_TR.UTF-8;Kurdish, Turkey -ku_TR.UTF-8@sorani;Kurdish (Sorani), Turkey -ky_KG.UTF-8;Kirghiz, Kyrgyzstan -lt_LT.UTF-8;Lithuanian, Lithuania -lv_LV.UTF-8;Latvian, Latvia -mk_MK.UTF-8;Macedonian, Macedonia -ml_IN.UTF-8;Malayalam, India -mr_IN.UTF-8;Marathi, India -ms_MY.UTF-8;Malay, Malaysia -mt_MT.UTF-8;Maltese, Malta -nb_NO.UTF-8;Bokmal, Norway -nl_BE.UTF-8;Dutch, Belgium -nl_NL.UTF-8;Dutch, Netherlands -nn_NO.UTF-8;Nynorsk, Norway -or_IN.UTF-8;Oriya, India -pa_IN.UTF-8;Punjabi, India -pl_PL.UTF-8;Polish, Poland -pt_BR.UTF-8;Portuguese, Brazil -pt_PT.UTF-8;Portuguese, Portugal -ro_RO.UTF-8;Romanian, Romania -ru_RU.UTF-8;Russian, Russia -ru_UA.UTF-8;Russian, Ukraine -sa_IN.UTF-8;Sanskrit, India -sk_SK.UTF-8;Slovak, Slovakia -sl_SI.UTF-8;Slovenian, Slovenia -sq_AL.UTF-8;Albanian, Albania -sr_ME.UTF-8;Serbian, Montenegro -sr_ME.UTF-8@latin;Serbian, Montenegro (Latin) -sr_RS.UTF-8;Serbian, Serbia -sr_RS.UTF-8@latin;Serbian, Serbia (Latin) -sv_SE.UTF-8;Swedish, Sweden -ta_IN.UTF-8;Tamil, India -te_IN.UTF-8;Telugu, India -th_TH.UTF-8;Thai, Thailand -tr_TR.UTF-8;Turkish, Turkey -uk_UA.UTF-8;Ukrainian, Ukraine -vi_VN.UTF-8;Vietnamese, Vietnam -zh_CN.UTF-8;Simplified Chinese, China -zh_HK.UTF-8;Traditional Chinese, Hong Kong SAR China -zh_SG.UTF-8;Chinese, Singapore -zh_TW.UTF-8;Traditional Chinese, Taiwan \ No newline at end of file +LANG_GROUP;LANG;LANG_NAME +af;af_ZA.UTF-8;Afrikaans, South Africa +ar;ar_AE.UTF-8;Arabic, United Arab Emirates +ar;ar_BH.UTF-8;Arabic, Bahrain +ar;ar_DZ.UTF-8;Arabic, Algeria +ar;ar_EG.UTF-8;Arabic, Egypt +ar;ar_IQ.UTF-8;Arabic, Iraq +ar;ar_JO.UTF-8;Arabic, Jordan +ar;ar_KW.UTF-8;Arabic, Kuwait +ar;ar_LY.UTF-8;Arabic, Libya +ar;ar_MA.UTF-8;Arabic, Morocco +ar;ar_OM.UTF-8;Arabic, Oman +ar;ar_QA.UTF-8;Arabic, Qatar +ar;ar_SA.UTF-8;Arabic, Saudi Arabia +ar;ar_TN.UTF-8;Arabic, Tunisia +ar;ar_YE.UTF-8;Arabic, Yemen +as;as_IN.UTF-8;Assamese, India +az;az_AZ.UTF-8;Azerbaijani, Azerbaijan +be;be_BY.UTF-8;Belarusian, Belarus +bg;bg_BG.UTF-8;Bulgarian, Bulgaria +bn;bn_IN.UTF-8;Bengali, India +bs;bs_BA.UTF-8;Bosnian, Bosnia and Herzegovina +ca;ca_ES.UTF-8;Catalan, Spain +cs;cs_CZ.UTF-8;Czech, Czech Republic +da;da_DK.UTF-8;Danish, Denmark +de;de_AT.UTF-8;German, Austria +de;de_BE.UTF-8;German, Belgium +de;de_CH.UTF-8;German, Switzerland +de;de_DE.UTF-8;German, Germany +de;de_LI.UTF-8;German, Liechtenstein +de;de_LU.UTF-8;German, Luxembourg +el;el_CY.UTF-8;Greek, Cyprus +el;el_GR.UTF-8;Greek, Greece +en;en_AU.UTF-8;English, Australia +en;en_BW.UTF-8;English, Botswana +en;en_CA.UTF-8;English, Canada +en;en_GB.UTF-8;English, United Kingdom +en;en_HK.UTF-8;English, Hong Kong SAR China +en;en_IE.UTF-8;English, Ireland +en;en_IN.UTF-8;English, India +en;en_MT.UTF-8;English, Malta +en;en_NZ.UTF-8;English, New Zealand +en;en_PH.UTF-8;English, Philippines +en;en_SG.UTF-8;English, Singapore +en;en_US.UTF-8;English, U.S.A. +en;en_ZW.UTF-8;English, Zimbabwe +es;es_AR.UTF-8;Spanish, Argentina +es;es_BO.UTF-8;Spanish, Bolivia +es;es_CL.UTF-8;Spanish, Chile +es;es_CO.UTF-8;Spanish, Colombia +es;es_CR.UTF-8;Spanish, Costa Rica +es;es_DO.UTF-8;Spanish, Dominican Republic +es;es_EC.UTF-8;Spanish, Ecuador +es;es_ES.UTF-8;Spanish, Spain +es;es_GT.UTF-8;Spanish, Guatemala +es;es_HN.UTF-8;Spanish, Honduras +es;es_MX.UTF-8;Spanish, Mexico +es;es_NI.UTF-8;Spanish, Nicaragua +es;es_PA.UTF-8;Spanish, Panama +es;es_PE.UTF-8;Spanish, Peru +es;es_PR.UTF-8;Spanish, Puerto Rico +es;es_PY.UTF-8;Spanish, Paraguay +es;es_SV.UTF-8;Spanish, El Salvador +es;es_US.UTF-8;Spanish, U.S.A. +es;es_UY.UTF-8;Spanish, Uruguay +es;es_VE.UTF-8;Spanish, Venezuela +et;et_EE.UTF-8;Estonian, Estonia +fi;fi_FI.UTF-8;Finnish, Finland +fr;fr_BE.UTF-8;French, Belgium +fr;fr_CA.UTF-8;French, Canada +fr;fr_CH.UTF-8;French, Switzerland +fr;fr_FR.UTF-8;French, France +fr;fr_LU.UTF-8;French, Luxembourg +gu;gu_IN.UTF-8;Gujarati, India +he;he_IL.UTF-8;Hebrew, Israel +hi;hi_IN.UTF-8;Hindi, India +hr;hr_HR.UTF-8;Croatian, Croatia +hu;hu_HU.UTF-8;Hungarian, Hungary +hy;hy_AM.UTF-8;Armenian, Armenia +id;id_ID.UTF-8;Indonesian, Indonesia +is;is_IS.UTF-8;Icelandic, Iceland +it;it_CH.UTF-8;Italian, Switzerla;nd +it;it_IT.UTF-8;Italian, Italy +ja;ja_JP.UTF-8;Japanese, Japan +ka;ka_GE.UTF-8;Georgian, Georgia +kk;kk_KZ.UTF-8;Kazakh, Kazakhstan +kn;kn_IN.UTF-8;Kannada, India +ko;ko_KR.UTF-8;Korean, Korea +ks;ks_IN.UTF-8;Kashmiri, India +ku;ku_TR.UTF-8;Kurdish, Turkey +ku;ku_TR.UTF-8@sorani;Kurdish (Sorani), Turkey +ky;ky_KG.UTF-8;Kirghiz, Kyrgyzstan +lt;lt_LT.UTF-8;Lithuanian, Lithuania +lv;lv_LV.UTF-8;Latvian, Latvia +mk;mk_MK.UTF-8;Macedonian, Macedonia +ml;ml_IN.UTF-8;Malayalam, India +mr;mr_IN.UTF-8;Marathi, India +ms;ms_MY.UTF-8;Malay, Malaysia +mt;mt_MT.UTF-8;Maltese, Malta +nb;nb_NO.UTF-8;Bokmal, Norway +nl;nl_BE.UTF-8;Dutch, Belgium +nl;nl_NL.UTF-8;Dutch, Netherlands +nn;nn_NO.UTF-8;Nynorsk, Norway +or;or_IN.UTF-8;Oriya, India +pa;pa_IN.UTF-8;Punjabi, India +pl;pl_PL.UTF-8;Polish, Poland +pt;pt_BR.UTF-8;Portuguese, Brazil +pt;pt_PT.UTF-8;Portuguese, Portugal +ro;ro_RO.UTF-8;Romanian, Romania +ru;ru_RU.UTF-8;Russian, Russia +ru;ru_UA.UTF-8;Russian, Ukraine +sa;sa_IN.UTF-8;Sanskrit, India +sk;sk_SK.UTF-8;Slovak, Slovakia +sl;sl_SI.UTF-8;Slovenian, Slovenia +sq;sq_AL.UTF-8;Albanian, Albania +sr;sr_ME.UTF-8;Serbian, Montenegro +sr;sr_ME.UTF-8@latin;Serbian, Montenegro (Latin) +sr;sr_RS.UTF-8;Serbian, Serbia +sr;sr_RS.UTF-8@latin;Serbian, Serbia (Latin) +sv;sv_SE.UTF-8;Swedish, Sweden +ta;ta_IN.UTF-8;Tamil, India +te;te_IN.UTF-8;Telugu, India +th;th_TH.UTF-8;Thai, Thailand +tr;tr_TR.UTF-8;Turkish, Turkey +uk;uk_UA.UTF-8;Ukrainian, Ukraine +vi;vi_VN.UTF-8;Vietnamese, Vietnam +zh;zh_CN.UTF-8;Simplified Chinese, China +zh;zh_HK.UTF-8;Traditional Chinese, Hong Kong SAR China +zh;zh_SG.UTF-8;Chinese, Singapore +zh;zh_TW.UTF-8;Traditional Chinese, Taiwan \ No newline at end of file diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index e6990eb..b2a091c 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -310,12 +310,29 @@ void config_init(){ // void *on_setup_system_configuration(void *data); -void on_locale_changed(GtkWidget *self,GtkWidget *child,main_window *widgets){ - char *window_language = g_object_get_data(G_OBJECT(child),"language"); +void on_locale_changed(GtkWidget *self,main_window *widgets){ + char *window_language; + GtkTreeIter iter; + GtkTreeModel *model; + if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)) return; + gtk_tree_model_get(model,&iter,0,&window_language,-1); if (!yon_char_is_empty(window_language)){ yon_config_register(installer_lang_parameter,installer_lang_parameter_command,(char*)window_language); } - int chosen_pos = gtk_flow_box_child_get_index(GTK_FLOW_BOX_CHILD(child)); + +} + +void on_installer_language_changed(GtkWidget *self, main_window *widgets){ + char *window_language; + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)){ + gtk_tree_model_get(model,&iter,0,&window_language,-1); + } + if (!yon_char_is_empty(window_language)){ + yon_config_register(installer_lang_parameter,installer_lang_parameter_command,(char*)window_language); + } + char *active_lang_id = gtk_tree_model_get_string_from_iter(model,&iter); int size; config_str parameters = yon_config_get_save_parameters_by_key(&size,installer_lang_parameter,NULL); char *command_parameters = yon_char_parsed_to_string(parameters,size," "); @@ -332,8 +349,11 @@ void on_locale_changed(GtkWidget *self,GtkWidget *child,main_window *widgets){ yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); yon_window_config_load(path); g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets); - gtk_flow_box_select_child(GTK_FLOW_BOX(widgets->LanguagesBox),gtk_flow_box_get_child_at_index(GTK_FLOW_BOX(widgets->LanguagesBox),chosen_pos)); + model = GTK_TREE_MODEL(widgets->InstallerLanguageList); + gtk_tree_model_get_iter_from_string(model,&iter,active_lang_id); + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter); g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets); + } void on_additional_software_toggled(GtkWidget *, char *path, main_window *widgets){ @@ -389,26 +409,63 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ return 1; } +typedef struct{ + char *locale_name; + char *code; + char *localised_name; +} locale_struct; + void set_locales_list(main_window *widgets){ - GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->LanguagesBox)); - GList *iter; - for (iter=list;iter;iter=iter->next){ - gtk_widget_destroy(GTK_WIDGET(iter->data)); - } - int size; - config_str languages = yon_resource_open_file(installer_languages_path,&size); - for (int i=0;iLanguagesBox),child,-1); + gtk_list_store_clear(widgets->InstallerLanguageList); + gtk_list_store_clear(widgets->InstallerCountryList); + + GHashTable *localisations = g_hash_table_new(g_str_hash,g_str_equal); + int locales_size; + config_str locales = yon_dir_get_contents(locales_list_command,&locales_size); + dictionary *locale_dict = NULL; + for (int i=0;ilocale_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"language"); + locale->code = code; + locale->localised_name = yon_char_parsed_check_exist_begins_with(code_info,info_size,"lang_name"); + + if (!yon_char_is_empty(locale->locale_name)){ + yon_char_remove_last_symbol(locale->locale_name,'\n'); + yon_char_remove_last_symbol(locale->locale_name,'"'); + } + if (!yon_char_is_empty(locale->localised_name)){ + yon_char_remove_last_symbol(locale->localised_name,'\n'); + yon_char_remove_last_symbol(locale->localised_name,'"'); + } + yon_dictionary_add_or_create_if_exists_with_data(locale_dict,locales[i],locale); + free(yon_char_divide_search(locale->locale_name,"\"",-1)); + free(yon_char_divide_search(locale->localised_name,"\"",-1)); + g_hash_table_add(localisations,code); } + yon_char_parsed_free(code_info,info_size); + } + yon_char_parsed_free(locales,locales_size); + + GtkTreeIter iter; + dictionary *dict; + for_dictionaries(dict,locale_dict){ + locale_struct *locale = yon_dictionary_get_data(dict,locale_struct*); + gtk_list_store_append(widgets->InstallerLanguageList,&iter); + gtk_list_store_set(widgets->InstallerLanguageList,&iter,0,locale->code,1,locale->locale_name,2,locale->localised_name,-1); } } @@ -567,6 +624,8 @@ void yon_main_window_create(main_window *widgets){ widgets->LayoutList = GTK_TREE_STORE(gtk_builder_get_object(builder,"LayoutList")); widgets->LanguagesTree=yon_gtk_builder_get_widget(builder,"LanguagesTree"); widgets->CountryLanguagesTree=yon_gtk_builder_get_widget(builder,"CountryLanguagesTree"); + widgets->InstallerCountryList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerCountryList")); + widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList")); // widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo"); widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo"); widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo"); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 455e5e1..6d0d1ad 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -72,6 +72,8 @@ #define network_path "resource:///com/ublinux/csv/network-list.csv" #define fs_types_path "resource:///com/ublinux/csv/filesystems-format-list.csv" +#define locales_list_command "/usr/share/i18n/locales/" + #define slide_0_path "/com/ublinux/images/slide-0.png" #define slide_repeat_path "/com/ublinux/images/slide-1.png", \ @@ -226,8 +228,8 @@ layout && /description:/ {\ #define NETWORK_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[",target,"@connmod]']",NULL) #define NETWORK_devdown_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[",target,"@devdown]']",NULL) #define NETWORK(target) yon_char_unite("NETWORK[",target,"@connmod]",NULL) -#define installer_lang_parameter "AUTOINSTALL[installed_lang]" -#define installer_lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[installed_lang]" +#define installer_lang_parameter "AUTOINSTALL[installer_lang]" +#define installer_lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[installer_lang]" #define source_parameter "AUTOINSTALL[source]" #define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]" @@ -441,6 +443,8 @@ typedef struct { GtkWidget *InstallationToggle; GtkWidget *LanguagesTree; GtkWidget *CountryLanguagesTree; + GtkListStore *InstallerCountryList; + GtkListStore *InstallerLanguageList; // GtkWidget *LanguageCombo; GtkWidget *RegionCombo; GtkWidget *ZoneCombo; @@ -965,7 +969,7 @@ void on_separate_installation_changed(GtkWidget *self, main_window *widgets); void on_partition_changed(GtkWidget *self, main_window *widgets); void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_size, GtkComboBox *size_type); gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets); -void on_locale_changed(GtkWidget *,GtkWidget *,main_window *); +void on_locale_changed(GtkWidget *,main_window *); void on_region_changed(GtkComboBox *self, main_window *widgets); void on_page_cancel_clicked(GtkWidget *, main_window *widgets); int yon_install_options_save(GtkWidget *device_tree, GtkWidget *part_tree,char *mode,main_window *widgets); @@ -1126,4 +1130,5 @@ void on_system_setup_pass(GtkWidget *, main_window *widgets); void yon_resize_images_update(main_window *widgets); void on_vnc_toggled(GtkWidget *self, main_window *widgets); void yon_main_window_create(main_window *widgets); -void set_locales_list(main_window *widgets); \ No newline at end of file +void set_locales_list(main_window *widgets); +void on_installer_language_changed(GtkWidget *self, main_window *widgets); \ No newline at end of file diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index de11f16..3577bd0 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -50,6 +50,24 @@ + + + + + + + + + + + + + + + + + + True False @@ -801,6 +819,7 @@ and help you install UBLinux on your computer True False 5 + True True @@ -812,9 +831,32 @@ and help you install UBLinux on your computer True True + InstallerLanguageList False + + + - + + True + + + + 2 + + + + + + + column + + + + 1 + + + @@ -836,6 +878,7 @@ and help you install UBLinux on your computer True True + InstallerCountryList False