--- gnome-menus-2.15.91/libmenu/desktop-entries.c.l10n 2006-05-05 17:27:06.000000000 +0200 +++ gnome-menus-2.15.91/libmenu/desktop-entries.c 2006-08-18 19:03:18.000000000 +0200 @@ -22,6 +22,7 @@ #include "desktop-entries.h" #include <string.h> +#include <libintl.h> #include "menu-util.h" @@ -198,6 +199,27 @@ return retval; } +static char * +get_locale_string (GKeyFile *key_file, const char *desktop_entry_group, const char * key) +{ + char *result, *non_translated; + static gboolean l10n_init = FALSE; + + result = g_key_file_get_locale_string (key_file, desktop_entry_group, key, NULL, NULL); + non_translated = g_key_file_get_string (key_file, desktop_entry_group, key, NULL); + if (non_translated && result && strcmp (result, non_translated) == 0) { + g_free (result); + if (!l10n_init) { + bind_textdomain_codeset ("menu-messages", "UTF-8"); + } + result = g_strdup (dgettext ("menu-messages", non_translated)); + } + g_free (non_translated); + + return result; + +} + static DesktopEntry * desktop_entry_load (DesktopEntry *entry) { @@ -272,8 +294,8 @@ #define GET_LOCALE_STRING(n) g_key_file_get_locale_string (key_file, desktop_entry_group, (n), NULL, NULL) - retval->name = GET_LOCALE_STRING ("Name"); - retval->comment = GET_LOCALE_STRING ("Comment"); + retval->name = get_locale_string (key_file, desktop_entry_group, "Name"); + retval->comment = get_locale_string (key_file, desktop_entry_group, "Comment"); retval->icon = GET_LOCALE_STRING ("Icon"); retval->flags = get_flags_from_key_file (retval, key_file, desktop_entry_group); retval->categories = get_categories_from_key_file (retval, key_file, desktop_entry_group); @@ -283,9 +305,9 @@ retval->exec = g_key_file_get_string (key_file, desktop_entry_group, "Exec", NULL); retval->terminal = g_key_file_get_boolean (key_file, desktop_entry_group, "Terminal", NULL); } - -#undef GET_LOCALE_STRING +#undef GET_LOCALE_STRING + menu_verbose ("Desktop entry \"%s\" (%s, %s, %s) flags: NoDisplay=%s, Hidden=%s, ShowInGNOME=%s, TryExecFailed=%s\n", retval->basename, retval->name,