WIP language configuration

pull/101/head
parent 2cf900ff06
commit 8afad8a2b3
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -56,6 +56,7 @@
<file>kernel-list-addon.csv</file>
<file>services-list.csv</file>
<file>network-list.csv</file>
<file>languages.csv</file>
<file>filesystems-format-list.csv</file>
</gresource>
</gresources>

@ -0,0 +1,24 @@
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
1 af_ZA.UTF-8 Afrikaans, South Africa
2 ar_AE.UTF-8 Arabic, United Arab Emirates
3 az_AZ.UTF-8 Azerbaijani, Azerbaijan
4 ka_GE.UTF-8 Georgian
5 kk_KZ.UTF-8 Kazakh, Kazakhstan
6 kn_IN.UTF-8 Kannada, India
7 ko_KR.UTF-8 Korean, Korea
8 zh_CN.UTF-8 Simplified Chinese
9 zh_TW.UTF-8 Traditional Chinese
10 vi_VN.UTF-8 Vietnamese
11 uk_UA.UTF-8 Ukrainian
12 tr_TR.UTF-8 Turkish
13 th_TH.UTF-8 Thai
14 sv_SE.UTF-8 Swedish
15 sr_RS.UTF-8 Serbian
16 sq_AL.UTF-8 Albanian
17 sk_SK.UTF-8 Slovak, Slovakia
18 sl_SI.UTF-8 Slovenian
19 ru_RU.UTF-8 Russian
20 pt_PT.UTF-8 Portuguese, Portugal
21 ro_RO.UTF-8 Romanian
22 pl_PL.UTF-8 Polish
23 ms_MY.UTF-8 Malay, Malaysia
24 mt_MT.UTF-8 Maltese

