49 | 49 |
---
|
50 | 50 |
panels/common/cc-common-language.c | 152 +++++++++++++++++++++++++++++------
|
51 | 51 |
panels/common/cc-common-language.h | 4 +
|
52 | |
panels/common/cc-language-chooser.c | 4 +-
|
53 | |
panels/region/cc-region-panel.c | 138 +++++++++++++++++++++++--------
|
|
52 |
panels/common/cc-language-chooser.c | 15 ++--
|
|
53 |
panels/region/cc-region-panel.c | 129 +++++++++++++++++++++--------
|
54 | 54 |
panels/user-accounts/cc-user-panel.c | 6 +-
|
55 | |
5 files changed, 243 insertions(+), 61 deletions(-)
|
56 | |
|
57 | |
Index: gnome-control-center-3.32.1/panels/common/cc-common-language.c
|
58 | |
===================================================================
|
59 | |
--- gnome-control-center-3.32.1.orig/panels/common/cc-common-language.c
|
60 | |
+++ gnome-control-center-3.32.1/panels/common/cc-common-language.c
|
61 | |
@@ -161,6 +161,66 @@ cc_common_language_get_current_language
|
|
55 |
5 files changed, 245 insertions(+), 61 deletions(-)
|
|
56 |
|
|
57 |
diff --git a/panels/common/cc-common-language.c b/panels/common/cc-common-language.c
|
|
58 |
index 9357c3e..26a647e 100644
|
|
59 |
--- a/panels/common/cc-common-language.c
|
|
60 |
+++ b/panels/common/cc-common-language.c
|
|
61 |
@@ -161,6 +161,66 @@ cc_common_language_get_current_language (void)
|
62 | 62 |
return language;
|
63 | 63 |
}
|
64 | 64 |
|
|
152 | 152 |
} else {
|
153 | 153 |
- g_hash_table_insert (ht, g_strdup (lang), g_strdup (label_own_lang));
|
154 | 154 |
+ g_hash_table_insert (ht, g_strdup (key), g_strdup (label_own_lang));
|
155 | |
+ }
|
156 | |
+}
|
157 | |
+
|
|
155 |
}
|
|
156 |
}
|
|
157 |
|
158 | 158 |
+gchar **
|
159 | 159 |
+cc_common_language_get_installed_languages (void)
|
160 | 160 |
+{
|
|
167 | 167 |
+ g_warning ("Couldn't get installed languages: %s", error->message);
|
168 | 168 |
+ g_error_free (error);
|
169 | 169 |
+ return NULL;
|
170 | |
}
|
|
170 |
+ }
|
171 | 171 |
+ langs = g_strsplit (output, "\n", 0);
|
172 | 172 |
+
|
173 | 173 |
+ g_free(output);
|
174 | 174 |
+ return langs;
|
175 | |
}
|
176 | |
|
|
175 |
+}
|
|
176 |
+
|
177 | 177 |
GHashTable *
|
178 | 178 |
cc_common_language_get_initial_languages (void)
|
179 | 179 |
{
|
|
196 | 196 |
insert_language (ht, "en_US.UTF-8");
|
197 | 197 |
insert_language (ht, "en_GB.UTF-8");
|
198 | 198 |
insert_language (ht, "de_DE.UTF-8");
|
199 | |
@@ -234,10 +328,32 @@ cc_common_language_get_initial_languages
|
|
199 |
@@ -234,10 +328,32 @@ cc_common_language_get_initial_languages (void)
|
200 | 200 |
insert_language (ht, "ja_JP.UTF-8");
|
201 | 201 |
insert_language (ht, "ru_RU.UTF-8");
|
202 | 202 |
insert_language (ht, "ar_EG.UTF-8");
|
|
230 | 230 |
static void
|
231 | 231 |
foreach_user_lang_cb (gpointer key,
|
232 | 232 |
gpointer value,
|
233 | |
@@ -263,28 +379,18 @@ cc_common_language_add_user_languages (G
|
|
233 |
@@ -263,28 +379,18 @@ cc_common_language_add_user_languages (GtkTreeModel *model)
|
234 | 234 |
GtkListStore *store = GTK_LIST_STORE (model);
|
235 | 235 |
GHashTable *user_langs;
|
236 | 236 |
const char *display;
|
|
263 | 263 |
display = g_hash_table_lookup (user_langs, name);
|
264 | 264 |
}
|
265 | 265 |
|
266 | |
@@ -296,8 +402,8 @@ cc_common_language_add_user_languages (G
|
|
266 |
@@ -296,8 +402,8 @@ cc_common_language_add_user_languages (GtkTreeModel *model)
|
267 | 267 |
g_hash_table_foreach (user_langs, (GHFunc) foreach_user_lang_cb, store);
|
268 | 268 |
|
269 | 269 |
/* And now the "Other…" selection */
|
|
274 | 274 |
|
275 | 275 |
g_hash_table_destroy (user_langs);
|
276 | 276 |
}
|
277 | |
Index: gnome-control-center-3.32.1/panels/common/cc-common-language.h
|
278 | |
===================================================================
|
279 | |
--- gnome-control-center-3.32.1.orig/panels/common/cc-common-language.h
|
280 | |
+++ gnome-control-center-3.32.1/panels/common/cc-common-language.h
|
281 | |
@@ -43,6 +43,8 @@ guint cc_common_language_add_availabl
|
|
277 |
diff --git a/panels/common/cc-common-language.h b/panels/common/cc-common-language.h
|
|
278 |
index 1f578b7..2e5a446 100644
|
|
279 |
--- a/panels/common/cc-common-language.h
|
|
280 |
+++ b/panels/common/cc-common-language.h
|
|
281 |
@@ -43,6 +43,8 @@ guint cc_common_language_add_available_languages (GtkListStore *store,
|
282 | 282 |
GHashTable *user_langs);
|
283 | 283 |
gboolean cc_common_language_has_font (const gchar *locale);
|
284 | 284 |
gchar *cc_common_language_get_current_language (void);
|
|
287 | 287 |
|
288 | 288 |
GHashTable *cc_common_language_get_initial_languages (void);
|
289 | 289 |
GHashTable *cc_common_language_get_user_languages (void);
|
290 | |
@@ -55,4 +57,6 @@ void cc_common_language_select_curre
|
|
290 |
@@ -55,4 +57,6 @@ void cc_common_language_select_current_language (GtkTreeView *treeview);
|
291 | 291 |
|
292 | 292 |
void cc_common_language_add_user_languages (GtkTreeModel *model);
|
293 | 293 |
|
294 | 294 |
+void cc_common_language_get_locale (const gchar *language, gchar **locale);
|
295 | 295 |
+
|
296 | 296 |
G_END_DECLS
|
297 | |
Index: gnome-control-center-3.32.1/panels/common/cc-language-chooser.c
|
298 | |
===================================================================
|
299 | |
--- gnome-control-center-3.32.1.orig/panels/common/cc-language-chooser.c
|
300 | |
+++ gnome-control-center-3.32.1/panels/common/cc-language-chooser.c
|
301 | |
@@ -166,7 +166,7 @@ add_languages (CcLanguageChooser *choose
|
|
297 |
diff --git a/panels/common/cc-language-chooser.c b/panels/common/cc-language-chooser.c
|
|
298 |
index 1c15b43..2cecf40 100644
|
|
299 |
--- a/panels/common/cc-language-chooser.c
|
|
300 |
+++ b/panels/common/cc-language-chooser.c
|
|
301 |
@@ -62,16 +62,21 @@ language_widget_new (const gchar *locale_id,
|
|
302 |
g_autofree gchar *country = NULL;
|
|
303 |
g_autofree gchar *language_local = NULL;
|
|
304 |
g_autofree gchar *country_local = NULL;
|
|
305 |
+ g_autofree gchar *language_tmp = NULL;
|
|
306 |
+ g_autofree gchar *language_loc_tmp = NULL;
|
|
307 |
+ g_autofree gchar *modifier = NULL;
|
|
308 |
GtkWidget *row;
|
|
309 |
GtkWidget *box;
|
|
310 |
GtkWidget *language_label;
|
|
311 |
GtkWidget *check;
|
|
312 |
GtkWidget *country_label;
|
|
313 |
|
|
314 |
- gnome_parse_locale (locale_id, &language_code, &country_code, NULL, NULL);
|
|
315 |
- language = gnome_get_language_from_code (language_code, locale_id);
|
|
316 |
+ gnome_parse_locale (locale_id, &language_code, &country_code, NULL, &modifier);
|
|
317 |
+ language_tmp = gnome_get_language_from_code (language_code, locale_id);
|
|
318 |
+ language = g_strdup_printf ("%s%s%s", language_tmp, modifier ? " - " : "", modifier ? modifier : "");
|
|
319 |
country = gnome_get_country_from_code (country_code, locale_id);
|
|
320 |
- language_local = gnome_get_language_from_code (language_code, NULL);
|
|
321 |
+ language_loc_tmp = gnome_get_language_from_code (language_code, NULL);
|
|
322 |
+ language_local = g_strdup_printf ("%s%s%s", language_loc_tmp, modifier ? " - " : "", modifier ? modifier : "");
|
|
323 |
country_local = gnome_get_country_from_code (country_code, NULL);
|
|
324 |
|
|
325 |
row = gtk_list_box_row_new ();
|
|
326 |
@@ -166,7 +171,7 @@ add_languages (CcLanguageChooser *chooser,
|
302 | 327 |
gtk_container_add (GTK_CONTAINER (chooser->language_listbox), widget);
|
303 | 328 |
}
|
304 | 329 |
|
|
307 | 332 |
}
|
308 | 333 |
|
309 | 334 |
static void
|
310 | |
@@ -392,7 +392,7 @@ cc_language_chooser_init (CcLanguageChoo
|
|
335 |
@@ -392,7 +397,7 @@ cc_language_chooser_init (CcLanguageChooser *chooser)
|
311 | 336 |
gtk_widget_init_template (GTK_WIDGET (chooser));
|
312 | 337 |
|
313 | 338 |
chooser->more_item = more_widget_new ();
|
|
316 | 341 |
/* We ref-sink here so we can reuse this widget multiple times */
|
317 | 342 |
chooser->no_results = g_object_ref_sink (no_results_widget_new ());
|
318 | 343 |
gtk_widget_show (chooser->no_results);
|
319 | |
Index: gnome-control-center-3.32.1/panels/region/cc-region-panel.c
|
320 | |
===================================================================
|
321 | |
--- gnome-control-center-3.32.1.orig/panels/region/cc-region-panel.c
|
322 | |
+++ gnome-control-center-3.32.1/panels/region/cc-region-panel.c
|
323 | |
@@ -378,11 +378,15 @@ language_response (CcRegionPanel *se
|
324 | |
gint response_id,
|
325 | |
CcLanguageChooser *chooser)
|
326 | |
{
|
327 | |
- const gchar *language;
|
328 | |
+ const gchar *locale, *language, *country;
|
329 | |
+ gchar *name = NULL;
|
330 | |
|
331 | |
if (response_id == GTK_RESPONSE_OK) {
|
332 | |
- language = cc_language_chooser_get_language (chooser);
|
333 | |
- update_language (self, language);
|
334 | |
+ locale = cc_language_chooser_get_language (chooser);
|
335 | |
+ gnome_parse_locale (locale, &language, &country, NULL, NULL);
|
336 | |
+ name = g_strdup_printf ("%s_%s", language, country);
|
337 | |
+ update_language (self, name);
|
338 | |
+ g_free (name);
|
339 | |
}
|
340 | |
|
341 | |
gtk_widget_destroy (GTK_WIDGET (chooser));
|
342 | |
@@ -402,6 +406,47 @@ set_system_region (CcRegionPanel *self,
|
343 | |
}
|
344 | |
|
345 | |
static void
|
|
344 |
diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c
|
|
345 |
index 3585952..5523cc5 100644
|
|
346 |
--- a/panels/region/cc-region-panel.c
|
|
347 |
+++ b/panels/region/cc-region-panel.c
|
|
348 |
@@ -361,6 +361,7 @@ static void
|
|
349 |
update_language (CcRegionPanel *self,
|
|
350 |
const gchar *language)
|
|
351 |
{
|
|
352 |
+ g_debug ("Setting language to %s", language);
|
|
353 |
if (self->login) {
|
|
354 |
set_system_language (self, language);
|
|
355 |
} else {
|
|
356 |
@@ -401,6 +402,47 @@ set_system_region (CcRegionPanel *self,
|
|
357 |
set_localed_locale (self);
|
|
358 |
}
|
|
359 |
|
|
360 |
+static void
|
346 | 361 |
+set_formats_locale (const gchar *formats_locale)
|
347 | 362 |
+{
|
348 | 363 |
+ GDBusProxy *proxy;
|
|
383 | 398 |
+ g_free (user_path);
|
384 | 399 |
+}
|
385 | 400 |
+
|
386 | |
+static void
|
|
401 |
static void
|
387 | 402 |
update_region (CcRegionPanel *self,
|
388 | 403 |
const gchar *region)
|
389 | |
{
|
390 | |
@@ -410,6 +455,7 @@ update_region (CcRegionPanel *self,
|
|
404 |
@@ -410,6 +452,7 @@ update_region (CcRegionPanel *self,
|
391 | 405 |
} else {
|
392 | 406 |
if (g_strcmp0 (region, self->region) == 0)
|
393 | 407 |
return;
|
|
395 | 409 |
g_settings_set_string (self->locale_settings, KEY_REGION, region);
|
396 | 410 |
if (self->login_auto_apply)
|
397 | 411 |
set_system_region (self, region);
|
398 | |
@@ -562,7 +608,7 @@ static void
|
|
412 |
@@ -562,7 +605,7 @@ static void
|
399 | 413 |
update_region_from_setting (CcRegionPanel *self)
|
400 | 414 |
{
|
401 | 415 |
g_free (self->region);
|
|
404 | 418 |
update_region_label (self);
|
405 | 419 |
}
|
406 | 420 |
|
407 | |
@@ -588,15 +634,19 @@ static void
|
|
421 |
@@ -588,15 +631,19 @@ static void
|
408 | 422 |
update_language_from_user (CcRegionPanel *self)
|
409 | 423 |
{
|
410 | 424 |
const gchar *language = NULL;
|
|
428 | 442 |
update_language_label (self);
|
429 | 443 |
}
|
430 | 444 |
|
431 | |
@@ -1249,6 +1299,16 @@ setup_input_section (CcRegionPanel *self
|
|
445 |
@@ -1249,6 +1296,16 @@ setup_input_section (CcRegionPanel *self)
|
432 | 446 |
update_modifiers_shortcut (self);
|
433 | 447 |
}
|
434 | 448 |
|
|
445 | 459 |
static void
|
446 | 460 |
on_localed_properties_changed (CcRegionPanel *self,
|
447 | 461 |
GVariant *changed_properties,
|
448 | |
@@ -1261,28 +1321,38 @@ on_localed_properties_changed (CcRegionP
|
|
462 |
@@ -1261,28 +1318,38 @@ on_localed_properties_changed (CcRegionPanel *self,
|
449 | 463 |
g_autofree const gchar **strv = NULL;
|
450 | 464 |
gsize len;
|
451 | 465 |
gint i;
|
|
493 | 507 |
g_free (self->system_region);
|
494 | 508 |
self->system_region = g_strdup (time);
|
495 | 509 |
|
496 | |
@@ -1335,28 +1405,26 @@ set_localed_locale (CcRegionPanel *self)
|
|
510 |
@@ -1335,28 +1402,26 @@ set_localed_locale (CcRegionPanel *self)
|
497 | 511 |
{
|
498 | 512 |
g_autoptr(GVariantBuilder) b = NULL;
|
499 | 513 |
g_autofree gchar *lang_value = NULL;
|
|
538 | 552 |
}
|
539 | 553 |
g_dbus_proxy_call (self->localed,
|
540 | 554 |
"SetLocale",
|
541 | |
Index: gnome-control-center-3.32.1/panels/user-accounts/cc-user-panel.c
|
542 | |
===================================================================
|
543 | |
--- gnome-control-center-3.32.1.orig/panels/user-accounts/cc-user-panel.c
|
544 | |
+++ gnome-control-center-3.32.1/panels/user-accounts/cc-user-panel.c
|
545 | |
@@ -836,6 +836,7 @@ show_user (ActUser *user, CcUserPanel *s
|
|
555 |
diff --git a/panels/user-accounts/cc-user-panel.c b/panels/user-accounts/cc-user-panel.c
|
|
556 |
index 07a12dd..c284abb 100644
|
|
557 |
--- a/panels/user-accounts/cc-user-panel.c
|
|
558 |
+++ b/panels/user-accounts/cc-user-panel.c
|
|
559 |
@@ -836,6 +836,7 @@ show_user (ActUser *user, CcUserPanel *self)
|
546 | 560 |
|
547 | 561 |
name = NULL;
|
548 | 562 |
lang = g_strdup (act_user_get_language (user));
|