load translated XML application description, if available. Closes bug

2006-01-17  Luca Cavalli  <loopback@slackit.org>

	* gnome-da-xml.c: (gnome_da_xml_get_string): load translated XML
	application description, if available. Closes bug #327221.
This commit is contained in:
Luca Cavalli 2006-01-17 15:48:08 +00:00 committed by Rodrigo Moya
parent b17e24b25c
commit d11e0c199f
2 changed files with 33 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2006-01-17 Luca Cavalli <loopback@slackit.org>
* gnome-da-xml.c: (gnome_da_xml_get_string): load translated XML
application description, if available. Closes bug #327221.
2006-01-16 Rodrigo Moya <rodrigo@novell.com>
* gnome-da-xml.c (gnome_da_xml_load_list): just read the file

View file

@ -18,6 +18,8 @@
*
*/
#include <glib.h>
#include <glib/gi18n.h>
#include <libxml/parser.h>
#include "gnome-da-capplet.h"
@ -60,21 +62,45 @@ gnome_da_xml_get_bool (const xmlNode *parent, const gchar *val_name)
static gchar*
gnome_da_xml_get_string (const xmlNode *parent, const gchar *val_name)
{
const gchar * const *sys_langs;
xmlChar *node_lang;
xmlNode *element;
gchar *ret_val = NULL;
xmlChar *xml_val_name;
gint len;
gint i;
g_return_val_if_fail (parent != NULL, ret_val);
g_return_val_if_fail (parent->children != NULL, ret_val);
g_return_val_if_fail (val_name != NULL, ret_val);
#if GLIB_CHECK_VERSION (2, 6, 0)
sys_langs = g_get_language_names ();
#endif
xml_val_name = xmlCharStrdup (val_name);
len = xmlStrlen (xml_val_name);
for (element = parent->children; element != NULL; element = element->next) {
if (!xmlStrncmp (element->name, xml_val_name, len))
ret_val = (gchar *) xmlNodeGetContent (element);
if (!xmlStrncmp (element->name, xml_val_name, len)) {
node_lang = xmlNodeGetLang (element);
if (node_lang == NULL) {
ret_val = (gchar *) xmlNodeGetContent (element);
}
else {
for (i = 0; sys_langs[i] != NULL; i++) {
if (!strcmp (sys_langs[i], node_lang)) {
ret_val = (gchar *) xmlNodeGetContent (element);
/* since sys_langs is sorted from most desirable to
* least desirable, exit at first match
*/
break;
}
}
}
xmlFree (node_lang);
}
}
xmlFree (xml_val_name);