diff -p -up gnome-menus-2.24.0/libmenu/desktop-entries.c.l10n gnome-menus-2.24.0/libmenu/desktop-entries.c --- gnome-menus-2.24.0/libmenu/desktop-entries.c.l10n 2008-09-22 23:10:56.000000000 +0200 +++ gnome-menus-2.24.0/libmenu/desktop-entries.c 2008-12-11 16:08:51.000000000 +0100 @@ -22,6 +22,7 @@ #include "desktop-entries.h" #include <string.h> +#include <libintl.h> #include "menu-util.h" @@ -198,6 +199,26 @@ get_categories_from_key_file (DesktopEnt 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 && *non_translated != '\0' && 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) { @@ -283,8 +304,8 @@ desktop_entry_load (DesktopEntry *entry) #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); @@ -294,9 +315,9 @@ desktop_entry_load (DesktopEntry *entry) 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,