Marcus Meissner
8e31deb180
work-around an issue in mocklibc (which has been meanwhile removed by upstream) with exactly this kind of issue. If the request is OK, please forward it to Factory soon-ish so that we can switch the default compiler. OBS-URL: https://build.opensuse.org/package/show/Base:System/polkit?expand=0&rev=193
58 lines
1.9 KiB
Diff
58 lines
1.9 KiB
Diff
From fea7159b7cc50deb7298b2858e125fb623012549 Mon Sep 17 00:00:00 2001
|
|
From: Ludwig Nussel <ludwig.nussel@suse.de>
|
|
Date: Tue, 13 Jun 2017 18:28:28 +0200
|
|
Subject: [PATCH] Use gettext as fallback for translations
|
|
|
|
Upstream polkit action files do not necessarily contain translations for
|
|
all languages a distribution supports. And even if all translations are
|
|
contained in the head branch, distributions sometimes need to ship older
|
|
versions of packages. In order to allow retrofitting translations and
|
|
shipping language packs for polkit actions without having to patch and
|
|
rebuild packages gettext could be used as fallback. That way only
|
|
additional .mo files have to be installed.
|
|
So this patch makes polkit call into gettext with the domain
|
|
'polkit-action-distro-translations' if an xml doesn't contain
|
|
translations for the requested language.
|
|
---
|
|
src/polkitbackend/polkitbackendactionpool.c | 17 +++++++++++++++--
|
|
1 file changed, 15 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/polkitbackend/polkitbackendactionpool.c b/src/polkitbackend/polkitbackendactionpool.c
|
|
index 3894fe9..9252788 100644
|
|
--- a/src/polkitbackend/polkitbackendactionpool.c
|
|
+++ b/src/polkitbackend/polkitbackendactionpool.c
|
|
@@ -24,6 +24,7 @@
|
|
#include <pwd.h>
|
|
#include <string.h>
|
|
#include <expat.h>
|
|
+#include <locale.h>
|
|
|
|
#include <polkit/polkit.h>
|
|
#include <polkit/polkitprivate.h>
|
|
@@ -1132,8 +1133,20 @@ _localize (GHashTable *translations,
|
|
if (result != NULL)
|
|
goto out;
|
|
|
|
- /* fall back to untranslated */
|
|
- result = untranslated;
|
|
+ /* try distro provided language bundle via gettext */
|
|
+
|
|
+ /* Set LANG and locale so g_dgettext() + friends work below */
|
|
+ if (setlocale (LC_ALL, lang) == NULL)
|
|
+ {
|
|
+ g_printerr ("Invalid locale '%s'\n", lang);
|
|
+ }
|
|
+ g_setenv ("LANG", lang, TRUE);
|
|
+
|
|
+ result = g_dgettext ("polkit-action-distro-translations", untranslated);
|
|
+
|
|
+ /* Back to C! */
|
|
+ setlocale (LC_ALL, "C");
|
|
+ g_setenv ("LANG", "C", TRUE);
|
|
|
|
out:
|
|
return result;
|
|
--
|
|
2.12.2
|
|
|