- if (parse_dektop_line(line, &key, &value)) {
- if (strcmp(key, "Name") == 0) {
- entry->name = strdup(value);
- } else if (strcmp(key, "Exec") == 0) {
+ if (line[0] == '[') {
+ inside_desktop_entry = (strcmp(line, "[Desktop Entry]") == 0);
+ }
+ if (inside_desktop_entry && parse_dektop_line(line, &key, &value)) {
+ if (strstr(key, "Name") == key) {
+ if (strcmp(key, "Name") == 0 && lang_index > lang_index_default) {
+ entry->name = strdup(value);
+ lang_index = lang_index_default;
+ } else {
+ for (i = 0; languages[i] && i < lang_index; i++) {
+ gchar *localized_key = g_strdup_printf("Name[%s]", languages[i]);
+ if (strcmp(key, localized_key) == 0) {
+ if (entry->name)
+ free(entry->name);
+ entry->name = strdup(value);
+ lang_index = i;
+ }
+ g_free(localized_key);
+ }
+ }
+ } else if (!entry->exec && strcmp(key, "Exec") == 0) {