@ -78,6 +78,7 @@ set(DEPENDFILES
../kernel-list-addon.csv
../services-list.csv
../network-list.csv
../languages.csv
../filesystems-format-list.csv
../icons-builtin/install_type_custom_normal.png
../icons-builtin/install_type_data_only_normal.png

@ -310,9 +310,31 @@ void config_init(){
// void *on_setup_system_configuration(void *data);
// void on_locale_changed(GtkWidget *,main_window *){
//
// }
void on_locale_changed(GtkWidget *self,GtkWidget *child,main_window *widgets){
char *window_language = g_object_get_data(G_OBJECT(child),"language");
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));
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," ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
g_signal_handlers_block_by_func(G_OBJECT(widgets->MainWindow),G_CALLBACK(on_yon_exit),widgets);
if (!system(command)){};
gtk_widget_destroy(widgets->MainWindow);
setlocale(LC_ALL, window_language);
textdomain(LocaleName);
g_setenv("LANGUAGE",window_language,1);
yon_main_window_create(widgets);
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
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));
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){
GtkTreeIter iter;
@ -362,22 +384,36 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
gtk_main_quit();
return 1;
}
}
return 1;
}
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;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(languages[i],&parsed_size,";");
if (parsed_size==2){
GtkWidget *child = gtk_flow_box_child_new();
GtkWidget *label = gtk_label_new(_(parsed[1]));
gtk_label_set_xalign(GTK_LABEL(label),0);
gtk_container_add(GTK_CONTAINER(child),label);
g_object_set_data(G_OBJECT(child),"language",yon_char_new(parsed[0]));
gtk_widget_show_all(child);
gtk_flow_box_insert(GTK_FLOW_BOX(widgets->LanguagesBox),child,-1);
}
}
return 1;
}
/**yon_main_window_complete(main_window *widgets)
* [EN]
*
* [RU]
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/
main_window *yon_main_window_complete(){
main_window *widgets=NULL;
widgets = yon_remalloc(widgets,sizeof(main_window));
void yon_main_window_create(main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
gtk_builder_add_callback_symbol(builder,"yon_gtk_widget_set_sensitive_from_toggle_button",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button));
gtk_builder_add_callback_symbol(builder,"on_toggle_button_switch_on",G_CALLBACK(on_toggle_button_switch_on));
@ -403,7 +439,6 @@ main_window *yon_main_window_complete(){
widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL);
widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL);
widgets->LoadGlobalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadGlobalConfigurationMenuItem");
widgets->LoadLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadLocalConfigurationMenuItem");
widgets->LoadExternalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadExternalConfigurationMenuItem");
@ -530,7 +565,9 @@ main_window *yon_main_window_complete(){
widgets->LanguagesFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LanguagesFilter"));
widgets->LayoutsFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"LayoutsFilter"));
widgets->LayoutList = GTK_TREE_STORE(gtk_builder_get_object(builder,"LayoutList"));
widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
widgets->LanguagesTree=yon_gtk_builder_get_widget(builder,"LanguagesTree");
widgets->CountryLanguagesTree=yon_gtk_builder_get_widget(builder,"CountryLanguagesTree");
// 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");
widgets->AvailableLanguagesEntry=yon_gtk_builder_get_widget(builder,"AvailableLanguagesEntry");
@ -658,11 +695,6 @@ main_window *yon_main_window_complete(){
g_signal_connect(G_OBJECT(widgets->EnableVNCMenuItem),"activate",G_CALLBACK(on_vnc_toggled),widgets);
// g_signal_connect(G_OBJECT(widgets->SaveGlobalLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_local_save),widgets);
// g_signal_connect(G_OBJECT(widgets->SaveGlobalConfigurationMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
// g_signal_connect(G_OBJECT(widgets->SaveLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets);
// g_signal_connect(G_OBJECT(widgets->SaveExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets);
g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets);
g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets);
@ -689,8 +721,6 @@ main_window *yon_main_window_complete(){
g_signal_connect(G_OBJECT(widgets->OSDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->ConfigurationModeMenuItem),"toggled",G_CALLBACK(on_configuration_mode_switch),widgets);
// g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),widgets);
// g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),widgets);
g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets);
g_signal_connect(G_OBJECT(widgets->NextInstallationSysSectionTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets);
@ -703,6 +733,8 @@ main_window *yon_main_window_complete(){
g_signal_connect(G_OBJECT(widgets->BootloadDefaulOSButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets);
gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),3);
g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets);
g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets);
// g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets);
g_signal_connect(G_OBJECT(widgets->AdditionalSoftwareCell),"toggled",G_CALLBACK(on_additional_software_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets);
@ -814,6 +846,38 @@ main_window *yon_main_window_complete(){
} else {
gtk_widget_hide(widgets->StartScenarioButton);
}
// char *locale = config(installer_lang_parameter);
// if (!yon_char_is_empty(locale)){
// locale = setlocale(LC_ALL,NULL);
// }
// yon_ubl_window_init(TITLE_LABEL,DESCRIPTION_LABEL,locale,CssPath,LocaleName,version_application,WIKI_LINK);
set_locales_list(widgets);
// {
// char *parameter = config(installer_lang_parameter);
// if (yon_char_is_empty(parameter)){
// parameter=setlocale(LC_ALL,NULL);
// }
// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->LanguagesBox));
// GList *iter;
// for (iter = list;iter;iter=iter->next){
// char *lang = g_object_get_data(G_OBJECT(iter->data),"language");
// if (!strcmp(lang,parameter)){
// gtk_flow_box_select_child(GTK_FLOW_BOX(widgets->LanguagesBox),GTK_FLOW_BOX_CHILD(iter->data));
// }
// }
// }
}
/**yon_main_window_complete(main_window *widgets)
* [EN]
*
* [RU]
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/
main_window *yon_main_window_complete(){
main_window *widgets=NULL;
widgets = yon_remalloc(widgets,sizeof(main_window));
yon_main_window_create(widgets);
return widgets;
}

@ -59,6 +59,7 @@
#define licence_path "/usr/share/ublinux/agreement/EULA.txt"
#define languages_path "/usr/share/ubinstall-gtk/csv/locales.csv"
#define installer_languages_path "resource:///com/ublinux/csv/languages.csv"
#define zone_path "/usr/share/zoneinfo/"
@ -225,6 +226,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 source_parameter "AUTOINSTALL[source]"
#define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]"
@ -436,7 +439,9 @@ typedef struct {
GtkWidget *SummaryToggle;
GtkWidget *CompletionToggle;
GtkWidget *InstallationToggle;
GtkWidget *LanguageCombo;
GtkWidget *LanguagesTree;
GtkWidget *CountryLanguagesTree;
// GtkWidget *LanguageCombo;
GtkWidget *RegionCombo;
GtkWidget *ZoneCombo;
GtkWidget *AvailableLanguagesEntry;
@ -960,7 +965,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 *,main_window *);
void on_locale_changed(GtkWidget *,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);
@ -1120,3 +1125,5 @@ source_element *yon_source_element_new();
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);

@ -736,7 +736,6 @@ agreement</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">20</property>
<child>
@ -776,6 +775,12 @@ and help you install UBLinux on your computer</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
@ -788,21 +793,75 @@ and help you install UBLinux on your computer</property>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="LanguageCombo">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="active">0</property>
<items>
<item id="ru" translatable="yes">Русский</item>
<item id="us" translatable="yes">English</item>
</items>
<property name="spacing">5</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<property name="shadow-type">in</property>
<property name="min-content-height">132</property>
<child>
<object class="GtkTreeView" id="LanguagesTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="headers-visible">False</property>
<child>
<object class="GtkTreeViewColumn"/>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<property name="shadow-type">in</property>
<property name="min-content-height">132</property>
<child>
<object class="GtkTreeView" id="CountryLanguagesTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="headers-visible">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn"/>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
@ -810,7 +869,7 @@ and help you install UBLinux on your computer</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>

Loading…
Cancel
Save