summaryrefslogtreecommitdiff
path: root/src/totem-menu.c
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2019-02-18 18:03:16 +0100
committerBastien Nocera <hadess@hadess.net>2019-02-18 18:09:59 +0100
commit6f57d11c3c28a79e72dcced9146d8ececb1ac1da (patch)
treed07d2c6ca83dddcf51831937c62de3306e059673 /src/totem-menu.c
parent0200e35f62bdb4d58fcbab037171c90c9c742a00 (diff)
downloadtotem-6f57d11c3c28a79e72dcced9146d8ececb1ac1da.tar.gz
main: Re-add support for track with no language
This was what get_label_for_type() did, make sure not to lose that support.
Diffstat (limited to 'src/totem-menu.c')
-rw-r--r--src/totem-menu.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/totem-menu.c b/src/totem-menu.c
index 4570659e7..9cb4f7c43 100644
--- a/src/totem-menu.c
+++ b/src/totem-menu.c
@@ -394,15 +394,32 @@ hash_table_num_instances (GHashTable *ht,
}
static const char *
-get_language_name_no_und (const char *lang)
-{
- if (g_str_equal (lang, "und"))
- return gst_tag_get_language_name ("eng");
- return gst_tag_get_language_name (lang);
+get_language_name_no_und (const char *lang,
+ BvwTrackType track_type)
+{
+ const char *ret;
+
+ ret = gst_tag_get_language_name (lang);
+ if (ret != NULL)
+ return ret;
+
+ switch (track_type) {
+ case BVW_TRACK_TYPE_AUDIO:
+ return _("Audio Track");
+ break;
+ case BVW_TRACK_TYPE_SUBTITLE:
+ return _("Subtitle");
+ break;
+ case BVW_TRACK_TYPE_VIDEO:
+ g_assert_not_reached ();
+ }
+
+ return NULL;
}
GList *
-bvw_lang_info_to_menu_labels (GList *langs)
+bvw_lang_info_to_menu_labels (GList *langs,
+ BvwTrackType track_type)
{
GList *l, *ret;
GHashTable *lang_table, *lang_codec_table, *printed_table;
@@ -452,16 +469,16 @@ bvw_lang_info_to_menu_labels (GList *langs)
GINT_TO_POINTER (num));
str = g_strdup_printf ("%s #%d",
- get_language_name_no_und (info->language),
+ get_language_name_no_und (info->language, track_type),
num);
} else {
str = g_strdup_printf ("%s — %s",
- get_language_name_no_und (info->language),
+ get_language_name_no_und (info->language, track_type),
info->codec);
}
g_free (id);
} else {
- str = g_strdup (get_language_name_no_und (info->language));
+ str = g_strdup (get_language_name_no_und (info->language, track_type));
}
ret = g_list_prepend (ret, str);
@@ -517,7 +534,7 @@ create_lang_actions (GMenu *menu,
/* Translators: an entry in the "Languages" menu, used to choose the audio language of a DVD */
add_lang_action (menu, action, C_("Language", "Auto"), -1);
- ui_list = bvw_lang_info_to_menu_labels (list);
+ ui_list = bvw_lang_info_to_menu_labels (list, is_lang ? BVW_TRACK_TYPE_AUDIO : BVW_TRACK_TYPE_SUBTITLE);
for (l = ui_list, i = 0; l != NULL; l = l->next, i++)
add_lang_action (menu, action, l->data, i);