summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/polkitbackend/polkitbackendactionpool.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/polkitbackend/polkitbackendactionpool.c b/src/polkitbackend/polkitbackendactionpool.c
index e3ed38d..0af0010 100644
--- a/src/polkitbackend/polkitbackendactionpool.c
+++ b/src/polkitbackend/polkitbackendactionpool.c
@@ -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';
- break;
- }
+ result = (const char *) g_hash_table_lookup (translations, (void *) langs[n]);
+ if (result != NULL)
+ break;
}
- result = (const char *) g_hash_table_lookup (translations, (void *) lang2);
+ g_strfreev (langs);
if (result != NULL)
goto out;