Commit facadfb5 authored by Matthias Clasen's avatar Matthias Clasen Committed by David Zeuthen
Browse files

Try harder to look up the right localization

The code for looking up localized strings for action descriptions
was manually trying to break locale names into pieces, but didn't
get it right for e.g. zh_CN.utf-8. Instead, use the GLib function
g_get_locale_variants(), which handles this (and more). This fixes
the translation problem reported in

Signed-off-by: David Zeuthen's avatarDavid Zeuthen <>
parent acf3a06e
......@@ -1108,7 +1108,7 @@ _localize (GHashTable *translations,
const gchar *lang)
const gchar *result;
gchar lang2[256];
gchar **langs;
guint n;
if (lang == NULL)
......@@ -1123,16 +1123,14 @@ _localize (GHashTable *translations,
goto out;
/* we could have a translation for 'da' but lang=='da_DK'; cut off the last part and try again */
strncpy (lang2, lang, sizeof (lang2));
for (n = 0; lang2[n] != '\0'; n++)
langs = g_get_locale_variants (lang);
for (n = 0; langs[n] != NULL; n++)
if (lang2[n] == '_')
lang2[n] = '\0';
result = (const char *) g_hash_table_lookup (translations, (void *) langs[n]);
if (result != NULL)
result = (const char *) g_hash_table_lookup (translations, (void *) lang2);
g_strfreev (langs);
if (result != NULL)
goto out;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment