From 125f6653086323c55d58251b23c8a31b82780941 Mon Sep 17 00:00:00 2001 From: Arnaud Vrac Date: Tue, 13 Jun 2023 16:44:32 +0200 Subject: [PATCH] launcher: set preferred language list from system locale --- launcher/cog-launcher.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/launcher/cog-launcher.c b/launcher/cog-launcher.c index 4c8cdb5a..bc1f7220 100644 --- a/launcher/cog-launcher.c +++ b/launcher/cog-launcher.c @@ -267,6 +267,29 @@ on_automation_started(WebKitWebContext *context, WebKitAutomationSession *sessio g_signal_connect(session, "create-web-view", G_CALLBACK(on_automation_session_create_web_view), launcher); } +static void +cog_launcher_set_preferred_languages(CogLauncher *self) +{ + const gchar *const *locales; + const gchar **languages; + guint i, n, length; + + /* build Accept-Language from locale, filtering out encodings */ + locales = g_get_language_names(); + length = g_strv_length((gchar **) g_get_language_names()); + languages = g_new0(const gchar *, length + 1); + + for (n = 0, i = 0; locales[i]; i++) { + const gchar *lang = locales[i]; + if (!strcmp(lang, "C") || !strcmp(lang, "POSIX") || strchr(lang, '.')) + continue; + languages[n++] = lang; + } + + webkit_web_context_set_preferred_languages(cog_shell_get_web_context(self->shell), languages); + g_free(languages); +} + static void cog_launcher_startup(GApplication *application) { @@ -318,6 +341,8 @@ cog_launcher_startup(GApplication *application) g_object_set(self->shell, "device-scale-factor", s_options.device_scale_factor, NULL); + cog_launcher_set_preferred_languages(self); + if (s_options.handler_map) { GHashTableIter i; void *key, *value;