From c3e99dd86c97c58019571fa012c85f40fda8a80f Mon Sep 17 00:00:00 2001 From: Tim-Philipp Müller Date: Fri, 9 Mar 2007 19:44:30 +0000 Subject: sys/sunaudio/: Actually translate sunaudio mixer track labels instead of just marking the strings as translatable (#3... Original commit message from CVS: * sys/sunaudio/gstsunaudio.c: (plugin_init): * sys/sunaudio/gstsunaudiomixertrack.c: (gst_sunaudiomixer_track_new): Actually translate sunaudio mixer track labels instead of just marking the strings as translatable (#377306); clean up weird label string mapping code that serves no apparent purpose. Also set the 'untranslated-label' property when creating mixer tracks if the GstMixerTrack base class supports this. * tests/check/Makefile.am: * tests/check/elements/.cvsignore: * tests/check/elements/sunaudio.c: (GST_START_TEST), (sunaudio_suite): Very minimalistic unit test for sunaudiomixer element (compiles, but not actually tested on a system where sunaudiomixer is available). --- sys/sunaudio/gstsunaudio.c | 1 + sys/sunaudio/gstsunaudiomixertrack.c | 51 ++++++++++++++---------------------- 2 files changed, 20 insertions(+), 32 deletions(-) (limited to 'sys/sunaudio') diff --git a/sys/sunaudio/gstsunaudio.c b/sys/sunaudio/gstsunaudio.c index bdf33716..b06bf152 100644 --- a/sys/sunaudio/gstsunaudio.c +++ b/sys/sunaudio/gstsunaudio.c @@ -49,6 +49,7 @@ plugin_init (GstPlugin * plugin) #ifdef ENABLE_NLS setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ return TRUE; diff --git a/sys/sunaudio/gstsunaudiomixertrack.c b/sys/sunaudio/gstsunaudiomixertrack.c index 87883ae9..e108695f 100644 --- a/sys/sunaudio/gstsunaudiomixertrack.c +++ b/sys/sunaudio/gstsunaudiomixertrack.c @@ -57,48 +57,35 @@ gst_sunaudiomixer_track_init (GstSunAudioMixerTrack * track) track->track_num = 0; } -static const gchar **labels = NULL; - -static void -fill_labels (void) -{ - int i; - struct - { - gchar *given, *wanted; - } - cases[] = { - { - "Vol ", N_("Volume")} - , { - "Gain ", N_("Gain")} - , { - "Mon ", N_("Monitor")} - , { - NULL, NULL} - }; - - labels = g_malloc (sizeof (gchar *) * MIXER_DEVICES); - - for (i = 0; i < MIXER_DEVICES; i++) { - labels[i] = g_strdup (cases[i].wanted); - } -} - GstMixerTrack * gst_sunaudiomixer_track_new (GstSunAudioTrackType track_num, gint max_chans, gint flags) { + const gchar *labels[] = { N_("Volume"), N_("Gain"), N_("Monitor") }; + GstSunAudioMixerTrack *sunaudiotrack; GstMixerTrack *track; + GObjectClass *klass; + const gchar *untranslated_label; gint volume; - if (!labels) - fill_labels (); + if ((guint) track_num < G_N_ELEMENTS (labels)) + untranslated_label = labels[track_num]; + else + untranslated_label = NULL; + + /* FIXME: remove this check once we depend on -base >= 0.10.12.1 */ + klass = G_OBJECT_CLASS (g_type_class_ref (GST_TYPE_SUNAUDIO_MIXER_TRACK)); + if (g_object_class_find_property (klass, "untranslated-label")) { + sunaudiotrack = g_object_new (GST_TYPE_SUNAUDIO_MIXER_TRACK, + "untranslated-label", untranslated_label, NULL); + } else { + sunaudiotrack = g_object_new (GST_TYPE_SUNAUDIO_MIXER_TRACK, NULL); + } + g_type_class_unref (klass); - sunaudiotrack = g_object_new (GST_TYPE_SUNAUDIO_MIXER_TRACK, NULL); track = GST_MIXER_TRACK (sunaudiotrack); - track->label = g_strdup (labels[track_num]); + track->label = g_strdup (_(untranslated_label)); track->num_channels = max_chans; track->flags = flags; track->min_volume = 0; -- cgit