From 5d02c0c8366127655de02c14514b9e39fba6172a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 2 Apr 2010 10:44:57 -0500 Subject: Adding a private variable for the translation domain and grabbing it from the keyfile. --- libindicator/indicator-desktop-shortcuts.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libindicator/indicator-desktop-shortcuts.c b/libindicator/indicator-desktop-shortcuts.c index e86a6ab..a370c0f 100644 --- a/libindicator/indicator-desktop-shortcuts.c +++ b/libindicator/indicator-desktop-shortcuts.c @@ -39,6 +39,7 @@ struct _IndicatorDesktopShortcutsPrivate { GKeyFile * keyfile; gchar * identity; GArray * nicks; + gchar * domain; }; enum { @@ -100,6 +101,7 @@ indicator_desktop_shortcuts_init (IndicatorDesktopShortcuts *self) priv->keyfile = NULL; priv->identity = NULL; + priv->domain = NULL; priv->nicks = g_array_new(TRUE, TRUE, sizeof(gchar *)); return; @@ -131,6 +133,11 @@ indicator_desktop_shortcuts_finalize (GObject *object) priv->identity = NULL; } + if (priv->domain != NULL) { + g_free(priv->domain); + priv->domain = NULL; + } + if (priv->nicks != NULL) { gint i; for (i = 0; i < priv->nicks->len; i++) { @@ -227,6 +234,15 @@ parse_keyfile (IndicatorDesktopShortcuts * ids) return; } + /* Check to see if there is a custom translation domain that + we should take into account. */ + if (g_key_file_has_key(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-Ubuntu-Gettext-Domain", NULL)) { + if (priv->domain != NULL) { + g_free(priv->domain); + } + priv->domain = g_key_file_get_string(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-Ubuntu-Gettext-Domain", NULL); + } + /* Okay, we've got everything we need. Let's get it on! */ gint i; gsize num_nicks = 0; -- cgit v1.2.3 From 20e03af6d3675ca8dab591ad6b9cd9ab18fc7e37 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 2 Apr 2010 10:49:33 -0500 Subject: If we don't have a domain just use the locale function, otherwise we need to use that domain to get the translation. --- libindicator/indicator-desktop-shortcuts.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/libindicator/indicator-desktop-shortcuts.c b/libindicator/indicator-desktop-shortcuts.c index a370c0f..504d023 100644 --- a/libindicator/indicator-desktop-shortcuts.c +++ b/libindicator/indicator-desktop-shortcuts.c @@ -427,11 +427,21 @@ indicator_desktop_shortcuts_nick_get_name (IndicatorDesktopShortcuts * ids, cons return NULL; } - gchar * name = g_key_file_get_locale_string(priv->keyfile, - groupheader, - G_KEY_FILE_DESKTOP_KEY_NAME, - NULL, - NULL); + gchar * name = NULL; + if (priv->domain == NULL) { + name = g_key_file_get_locale_string(priv->keyfile, + groupheader, + G_KEY_FILE_DESKTOP_KEY_NAME, + NULL, + NULL); + } else { + gchar * tempname = g_key_file_get_string(priv->keyfile, + groupheader, + G_KEY_FILE_DESKTOP_KEY_NAME, + NULL); + name = g_strdup(g_dgettext(priv->domain, tempname)); + g_free(tempname); + } g_free(groupheader); -- cgit v1.2.3