diff --git a/src/conf-tweaks/ms-tweaks-parser.c b/src/conf-tweaks/ms-tweaks-parser.c index e3954bed0a6763070c49d9af38805253b53b1de6..7185c0242879f780d77e06bd2908bae8df3dbcb7 100644 --- a/src/conf-tweaks/ms-tweaks-parser.c +++ b/src/conf-tweaks/ms-tweaks-parser.c @@ -8,11 +8,18 @@ #define G_LOG_DOMAIN "ms-tweaks-parser" +#include "mobile-settings-config.h" + +#undef GETTEXT_PACKAGE +#define GETTEXT_PACKAGE "conf-tweaks" + #include "ms-tweaks-parser.h" #include "ms-tweaks-datasources.h" #include "ms-tweaks-utils.h" +#include + #include #include @@ -248,6 +255,9 @@ ms_tweaks_setting_free (MsTweaksSetting *setting) g_free (setting->selector); g_free (setting->guard); + g_free (setting->name_i18n); + g_free (setting->help_i18n); + /* Free hash table properties. */ g_clear_pointer (&setting->map, g_hash_table_unref); g_clear_pointer (&setting->css, g_hash_table_unref); @@ -263,6 +273,7 @@ void ms_tweaks_section_free (MsTweaksSection *section) { g_free (section->name); + g_free (section->name_i18n); g_clear_pointer (§ion->setting_table, g_hash_table_unref); @@ -274,6 +285,7 @@ void ms_tweaks_page_free (MsTweaksPage *page) { g_free (page->name); + g_free (page->name_i18n); g_clear_pointer (&page->section_table, g_hash_table_unref); @@ -303,6 +315,8 @@ ms_tweaks_parser_init (MsTweaksParser *self) (GDestroyNotify) ms_tweaks_page_free); /* Initialise it to key as we will always start with a key in mappings. */ self->setting_mapping_state = MS_TWEAKS_MAPPING_STATE_KEY; + + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); } @@ -438,9 +452,10 @@ merge_settings (MsTweaksSetting *into, const MsTweaksSetting *from) g_hash_table_unref (from->map); if (into->backend == CONF_TWEAKS_DEFAULT_BACKEND) into->backend = from->backend; - if (into->help == CONF_TWEAKS_DEFAULT_HELP) + if (into->help == CONF_TWEAKS_DEFAULT_HELP) { into->help = from->help; - else if (from->help) + into->help_i18n = from->help_i18n; + } else if (from->help) g_free (from->help); if (into->default_ == CONF_TWEAKS_DEFAULT_DEFAULT_VALUE) into->default_ = from->default_; @@ -799,6 +814,7 @@ consume_event (MsTweaksParser *self, const yaml_event_t *event, GError **error) return FALSE; } + self->current_page->name_i18n = g_strdup (_((char *) event->data.scalar.value)); self->current_page->name = g_strdup ((char *) event->data.scalar.value); existing_page = g_hash_table_lookup (self->page_table, self->current_page->name); @@ -915,6 +931,7 @@ consume_event (MsTweaksParser *self, const yaml_event_t *event, GError **error) return FALSE; } + self->current_section->name_i18n = g_strdup (_((char *) event->data.scalar.value)); self->current_section->name = g_strdup ((char *) event->data.scalar.value); existing_section = g_hash_table_lookup (self->current_page->section_table, @@ -1037,6 +1054,9 @@ consume_event (MsTweaksParser *self, const yaml_event_t *event, GError **error) self->current_setting->max = NAN; self->current_setting->step = NAN; self->current_setting->css = CONF_TWEAKS_DEFAULT_CSS; + + self->current_setting->name_i18n = CONF_TWEAKS_DEFAULT_NAME; + self->current_setting->help_i18n = CONF_TWEAKS_DEFAULT_HELP; /* We don't know the name of the setting yet, so we can't add it to the table. It gets added * later in STATE_SETTING_NAME. */ self->current_setting_inserted = FALSE; @@ -1105,6 +1125,7 @@ consume_event (MsTweaksParser *self, const yaml_event_t *event, GError **error) return FALSE; } + self->current_setting->name_i18n = g_strdup (_((char *) event->data.scalar.value)); self->current_setting->name = g_strdup ((char *) event->data.scalar.value); existing_setting = g_hash_table_lookup (self->current_section->setting_table, @@ -1132,6 +1153,7 @@ consume_event (MsTweaksParser *self, const yaml_event_t *event, GError **error) case YAML_SCALAR_EVENT: g_assert (self->current_setting); + self->current_setting->help_i18n = g_strdup (_((char *) event->data.scalar.value)); self->current_setting->help = g_strdup ((char *) event->data.scalar.value); self->state = MS_TWEAKS_STATE_SETTING; break; diff --git a/src/conf-tweaks/ms-tweaks-parser.h b/src/conf-tweaks/ms-tweaks-parser.h index e03e425e79de926ea48b631cbfd6300687db5342..45b9e955a3aefc91471a0210a60fdbd5da9ab705 100644 --- a/src/conf-tweaks/ms-tweaks-parser.h +++ b/src/conf-tweaks/ms-tweaks-parser.h @@ -93,18 +93,28 @@ typedef struct { double max; double step; GHashTable *css; /* key: char *, value: char * */ + + /* i18n properties. */ + char *name_i18n; + char *help_i18n; } MsTweaksSetting; typedef struct { int weight; char *name; GHashTable *setting_table; /* key: char *, value: MsTweaksSetting * */ + + /* i18n properties. */ + char *name_i18n; } MsTweaksSection; typedef struct { int weight; char *name; GHashTable *section_table; /* key: char *, value: MsTweaksSection * */ + + /* i18n properties. */ + char *name_i18n; } MsTweaksPage; GType ms_tweaks_setting_get_type (void); diff --git a/src/conf-tweaks/ms-tweaks-preferences-page.c b/src/conf-tweaks/ms-tweaks-preferences-page.c index 20e0fe73d7f3c14c779ffcd45f8f337eaf206769..d2e2ddfbcd9af883197cc83b0ba024dc77b9b6ac 100644 --- a/src/conf-tweaks/ms-tweaks-preferences-page.c +++ b/src/conf-tweaks/ms-tweaks-preferences-page.c @@ -37,8 +37,8 @@ struct _MsTweaksPreferencesPage { static void set_title_and_subtitle (GtkWidget *widget, const MsTweaksSetting *setting_data) { - adw_preferences_row_set_title (ADW_PREFERENCES_ROW (widget), setting_data->name); - adw_action_row_set_subtitle (ADW_ACTION_ROW (widget), setting_data->help); + adw_preferences_row_set_title (ADW_PREFERENCES_ROW (widget), setting_data->name_i18n); + adw_action_row_set_subtitle (ADW_ACTION_ROW (widget), setting_data->help_i18n); } @@ -290,7 +290,7 @@ setting_data_to_info_widget (const MsTweaksSetting *setting_data, if (widget_value) { GtkWidget *action_row = adw_action_row_new (); - adw_preferences_row_set_title (ADW_PREFERENCES_ROW (action_row), setting_data->name); + adw_preferences_row_set_title (ADW_PREFERENCES_ROW (action_row), setting_data->name_i18n); adw_action_row_set_subtitle (ADW_ACTION_ROW (action_row), g_value_get_string (widget_value)); adw_action_row_set_subtitle_selectable (ADW_ACTION_ROW (action_row), true); @@ -356,7 +356,7 @@ ms_tweaks_preferences_page_initable_init (GInitable *initable, gboolean section_widget_is_valid = FALSE; adw_preferences_group_set_title (ADW_PREFERENCES_GROUP (section_preference_group), - section_data->name); + section_data->name_i18n); for (const GList *setting_iter = setting_list; setting_iter; setting_iter = setting_iter->next) { MsTweaksSetting *setting_data = setting_iter->data; @@ -454,7 +454,7 @@ ms_tweaks_preferences_page_initable_init (GInitable *initable, if (widget_to_add) { adw_preferences_group_add (ADW_PREFERENCES_GROUP (section_preference_group), widget_to_add); - gtk_string_list_append (search_keywords, setting_data->name); + gtk_string_list_append (search_keywords, setting_data->name_i18n); section_widget_is_valid = TRUE; } else ms_tweaks_warning (setting_data->name, "Failed to construct widget"); @@ -463,7 +463,7 @@ ms_tweaks_preferences_page_initable_init (GInitable *initable, if (section_widget_is_valid) { adw_preferences_page_add (ADW_PREFERENCES_PAGE (self->page), ADW_PREFERENCES_GROUP (section_preference_group)); - gtk_string_list_append (search_keywords, section_data->name); + gtk_string_list_append (search_keywords, section_data->name_i18n); page_widget_is_valid = TRUE; } else { g_debug ("No valid settings in section '%s' inside page '%s', hiding it", @@ -473,7 +473,7 @@ ms_tweaks_preferences_page_initable_init (GInitable *initable, } if (page_widget_is_valid) { - gtk_string_list_append (search_keywords, self->data->name); + gtk_string_list_append (search_keywords, self->data->name_i18n); ms_panel_set_keywords (MS_PANEL (self), g_steal_pointer (&search_keywords)); } diff --git a/src/mobile-settings-window.c b/src/mobile-settings-window.c index 6e6c82fceb5f469bb57a0afb7ee87daa8071b7bb..0987948f193cc121a042bc61cb909f81aa2f5fa0 100644 --- a/src/mobile-settings-window.c +++ b/src/mobile-settings-window.c @@ -104,8 +104,8 @@ add_ms_tweaks_page (gpointer value, gpointer user_data) if (page_widget) { GtkStackPage *stack_page = gtk_stack_add_titled (self->stack, - GTK_WIDGET (page_widget), page_data->name, - page_data->name); + GTK_WIDGET (page_widget), page_data->name_i18n, + page_data->name_i18n); /* TODO: Read icon from base64 property of settings definitions. */ gtk_stack_page_set_icon_name (stack_page, "conf-tweaks-symbolic"); }