changeset 1693:62e89e392227

Branch merge.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 08 Sep 2007 06:58:08 +0300
parents 81ae3fcc9673 (current diff) e1985da23d28 (diff)
children 563537d047a1
files src/adplug/adplug-xmms.cc src/console/Audacious_Driver.cxx src/filewriter/filewriter.c src/scrobbler/fmt.c src/scrobbler/plugin.c src/scrobbler/scrobbler.c src/sid/xmms-sid.c src/timidity/src/xmms-timidity.c src/tta/libtta.c src/xspf/xspf.c
diffstat 39 files changed, 1327 insertions(+), 1413 deletions(-) [+]
line wrap: on
line diff
--- a/po/de.po	Fri Sep 07 12:48:27 2007 +0300
+++ b/po/de.po	Sat Sep 08 06:58:08 2007 +0300
@@ -3,7 +3,7 @@
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: http://bugs.audacious-media-player.org\n"
 "POT-Creation-Date: 2007-09-05 00:28+0200\n"
-"PO-Revision-Date: 2007-09-05 00:24+0100\n"
+"PO-Revision-Date: 2007-09-08 00:43+0100\n"
 "Last-Translator: Michael Färber <0102@gmx.at>\n"
 "Language-Team: german <0102@gmx.at>\n"
 "MIME-Version: 1.0\n"
@@ -29,27 +29,55 @@
 msgid "About MP4 AAC player plugin"
 msgstr "Ãœber MP4-AAC-Player-Plugin"
 
-#: src/aac/src/libmp4.c:298 src/adplug/adplug-xmms.cc:185
-#: src/adplug/adplug-xmms.cc:268 src/adplug/adplug-xmms.cc:529
-#: src/alac/plugin.c:88 src/arts/arts.c:26 src/arts/configure.c:90
+#: src/aac/src/libmp4.c:298
+#: src/adplug/adplug-xmms.cc:185
+#: src/adplug/adplug-xmms.cc:268
+#: src/adplug/adplug-xmms.cc:529
+#: src/alac/plugin.c:88
+#: src/arts/arts.c:26
+#: src/arts/configure.c:90
 #: src/audiocompress/audacious-glue.c:106
-#: src/audiocompress/audacious-glue.c:556 src/cdaudio-ng/configure.c:144
-#: src/console/Audacious_Driver.cxx:500 src/echo_plugin/gui.c:27
-#: src/echo_plugin/gui.c:138 src/esd/about.c:49
-#: src/filewriter/filewriter.c:184 src/jack/configure.c:140
-#: src/jack/jack.c:602 src/madplug/fileinfo.c:158 src/madplug/fileinfo.c:236
-#: src/madplug/plugin.c:597 src/madplug/plugin.c:620
-#: src/metronom/metronom.c:87 src/modplug/gui/main.cxx:45
-#: src/musepack/libmpc.cxx:231 src/null/null.c:67 src/null/null.c:110
-#: src/OSS4/about.c:59 src/OSS/about.c:54 src/paranormal/plugin.c:288
-#: src/rovascope/plugin.c:294 src/scrobbler/gtkstuff.c:24
-#: src/statusicon/si_ui.c:577 src/stereo_plugin/stereo.c:56
-#: src/stereo_plugin/stereo.c:119 src/sun/about.c:38 src/sun/configure.c:559
-#: src/timidity/src/interface.c:224 src/timidity/src/xmms-timidity.c:136
-#: src/tonegen/tonegen.c:62 src/tta/libtta.c:171 src/tta/libtta.c:285
-#: src/tta/libtta.c:420 src/vorbis/fileinfo.c:212 src/vorbis/vorbis.c:880
-#: src/vtx/about.c:31 src/vtx/info.c:43 src/wavpack/ui.cxx:56
-#: src/wavpack/ui.cxx:554 src/wav/wav-sndfile.c:566
+#: src/audiocompress/audacious-glue.c:556
+#: src/cdaudio-ng/configure.c:144
+#: src/console/Audacious_Driver.cxx:500
+#: src/echo_plugin/gui.c:27
+#: src/echo_plugin/gui.c:138
+#: src/esd/about.c:49
+#: src/filewriter/filewriter.c:184
+#: src/jack/configure.c:140
+#: src/jack/jack.c:602
+#: src/madplug/fileinfo.c:158
+#: src/madplug/fileinfo.c:236
+#: src/madplug/plugin.c:597
+#: src/madplug/plugin.c:620
+#: src/metronom/metronom.c:87
+#: src/modplug/gui/main.cxx:45
+#: src/musepack/libmpc.cxx:231
+#: src/null/null.c:67
+#: src/null/null.c:110
+#: src/OSS4/about.c:59
+#: src/OSS/about.c:54
+#: src/paranormal/plugin.c:288
+#: src/rovascope/plugin.c:294
+#: src/scrobbler/gtkstuff.c:24
+#: src/statusicon/si_ui.c:577
+#: src/stereo_plugin/stereo.c:56
+#: src/stereo_plugin/stereo.c:119
+#: src/sun/about.c:38
+#: src/sun/configure.c:559
+#: src/timidity/src/interface.c:224
+#: src/timidity/src/xmms-timidity.c:136
+#: src/tonegen/tonegen.c:62
+#: src/tta/libtta.c:171
+#: src/tta/libtta.c:285
+#: src/tta/libtta.c:420
+#: src/vorbis/fileinfo.c:212
+#: src/vorbis/vorbis.c:880
+#: src/vtx/about.c:31
+#: src/vtx/info.c:43
+#: src/wavpack/ui.cxx:56
+#: src/wavpack/ui.cxx:554
+#: src/wav/wav-sndfile.c:566
 msgid "Ok"
 msgstr "OK"
 
@@ -65,29 +93,48 @@
 "This plugin is released under the terms and conditions of the GNU LGPL.\n"
 "See http://www.gnu.org/licenses/lgpl.html for details.\n"
 "\n"
-"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et "
-"al.\n"
+"This plugin uses the AdPlug library, which is copyright (C) Simon Peter, et al.\n"
 "Linked AdPlug library version: "
 msgstr ""
+"\n"
+"Copyright (C) 2002, 2003 Simon Peter <dn.tlp@gmx.net>\n"
+"\n"
+"Dieses Plugin wurde veröffentlicht unter den Bedingungen und Auflagen der GNU LGPL.\n"
+"http://www.gnu.org/licenses/lgpl.html für Details.\n"
+"\n"
+"Dieses Plugin benützt die AdPlug-Bibliothek; diese ist copyright (C) Simon Peter, et al.\n"
+"Gelinkte AdPlug-Bibliotheks-Version: "
 
 #: src/adplug/adplug-xmms.cc:259
 msgid "AdPlug :: Configuration"
 msgstr "AdPlug :: Konfiguration"
 
-#: src/adplug/adplug-xmms.cc:278 src/alarm/interface.c:1400
-#: src/alsa/configure.c:411 src/arts/configure.c:91
-#: src/audiocompress/audacious-glue.c:561 src/cdaudio-ng/configure.c:148
-#: src/echo_plugin/gui.c:146 src/jack/configure.c:147
-#: src/modplug/gui/interface.cxx:741 src/musepack/libmpc.cxx:236
-#: src/musepack/libmpc.cxx:556 src/null/null.c:111 src/sid/xmms-sid.glade:2930
-#: src/sid/xs_interface.c:1192 src/stereo_plugin/stereo.c:128
-#: src/sun/configure.c:567 src/timidity/src/interface.c:232
-#: src/wavpack/ui.cxx:278 src/wavpack/ui.cxx:561
+#: src/adplug/adplug-xmms.cc:278
+#: src/alarm/interface.c:1400
+#: src/alsa/configure.c:411
+#: src/arts/configure.c:91
+#: src/audiocompress/audacious-glue.c:561
+#: src/cdaudio-ng/configure.c:148
+#: src/echo_plugin/gui.c:146
+#: src/jack/configure.c:147
+#: src/modplug/gui/interface.cxx:741
+#: src/musepack/libmpc.cxx:236
+#: src/musepack/libmpc.cxx:556
+#: src/null/null.c:111
+#: src/sid/xmms-sid.glade:2930
+#: src/sid/xs_interface.c:1192
+#: src/stereo_plugin/stereo.c:128
+#: src/sun/configure.c:567
+#: src/timidity/src/interface.c:232
+#: src/wavpack/ui.cxx:278
+#: src/wavpack/ui.cxx:561
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: src/adplug/adplug-xmms.cc:294 src/console/Audacious_Config.cxx:146
-#: src/madplug/configure.c:191 src/modplug/gui/interface.cxx:325
+#: src/adplug/adplug-xmms.cc:294
+#: src/console/Audacious_Config.cxx:146
+#: src/madplug/configure.c:191
+#: src/modplug/gui/interface.cxx:325
 #: src/modplug/gui/interface.cxx:833
 msgid "General"
 msgstr "Allgemein"
@@ -96,7 +143,8 @@
 msgid "Sound quality"
 msgstr "Sound-Qualität"
 
-#: src/adplug/adplug-xmms.cc:311 src/modplug/gui/interface.cxx:151
+#: src/adplug/adplug-xmms.cc:311
+#: src/modplug/gui/interface.cxx:151
 msgid "Resolution"
 msgstr "Auflösung"
 
@@ -108,36 +156,39 @@
 msgid "16bit"
 msgstr "16 Bit"
 
-#: src/adplug/adplug-xmms.cc:326 src/modplug/gui/interface.cxx:181
+#: src/adplug/adplug-xmms.cc:326
+#: src/modplug/gui/interface.cxx:181
 #: src/timidity/src/interface.c:150
 msgid "Channels"
 msgstr "Kanäle"
 
-#: src/adplug/adplug-xmms.cc:328 src/filewriter/mp3.c:899
-#: src/sid/xmms-sid.glade:157 src/sid/xs_interface.c:280
+#: src/adplug/adplug-xmms.cc:328
+#: src/filewriter/mp3.c:899
+#: src/sid/xmms-sid.glade:157
+#: src/sid/xs_interface.c:280
 #: src/timidity/src/interface.c:167
 msgid "Mono"
 msgstr "Mono"
 
-#: src/adplug/adplug-xmms.cc:333 src/filewriter/mp3.c:894
-#: src/modplug/gui/interface.cxx:195 src/sid/xmms-sid.glade:176
-#: src/sid/xs_interface.c:287 src/timidity/src/interface.c:175
+#: src/adplug/adplug-xmms.cc:333
+#: src/filewriter/mp3.c:894
+#: src/modplug/gui/interface.cxx:195
+#: src/sid/xmms-sid.glade:176
+#: src/sid/xs_interface.c:287
+#: src/timidity/src/interface.c:175
 msgid "Stereo"
 msgstr "Stereo"
 
 #: src/adplug/adplug-xmms.cc:337
-msgid ""
-"Setting stereo is not recommended, unless you need to. This won't add any "
-"stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!"
-msgstr ""
-"Vom Gebrauch von Stereo wird abgeraten, da es dem Klang keine Stereo-Effekte "
-"hinzufügt - OPL2 ist nur Mono - aber mehr Rechenleistung benötigt!"
+msgid "Setting stereo is not recommended, unless you need to. This won't add any stereo effects to the sound - OPL2 is just mono - but eats up more CPU power!"
+msgstr "Vom Gebrauch von Stereo wird abgeraten, da es dem Klang keine Stereo-Effekte hinzufügt - OPL2 ist nur Mono - aber mehr Rechenleistung benötigt!"
 
 #: src/adplug/adplug-xmms.cc:345
 msgid "Frequency"
 msgstr "Frequenz"
 
-#: src/adplug/adplug-xmms.cc:381 src/adplug/adplug-xmms.cc:585
+#: src/adplug/adplug-xmms.cc:381
+#: src/adplug/adplug-xmms.cc:585
 #: src/console/Audacious_Config.cxx:148
 msgid "Playback"
 msgstr "Wiedergabe"
@@ -147,10 +198,7 @@
 msgstr "Liedende ermitteln"
 
 #: src/adplug/adplug-xmms.cc:389
-msgid ""
-"If enabled, XMMS will detect a song's ending, stop it and advance in the "
-"playlist. If disabled, XMMS won't take notice of a song's ending and loop it "
-"all over again and again."
+msgid "If enabled, XMMS will detect a song's ending, stop it and advance in the playlist. If disabled, XMMS won't take notice of a song's ending and loop it all over again and again."
 msgstr ""
 
 #: src/adplug/adplug-xmms.cc:400
@@ -170,20 +218,15 @@
 msgstr "Erweiterung"
 
 #: src/adplug/adplug-xmms.cc:450
-msgid ""
-"Selected file types will be recognized and played back by this plugin. "
-"Deselected types will be ignored to make room for other plugins to play "
-"these files."
-msgstr ""
-"Ausgewählte Dateitypen werden von diesem Plugin erkannt und abgespielt. "
-"Deaktivierte Typen werden ignoriert, dass andere Plugins diese Dateien "
-"abspielen können."
+msgid "Selected file types will be recognized and played back by this plugin. Deselected types will be ignored to make room for other plugins to play these files."
+msgstr "Ausgewählte Dateitypen werden von diesem Plugin erkannt und abgespielt. Deaktivierte Typen werden ignoriert, dass andere Plugins diese Dateien abspielen können."
 
 #: src/adplug/adplug-xmms.cc:536
 msgid "AdPlug :: File Info"
 msgstr "AdPlug :: Dateiinformation"
 
-#: src/adplug/adplug-xmms.cc:558 src/amidi-plug/i_configure-fluidsynth.c:448
+#: src/adplug/adplug-xmms.cc:558
+#: src/amidi-plug/i_configure-fluidsynth.c:448
 msgid "Filename"
 msgstr "Dateiname"
 
@@ -251,8 +294,10 @@
 msgid "Timer: "
 msgstr "Timer: "
 
-#: src/adplug/adplug-xmms.cc:736 src/console/Audacious_Config.cxx:226
-#: src/sid/xmms-sid.glade:332 src/sid/xs_interface.c:333
+#: src/adplug/adplug-xmms.cc:736
+#: src/console/Audacious_Config.cxx:226
+#: src/sid/xmms-sid.glade:332
+#: src/sid/xs_interface.c:333
 msgid "Hz"
 msgstr "Hz"
 
@@ -288,8 +333,10 @@
 "http://www.snika.uklinux.net/xmms-alarm/"
 msgstr ""
 
-#: src/alarm/interface.c:73 src/lirc/about.c:116
-#: src/modplug/gui/interface.cxx:946 src/sid/xmms-sid.glade:3493
+#: src/alarm/interface.c:73
+#: src/lirc/about.c:116
+#: src/modplug/gui/interface.cxx:946
+#: src/sid/xmms-sid.glade:3493
 #: src/sid/xs_interface.c:1671
 msgid "Close"
 msgstr "Schließen"
@@ -302,11 +349,17 @@
 msgid "This is your wakeup call."
 msgstr ""
 
-#: src/alarm/interface.c:126 src/alarm/interface.c:1391 src/alsa/about.c:46
-#: src/alsa/configure.c:405 src/cdaudio-ng/cdaudio-ng.c:206
-#: src/filewriter/filewriter.c:201 src/flacng/plugin.c:743
-#: src/modplug/gui/interface.cxx:725 src/pulse_audio/pulse_audio.c:694
-#: src/scrobbler/gtkstuff.c:43 src/sid/xmms-sid.glade:2916
+#: src/alarm/interface.c:126
+#: src/alarm/interface.c:1391
+#: src/alsa/about.c:46
+#: src/alsa/configure.c:405
+#: src/cdaudio-ng/cdaudio-ng.c:206
+#: src/filewriter/filewriter.c:201
+#: src/flacng/plugin.c:743
+#: src/modplug/gui/interface.cxx:725
+#: src/pulse_audio/pulse_audio.c:694
+#: src/scrobbler/gtkstuff.c:43
+#: src/sid/xmms-sid.glade:2916
 #: src/sid/xs_interface.c:1185
 msgid "OK"
 msgstr "OK"
@@ -325,10 +378,7 @@
 
 #: src/alarm/interface.c:215
 msgid ""
-"For safety reasons the \"quiet\" time must be at least 65 seconds longer "
-"than the fading time, it must also be more than 10 seconds.  This basically "
-"means that there is a bug in the code and until I find a way of really "
-"fixing it this message will appear :)\n"
+"For safety reasons the \"quiet\" time must be at least 65 seconds longer than the fading time, it must also be more than 10 seconds.  This basically means that there is a bug in the code and until I find a way of really fixing it this message will appear :)\n"
 "\n"
 "Your fading settings have NOT been saved\n"
 "\n"
@@ -344,7 +394,8 @@
 msgid "Alarm Settings"
 msgstr "Alarm-Einstellungen"
 
-#: src/alarm/interface.c:406 src/alarm/interface.c:578
+#: src/alarm/interface.c:406
+#: src/alarm/interface.c:578
 #: src/alarm/interface.c:950
 msgid "Time"
 msgstr "Zeit"
@@ -373,10 +424,15 @@
 msgid "Choose the days for the alarm to come on"
 msgstr "Tage wählen, an denen der Alarm ausgelöst werden soll"
 
-#: src/alarm/interface.c:614 src/alarm/interface.c:662
-#: src/alarm/interface.c:710 src/alarm/interface.c:758
-#: src/alarm/interface.c:806 src/alarm/interface.c:854
-#: src/alarm/interface.c:902 src/OSS4/configure.c:138 src/OSS/configure.c:170
+#: src/alarm/interface.c:614
+#: src/alarm/interface.c:662
+#: src/alarm/interface.c:710
+#: src/alarm/interface.c:758
+#: src/alarm/interface.c:806
+#: src/alarm/interface.c:854
+#: src/alarm/interface.c:902
+#: src/OSS4/configure.c:138
+#: src/OSS/configure.c:170
 msgid "Default"
 msgstr "Standard"
 
@@ -420,14 +476,18 @@
 msgid "Fading"
 msgstr "Ãœbergang"
 
-#: src/alarm/interface.c:1089 src/sid/xmms-sid.glade:2007
-#: src/sid/xmms-sid.glade:2178 src/sid/xmms-sid.glade:2526
-#: src/sid/xs_interface.c:900 src/sid/xs_interface.c:954
+#: src/alarm/interface.c:1089
+#: src/sid/xmms-sid.glade:2007
+#: src/sid/xmms-sid.glade:2178
+#: src/sid/xmms-sid.glade:2526
+#: src/sid/xs_interface.c:900
+#: src/sid/xs_interface.c:954
 #: src/sid/xs_interface.c:1064
 msgid "seconds"
 msgstr "Sekunden"
 
-#: src/alarm/interface.c:1097 src/alarm/interface.c:1213
+#: src/alarm/interface.c:1097
+#: src/alarm/interface.c:1213
 #: src/modplug/gui/interface.cxx:635
 msgid "Volume"
 msgstr "Lautstärke"
@@ -444,7 +504,8 @@
 msgid "Start at"
 msgstr "Beginnen bei"
 
-#: src/alarm/interface.c:1160 src/alarm/interface.c:1204
+#: src/alarm/interface.c:1160
+#: src/alarm/interface.c:1204
 msgid "%"
 msgstr "%"
 
@@ -468,7 +529,8 @@
 msgid "Browse..."
 msgstr "Suchen..."
 
-#: src/alarm/interface.c:1297 src/alarm/interface.c:1462
+#: src/alarm/interface.c:1297
+#: src/alarm/interface.c:1462
 msgid "Reminder"
 msgstr "Erinnerung"
 
@@ -476,7 +538,8 @@
 msgid "Use reminder"
 msgstr "Erinnerung benützen"
 
-#: src/alarm/interface.c:1330 src/sndstretch/sndstretch_xmms.c:381
+#: src/alarm/interface.c:1330
+#: src/sndstretch/sndstretch_xmms.c:381
 msgid "Options"
 msgstr "Optionen"
 
@@ -589,14 +652,16 @@
 msgid "ALSA Driver configuration"
 msgstr "ALSA-Treiber-Konfiguration"
 
-#: src/alsa/configure.c:285 src/OSS4/configure.c:186 src/OSS/configure.c:218
+#: src/alsa/configure.c:285
+#: src/OSS4/configure.c:186
+#: src/OSS/configure.c:218
 #: src/sun/configure.c:183
 msgid "Audio device:"
 msgstr "Audiogerät:"
 
 #: src/alsa/configure.c:299
 msgid "Mixer:"
-msgstr ""
+msgstr "Mixer:"
 
 #: src/alsa/configure.c:307
 msgid "Use software volume control"
@@ -604,11 +669,13 @@
 
 #: src/alsa/configure.c:317
 msgid "Mixer card:"
-msgstr ""
-
-#: src/alsa/configure.c:330 src/OSS/configure.c:261 src/sun/configure.c:220
+msgstr "Mixer-Karte:"
+
+#: src/alsa/configure.c:330
+#: src/OSS/configure.c:261
+#: src/sun/configure.c:220
 msgid "Mixer device:"
-msgstr ""
+msgstr "Mixer-Gerät:"
 
 #: src/alsa/configure.c:350
 msgid "Device settings"
@@ -627,71 +694,62 @@
 msgid "Period time (ms):"
 msgstr "Puffergrösse (ms):"
 
-#: src/alsa/configure.c:398 src/amidi-plug/i_configure-ap.c:287
+#: src/alsa/configure.c:398
+#: src/amidi-plug/i_configure-ap.c:287
 msgid "Advanced settings"
 msgstr "Erweiterte Einstellungen"
 
 #: src/amidi-plug/backend-alsa/b-alsa.c:35
 msgid "ALSA Backend "
-msgstr ""
+msgstr "ALSA-Backend "
 
 #: src/amidi-plug/backend-alsa/b-alsa.c:37
 msgid ""
-"This backend sends MIDI events to a group of user-chosen ALSA sequencer "
-"ports. The ALSA sequencer interface is very versatile, it can provide ports "
-"for audio cards hardware synthesizers (i.e. emu10k1) but also for software "
-"synths, external devices, etc.\n"
-"This backend does not produce audio, MIDI events are handled directly from "
-"devices/programs behind the ALSA ports; in example, MIDI events sent to the "
-"hardware synth will be directly played.\n"
+"This backend sends MIDI events to a group of user-chosen ALSA sequencer ports. The ALSA sequencer interface is very versatile, it can provide ports for audio cards hardware synthesizers (i.e. emu10k1) but also for software synths, external devices, etc.\n"
+"This backend does not produce audio, MIDI events are handled directly from devices/programs behind the ALSA ports; in example, MIDI events sent to the hardware synth will be directly played.\n"
 "Backend written by Giacomo Lozito."
 msgstr ""
 
 #: src/amidi-plug/backend-dummy/b-dummy.c:35
 msgid "Dummy Backend "
-msgstr ""
+msgstr "Dummy-Backend "
 
 #: src/amidi-plug/backend-dummy/b-dummy.c:37
 msgid ""
-"This backend does not produce audio at all. It is mostly useful for analysis "
-"and testing purposes, as it can log all MIDI events to standard output, "
-"standard error or file.\n"
+"This backend does not produce audio at all. It is mostly useful for analysis and testing purposes, as it can log all MIDI events to standard output, standard error or file.\n"
 "Backend written by Giacomo Lozito."
 msgstr ""
 
 #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:35
 msgid "FluidSynth Backend "
-msgstr ""
+msgstr "FluidSynth-Backend "
 
 #: src/amidi-plug/backend-fluidsynth/b-fluidsynth.c:37
 msgid ""
-"This backend produces audio by sending MIDI events to FluidSynth, a real-"
-"time software synthesizer based on the SoundFont2 specification (www."
-"fluidsynth.org).\n"
-"Produced audio can be manipulated via player effect plugins and is processed "
-"by chosen ouput plugin.\n"
+"This backend produces audio by sending MIDI events to FluidSynth, a real-time software synthesizer based on the SoundFont2 specification (www.fluidsynth.org).\n"
+"Produced audio can be manipulated via player effect plugins and is processed by chosen ouput plugin.\n"
 "Backend written by Giacomo Lozito."
 msgstr ""
 
 #: src/amidi-plug/i_configure-alsa.c:221
 msgid "ALSA BACKEND CONFIGURATION"
-msgstr ""
+msgstr "ALSA-Backend-Konfiguration"
 
 #: src/amidi-plug/i_configure-alsa.c:326
 msgid "Port"
-msgstr ""
+msgstr "Port"
 
 #: src/amidi-plug/i_configure-alsa.c:328
 msgid "Client name"
-msgstr ""
+msgstr "Client-Name"
 
 #: src/amidi-plug/i_configure-alsa.c:330
 msgid "Port name"
-msgstr ""
+msgstr "Portname"
 
 #: src/amidi-plug/i_configure-alsa.c:341
 msgid "ALSA output ports"
-msgstr ""
+msgstr "ALSA-Ausgabe-Ports"
 
 #: src/amidi-plug/i_configure-alsa.c:394
 msgid "Soundcard: "
@@ -703,37 +761,29 @@
 
 #: src/amidi-plug/i_configure-alsa.c:408
 msgid "Mixer settings"
-msgstr ""
+msgstr "Mixer-Einstellungen"
 
 #: src/amidi-plug/i_configure-alsa.c:421
 msgid ""
 "* Select ALSA output ports *\n"
-"MIDI events will be sent to the ports selected here. In example, if your "
-"audio card provides a hardware synth and you want to play MIDI with it, "
-"you'll probably want to select the wavetable synthesizer ports."
+"MIDI events will be sent to the ports selected here. In example, if your audio card provides a hardware synth and you want to play MIDI with it, you'll probably want to select the wavetable synthesizer ports."
 msgstr ""
 
 #: src/amidi-plug/i_configure-alsa.c:426
 msgid ""
 "* Select ALSA mixer card *\n"
-"The ALSA backend outputs directly through ALSA, it doesn't use effect and "
-"ouput plugins from the player. During playback, the player volumeslider will "
-"manipulate the mixer control you select here. If you're using wavetable "
-"synthesizer ports, you'll probably want to select the Synth control here."
+"The ALSA backend outputs directly through ALSA, it doesn't use effect and ouput plugins from the player. During playback, the player volumeslider will manipulate the mixer control you select here. If you're using wavetable synthesizer ports, you'll probably want to select the Synth control here."
 msgstr ""
 
 #: src/amidi-plug/i_configure-alsa.c:433
 msgid ""
 "* Select ALSA mixer control *\n"
-"The ALSA backend outputs directly through ALSA, it doesn't use effect and "
-"ouput plugins from the player. During playback, the player volume slider "
-"will manipulate the mixer control you select here. If you're using wavetable "
-"synthesizer ports, you'll probably want to select the Synth control here."
+"The ALSA backend outputs directly through ALSA, it doesn't use effect and ouput plugins from the player. During playback, the player volume slider will manipulate the mixer control you select here. If you're using wavetable synthesizer ports, you'll probably want to select the Synth control here."
 msgstr ""
 
 #: src/amidi-plug/i_configure-alsa.c:444
 msgid "ALSA Backend not loaded or not available"
-msgstr ""
+msgstr "ALSA-Backend nicht geladen oder nicht verfügbar"
 
 #: src/amidi-plug/i_configure-alsa.c:463
 msgid ""
@@ -743,27 +793,27 @@
 
 #: src/amidi-plug/i_configure-ap.c:56
 msgid "AMIDI-Plug - backend information"
-msgstr ""
+msgstr "AMIDI-Plug - Backend-Information"
 
 #: src/amidi-plug/i_configure-ap.c:194
 msgid "AMIDI-PLUG PREFERENCES"
-msgstr ""
+msgstr "AMIDI-Plug-Einstellungen"
 
 #: src/amidi-plug/i_configure-ap.c:221
 msgid "Backend selection"
-msgstr ""
+msgstr "Backend-Auswahl"
 
 #: src/amidi-plug/i_configure-ap.c:225
 msgid "Available backends"
-msgstr ""
+msgstr "Verfügbare backends"
 
 #: src/amidi-plug/i_configure-ap.c:255
 msgid "Playback settings"
-msgstr ""
+msgstr "Wiedergabeeinstellungen"
 
 #: src/amidi-plug/i_configure-ap.c:260
 msgid "Transpose: "
-msgstr ""
+msgstr "Transponieren: "
 
 #: src/amidi-plug/i_configure-ap.c:269
 msgid "Drum shift: "
@@ -784,63 +834,40 @@
 #: src/amidi-plug/i_configure-ap.c:320
 msgid ""
 "* Backend selection *\n"
-"AMIDI-Plug works with backends, in a modular fashion; here you should select "
-"your backend; that is, the way MIDI events are going to be handled and "
-"played.\n"
-"If you have a hardware synthesizer on your audio card, and ALSA supports it, "
-"you'll want to use the ALSA backend. It can also be used with anything that "
-"provides an interface to the ALSA sequencer, including software synths or "
-"external devices.\n"
-"If you want to rely on a software synthesizer and/or want to pipe audio into "
-"effect and output plugins of the player you'll want to use the good "
-"FluidSynth backend.\n"
+"AMIDI-Plug works with backends, in a modular fashion; here you should select your backend; that is, the way MIDI events are going to be handled and played.\n"
+"If you have a hardware synthesizer on your audio card, and ALSA supports it, you'll want to use the ALSA backend. It can also be used with anything that provides an interface to the ALSA sequencer, including software synths or external devices.\n"
+"If you want to rely on a software synthesizer and/or want to pipe audio into effect and output plugins of the player you'll want to use the good FluidSynth backend.\n"
 "Press the info button to read specific information about each backend."
 msgstr ""
 
 #: src/amidi-plug/i_configure-ap.c:331
 msgid ""
 "* Transpose function *\n"
-"This option allows you to play the midi file transposed in a different key, "
-"by shifting of the desired number of semitones all its notes (excepting "
-"those on midi channel 10, reserved for percussions). Expecially useful if "
-"you wish to sing or play along with another instrument."
+"This option allows you to play the midi file transposed in a different key, by shifting of the desired number of semitones all its notes (excepting those on midi channel 10, reserved for percussions). Expecially useful if you wish to sing or play along with another instrument."
 msgstr ""
 
 #: src/amidi-plug/i_configure-ap.c:337
 msgid ""
 "* Drumshift function *\n"
-"This option allows you to shift notes on midi channel 10 (the standard "
-"percussions channel) of the desired number of semitones. This results in "
-"different drumset and percussions being used during midi playback, so if you "
-"wish to enhance (or reduce, or alter) percussion sounds, try to play with "
-"this value."
+"This option allows you to shift notes on midi channel 10 (the standard percussions channel) of the desired number of semitones. This results in different drumset and percussions being used during midi playback, so if you wish to enhance (or reduce, or alter) percussion sounds, try to play with this value."
 msgstr ""
 
 #: src/amidi-plug/i_configure-ap.c:344
 msgid ""
 "* Pre-calculate MIDI length *\n"
-"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as "
-"soon as the player requests it, instead of doing that only when the MIDI "
-"file is being played. In example, MIDI length will be calculated straight "
-"after adding MIDI files in a playlist. Disable this option if you want "
-"faster playlist loading (when a lot of MIDI files are added), enable it to "
-"display more information in the playlist straight after loading."
+"If this option is enabled, AMIDI-Plug will calculate the MIDI file length as soon as the player requests it, instead of doing that only when the MIDI file is being played. In example, MIDI length will be calculated straight after adding MIDI files in a playlist. Disable this option if you want faster playlist loading (when a lot of MIDI files are added), enable it to display more information in the playlist straight after loading."
 msgstr ""
 
 #: src/amidi-plug/i_configure-ap.c:353
 msgid ""
 "* Extract comments from MIDI files *\n"
-"Some MIDI files contain text comments (author, copyright, instrument notes, "
-"etc.). If this option is enabled, AMIDI-Plug will extract and display "
-"comments (if available) in the file information dialog."
+"Some MIDI files contain text comments (author, copyright, instrument notes, etc.). If this option is enabled, AMIDI-Plug will extract and display comments (if available) in the file information dialog."
 msgstr ""
 
 #: src/amidi-plug/i_configure-ap.c:358
 msgid ""
 "* Extract lyrics from MIDI files *\n"
-"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug "
-"will extract and display song lyrics (if available) in the file information "
-"dialog."
+"Some MIDI files contain song lyrics. If this option is enabled, AMIDI-Plug will extract and display song lyrics (if available) in the file information dialog."
 msgstr ""
 
 #: src/amidi-plug/i_configure-ap.c:375
@@ -863,11 +890,11 @@
 
 #: src/amidi-plug/i_configure.c:242
 msgid "Please stop the player before changing AMIDI-Plug settings."
-msgstr ""
+msgstr "Bitte den Player stoppen vor Änderung der AMIDI-Plug-Einstellungen."
 
 #: src/amidi-plug/i_configure-dummy.c:137
 msgid "DUMMY BACKEND CONFIGURATION"
-msgstr ""
+msgstr "Dummy-Backend-Konfiguration"
 
 #: src/amidi-plug/i_configure-dummy.c:173
 msgid "MIDI logger settings"
@@ -942,7 +969,7 @@
 
 #: src/amidi-plug/i_configure-fluidsynth.c:83
 msgid "AMIDI-Plug - select SoundFont file"
-msgstr ""
+msgstr "AMIDI-Plug - SoundFont-Datei wählen"
 
 #: src/amidi-plug/i_configure-fluidsynth.c:362
 msgid "FLUIDSYNTH BACKEND CONFIGURATION"
@@ -950,7 +977,7 @@
 
 #: src/amidi-plug/i_configure-fluidsynth.c:416
 msgid "SoundFont settings"
-msgstr ""
+msgstr "SoundFont-Einstellungen"
 
 #: src/amidi-plug/i_configure-fluidsynth.c:452
 msgid "Size (bytes)"
@@ -958,15 +985,15 @@
 
 #: src/amidi-plug/i_configure-fluidsynth.c:501
 msgid "Load SF on player start"
-msgstr ""
+msgstr "SF beim Player-Start laden"
 
 #: src/amidi-plug/i_configure-fluidsynth.c:505
 msgid "Load SF on first midifile play"
-msgstr ""
+msgstr "SF beim Abspielen der ersten MIDI-Datei laden"
 
 #: src/amidi-plug/i_configure-fluidsynth.c:520
 msgid "Synthesizer settings"
-msgstr ""
+msgstr "Synthesizer-Einstellungen"
 
 #: src/amidi-plug/i_configure-fluidsynth.c:529
 msgid "gain"
@@ -1057,69 +1084,45 @@
 #: src/amidi-plug/i_configure-fluidsynth.c:807
 msgid ""
 "* Select SoundFont files *\n"
-"In order to play MIDI with FluidSynth, you need to specify at least one "
-"valid SoundFont file here (use absolute paths). The loading order is from "
-"the top (first) to the bottom (last)."
+"In order to play MIDI with FluidSynth, you need to specify at least one valid SoundFont file here (use absolute paths). The loading order is from the top (first) to the bottom (last)."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:812
 msgid ""
 "* Load SoundFont on player start *\n"
-"Depending on your system speed, SoundFont loading in FluidSynth will require "
-"up to a few seconds. This is a one-time task (the soundfont will stay loaded "
-"until it is changed or the backend is unloaded) that can be done at player "
-"start, or before the first MIDI file is played (the latter is a better "
-"choice if you don't use your player to listen MIDI files only)."
+"Depending on your system speed, SoundFont loading in FluidSynth will require up to a few seconds. This is a one-time task (the soundfont will stay loaded until it is changed or the backend is unloaded) that can be done at player start, or before the first MIDI file is played (the latter is a better choice if you don't use your player to listen MIDI files only)."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:820
 msgid ""
 "* Load SoundFont on first midifile play *\n"
-"Depending on your system speed, SoundFont loading in FluidSynth will require "
-"up to a few seconds. This is a one-time task (the soundfont will stay loaded "
-"until it is changed or the backend is unloaded) that can be done at player "
-"start, or before the first MIDI file is played (the latter is a better "
-"choice if you don't use your player to listen MIDI files only)."
+"Depending on your system speed, SoundFont loading in FluidSynth will require up to a few seconds. This is a one-time task (the soundfont will stay loaded until it is changed or the backend is unloaded) that can be done at player start, or before the first MIDI file is played (the latter is a better choice if you don't use your player to listen MIDI files only)."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:828
 msgid ""
 "* Synthesizer gain *\n"
-"From FluidSynth docs: the gain is applied to the final or master output of "
-"the synthesizer; it is set to a low value by default to avoid the saturation "
-"of the output when random MIDI files are played."
+"From FluidSynth docs: the gain is applied to the final or master output of the synthesizer; it is set to a low value by default to avoid the saturation of the output when random MIDI files are played."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:833
 msgid ""
 "* Synthesizer polyphony *\n"
-"From FluidSynth docs: the polyphony defines how many voices can be played in "
-"parallel; the number of voices is not necessarily equivalent to the number "
-"of notes played simultaneously; indeed, when a note is struck on a specific "
-"MIDI channel, the preset on that channel may create several voices, for "
-"example, one for the left audio channel and one for the right audio "
-"channels; the number of voices activated depends on the number of instrument "
-"zones that fall in the correspond to the velocity and key of the played note."
+"From FluidSynth docs: the polyphony defines how many voices can be played in parallel; the number of voices is not necessarily equivalent to the number of notes played simultaneously; indeed, when a note is struck on a specific MIDI channel, the preset on that channel may create several voices, for example, one for the left audio channel and one for the right audio channels; the number of voices activated depends on the number of instrument zones that fall in the correspond to the velocity and key of the played note."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:843
 #: src/amidi-plug/i_configure-fluidsynth.c:849
 msgid ""
 "* Synthesizer reverb *\n"
-"From FluidSynth docs: when set to \"yes\" the reverb effects module is "
-"activated; note that when the reverb module is active, the amount of signal "
-"sent to the reverb module depends on the \"reverb send\" generator defined "
-"in the SoundFont."
+"From FluidSynth docs: when set to \"yes\" the reverb effects module is activated; note that when the reverb module is active, the amount of signal sent to the reverb module depends on the \"reverb send\" generator defined in the SoundFont."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:855
 #: src/amidi-plug/i_configure-fluidsynth.c:861
 msgid ""
 "* Synthesizer chorus *\n"
-"From FluidSynth docs: when set to \"yes\" the chorus effects module is "
-"activated; note that when the chorus module is active, the amount of signal "
-"sent to the chorus module depends on the \"chorus send\" generator defined "
-"in the SoundFont."
+"From FluidSynth docs: when set to \"yes\" the chorus effects module is activated; note that when the chorus module is active, the amount of signal sent to the chorus module depends on the \"chorus send\" generator defined in the SoundFont."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:867
@@ -1128,10 +1131,8 @@
 #: src/amidi-plug/i_configure-fluidsynth.c:885
 msgid ""
 "* Synthesizer samplerate *\n"
-"The sample rate of the audio generated by the synthesizer. You can also "
-"specify a custom value in the interval 22050Hz-96000Hz.\n"
-"NOTE: the default buffer parameters are tuned for 44100Hz; changing the "
-"sample rate may require buffer params tuning to obtain good sound quality."
+"The sample rate of the audio generated by the synthesizer. You can also specify a custom value in the interval 22050Hz-96000Hz.\n"
+"NOTE: the default buffer parameters are tuned for 44100Hz; changing the sample rate may require buffer params tuning to obtain good sound quality."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:891
@@ -1143,10 +1144,7 @@
 #: src/amidi-plug/i_configure-fluidsynth.c:894
 msgid ""
 "* FluidSynth backend buffer *\n"
-"If you notice skips or slowness during song playback and your system is not "
-"performing any cpu-intensive task (except FluidSynth itself), you may want "
-"to adjust the buffer parameters. Try to move the \"handy buffer tuner\" some "
-"steps to the right until playback is fluid again."
+"If you notice skips or slowness during song playback and your system is not performing any cpu-intensive task (except FluidSynth itself), you may want to adjust the buffer parameters. Try to move the \"handy buffer tuner\" some steps to the right until playback is fluid again."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:900
@@ -1154,16 +1152,10 @@
 #: src/amidi-plug/i_configure-fluidsynth.c:922
 msgid ""
 "* FluidSynth backend buffer *\n"
-"It is a good idea to make buffer adjustments with the \"handy buffer tuner\" "
-"before resorting to manual editing of buffer parameters.\n"
-"However, if you want to fine-tune something and want to know what you're "
-"doing, you can understand how these parameters work by reading the backend "
-"code (b-fluidsynth.c). In short words, every amount of time (proportional to "
-"buffer_SIZE and sample rate), right before gathering samples, the buffer is "
-"resized as follows:\n"
+"It is a good idea to make buffer adjustments with the \"handy buffer tuner\" before resorting to manual editing of buffer parameters.\n"
+"However, if you want to fine-tune something and want to know what you're doing, you can understand how these parameters work by reading the backend code (b-fluidsynth.c). In short words, every amount of time (proportional to buffer_SIZE and sample rate), right before gathering samples, the buffer is resized as follows:\n"
 "buffer_SIZE + buffer_MARGIN + extramargin\n"
-"where extramargin is a value computed as number_of_seconds_of_playback / "
-"margin_INCREMENT ."
+"where extramargin is a value computed as number_of_seconds_of_playback / margin_INCREMENT ."
 msgstr ""
 
 #: src/amidi-plug/i_configure-fluidsynth.c:937
@@ -1178,11 +1170,11 @@
 
 #: src/amidi-plug/i_configure-timidity.c:39
 msgid "TIMIDITY BACKEND CONFIGURATION"
-msgstr ""
+msgstr "Timidity-Backend-Konfiguration"
 
 #: src/amidi-plug/i_configure-timidity.c:64
 msgid "TiMidity Backend not loaded or not available"
-msgstr ""
+msgstr "TiMidity-Backend nicht geladen oder nicht verfügbar"
 
 #: src/amidi-plug/i_configure-timidity.c:83
 msgid ""
@@ -1190,8 +1182,10 @@
 "backend</span>"
 msgstr ""
 
-#: src/amidi-plug/i_fileinfo.c:169 src/sid/xmms-sid.glade:3315
-#: src/sid/xs_interface.c:1615 src/vorbis/fileinfo.c:562
+#: src/amidi-plug/i_fileinfo.c:169
+#: src/sid/xmms-sid.glade:3315
+#: src/sid/xs_interface.c:1615
+#: src/vorbis/fileinfo.c:562
 msgid "Name:"
 msgstr "Name:"
 
@@ -1201,7 +1195,7 @@
 
 #: src/amidi-plug/i_fileinfo.c:205
 msgid "Format:"
-msgstr ""
+msgstr "Format:"
 
 #: src/amidi-plug/i_fileinfo.c:208
 msgid "Length (msec):"
@@ -1209,7 +1203,7 @@
 
 #: src/amidi-plug/i_fileinfo.c:211
 msgid "Num of Tracks:"
-msgstr ""
+msgstr "Anzahl von Tracks:"
 
 #: src/amidi-plug/i_fileinfo.c:216
 msgid "variable"
@@ -1252,6 +1246,8 @@
 "\n"
 "AMIDI-Plug "
 msgstr ""
+"\n"
+"AMIDI-Plug "
 
 #: src/amidi-plug/i_utils.c:69
 msgid ""
@@ -1307,10 +1303,7 @@
 msgstr "Titeländerung"
 
 #: src/aosd/aosd_trigger.c:79
-msgid ""
-"Triggers OSD when, during playback, the song title changes but the filename "
-"is the same. This is mostly useful to display title changes in internet "
-"streams."
+msgid "Triggers OSD when, during playback, the song title changes but the filename is the same. This is mostly useful to display title changes in internet streams."
 msgstr ""
 
 #: src/aosd/aosd_trigger.c:85
@@ -1432,9 +1425,12 @@
 msgid "Skin file:"
 msgstr "Skin-Datei:"
 
-#: src/aosd/aosd_ui.c:641 src/sid/xmms-sid.glade:2331
-#: src/sid/xmms-sid.glade:2706 src/sid/xmms-sid.glade:2812
-#: src/sid/xs_interface.c:1002 src/sid/xs_interface.c:1124
+#: src/aosd/aosd_ui.c:641
+#: src/sid/xmms-sid.glade:2331
+#: src/sid/xmms-sid.glade:2706
+#: src/sid/xmms-sid.glade:2812
+#: src/sid/xs_interface.c:1002
+#: src/sid/xs_interface.c:1124
 #: src/sid/xs_interface.c:1160
 msgid "Browse"
 msgstr "Suchen"
@@ -1454,8 +1450,7 @@
 #: src/aosd/aosd_ui.c:805
 msgid ""
 "Composite manager not detected;\n"
-"unless you know that you have one running, please activate a composite "
-"manager otherwise the OSD won't work properly"
+"unless you know that you have one running, please activate a composite manager otherwise the OSD won't work properly"
 msgstr ""
 
 #: src/aosd/aosd_ui.c:813
@@ -1515,8 +1510,10 @@
 msgid "Trigger"
 msgstr "Auslöser"
 
-#: src/aosd/aosd_ui.c:1073 src/cdaudio-ng/configure.c:87
-#: src/sid/xmms-sid.glade:2876 src/sid/xs_interface.c:1171
+#: src/aosd/aosd_ui.c:1073
+#: src/cdaudio-ng/configure.c:87
+#: src/sid/xmms-sid.glade:2876
+#: src/sid/xs_interface.c:1171
 msgid "Misc"
 msgstr "Verschiedenes"
 
@@ -1559,18 +1556,27 @@
 msgid "aRts Driver configuration"
 msgstr "aRts-Treiber-Konfiguration"
 
-#: src/arts/configure.c:61 src/esd/configure.c:171 src/OSS4/configure.c:232
-#: src/OSS/configure.c:305 src/sun/configure.c:259
+#: src/arts/configure.c:61
+#: src/esd/configure.c:171
+#: src/OSS4/configure.c:232
+#: src/OSS/configure.c:305
+#: src/sun/configure.c:259
 msgid "Buffering:"
 msgstr "Zwischenspeichern:"
 
-#: src/arts/configure.c:73 src/esd/configure.c:184 src/OSS4/configure.c:245
-#: src/OSS/configure.c:318 src/sun/configure.c:272
+#: src/arts/configure.c:73
+#: src/esd/configure.c:184
+#: src/OSS4/configure.c:245
+#: src/OSS/configure.c:318
+#: src/sun/configure.c:272
 msgid "Buffer size (ms):"
 msgstr "Puffergrösse (ms):"
 
-#: src/arts/configure.c:83 src/esd/configure.c:209 src/OSS4/configure.c:270
-#: src/OSS/configure.c:343 src/sun/configure.c:304
+#: src/arts/configure.c:83
+#: src/esd/configure.c:209
+#: src/OSS4/configure.c:270
+#: src/OSS/configure.c:343
+#: src/sun/configure.c:304
 msgid "Buffering"
 msgstr "Zwischenspeichern"
 
@@ -1593,10 +1599,7 @@
 msgstr "Ãœber AudioCompress"
 
 #: src/audiocompress/audacious-glue.c:324
-msgid ""
-"If checked, when the sound peaks the volume will be cut instantly; "
-"otherwise, it will ramp down just in time for the peak (but some minor "
-"clipping may still occur)."
+msgid "If checked, when the sound peaks the volume will be cut instantly; otherwise, it will ramp down just in time for the peak (but some minor clipping may still occur)."
 msgstr ""
 
 #: src/audiocompress/audacious-glue.c:328
@@ -1608,9 +1611,7 @@
 msgstr ""
 
 #: src/audiocompress/audacious-glue.c:332
-msgid ""
-"The target audio level for ramping up. Lowering the value gives a bit more "
-"dynamic range for peaks, but will make the overall sound quieter."
+msgid "The target audio level for ramping up. Lowering the value gives a bit more dynamic range for peaks, but will make the overall sound quieter."
 msgstr ""
 
 #: src/audiocompress/audacious-glue.c:335
@@ -1650,21 +1651,21 @@
 msgstr " Chronik "
 
 #: src/audiocompress/audacious-glue.c:521
-msgid ""
-"How long of a history to maintain.  A higher number will make the volume "
-"changes less responsive."
+msgid "How long of a history to maintain.  A higher number will make the volume changes less responsive."
 msgstr ""
 
 #: src/audiocompress/audacious-glue.c:532
 msgid "Load default values"
-msgstr ""
+msgstr "Standard-Werte laden"
 
 #: src/audiocompress/audacious-glue.c:537
 msgid "Audio values"
 msgstr "Audiowerte"
 
-#: src/audiocompress/audacious-glue.c:566 src/echo_plugin/gui.c:153
-#: src/modplug/gui/interface.cxx:733 src/stereo_plugin/stereo.c:135
+#: src/audiocompress/audacious-glue.c:566
+#: src/echo_plugin/gui.c:153
+#: src/modplug/gui/interface.cxx:733
+#: src/stereo_plugin/stereo.c:135
 msgid "Apply"
 msgstr "Ãœbernehmen"
 
@@ -1686,9 +1687,10 @@
 
 #: src/blur_scope/config.c:73
 msgid "Blur Scope: Color selection"
-msgstr ""
-
-#: src/blur_scope/config.c:83 src/jack/configure.c:107
+msgstr "Blur Scope: Farbauswahl"
+
+#: src/blur_scope/config.c:83
+#: src/jack/configure.c:107
 msgid "Options:"
 msgstr "Optionen:"
 
@@ -1699,8 +1701,7 @@
 #: src/cdaudio-ng/cdaudio-ng.c:201
 #, c-format
 msgid ""
-"Copyright (c) 2007, by Calin Crisan <ccrisan@gmail.com> and The Audacious "
-"Team.\n"
+"Copyright (c) 2007, by Calin Crisan <ccrisan@gmail.com> and The Audacious Team.\n"
 "\n"
 "Many thanks to libcdio developers <http://www.gnu.org/software/libcdio/>\n"
 "\tand to libcddb developers <http://libcddb.sourceforge.net/>.\n"
@@ -1772,7 +1773,8 @@
 msgid "Bass:"
 msgstr "Bass:"
 
-#: src/console/Audacious_Config.cxx:167 src/console/Audacious_Config.cxx:178
+#: src/console/Audacious_Config.cxx:167
+#: src/console/Audacious_Config.cxx:178
 #: src/console/Audacious_Config.cxx:199
 msgid "secs"
 msgstr "sek"
@@ -1785,8 +1787,10 @@
 msgid "Default song length:"
 msgstr "Standard-Liedlänge:"
 
-#: src/console/Audacious_Config.cxx:201 src/modplug/gui/interface.cxx:264
-#: src/sid/xmms-sid.glade:1243 src/sid/xs_interface.c:645
+#: src/console/Audacious_Config.cxx:201
+#: src/modplug/gui/interface.cxx:264
+#: src/sid/xmms-sid.glade:1243
+#: src/sid/xs_interface.c:645
 msgid "Resampling"
 msgstr "Resampling"
 
@@ -1811,12 +1815,8 @@
 msgstr "Hall verstärken"
 
 #: src/console/Audacious_Config.cxx:264
-msgid ""
-"The default song length, expressed in seconds, is used for songs that do not "
-"provide length information (i.e. looping tracks)."
-msgstr ""
-"Die standardmäßige Liedlänge (in Sekunden) wird für Lieder benutzt, die "
-"keine Längeninformation beinhalten (z.B. Lieder in der Endlosschleife)."
+msgid "The default song length, expressed in seconds, is used for songs that do not provide length information (i.e. looping tracks)."
+msgstr "Die standardmäßige Liedlänge (in Sekunden) wird für Lieder benutzt, die keine Längeninformation beinhalten (z.B. Lieder in der Endlosschleife)."
 
 #: src/console/Audacious_Driver.cxx:495
 msgid "About the Console Music Decoder"
@@ -1890,9 +1890,10 @@
 msgid "ESD Output Plugin configuration"
 msgstr "ESD-Ausgabe-Plugin-Konfiguration"
 
-#: src/esd/configure.c:114 src/esd/configure.c:144
+#: src/esd/configure.c:114
+#: src/esd/configure.c:144
 msgid "Host:"
-msgstr ""
+msgstr "Host:"
 
 #: src/esd/configure.c:125
 msgid "Use remote host"
@@ -1910,7 +1911,9 @@
 msgid "Server"
 msgstr "Server"
 
-#: src/esd/configure.c:198 src/OSS4/configure.c:259 src/OSS/configure.c:332
+#: src/esd/configure.c:198
+#: src/OSS4/configure.c:259
+#: src/OSS/configure.c:332
 #: src/sun/configure.c:290
 msgid "Pre-buffer (percent):"
 msgstr ""
@@ -1985,34 +1988,24 @@
 
 #: src/evdev-plug/ed_internals.c:93
 #, c-format
-msgid ""
-"event-device-plugin: unable to open device file %s , skipping this device; "
-"check that the file exists and that you have read permission for it\n"
+msgid "event-device-plugin: unable to open device file %s , skipping this device; check that the file exists and that you have read permission for it\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:102
 #, c-format
-msgid ""
-"event-device-plugin: unable to create a io_channel for device file %s ,"
-"skipping this device\n"
+msgid "event-device-plugin: unable to create a io_channel for device file %s ,skipping this device\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:339
-msgid ""
-"event-device-plugin: unable to open /proc/bus/input/devices , automatic "
-"detection of event devices won't work.\n"
+msgid "event-device-plugin: unable to open /proc/bus/input/devices , automatic detection of event devices won't work.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:348
-msgid ""
-"event-device-plugin: unable to open a io_channel for /proc/bus/input/"
-"devices , automatic detection of event devices won't work.\n"
+msgid "event-device-plugin: unable to open a io_channel for /proc/bus/input/devices , automatic detection of event devices won't work.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:358
-msgid ""
-"event-device-plugin: an error occurred while reading /proc/bus/input/"
-"devices , automatic detection of event devices won't work.\n"
+msgid "event-device-plugin: an error occurred while reading /proc/bus/input/devices , automatic detection of event devices won't work.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:421
@@ -2020,63 +2013,50 @@
 msgid "event-device-plugin: device %s not found in /dev/input , skipping.\n"
 msgstr ""
 
-#: src/evdev-plug/ed_internals.c:486 src/evdev-plug/ed_internals.c:580
+#: src/evdev-plug/ed_internals.c:486
+#: src/evdev-plug/ed_internals.c:580
 #, c-format
-msgid ""
-"event-device-plugin: unable to load config file %s , default settings will "
-"be used.\n"
+msgid "event-device-plugin: unable to load config file %s , default settings will be used.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:532
 #, c-format
-msgid ""
-"event-device-plugin: incomplete information in config file for device \"%s"
-"\" , skipping.\n"
-msgstr ""
-
-#: src/evdev-plug/ed_internals.c:601 src/evdev-plug/ed_internals.c:933
+msgid "event-device-plugin: incomplete information in config file for device \"%s\" , skipping.\n"
+msgstr ""
+
+#: src/evdev-plug/ed_internals.c:601
+#: src/evdev-plug/ed_internals.c:933
 #, c-format
-msgid ""
-"event-device-plugin: configuration, unable to get is_active value for device "
-"\"%s\", skipping it.\n"
+msgid "event-device-plugin: configuration, unable to get is_active value for device \"%s\", skipping it.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:837
 #, c-format
-msgid ""
-"event-device-plugin: unable to access local directory %s , settings will not "
-"be saved.\n"
+msgid "event-device-plugin: unable to access local directory %s , settings will not be saved.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:887
 #, c-format
-msgid ""
-"event-device-plugin: configuration, unable to get filename value for device "
-"\"%s\", skipping it.\n"
+msgid "event-device-plugin: configuration, unable to get filename value for device \"%s\", skipping it.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:903
 #, c-format
-msgid ""
-"event-device-plugin: configuration, unable to get phys value for device \"%s"
-"\", skipping it.\n"
+msgid "event-device-plugin: configuration, unable to get phys value for device \"%s\", skipping it.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:919
 #, c-format
-msgid ""
-"event-device-plugin: configuration, unable to get is_custom value for device "
-"\"%s\", skipping it.\n"
+msgid "event-device-plugin: configuration, unable to get is_custom value for device \"%s\", skipping it.\n"
 msgstr ""
 
 #: src/evdev-plug/ed_internals.c:943
 #, c-format
-msgid ""
-"event-device-plugin: configuration, unexpected value for device \"%s\", "
-"skipping it.\n"
-msgstr ""
-
-#: src/evdev-plug/ed_ui.c:274 src/evdev-plug/ed_ui.c:410
+msgid "event-device-plugin: configuration, unexpected value for device \"%s\", skipping it.\n"
+msgstr ""
+
+#: src/evdev-plug/ed_ui.c:274
+#: src/evdev-plug/ed_ui.c:410
 #: src/evdev-plug/ed_ui.c:872
 msgid "Information"
 msgstr "Information"
@@ -2087,7 +2067,8 @@
 "Ensure that the device has been correctly plugged in."
 msgstr ""
 
-#: src/evdev-plug/ed_ui.c:318 src/filewriter/filewriter.c:198
+#: src/evdev-plug/ed_ui.c:318
+#: src/filewriter/filewriter.c:198
 #: src/madplug/plugin.c:620
 msgid "Error"
 msgstr "Fehler"
@@ -2142,7 +2123,8 @@
 msgid "Active"
 msgstr ""
 
-#: src/evdev-plug/ed_ui.c:655 src/sun/configure.c:488
+#: src/evdev-plug/ed_ui.c:655
+#: src/sun/configure.c:488
 msgid "Status"
 msgstr "Status"
 
@@ -2173,8 +2155,7 @@
 msgid ""
 "This input event has been already assigned.\n"
 "\n"
-"It's not possible to assign multiple actions to the same input event "
-"(although it's possible to assign the same action to multiple events)."
+"It's not possible to assign multiple actions to the same input event (although it's possible to assign the same action to multiple events)."
 msgstr ""
 
 #: src/evdev-plug/ed_ui.c:1322
@@ -2244,7 +2225,8 @@
 msgid "Output file format:"
 msgstr "Ausgabedatei-Format:"
 
-#: src/filewriter/filewriter.c:544 src/ladspa/ladspa.c:962
+#: src/filewriter/filewriter.c:544
+#: src/ladspa/ladspa.c:962
 msgid "Configure"
 msgstr "Konfigurieren"
 
@@ -2281,12 +2263,8 @@
 msgstr "Dateiendung nicht entfernen"
 
 #: src/filewriter/filewriter.c:623
-msgid ""
-"If enabled, the extension from the original filename will not be stripped "
-"before adding the new file extension to the end."
-msgstr ""
-"Wenn aktiviert, wird die Erweiterung des ursprünglichen Dateinamens nicht "
-"entfernt, bevor die neue Dateierweiterung am Ende angefügt wird."
+msgid "If enabled, the extension from the original filename will not be stripped before adding the new file extension to the end."
+msgstr "Wenn aktiviert, wird die Erweiterung des ursprünglichen Dateinamens nicht entfernt, bevor die neue Dateierweiterung am Ende angefügt wird."
 
 #: src/filewriter/filewriter.c:637
 msgid "Prepend track number to filename"
@@ -2316,7 +2294,8 @@
 msgid "Output Samplerate:"
 msgstr "Ausgabe-Abtastfrequenz:"
 
-#: src/filewriter/mp3.c:743 src/filewriter/mp3.c:884
+#: src/filewriter/mp3.c:743
+#: src/filewriter/mp3.c:884
 msgid "Auto"
 msgstr "Automatisch"
 
@@ -2364,7 +2343,8 @@
 msgid "Adds 16 bit checksum to every frame"
 msgstr "16-Bit-Prüfsumme zu jedem Frame hinzufügen"
 
-#: src/filewriter/mp3.c:981 src/filewriter/vorbis.c:271
+#: src/filewriter/mp3.c:981
+#: src/filewriter/vorbis.c:271
 #: src/modplug/gui/interface.cxx:310
 msgid "Quality"
 msgstr "Qualität"
@@ -2402,12 +2382,8 @@
 msgstr "Minimale Bitrate erzwingen"
 
 #: src/filewriter/mp3.c:1128
-msgid ""
-"For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/"
-"mp3 player)"
-msgstr ""
-"Zur Benutzung mit Playern, die kein MP3 mit niedriger Bitrate unterstützen "
-"(Apex AD600-A DVD/MP3 player)"
+msgid "For use with players that do not support low bitrate mp3 (Apex AD600-A DVD/mp3 player)"
+msgstr "Zur Benutzung mit Playern, die kein MP3 mit niedriger Bitrate unterstützen (Apex AD600-A DVD/MP3 player)"
 
 #: src/filewriter/mp3.c:1141
 msgid "ABR Options:"
@@ -2545,7 +2521,8 @@
 "Chris Morgan <cmorgan@alum.wpi.edu>\n"
 msgstr ""
 
-#: src/jack/jack.c:118 src/wma/wma.c:156
+#: src/jack/jack.c:118
+#: src/wma/wma.c:156
 msgid " Close "
 msgstr " Schliessen"
 
@@ -2568,7 +2545,8 @@
 msgid "This LADSPA plugin has no user controls"
 msgstr ""
 
-#: src/ladspa/ladspa.c:769 src/ladspa/ladspa.c:855
+#: src/ladspa/ladspa.c:769
+#: src/ladspa/ladspa.c:855
 msgid "Name"
 msgstr "Name"
 
@@ -2697,12 +2675,15 @@
 msgid "Preamp (dB):"
 msgstr ""
 
-#: src/madplug/configure.c:233 src/musepack/libmpc.cxx:223
-#: src/vorbis/configure.c:221 src/wavpack/ui.cxx:545
+#: src/madplug/configure.c:233
+#: src/musepack/libmpc.cxx:223
+#: src/vorbis/configure.c:221
+#: src/wavpack/ui.cxx:545
 msgid "ReplayGain"
 msgstr "ReplayGain"
 
-#: src/madplug/configure.c:238 src/vorbis/configure.c:137
+#: src/madplug/configure.c:238
+#: src/vorbis/configure.c:137
 msgid "Override generic titles"
 msgstr ""
 
@@ -2710,21 +2691,23 @@
 msgid "ID3 format:"
 msgstr "ID3-Format:"
 
-#: src/madplug/configure.c:261 src/vorbis/configure.c:160
+#: src/madplug/configure.c:261
+#: src/vorbis/configure.c:160
 msgid "Title"
 msgstr "Titel"
 
-#: src/madplug/fileinfo.c:158 src/madplug/fileinfo.c:236
+#: src/madplug/fileinfo.c:158
+#: src/madplug/fileinfo.c:236
 msgid "File Info"
 msgstr "Dateiinformationen"
 
 #: src/madplug/fileinfo.c:158
 msgid "Couldn't open file!"
-msgstr ""
+msgstr "Konnte Datei nicht öffnen!"
 
 #: src/madplug/fileinfo.c:236
 msgid "Couldn't write tag!"
-msgstr ""
+msgstr "Konnte Tag nicht schreiben!"
 
 #: src/madplug/fileinfo.c:330
 msgid "<b>Name:</b>"
@@ -2738,38 +2721,57 @@
 msgid " ID3 Tag "
 msgstr "ID3-Tag"
 
-#: src/madplug/fileinfo.c:425 src/musepack/libmpc.cxx:513 src/tta/libtta.c:341
-#: src/vorbis/fileinfo.c:585 src/wavpack/ui.cxx:170
+#: src/madplug/fileinfo.c:425
+#: src/musepack/libmpc.cxx:513
+#: src/tta/libtta.c:341
+#: src/vorbis/fileinfo.c:585
+#: src/wavpack/ui.cxx:170
 msgid "Title:"
 msgstr "Titel:"
 
-#: src/madplug/fileinfo.c:435 src/musepack/libmpc.cxx:517 src/tta/libtta.c:351
-#: src/vorbis/fileinfo.c:596 src/wavpack/ui.cxx:182
+#: src/madplug/fileinfo.c:435
+#: src/musepack/libmpc.cxx:517
+#: src/tta/libtta.c:351
+#: src/vorbis/fileinfo.c:596
+#: src/wavpack/ui.cxx:182
 msgid "Artist:"
 msgstr "Künstler:"
 
-#: src/madplug/fileinfo.c:445 src/musepack/libmpc.cxx:521 src/tta/libtta.c:362
-#: src/vorbis/fileinfo.c:607 src/wavpack/ui.cxx:194
+#: src/madplug/fileinfo.c:445
+#: src/musepack/libmpc.cxx:521
+#: src/tta/libtta.c:362
+#: src/vorbis/fileinfo.c:607
+#: src/wavpack/ui.cxx:194
 msgid "Album:"
 msgstr "Album:"
 
-#: src/madplug/fileinfo.c:455 src/musepack/libmpc.cxx:525 src/tta/libtta.c:373
-#: src/vorbis/fileinfo.c:618 src/wavpack/ui.cxx:206
+#: src/madplug/fileinfo.c:455
+#: src/musepack/libmpc.cxx:525
+#: src/tta/libtta.c:373
+#: src/vorbis/fileinfo.c:618
+#: src/wavpack/ui.cxx:206
 msgid "Comment:"
 msgstr "Kommentar:"
 
-#: src/madplug/fileinfo.c:465 src/musepack/libmpc.cxx:529 src/tta/libtta.c:384
+#: src/madplug/fileinfo.c:465
+#: src/musepack/libmpc.cxx:529
+#: src/tta/libtta.c:384
 #: src/wavpack/ui.cxx:219
 msgid "Year:"
 msgstr "Jahr:"
 
-#: src/madplug/fileinfo.c:476 src/tta/libtta.c:396 src/vorbis/fileinfo.c:641
+#: src/madplug/fileinfo.c:476
+#: src/tta/libtta.c:396
+#: src/vorbis/fileinfo.c:641
 #: src/wavpack/ui.cxx:232
 msgid "Track number:"
 msgstr "Titelnummer:"
 
-#: src/madplug/fileinfo.c:487 src/musepack/libmpc.cxx:539 src/tta/libtta.c:408
-#: src/vorbis/fileinfo.c:653 src/wavpack/ui.cxx:246
+#: src/madplug/fileinfo.c:487
+#: src/musepack/libmpc.cxx:539
+#: src/tta/libtta.c:408
+#: src/vorbis/fileinfo.c:653
+#: src/wavpack/ui.cxx:246
 msgid "Genre:"
 msgstr "Genre:"
 
@@ -2777,7 +2779,9 @@
 msgid "Unknown"
 msgstr "Unbekannt"
 
-#: src/madplug/fileinfo.c:620 src/musepack/libmpc.cxx:633 src/tta/libtta.c:431
+#: src/madplug/fileinfo.c:620
+#: src/musepack/libmpc.cxx:633
+#: src/tta/libtta.c:431
 #: src/wavpack/ui.cxx:407
 #, c-format
 msgid "File Info - %s"
@@ -2793,7 +2797,8 @@
 msgid "VBR (avg. %d kbps)"
 msgstr ""
 
-#: src/madplug/fileinfo.c:660 src/vorbis/fileinfo.c:962
+#: src/madplug/fileinfo.c:660
+#: src/vorbis/fileinfo.c:962
 #, c-format
 msgid "%d Hz"
 msgstr "%d Hz"
@@ -2801,12 +2806,12 @@
 #: src/madplug/fileinfo.c:663
 #, c-format
 msgid "%d frames"
-msgstr ""
+msgstr "%d Frames"
 
 #: src/madplug/fileinfo.c:672
 #, c-format
 msgid "%d:%02d (%d seconds)"
-msgstr ""
+msgstr "%d:%02d (%d Sekunden)"
 
 #: src/madplug/fileinfo.c:677
 #, c-format
@@ -2873,25 +2878,29 @@
 "or   tact://60*3/4 to play 60 bpm in 3/4 tacts"
 msgstr ""
 
-#: src/metronom/metronom.c:199 src/metronom/metronom.c:263
+#: src/metronom/metronom.c:199
+#: src/metronom/metronom.c:263
 #, c-format
 msgid "Tact generator: %d bpm"
 msgstr "Takt-Generator: %d bpm"
 
-#: src/metronom/metronom.c:201 src/metronom/metronom.c:265
+#: src/metronom/metronom.c:201
+#: src/metronom/metronom.c:265
 #, c-format
 msgid "Tact generator: %d bpm %d/%d"
-msgstr ""
+msgstr "Takt-Generator: %d bpm %d/%d"
 
 #: src/modplug/gui/interface.cxx:117
 msgid "ModPlug Configuration"
 msgstr "ModPlug-Konfiguration"
 
-#: src/modplug/gui/interface.cxx:165 src/timidity/src/interface.c:142
+#: src/modplug/gui/interface.cxx:165
+#: src/timidity/src/interface.c:142
 msgid "16 bit"
 msgstr "16 bit"
 
-#: src/modplug/gui/interface.cxx:173 src/timidity/src/interface.c:134
+#: src/modplug/gui/interface.cxx:173
+#: src/timidity/src/interface.c:134
 msgid "8 bit"
 msgstr "8 bit"
 
@@ -2899,9 +2908,10 @@
 msgid "Mono (downmix)"
 msgstr ""
 
-#: src/modplug/gui/interface.cxx:218 src/timidity/src/interface.c:76
+#: src/modplug/gui/interface.cxx:218
+#: src/timidity/src/interface.c:76
 msgid "Sampling Rate"
-msgstr ""
+msgstr "Abtastfrequenz"
 
 #: src/modplug/gui/interface.cxx:232
 msgid "48 kHz"
@@ -2937,7 +2947,7 @@
 
 #: src/modplug/gui/interface.cxx:346
 msgid "Use Filename as Song Title"
-msgstr ""
+msgstr "Dateinamen als Liedtitel verwenden"
 
 #: src/modplug/gui/interface.cxx:353
 msgid "Fast Playlist Info"
@@ -2955,16 +2965,20 @@
 msgid "Reverb"
 msgstr ""
 
-#: src/modplug/gui/interface.cxx:398 src/modplug/gui/interface.cxx:470
-#: src/modplug/gui/interface.cxx:542 src/modplug/gui/interface.cxx:628
+#: src/modplug/gui/interface.cxx:398
+#: src/modplug/gui/interface.cxx:470
+#: src/modplug/gui/interface.cxx:542
+#: src/modplug/gui/interface.cxx:628
 msgid "Enable"
 msgstr ""
 
-#: src/modplug/gui/interface.cxx:438 src/modplug/gui/interface.cxx:582
+#: src/modplug/gui/interface.cxx:438
+#: src/modplug/gui/interface.cxx:582
 msgid "Depth"
 msgstr ""
 
-#: src/modplug/gui/interface.cxx:447 src/modplug/gui/interface.cxx:591
+#: src/modplug/gui/interface.cxx:447
+#: src/modplug/gui/interface.cxx:591
 msgid "Delay"
 msgstr "Verzögerung"
 
@@ -3066,7 +3080,8 @@
 msgid "About Modplug"
 msgstr "Ãœber Modplug"
 
-#: src/modplug/gui/support.cxx:118 src/sid/xs_glade.c:90
+#: src/modplug/gui/support.cxx:118
+#: src/sid/xs_glade.c:90
 #: src/sid/xs_glade.c:114
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -3103,11 +3118,13 @@
 msgid "General Settings"
 msgstr "Allgemeine Einstellungen"
 
-#: src/musepack/libmpc.cxx:182 src/wavpack/ui.cxx:490
+#: src/musepack/libmpc.cxx:182
+#: src/wavpack/ui.cxx:490
 msgid "Enable Dynamic Bitrate Display"
 msgstr ""
 
-#: src/musepack/libmpc.cxx:186 src/wavpack/ui.cxx:496
+#: src/musepack/libmpc.cxx:186
+#: src/wavpack/ui.cxx:496
 msgid "Plugin"
 msgstr "Plugin"
 
@@ -3115,12 +3132,14 @@
 msgid "ReplayGain Settings"
 msgstr "ReplayGain-Einstellungen"
 
-#: src/musepack/libmpc.cxx:196 src/vorbis/configure.c:172
+#: src/musepack/libmpc.cxx:196
+#: src/vorbis/configure.c:172
 #: src/wavpack/ui.cxx:508
 msgid "Enable Clipping Prevention"
 msgstr ""
 
-#: src/musepack/libmpc.cxx:201 src/vorbis/configure.c:177
+#: src/musepack/libmpc.cxx:201
+#: src/vorbis/configure.c:177
 #: src/wavpack/ui.cxx:513
 msgid "Enable ReplayGain"
 msgstr ""
@@ -3137,8 +3156,11 @@
 msgid "Use Album Gain"
 msgstr ""
 
-#: src/musepack/libmpc.cxx:490 src/sid/xmms-sid.glade:2994
-#: src/sid/xs_interface.c:1495 src/tta/libtta.c:322 src/wavpack/ui.cxx:150
+#: src/musepack/libmpc.cxx:490
+#: src/sid/xmms-sid.glade:2994
+#: src/sid/xs_interface.c:1495
+#: src/tta/libtta.c:322
+#: src/wavpack/ui.cxx:150
 msgid "Filename:"
 msgstr "Dateiname:"
 
@@ -3150,12 +3172,15 @@
 msgid "Track:"
 msgstr "Titel:"
 
-#: src/musepack/libmpc.cxx:550 src/sid/xmms-sid.glade:1732
-#: src/sid/xs_interface.c:812 src/wavpack/ui.cxx:265
+#: src/musepack/libmpc.cxx:550
+#: src/sid/xmms-sid.glade:1732
+#: src/sid/xs_interface.c:812
+#: src/wavpack/ui.cxx:265
 msgid "Save"
-msgstr ""
-
-#: src/musepack/libmpc.cxx:553 src/wavpack/ui.cxx:271
+msgstr "Speichern"
+
+#: src/musepack/libmpc.cxx:553
+#: src/wavpack/ui.cxx:271
 msgid "Remove Tag"
 msgstr "Tag entfernen"
 
@@ -3274,34 +3299,43 @@
 "USA."
 msgstr ""
 
-#: src/OSS4/configure.c:120 src/OSS/configure.c:152
+#: src/OSS4/configure.c:120
+#: src/OSS/configure.c:152
 #, c-format
 msgid "Default (%s)"
 msgstr "Standard (%s)"
 
-#: src/OSS4/configure.c:170 src/OSS/configure.c:202
+#: src/OSS4/configure.c:170
+#: src/OSS/configure.c:202
 msgid "OSS Driver configuration"
 msgstr "OSS-Treiber-Konfiguration"
 
-#: src/OSS4/configure.c:208 src/OSS/configure.c:240 src/OSS/configure.c:281
+#: src/OSS4/configure.c:208
+#: src/OSS/configure.c:240
+#: src/OSS/configure.c:281
 msgid "Use alternate device:"
 msgstr "Alternatives Gerät benutzen:"
 
-#: src/OSS4/configure.c:230 src/OSS/configure.c:303 src/sun/configure.c:248
+#: src/OSS4/configure.c:230
+#: src/OSS/configure.c:303
+#: src/sun/configure.c:248
 msgid "Devices"
 msgstr "Geräte"
 
-#: src/OSS4/configure.c:272 src/OSS/configure.c:344
+#: src/OSS4/configure.c:272
+#: src/OSS/configure.c:344
 msgid "Mixer Settings:"
-msgstr ""
+msgstr "Mixer-Einstellungen:"
 
 #: src/OSS4/configure.c:278
 msgid "Save VMIX volume between sessions"
 msgstr ""
 
-#: src/OSS4/configure.c:284 src/OSS/configure.c:356 src/sun/configure.c:394
+#: src/OSS4/configure.c:284
+#: src/OSS/configure.c:356
+#: src/sun/configure.c:394
 msgid "Mixer"
-msgstr ""
+msgstr "Mixer"
 
 #: src/OSS/about.c:39
 msgid "About OSS Driver"
@@ -3359,11 +3393,13 @@
 msgid "<b>Services</b>"
 msgstr "<b>Dienste</b>"
 
-#: src/scrobbler/configure.c:122 src/scrobbler/configure.c:162
+#: src/scrobbler/configure.c:122
+#: src/scrobbler/configure.c:162
 msgid "Username:"
 msgstr "Benutzername:"
 
-#: src/scrobbler/configure.c:128 src/scrobbler/configure.c:168
+#: src/scrobbler/configure.c:128
+#: src/scrobbler/configure.c:168
 msgid "Password:"
 msgstr "Passwort:"
 
@@ -3379,8 +3415,7 @@
 msgid ""
 "Audacious AudioScrobbler Plugin\n"
 "\n"
-"Originally created by Audun Hove <audun@nlc.no> and Pipian <pipian@pipian."
-"com>\n"
+"Originally created by Audun Hove <audun@nlc.no> and Pipian <pipian@pipian.com>\n"
 msgstr ""
 
 #: src/scrobbler/gtkstuff.c:22
@@ -3431,511 +3466,566 @@
 msgid "Oversampling rate-conversion pass failed.\n"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:8 src/sid/xs_interface.c:213
-#, fuzzy
+#: src/sid/xmms-sid.glade:8
+#: src/sid/xs_interface.c:213
 msgid "Audacious-SID configuration"
 msgstr "Audacious-SID-Konfiguration"
 
-#: src/sid/xmms-sid.glade:71 src/sid/xs_interface.c:249
+#: src/sid/xmms-sid.glade:71
+#: src/sid/xs_interface.c:249
 msgid "8-bit"
 msgstr "8 Bit"
 
-#: src/sid/xmms-sid.glade:90 src/sid/xs_interface.c:256
+#: src/sid/xmms-sid.glade:90
+#: src/sid/xs_interface.c:256
 msgid "16-bit"
 msgstr "16 Bit"
 
-#: src/sid/xmms-sid.glade:111 src/sid/xs_interface.c:263
+#: src/sid/xmms-sid.glade:111
+#: src/sid/xs_interface.c:263
 msgid "Resolution:"
 msgstr "Auflösung:"
 
-#: src/sid/xmms-sid.glade:196 src/sid/xs_interface.c:294
+#: src/sid/xmms-sid.glade:196
+#: src/sid/xs_interface.c:294
 msgid "Autopanning"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:217 src/sid/xs_interface.c:301
-#: src/vorbis/fileinfo.c:867 src/vorbis/fileinfo.c:924
+#: src/sid/xmms-sid.glade:217
+#: src/sid/xs_interface.c:301
+#: src/vorbis/fileinfo.c:867
+#: src/vorbis/fileinfo.c:924
 msgid "Channels:"
 msgstr "Kanäle:"
 
-#: src/sid/xmms-sid.glade:384 src/sid/xs_interface.c:345
+#: src/sid/xmms-sid.glade:384
+#: src/sid/xs_interface.c:345
 msgid "Samplerate:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:430 src/sid/xs_interface.c:362
+#: src/sid/xmms-sid.glade:430
+#: src/sid/xs_interface.c:362
 msgid "Use oversampling"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:456 src/sid/xs_interface.c:373
+#: src/sid/xmms-sid.glade:456
+#: src/sid/xs_interface.c:373
 msgid "Factor:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:500 src/sid/xs_interface.c:385
+#: src/sid/xmms-sid.glade:500
+#: src/sid/xs_interface.c:385
 msgid "Large factors require more CPU-power"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:534 src/sid/xs_interface.c:391
+#: src/sid/xmms-sid.glade:534
+#: src/sid/xs_interface.c:391
 msgid "Oversampling:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:570 src/sid/xs_interface.c:396
+#: src/sid/xmms-sid.glade:570
+#: src/sid/xs_interface.c:396
 msgid "Audio"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:620 src/sid/xs_interface.c:428
-msgid ""
-"If enabled, this option \"forces\" the emulation engine to use the selected "
-"clock speed/frequency. Otherwise the speed is determined from played file "
-"itself."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:622 src/sid/xs_interface.c:424
+#: src/sid/xmms-sid.glade:620
+#: src/sid/xs_interface.c:428
+msgid "If enabled, this option \"forces\" the emulation engine to use the selected clock speed/frequency. Otherwise the speed is determined from played file itself."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:622
+#: src/sid/xs_interface.c:424
 msgid "Force speed"
 msgstr "Geschwindigkeit erzwingen"
 
-#: src/sid/xmms-sid.glade:640 src/sid/xs_interface.c:434
-msgid ""
-"PAL is the european TV standard, which uses 50Hz vertical refresh frequency. "
-"Most of SID-tunes have been made for PAL computers."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:642 src/sid/xs_interface.c:430
+#: src/sid/xmms-sid.glade:640
+#: src/sid/xs_interface.c:434
+msgid "PAL is the european TV standard, which uses 50Hz vertical refresh frequency. Most of SID-tunes have been made for PAL computers."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:642
+#: src/sid/xs_interface.c:430
 msgid "PAL (50 Hz)"
 msgstr "PAL (50 Hz)"
 
-#: src/sid/xmms-sid.glade:660 src/sid/xs_interface.c:442
-msgid ""
-"NTSC is the TV standard with 60Hz vertical refresh rate (and other features "
-"that differ from PAL). It is mainly used in United States, Japan and certain "
-"other countries."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:662 src/sid/xs_interface.c:438
+#: src/sid/xmms-sid.glade:660
+#: src/sid/xs_interface.c:442
+msgid "NTSC is the TV standard with 60Hz vertical refresh rate (and other features that differ from PAL). It is mainly used in United States, Japan and certain other countries."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:662
+#: src/sid/xs_interface.c:438
 msgid "NTSC (60 Hz)"
 msgstr "NTSC (60 Hz)"
 
-#: src/sid/xmms-sid.glade:683 src/sid/xs_interface.c:446
+#: src/sid/xmms-sid.glade:683
+#: src/sid/xs_interface.c:446
 msgid "Clock speed:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:728 src/sid/xs_interface.c:467
-msgid ""
-"If enabled, this option \"forces\" the emulation engine to use the selected "
-"SID-chip model. Otherwise the preferred SID model is determined from the "
-"file (if PSIDv2NG type) or if not available, this setting is used."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:730 src/sid/xs_interface.c:463
+#: src/sid/xmms-sid.glade:728
+#: src/sid/xs_interface.c:467
+msgid "If enabled, this option \"forces\" the emulation engine to use the selected SID-chip model. Otherwise the preferred SID model is determined from the file (if PSIDv2NG type) or if not available, this setting is used."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:730
+#: src/sid/xs_interface.c:463
 msgid "Force model"
 msgstr "Modell erzwingen"
 
-#: src/sid/xmms-sid.glade:748 src/sid/xs_interface.c:473
-msgid ""
-"MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 "
-"in few ways, having much fuller filter (which, due to design error, is never "
-"same between two different SID-chips) and has the \"volume adjustment bug\", "
-"which enables playing of digital samples."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:750 src/sid/xs_interface.c:469
+#: src/sid/xmms-sid.glade:748
+#: src/sid/xs_interface.c:473
+msgid "MOS/CSG 6581 is the earlier major version of SID chip. It differs from 8580 in few ways, having much fuller filter (which, due to design error, is never same between two different SID-chips) and has the \"volume adjustment bug\", which enables playing of digital samples."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:750
+#: src/sid/xs_interface.c:469
 msgid "MOS 6581"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:769 src/sid/xs_interface.c:477
+#: src/sid/xmms-sid.glade:769
+#: src/sid/xs_interface.c:477
 msgid "MOS 8580"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:790 src/sid/xs_interface.c:484
+#: src/sid/xmms-sid.glade:790
+#: src/sid/xs_interface.c:484
 msgid "SID model:"
 msgstr "SID-Modell:"
 
-#: src/sid/xmms-sid.glade:842 src/sid/xs_interface.c:505
-msgid ""
-"Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most "
-"cases, though."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:844 src/sid/xs_interface.c:501
+#: src/sid/xmms-sid.glade:842
+#: src/sid/xs_interface.c:505
+msgid "Use libSIDPlay 1.x emulation, faster but not so accurate. Good in most cases, though."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:844
+#: src/sid/xs_interface.c:501
 msgid "SIDPlay 1 (frame-based)"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:863 src/sid/xs_interface.c:513
-msgid ""
-"Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact "
-"emulation."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:865 src/sid/xs_interface.c:509
+#: src/sid/xmms-sid.glade:863
+#: src/sid/xs_interface.c:513
+msgid "Use libSIDPlay 2.x emulation, which requires powerful CPU due to more exact emulation."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:865
+#: src/sid/xs_interface.c:509
 msgid "SIDPlay 2 (cycle-based)"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:887 src/sid/xs_interface.c:517
+#: src/sid/xmms-sid.glade:887
+#: src/sid/xs_interface.c:517
 msgid "Emulation library selection:"
 msgstr "Auswahl der Emulations-Bibliothek:"
 
-#: src/sid/xmms-sid.glade:933 src/sid/xs_interface.c:534
+#: src/sid/xmms-sid.glade:933
+#: src/sid/xs_interface.c:534
 msgid "Real C64 (SIDPlay 2 only)"
 msgstr "Echter C64 (nur SIDPlay 2)"
 
-#: src/sid/xmms-sid.glade:952 src/sid/xs_interface.c:541
+#: src/sid/xmms-sid.glade:952
+#: src/sid/xs_interface.c:541
 msgid "Bank switching"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:972 src/sid/xs_interface.c:548
+#: src/sid/xmms-sid.glade:972
+#: src/sid/xs_interface.c:548
 msgid "Transparent ROM"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:992 src/sid/xs_interface.c:555
+#: src/sid/xmms-sid.glade:992
+#: src/sid/xs_interface.c:555
 msgid "PlaySID environment"
 msgstr "PlaySID-Umgebung"
 
-#: src/sid/xmms-sid.glade:1013 src/sid/xs_interface.c:562
+#: src/sid/xmms-sid.glade:1013
+#: src/sid/xs_interface.c:562
 msgid "Memory mode:"
 msgstr "Speichermodus:"
 
-#: src/sid/xmms-sid.glade:1049 src/sid/xs_interface.c:567
+#: src/sid/xmms-sid.glade:1049
+#: src/sid/xs_interface.c:567
 msgid "Emu#1"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1093 src/sid/xs_interface.c:594
-msgid ""
-"This setting can be used to enable libSIDPlay2's \"optimization mode\", "
-"which in downgrades the emulation from cycle-exact to something similar to "
-"frame-exact. The result is lower CPU usage, but worse accuracy."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:1095 src/sid/xs_interface.c:590
+#: src/sid/xmms-sid.glade:1093
+#: src/sid/xs_interface.c:594
+msgid "This setting can be used to enable libSIDPlay2's \"optimization mode\", which in downgrades the emulation from cycle-exact to something similar to frame-exact. The result is lower CPU usage, but worse accuracy."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:1095
+#: src/sid/xs_interface.c:590
 msgid "Optimization mode (faster, inaccurate)"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1113 src/sid/xs_interface.c:600
-msgid ""
-"reSID is the software SID-chip simulator based on SID reverse-engineering, "
-"created by Dag Lem. It is probably the closest thing to real SID available "
-"as software-only emulation."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:1115 src/sid/xs_interface.c:596
+#: src/sid/xmms-sid.glade:1113
+#: src/sid/xs_interface.c:600
+msgid "reSID is the software SID-chip simulator based on SID reverse-engineering, created by Dag Lem. It is probably the closest thing to real SID available as software-only emulation."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:1115
+#: src/sid/xs_interface.c:596
 msgid "reSID-emulation"
 msgstr "reSID-Emulation"
 
-#: src/sid/xmms-sid.glade:1133 src/sid/xs_interface.c:608
-msgid ""
-"HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a "
-"real SID-chip. Software can be used to control the HardSID and combined with "
-"software emulation of rest of C64 via libSIDPlay2 HardSID can be used to "
-"achieve \"near 100%\" similarity to real C64. For more information, see "
-"http://www.hardsid.com/"
-msgstr ""
-
-#: src/sid/xmms-sid.glade:1135 src/sid/xs_interface.c:604
+#: src/sid/xmms-sid.glade:1133
+#: src/sid/xs_interface.c:608
+msgid "HardSID is a EISA/PCI card for PC-compatibles, which can be fitted with a real SID-chip. Software can be used to control the HardSID and combined with software emulation of rest of C64 via libSIDPlay2 HardSID can be used to achieve \"near 100%\" similarity to real C64. For more information, see http://www.hardsid.com/"
+msgstr ""
+
+#: src/sid/xmms-sid.glade:1135
+#: src/sid/xs_interface.c:604
 msgid "HardSID"
 msgstr "HardSID"
 
-#: src/sid/xmms-sid.glade:1156 src/sid/xs_interface.c:612
+#: src/sid/xmms-sid.glade:1156
+#: src/sid/xs_interface.c:612
 msgid "SIDPlay 2 options:"
 msgstr "SIDPlay 2-Optionen:"
 
-#: src/sid/xmms-sid.glade:1201 src/sid/xs_interface.c:633
-msgid ""
-"Fastest and also worst sounding sampling method, simply picks nearest "
-"neighbouring sample."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:1203 src/sid/xs_interface.c:629
+#: src/sid/xmms-sid.glade:1201
+#: src/sid/xs_interface.c:633
+msgid "Fastest and also worst sounding sampling method, simply picks nearest neighbouring sample."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:1203
+#: src/sid/xs_interface.c:629
 msgid "Fast (nearest neighbour)"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1221 src/sid/xs_interface.c:641
-msgid ""
-"Uses linear interpolation between samples, yielding higher audio quality "
-"with less sampling noise."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:1223 src/sid/xs_interface.c:637
+#: src/sid/xmms-sid.glade:1221
+#: src/sid/xs_interface.c:641
+msgid "Uses linear interpolation between samples, yielding higher audio quality with less sampling noise."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:1223
+#: src/sid/xs_interface.c:637
 msgid "Linear interpolation"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1263 src/sid/xs_interface.c:652
+#: src/sid/xmms-sid.glade:1263
+#: src/sid/xs_interface.c:652
 msgid "Resampling (FIR)"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1284 src/sid/xs_interface.c:659
+#: src/sid/xmms-sid.glade:1284
+#: src/sid/xs_interface.c:659
 msgid "reSID sampling options:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1320 src/sid/xs_interface.c:664
+#: src/sid/xmms-sid.glade:1320
+#: src/sid/xs_interface.c:664
 msgid "Emu#2"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1350 src/sid/xs_interface.c:680
-msgid ""
-"This option enables emulation of SID filter. The filter is an essential part "
-"of SID's sound capacity, but accurate emulation of it may require quite much "
-"CPU power. However, if filter emulation is disabled, tunes won't sound "
-"authentic at all if they utilize the filter."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:1352 src/sid/xs_interface.c:676
+#: src/sid/xmms-sid.glade:1350
+#: src/sid/xs_interface.c:680
+msgid "This option enables emulation of SID filter. The filter is an essential part of SID's sound capacity, but accurate emulation of it may require quite much CPU power. However, if filter emulation is disabled, tunes won't sound authentic at all if they utilize the filter."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:1352
+#: src/sid/xs_interface.c:676
 msgid "Emulate filters"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1409 src/sid/xs_interface.c:705
+#: src/sid/xmms-sid.glade:1409
+#: src/sid/xs_interface.c:705
 msgid "FS"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1460 src/sid/xs_interface.c:722
+#: src/sid/xmms-sid.glade:1460
+#: src/sid/xs_interface.c:722
 msgid "FM"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1511 src/sid/xs_interface.c:739
+#: src/sid/xmms-sid.glade:1511
+#: src/sid/xs_interface.c:739
 msgid "FT"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1549 src/sid/xs_interface.c:750
+#: src/sid/xmms-sid.glade:1549
+#: src/sid/xs_interface.c:750
 msgid "Reset values"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1578 src/sid/xs_interface.c:755
+#: src/sid/xmms-sid.glade:1578
+#: src/sid/xs_interface.c:755
 msgid "SIDPlay1"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1690 src/sid/xs_interface.c:796
+#: src/sid/xmms-sid.glade:1690
+#: src/sid/xs_interface.c:796
 msgid "Export"
 msgstr "Exportieren"
 
-#: src/sid/xmms-sid.glade:1711 src/sid/xs_interface.c:804
+#: src/sid/xmms-sid.glade:1711
+#: src/sid/xs_interface.c:804
 msgid "Use"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1753 src/sid/xs_interface.c:820
+#: src/sid/xmms-sid.glade:1753
+#: src/sid/xs_interface.c:820
 msgid "Import"
 msgstr "Importieren"
 
-#: src/sid/xmms-sid.glade:1774 src/sid/xs_interface.c:828
-#, fuzzy
+#: src/sid/xmms-sid.glade:1774
+#: src/sid/xs_interface.c:828
 msgid "Delete"
-msgstr "Standard"
-
-#: src/sid/xmms-sid.glade:1819 src/sid/xs_interface.c:842
+msgstr "Löschen"
+
+#: src/sid/xmms-sid.glade:1819
+#: src/sid/xs_interface.c:842
 msgid "Filter curve:"
 msgstr "Filterkurve:"
 
-#: src/sid/xmms-sid.glade:1855 src/sid/xs_interface.c:847
+#: src/sid/xmms-sid.glade:1855
+#: src/sid/xs_interface.c:847
 msgid "SIDPlay2"
 msgstr "SIDPlay2"
 
-#: src/sid/xmms-sid.glade:1891 src/sid/xs_interface.c:853
+#: src/sid/xmms-sid.glade:1891
+#: src/sid/xs_interface.c:853
 msgid "Filters"
 msgstr "Filter"
 
-#: src/sid/xmms-sid.glade:1935 src/sid/xs_interface.c:880
-msgid ""
-"If enabled, the tune is played at least for the specified time, adding "
-"silence to the end if necessary."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:1937 src/sid/xs_interface.c:876
+#: src/sid/xmms-sid.glade:1935
+#: src/sid/xs_interface.c:880
+msgid "If enabled, the tune is played at least for the specified time, adding silence to the end if necessary."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:1937
+#: src/sid/xs_interface.c:876
 msgid "Play at least for specified time"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:1962 src/sid/xmms-sid.glade:2133
-#: src/sid/xmms-sid.glade:2482 src/sid/xs_interface.c:887
-#: src/sid/xs_interface.c:941 src/sid/xs_interface.c:1051
+#: src/sid/xmms-sid.glade:1962
+#: src/sid/xmms-sid.glade:2133
+#: src/sid/xmms-sid.glade:2482
+#: src/sid/xs_interface.c:887
+#: src/sid/xs_interface.c:941
+#: src/sid/xs_interface.c:1051
 msgid "Playtime:"
 msgstr "Spielzeit:"
 
-#: src/sid/xmms-sid.glade:2041 src/sid/xs_interface.c:907
+#: src/sid/xmms-sid.glade:2041
+#: src/sid/xs_interface.c:907
 msgid "Minimum playtime:"
 msgstr "Minimale Spielzeit:"
 
-#: src/sid/xmms-sid.glade:2086 src/sid/xs_interface.c:928
-msgid ""
-"If enabled, tune is played until specified duration is reached (aka maximum "
-"playtime)."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:2088 src/sid/xs_interface.c:924
+#: src/sid/xmms-sid.glade:2086
+#: src/sid/xs_interface.c:928
+msgid "If enabled, tune is played until specified duration is reached (aka maximum playtime)."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:2088
+#: src/sid/xs_interface.c:924
 msgid "Play for specified time maximum"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2107 src/sid/xs_interface.c:934
-msgid ""
-"If enabled, the maximum playtime is applied only if song/tune length is not "
-"known."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:2109 src/sid/xs_interface.c:930
+#: src/sid/xmms-sid.glade:2107
+#: src/sid/xs_interface.c:934
+msgid "If enabled, the maximum playtime is applied only if song/tune length is not known."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:2109
+#: src/sid/xs_interface.c:930
 msgid "Only when song length is unknown"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2212 src/sid/xs_interface.c:961
+#: src/sid/xmms-sid.glade:2212
+#: src/sid/xs_interface.c:961
 msgid "Maximum playtime:"
 msgstr "Maximale Spielzeit:"
 
-#: src/sid/xmms-sid.glade:2257 src/sid/xs_interface.c:982
-msgid ""
-"This option enables using of XSIDPLAY compatible song length database. "
-"(Refer to Audacious-SID documentation for more information)"
-msgstr ""
-
-#: src/sid/xmms-sid.glade:2259 src/sid/xs_interface.c:978
+#: src/sid/xmms-sid.glade:2257
+#: src/sid/xs_interface.c:982
+msgid "This option enables using of XSIDPLAY compatible song length database. (Refer to Audacious-SID documentation for more information)"
+msgstr ""
+
+#: src/sid/xmms-sid.glade:2259
+#: src/sid/xs_interface.c:978
 msgid "Use XSIDPLAY-compatible database"
 msgstr "XSIDPLAY-kompatible Datenbank benützen"
 
-#: src/sid/xmms-sid.glade:2284 src/sid/xs_interface.c:989
+#: src/sid/xmms-sid.glade:2284
+#: src/sid/xs_interface.c:989
 msgid "DB-file:"
 msgstr "DB-Datei:"
 
-#: src/sid/xmms-sid.glade:2309 src/sid/xs_interface.c:999
+#: src/sid/xmms-sid.glade:2309
+#: src/sid/xs_interface.c:999
 msgid "Database path and filename"
 msgstr "Datenbankpfad und -dateiname"
 
-#: src/sid/xmms-sid.glade:2329 src/sid/xs_interface.c:1006
+#: src/sid/xmms-sid.glade:2329
+#: src/sid/xs_interface.c:1006
 msgid "Browse for song length-database file"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2356 src/sid/xs_interface.c:1008
+#: src/sid/xmms-sid.glade:2356
+#: src/sid/xs_interface.c:1008
 msgid "Song length database:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2392 src/sid/xs_interface.c:1013
+#: src/sid/xmms-sid.glade:2392
+#: src/sid/xs_interface.c:1013
 msgid "Songlength"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2437 src/sid/xs_interface.c:1036
+#: src/sid/xmms-sid.glade:2437
+#: src/sid/xs_interface.c:1036
 msgid "Add sub-tunes to playlist"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2457 src/sid/xs_interface.c:1041
+#: src/sid/xmms-sid.glade:2457
+#: src/sid/xs_interface.c:1041
 msgid "Only tunes with specified minimum length "
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2560 src/sid/xs_interface.c:1071
+#: src/sid/xmms-sid.glade:2560
+#: src/sid/xs_interface.c:1071
 #, fuzzy
 msgid "Sub-tune handling:"
 msgstr "Lautstärkesteuerung:"
 
-#: src/sid/xmms-sid.glade:2605 src/sid/xs_interface.c:1092
-msgid ""
-"If this option is enabled (and the database & HVSC settings below are "
-"correctly set), Audacious-SID will use and display additional information "
-"from STIL database when HVSC SIDs are played."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:2607 src/sid/xs_interface.c:1088
+#: src/sid/xmms-sid.glade:2605
+#: src/sid/xs_interface.c:1092
+msgid "If this option is enabled (and the database & HVSC settings below are correctly set), Audacious-SID will use and display additional information from STIL database when HVSC SIDs are played."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:2607
+#: src/sid/xs_interface.c:1088
 msgid "Use STIL database"
 msgstr "STIL-Datenbank verwenden"
 
-#: src/sid/xmms-sid.glade:2632 src/sid/xs_interface.c:1099
+#: src/sid/xmms-sid.glade:2632
+#: src/sid/xs_interface.c:1099
 msgid "STIL file:"
 msgstr "STIL-Datei:"
 
-#: src/sid/xmms-sid.glade:2669 src/sid/xs_interface.c:1115
-msgid ""
-"Path and filename of STIL database file (STIL.txt), usually found from "
-"HVSC's DOCUMENTS-subdirectory."
-msgstr ""
-
-#: src/sid/xmms-sid.glade:2704 src/sid/xs_interface.c:1128
+#: src/sid/xmms-sid.glade:2669
+#: src/sid/xs_interface.c:1115
+msgid "Path and filename of STIL database file (STIL.txt), usually found from HVSC's DOCUMENTS-subdirectory."
+msgstr ""
+
+#: src/sid/xmms-sid.glade:2704
+#: src/sid/xs_interface.c:1128
 msgid "Browse for STIL-database file"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2738 src/sid/xs_interface.c:1135
+#: src/sid/xmms-sid.glade:2738
+#: src/sid/xs_interface.c:1135
 msgid "HVSC path:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2775 src/sid/xs_interface.c:1151
-msgid ""
-"Path to base-directory of your High Voltage SID Collection (HVSC), for "
-"example /media/C64Music/"
-msgstr ""
-
-#: src/sid/xmms-sid.glade:2810 src/sid/xs_interface.c:1164
+#: src/sid/xmms-sid.glade:2775
+#: src/sid/xs_interface.c:1151
+msgid "Path to base-directory of your High Voltage SID Collection (HVSC), for example /media/C64Music/"
+msgstr ""
+
+#: src/sid/xmms-sid.glade:2810
+#: src/sid/xs_interface.c:1164
 msgid "Browse for HVSC path"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2840 src/sid/xs_interface.c:1166
+#: src/sid/xmms-sid.glade:2840
+#: src/sid/xs_interface.c:1166
 msgid "SID Tune Information List (STIL) database:"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2913 src/sid/xs_interface.c:1190
+#: src/sid/xmms-sid.glade:2913
+#: src/sid/xs_interface.c:1190
 msgid "Accept and update changes"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2927 src/sid/xs_interface.c:1197
+#: src/sid/xmms-sid.glade:2927
+#: src/sid/xs_interface.c:1197
 msgid "Cancel any changes"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:2952 src/sid/xs_interface.c:1474
+#: src/sid/xmms-sid.glade:2952
+#: src/sid/xs_interface.c:1474
 msgid "Audacious-SID Fileinfo"
 msgstr "Audacious-SID-Dateiinformation"
 
-#: src/sid/xmms-sid.glade:3022 src/sid/xs_interface.c:1503
+#: src/sid/xmms-sid.glade:3022
+#: src/sid/xs_interface.c:1503
 msgid "Songname:"
 msgstr "Titel:"
 
-#: src/sid/xmms-sid.glade:3050 src/sid/xs_interface.c:1511
+#: src/sid/xmms-sid.glade:3050
+#: src/sid/xs_interface.c:1511
 msgid "Composer:"
 msgstr "Komponist:"
 
-#: src/sid/xmms-sid.glade:3078 src/sid/xs_interface.c:1519
+#: src/sid/xmms-sid.glade:3078
+#: src/sid/xs_interface.c:1519
 #: src/vorbis/fileinfo.c:723
 msgid "Copyright:"
 msgstr "Copyright:"
 
-#: src/sid/xmms-sid.glade:3192 src/sid/xs_interface.c:1563
+#: src/sid/xmms-sid.glade:3192
+#: src/sid/xs_interface.c:1563
 msgid "Song Information:"
 msgstr "Titel-Information:"
 
-#: src/sid/xmms-sid.glade:3266 src/sid/xs_interface.c:1598
+#: src/sid/xmms-sid.glade:3266
+#: src/sid/xs_interface.c:1598
 msgid "Author:"
 msgstr "Autor:"
 
-#: src/sid/xmms-sid.glade:3364 src/sid/xs_interface.c:1632
+#: src/sid/xmms-sid.glade:3364
+#: src/sid/xs_interface.c:1632
 msgid "Duration:"
 msgstr "Länge:"
 
-#: src/sid/xmms-sid.glade:3458 src/sid/xs_interface.c:1666
+#: src/sid/xmms-sid.glade:3458
+#: src/sid/xs_interface.c:1666
 #, fuzzy
 msgid "Sub-tune Information:"
 msgstr "Ort:"
 
-#: src/sid/xmms-sid.glade:3512 src/sid/xs_interface.c:1727
+#: src/sid/xmms-sid.glade:3512
+#: src/sid/xs_interface.c:1727
 msgid "Select HVSC song length database"
 msgstr "HVSC-Titellängendatenbank auswählen"
 
-#: src/sid/xmms-sid.glade:3554 src/sid/xs_interface.c:1768
-#, fuzzy
+#: src/sid/xmms-sid.glade:3554
+#: src/sid/xs_interface.c:1768
 msgid "Select STIL-database"
 msgstr "STIL-Datenbank auswählen"
 
-#: src/sid/xmms-sid.glade:3596 src/sid/xs_interface.c:1809
+#: src/sid/xmms-sid.glade:3596
+#: src/sid/xs_interface.c:1809
 msgid "Select HVSC location prefix"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:3638 src/sid/xs_interface.c:1850
+#: src/sid/xmms-sid.glade:3638
+#: src/sid/xs_interface.c:1850
 msgid "Select SIDPlay2 filters file for importing"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:3680 src/sid/xs_interface.c:1891
+#: src/sid/xmms-sid.glade:3680
+#: src/sid/xs_interface.c:1891
 msgid "Select SIDPlay2 filters file for exporting"
 msgstr ""
 
-#: src/sid/xmms-sid.glade:3721 src/sid/xmms-sid.glade:3803
-#: src/sid/xs_interface.c:1939 src/sid/xs_interface.c:1952
-#, fuzzy
+#: src/sid/xmms-sid.glade:3721
+#: src/sid/xmms-sid.glade:3803
+#: src/sid/xs_interface.c:1939
+#: src/sid/xs_interface.c:1952
 msgid "Confirm selected action"
-msgstr "Format-Auswahl"
-
-#: src/sid/xmms-sid.glade:3759 src/sid/xs_interface.c:1969
-#, fuzzy
+msgstr "Gewählte Aktion bestätigen"
+
+#: src/sid/xmms-sid.glade:3759
+#: src/sid/xs_interface.c:1969
 msgid "Yes"
 msgstr "Ja"
 
-#: src/sid/xmms-sid.glade:3771 src/sid/xs_interface.c:1975
-#, fuzzy
+#: src/sid/xmms-sid.glade:3771
+#: src/sid/xs_interface.c:1975
 msgid "No"
-msgstr "Kein"
+msgstr "Nein"
 
 #: src/sid/xs_fileinfo.c:238
 msgid "General info"
@@ -4016,15 +4106,11 @@
 msgstr ""
 
 #: src/sid/xs_sidplay1.cc:291
-msgid ""
-"[SIDPlay1] SID-tune struct pointer was NULL. This should not happen, report "
-"to XMMS-SID author.\n"
+msgid "[SIDPlay1] SID-tune struct pointer was NULL. This should not happen, report to XMMS-SID author.\n"
 msgstr ""
 
 #: src/sid/xs_sidplay1.cc:296
-msgid ""
-"[SIDPlay1] SID-tune status check failed. This should not happen, report to "
-"XMMS-SID author.\n"
+msgid "[SIDPlay1] SID-tune status check failed. This should not happen, report to XMMS-SID author.\n"
 msgstr ""
 
 #: src/sid/xs_sidplay2.cc:101
@@ -4140,24 +4226,25 @@
 
 #: src/song_change/song_change.c:356
 msgid "Command to run when Audacious starts a new song."
-msgstr ""
-
-#: src/song_change/song_change.c:365 src/song_change/song_change.c:387
-#: src/song_change/song_change.c:408 src/song_change/song_change.c:429
+msgstr "Auszuführender Befehl, wenn Audacious ein neues Lied startet."
+
+#: src/song_change/song_change.c:365
+#: src/song_change/song_change.c:387
+#: src/song_change/song_change.c:408
+#: src/song_change/song_change.c:429
 msgid "Command:"
 msgstr "Befehl:"
 
 #: src/song_change/song_change.c:379
 msgid "Command to run toward the end of a song."
-msgstr ""
+msgstr "Auszuführender Befehl am Ende eines Lieds"
 
 #: src/song_change/song_change.c:399
 msgid "Command to run when Audacious reaches the end of the playlist."
 msgstr ""
 
 #: src/song_change/song_change.c:420
-msgid ""
-"Command to run when title changes for a song (i.e. network streams titles)."
+msgid "Command to run when title changes for a song (i.e. network streams titles)."
 msgstr ""
 
 #: src/song_change/song_change.c:441
@@ -4178,9 +4265,7 @@
 msgstr ""
 
 #: src/song_change/song_change.c:466
-msgid ""
-"<span size='small'>Parameters passed to the shell should be encapsulated in "
-"quotes. Doing otherwise is a security risk.</span>"
+msgid "<span size='small'>Parameters passed to the shell should be encapsulated in quotes. Doing otherwise is a security risk.</span>"
 msgstr ""
 
 #: src/spectrum/spectrum.c:96
@@ -4354,8 +4439,7 @@
 "Sinuston-Generator von Haavard Kvaalen <havardk@xmms.org>\n"
 "Verändert von Daniel J. Peng <danielpeng@bigfoot.com>\n"
 "\n"
-"Um ihn zu benützen, eine URL hinzufügen: tone://frequency1;frequency2;"
-"frequency3;...\n"
+"Um ihn zu benützen, eine URL hinzufügen: tone://frequency1;frequency2;frequency3;...\n"
 "z.B. tone://2000;2005 für einen Ton mit 2000Hz und einen mit 2005Hz"
 
 #: src/tonegen/tonegen.c:170
@@ -4431,19 +4515,23 @@
 msgid "Title format:"
 msgstr "Titelformat:"
 
-#: src/vorbis/configure.c:164 src/wavpack/ui.cxx:500
+#: src/vorbis/configure.c:164
+#: src/wavpack/ui.cxx:500
 msgid "ReplayGain Settings:"
 msgstr "ReplayGain-Einstellungen:"
 
-#: src/vorbis/configure.c:182 src/wavpack/ui.cxx:518
+#: src/vorbis/configure.c:182
+#: src/wavpack/ui.cxx:518
 msgid "ReplayGain Type:"
 msgstr "ReplayGain-Typ:"
 
-#: src/vorbis/configure.c:193 src/wavpack/ui.cxx:529
+#: src/vorbis/configure.c:193
+#: src/wavpack/ui.cxx:529
 msgid "use Track Gain/Peak"
 msgstr ""
 
-#: src/vorbis/configure.c:203 src/wavpack/ui.cxx:537
+#: src/vorbis/configure.c:203
+#: src/wavpack/ui.cxx:537
 msgid "use Album Gain/Peak"
 msgstr ""
 
@@ -5064,7 +5152,8 @@
 msgid "Failed to modify tag (close)"
 msgstr "Verändern des Tags fehlgeschlagen (Schließen)"
 
-#: src/vorbis/fileinfo.c:324 src/vorbis/fileinfo.c:333
+#: src/vorbis/fileinfo.c:324
+#: src/vorbis/fileinfo.c:333
 msgid "Failed to modify tag"
 msgstr "Verändern des Tags fehlgeschlagen"
 
@@ -5120,24 +5209,30 @@
 msgid " Ogg Vorbis Info "
 msgstr " Ogg-Vorbis-Informationen "
 
-#: src/vorbis/fileinfo.c:841 src/vorbis/fileinfo.c:918
+#: src/vorbis/fileinfo.c:841
+#: src/vorbis/fileinfo.c:918
 msgid "Bit rate:"
 msgstr "Bitrate:"
 
-#: src/vorbis/fileinfo.c:854 src/vorbis/fileinfo.c:921
+#: src/vorbis/fileinfo.c:854
+#: src/vorbis/fileinfo.c:921
 msgid "Sample rate:"
 msgstr "Abtastfrequenz:"
 
-#: src/vorbis/fileinfo.c:880 src/vorbis/fileinfo.c:927
+#: src/vorbis/fileinfo.c:880
+#: src/vorbis/fileinfo.c:927
 msgid "Length:"
 msgstr "Länge:"
 
-#: src/vorbis/fileinfo.c:893 src/vorbis/fileinfo.c:930
+#: src/vorbis/fileinfo.c:893
+#: src/vorbis/fileinfo.c:930
 msgid "File size:"
 msgstr "Dateigrösse:"
 
-#: src/vorbis/fileinfo.c:919 src/vorbis/fileinfo.c:922
-#: src/vorbis/fileinfo.c:925 src/vorbis/fileinfo.c:928
+#: src/vorbis/fileinfo.c:919
+#: src/vorbis/fileinfo.c:922
+#: src/vorbis/fileinfo.c:925
+#: src/vorbis/fileinfo.c:928
 #: src/vorbis/fileinfo.c:931
 msgid "N/A"
 msgstr "K/A"
@@ -5196,8 +5291,7 @@
 #: src/vtx/about.c:24
 msgid ""
 "Vortex file format player by Sashnov Alexander <sashnov@ngs.ru>\n"
-"Founded on original source in_vtx.dll by Roman Sherbakov <v_soft@microfor."
-"ru>\n"
+"Founded on original source in_vtx.dll by Roman Sherbakov <v_soft@microfor.ru>\n"
 "\n"
 "Music in vtx format can be found at http://vtx.microfor.ru/music.htm\n"
 "and other AY/YM music sites.\n"
@@ -5224,7 +5318,7 @@
 
 #: src/wavpack/ui.cxx:286
 msgid "Wavpack Info:"
-msgstr ""
+msgstr "Wavpack-Information:"
 
 #: src/wavpack/ui.cxx:379
 #, c-format
@@ -5287,7 +5381,7 @@
 
 #: src/wav/wav-sndfile.c:549
 msgid "About sndfile WAV support"
-msgstr ""
+msgstr "Über die sndfile-WAV-Unterstützung"
 
 #: src/wav/wav-sndfile.c:550
 msgid ""
@@ -5314,7 +5408,7 @@
 
 #: src/wav/wav-sndfile.c:574
 msgid "sndfile WAV plugin"
-msgstr ""
+msgstr "sndfile-WAV-Plugin"
 
 #: src/wma/wma.c:143
 #, c-format
@@ -5324,7 +5418,6 @@
 #, fuzzy
 #~ msgid "Subtune Control"
 #~ msgstr "Lautstärkesteuerung:"
-
 #~ msgid "Load"
 #~ msgstr "Laden"
 
@@ -5347,3 +5440,4 @@
 #, fuzzy
 #~ msgid "32000"
 #~ msgstr "22000 Hz"
+
--- a/src/OSS/OSS.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/OSS/OSS.c	Sat Sep 08 06:58:08 2007 +0300
@@ -26,25 +26,23 @@
 #include <stdlib.h>
 
 OutputPlugin oss_op = {
-    NULL,
-    NULL,
-    "OSS Output Plugin",                       /* Description */
-    oss_init,
-    oss_cleanup,
-    oss_about,
-    oss_configure,
-    oss_get_volume,
-    oss_set_volume,
-    oss_open,
-    oss_write,
-    oss_close,
-    oss_flush,
-    oss_pause,
-    oss_free,
-    oss_playing,
-    oss_get_output_time,
-    oss_get_written_time,
-    oss_tell
+    .description = "OSS Output Plugin",                       /* Description */
+    .init = oss_init,
+    .cleanup = oss_cleanup,
+    .about = oss_about,
+    .configure = oss_configure,
+    .get_volume = oss_get_volume,
+    .set_volume = oss_set_volume,
+    .open_audio = oss_open,
+    .write_audio = oss_write,
+    .close_audio = oss_close,
+    .flush = oss_flush,
+    .pause = oss_pause,
+    .buffer_free = oss_free,
+    .buffer_playing = oss_playing,
+    .output_time = oss_get_output_time,
+    .written_time = oss_get_written_time,
+    .tell_audio = oss_tell
 };
 
 OutputPlugin *oss_oplist[] = { &oss_op, NULL };
--- a/src/OSS4/OSS4.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/OSS4/OSS4.c	Sat Sep 08 06:58:08 2007 +0300
@@ -27,25 +27,23 @@
 #include <audacious/configdb.h>
 
 OutputPlugin oss_op = {
-    NULL,
-    NULL,
-    "OSS4 Output Plugin",                       /* Description */
-    oss_init,
-    oss_cleanup,
-    oss_about,
-    oss_configure,
-    oss_get_volume,
-    oss_set_volume,
-    oss_open,
-    oss_write,
-    oss_close,
-    oss_flush,
-    oss_pause,
-    oss_free,
-    oss_playing,
-    oss_get_output_time,
-    oss_get_written_time,
-    oss_tell
+    .description = "OSS4 Output Plugin",                      /* Description */
+    .init = oss_init,
+    .cleanup = oss_cleanup,
+    .about = oss_about,
+    .configure = oss_configure,
+    .get_volume = oss_get_volume,
+    .set_volume = oss_set_volume,
+    .open_audio = oss_open,
+    .write_audio = oss_write,
+    .close_audio = oss_close,
+    .flush = oss_flush,
+    .pause = oss_pause,
+    .buffer_free = oss_free,
+    .buffer_playing = oss_playing,
+    .output_time = oss_get_output_time,
+    .written_time = oss_get_written_time,
+    .tell_audio = oss_tell
 };
 
 OutputPlugin *oss_oplist[] = { &oss_op, NULL };
--- a/src/adplug/adplug-xmms.cc	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/adplug/adplug-xmms.cc	Sat Sep 08 06:58:08 2007 +0300
@@ -1136,8 +1136,10 @@
   NULL,                         // filename (filled by XMMS)
   (gchar *)ADPLUG_NAME,                  // plugin description
   adplug_init,                  // plugin functions...
+  adplug_quit,
   adplug_about,
   adplug_config,
+  FALSE,
   adplug_is_our_file,
   NULL,                         // scan_dir (look in Input/cdaudio/cdaudio.c)
   adplug_play,
@@ -1148,7 +1150,6 @@
   adplug_get_time,
   NULL,                         // get_volume (handled by output plugin)
   NULL,                         // set_volume (...)
-  adplug_quit,
   NULL,                         // OBSOLETE - DO NOT USE!
   NULL,                         // add_vis_pcm (filled by XMMS)
   NULL,                         // set_info (filled by XMMS)
--- a/src/alarm/alarm.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/alarm/alarm.c	Sat Sep 08 06:58:08 2007 +0300
@@ -996,18 +996,12 @@
  */
 static GeneralPlugin alarm_plugin =
 {
-     NULL,
-     NULL,
-     "Alarm "VERSION,
-     alarm_init,
-     alarm_about,
-     alarm_configure,
-     alarm_cleanup,
+     .description = "Alarm "VERSION,
+     .init = alarm_init,
+     .about = alarm_about,
+     .configure = alarm_configure,
+     .cleanup = alarm_cleanup,
 };
 
 GeneralPlugin *alarm_gplist[] = { &alarm_plugin, NULL };
-DECLARE_PLUGIN(alarm, NULL, NULL, NULL, NULL, NULL, alarm_gplist, NULL, NULL);
-
-/*
- * vi:ai:expandtab:ts=2 sts=2 shiftwidth=2:nowrap:
- */
+SIMPLE_GENERAL_PLUGIN(alarm, alarm_gplist);
--- a/src/alsa/alsa.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/alsa/alsa.c	Sat Sep 08 06:58:08 2007 +0300
@@ -21,25 +21,23 @@
 
 OutputPlugin alsa_op =
 {
-	NULL,
-	NULL,
-	"ALSA Output Plugin",
-	alsa_init,
-	alsa_cleanup,
-	alsa_about,
-	alsa_configure,
-	alsa_get_volume,
-	alsa_set_volume,
-	alsa_open,
-	alsa_write,
-	alsa_close,
-	alsa_flush,
-	alsa_pause,
-	alsa_free,
-	alsa_playing,
-	alsa_get_output_time,
-	alsa_get_written_time,
-	alsa_tell
+	.description = "ALSA Output Plugin",
+	.init = alsa_init,
+	.cleanup = alsa_cleanup,
+	.about = alsa_about,
+	.configure = alsa_configure,
+	.get_volume = alsa_get_volume,
+	.set_volume = alsa_set_volume,
+	.open_audio = alsa_open,
+	.write_audio = alsa_write,
+	.close_audio = alsa_close,
+	.flush = alsa_flush,
+	.pause = alsa_pause,
+	.buffer_free = alsa_free,
+	.buffer_playing = alsa_playing,
+	.output_time = alsa_get_output_time,
+	.written_time = alsa_get_written_time,
+	.tell_audio = alsa_tell
 };
 
 OutputPlugin *alsa_oplist[] = { &alsa_op, NULL };
--- a/src/aosd/aosd.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/aosd/aosd.c	Sat Sep 08 06:58:08 2007 +0300
@@ -26,7 +26,7 @@
 
 
 GeneralPlugin *aosd_gplist[] = { &aosd_gp, NULL };
-DECLARE_PLUGIN(aosd, NULL, NULL, NULL, NULL, NULL, aosd_gplist, NULL, NULL);
+SIMPLE_GENERAL_PLUGIN(aosd, aosd_gplist);
 
 aosd_cfg_t * global_config = NULL;
 gboolean plugin_is_active = FALSE;
--- a/src/aosd/aosd.h	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/aosd/aosd.h	Sat Sep 08 06:58:08 2007 +0300
@@ -35,13 +35,11 @@
 
 GeneralPlugin aosd_gp =
 {
-    NULL,						/* handle */
-    NULL,						/* filename */
-    "Audacious OSD " AOSD_VERSION_PLUGIN,	/* description */
-    aosd_init,					/* init */
-    aosd_about,					/* about */
-    aosd_configure,				/* configure */
-    aosd_cleanup					/* cleanup */
+    .description= "Audacious OSD " AOSD_VERSION_PLUGIN,
+    .init = aosd_init,
+    .about = aosd_about,
+    .configure = aosd_configure,
+    .cleanup = aosd_cleanup
 };
 
 #endif /* !_I_AOSD_H */
--- a/src/audiocompress/audacious-glue.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/audiocompress/audacious-glue.c	Sat Sep 08 06:58:08 2007 +0300
@@ -45,14 +45,12 @@
 
 
 static EffectPlugin xmms_plugin = {
-	NULL, NULL,
-	"AudioCompressor AGC plugin",
-	myInit,
-	myCleanup,
-	myAbout,
-	myPrefs,
-	myModify,
- 	NULL
+	.description = "AudioCompressor AGC plugin",
+	.init = myInit,
+	.cleanup = myCleanup,
+	.about = myAbout,
+	.configure = myPrefs,
+	.mod_samples = myModify,
 };
 
 EffectPlugin *audiocompress_eplist[] = { &xmms_plugin, NULL };
--- a/src/blur_scope/blur_scope.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/blur_scope/blur_scope.c	Sat Sep 08 06:58:08 2007 +0300
@@ -66,20 +66,14 @@
 
 
 VisPlugin bscope_vp = {
-    NULL,
-    NULL,
-    "Blur Scope",                       /* description */
-    1,                          /* Number of PCM channels wanted */
-    0,                          /* Number of freq channels wanted */
-    bscope_init,                /* init */
-    bscope_cleanup,             /* cleanup */
-    NULL,                       /* about */
-    bscope_configure,           /* configure */
-    NULL,                       /* disable_plugin */
-    NULL,                       /* playback_start */
-    bscope_playback_stop,       /* playback_stop */
-    bscope_render_pcm,          /* render_pcm */
-    NULL                        /* render_freq */
+    .description = "Blur Scope",                       /* description */
+    .num_pcm_chs_wanted = 1, /* Number of PCM channels wanted */
+    .num_freq_chs_wanted = 0, /* Number of freq channels wanted */
+    .init = bscope_init,                /* init */
+    .cleanup = bscope_cleanup,             /* cleanup */
+    .configure = bscope_configure,           /* configure */
+    .playback_stop = bscope_playback_stop,       /* playback_stop */
+    .render_pcm = bscope_render_pcm,          /* render_pcm */
 };
 
 VisPlugin *bscope_vplist[] = { &bscope_vp, NULL };
--- a/src/console/Audacious_Driver.cxx	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/console/Audacious_Driver.cxx	Sat Sep 08 06:58:08 2007 +0300
@@ -486,7 +486,7 @@
 	console_cfg_load();
 }
 
-extern "C" void console_aboutbox(void)
+void console_aboutbox(void)
 {
 	static GtkWidget * aboutbox = NULL;
 
@@ -513,9 +513,9 @@
 	NULL,
 	(gchar *)"Game console audio module decoder",
 	console_init,
+	NULL,
 	console_aboutbox,
 	console_cfg_ui,
-	NULL,
 	FALSE,
 	NULL,
 	NULL,
@@ -543,8 +543,4 @@
 
 InputPlugin *console_iplist[] = { &console_ip, NULL };
 
-extern "C" {
-
-DECLARE_PLUGIN(console, NULL, NULL, console_iplist, NULL, NULL, NULL, NULL,NULL);
-
-};
+SIMPLE_INPUT_PLUGIN(console, console_iplist);
--- a/src/echo_plugin/echo.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/echo_plugin/echo.c	Sat Sep 08 06:58:08 2007 +0300
@@ -23,15 +23,12 @@
 
 EffectPlugin echo_ep =
 {
-	NULL,
-	NULL,
-	"Echo Plugin", /* Description */
-	init,
-	cleanup,
-	echo_about,
-	echo_configure,
-	mod_samples,
-	NULL
+	.description = "Echo Plugin", /* Description */
+	.init = init,
+	.cleanup = cleanup,
+	.about = echo_about,
+	.configure = echo_configure,
+	.mod_samples = mod_samples,
 };
 
 static gint16 *buffer = NULL;
--- a/src/esd/esd.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/esd/esd.c	Sat Sep 08 06:58:08 2007 +0300
@@ -21,25 +21,22 @@
 
 
 OutputPlugin esd_op = {
-    NULL,
-    NULL,
-    "ESD Output Plugin",
-    esdout_init,
-    NULL,
-    esdout_about,
-    esdout_configure,
-    esdout_get_volume,
-    esdout_set_volume,
-    esdout_open,
-    esdout_write,
-    esdout_close,
-    esdout_flush,
-    esdout_pause,
-    esdout_free,
-    esdout_playing,
-    esdout_get_output_time,
-    esdout_get_written_time,
-    esdout_tell
+    .description = "ESD Output Plugin",
+    .init = esdout_init,
+    .about = esdout_about,
+    .configure = esdout_configure,
+    .get_volume = esdout_get_volume,
+    .set_volume = esdout_set_volume,
+    .open_audio = esdout_open,
+    .write_audio = esdout_write,
+    .close_audio = esdout_close,
+    .flush = esdout_flush,
+    .pause = esdout_pause,
+    .buffer_free = esdout_free,
+    .buffer_playing = esdout_playing,
+    .output_time = esdout_get_output_time,
+    .written_time = esdout_get_written_time,
+    .tell_audio = esdout_tell
 };
 
 OutputPlugin *esd_oplist[] = { &esd_op, NULL };
--- a/src/evdev-plug/ed.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/evdev-plug/ed.c	Sat Sep 08 06:58:08 2007 +0300
@@ -29,7 +29,7 @@
 
 
 GeneralPlugin *evdevplug_gplist[] = { &ed_gp, NULL };
-DECLARE_PLUGIN(evdev-plug, NULL, NULL, NULL, NULL, NULL, evdevplug_gplist, NULL, NULL);
+SIMPLE_GENERAL_PLUGIN(evdev-plug, evdevplug_gplist);
 
 GList *ed_device_listening_list = NULL;
 gboolean plugin_is_active = FALSE;
--- a/src/evdev-plug/ed.h	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/evdev-plug/ed.h	Sat Sep 08 06:58:08 2007 +0300
@@ -32,13 +32,11 @@
 
 GeneralPlugin ed_gp =
 {
-    NULL,					/* handle */
-    NULL,					/* filename */
-    "EvDev-Plug " ED_VERSION_PLUGIN,		/* description */
-    ed_init,					/* init */
-    ed_about,					/* about */
-    ed_config,					/* configure */
-    ed_cleanup					/* cleanup */
+    .description = "EvDev-Plug " ED_VERSION_PLUGIN,
+    .init = ed_init,
+    .about = ed_about,
+    .configure = ed_config,	
+    .cleanup = ed_cleanup
 };
 
 #endif /* !_I_ED_H */
--- a/src/filewriter/filewriter.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/filewriter/filewriter.c	Sat Sep 08 06:58:08 2007 +0300
@@ -92,30 +92,24 @@
 
 OutputPlugin file_op =
 {
-    NULL,
-    NULL,
-    "FileWriter Plugin",
-    file_init,
-    NULL,
-    file_about,
-    file_configure,
-    NULL,
-    NULL,
-    file_open,
-    file_write,
-    file_close,
-    file_flush,
-    file_pause,
-    file_free,
-    file_playing,
-    file_get_output_time,
-    file_get_written_time,
-    NULL
+    .description = "FileWriter Plugin",
+    .init = file_init,
+    .about = file_about,
+    .configure = file_configure,
+    .open_audio = file_open,
+    .write_audio = file_write,
+    .close_audio = file_close,
+    .flush = file_flush,
+    .pause = file_pause,
+    .buffer_free = file_free,
+    .buffer_playing = file_playing,
+    .output_time = file_get_output_time,
+    .written_time = file_get_written_time
 };
 
 OutputPlugin *file_oplist[] = { &file_op, NULL };
 
-DECLARE_PLUGIN(filewriter, NULL, NULL, NULL, file_oplist, NULL, NULL, NULL, NULL);
+SIMPLE_OUTPUT_PLUGIN(filewriter, file_oplist);
 
 static void set_plugin(void)
 {
--- a/src/flacng/seekable_stream_callbacks.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/flacng/seekable_stream_callbacks.c	Sat Sep 08 06:58:08 2007 +0300
@@ -20,7 +20,6 @@
 #include <string.h>
 #include <FLAC/all.h>
 #include <glib.h>
-#include <glib/gi18n.h>
 #include <audacious/vfs.h>
 #include "flacng.h"
 #include "tools.h"
--- a/src/hotkey/plugin.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/hotkey/plugin.c	Sat Sep 08 06:58:08 2007 +0300
@@ -129,17 +129,15 @@
 
 static GeneralPlugin audacioushotkey =
 {
-	NULL,
-	NULL,
-	"Global Hotkey",
-	init,
-	about,
-	configure,
-	cleanup
+	.description = "Global Hotkey",
+	.init = init,
+	.about = about,
+	.configure = configure,
+	.cleanup = cleanup
 };
 
 GeneralPlugin *hotkey_gplist[] = { &audacioushotkey, NULL };
-DECLARE_PLUGIN(hotkey, NULL, NULL, NULL, NULL, NULL, hotkey_gplist, NULL, NULL);
+SIMPLE_GENERAL_PLUGIN(hotkey, hotkey_gplist);
 
 
 
--- a/src/ladspa/ladspa.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/ladspa/ladspa.c	Sat Sep 08 06:58:08 2007 +0300
@@ -117,14 +117,11 @@
 static GtkWidget *config_window = NULL, *run_clist = NULL;
 
 static EffectPlugin ladspa_ep = {
-  NULL, NULL,
-  PLUGIN_NAME,
-  start,
-  stop,
-  NULL,
-  configure,
-  apply_effect,
-  NULL
+  .description = PLUGIN_NAME,
+  .init = start,
+  .cleanup = stop,
+  .configure = configure,
+  .mod_samples = apply_effect,
 };
 
 EffectPlugin *ladspa_eplist[] = { &ladspa_ep, NULL };
--- a/src/m3u/m3u.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/m3u/m3u.c	Sat Sep 08 06:58:08 2007 +0300
@@ -92,8 +92,7 @@
     if ((file = vfs_fopen(uri ? uri : filename, "rb")) == NULL)
         return;
 
-    if (uri)
-        g_free(uri);
+    g_free(uri);
 
     line = g_malloc(line_len);
     while (vfs_fgets(line, line_len, file)) {
@@ -134,9 +133,7 @@
 
         uri = g_filename_to_uri(line, NULL, NULL);
         playlist_load_ins_file(playlist, uri ? uri : line, filename, pos, ext_title, ext_len);
-
-        if (uri)
-            g_free(uri);
+        g_free(uri);
 
         str_replace_in(&ext_title, NULL);
         ext_len = -1;
@@ -163,7 +160,7 @@
 
     fn = g_filename_to_uri(filename, NULL, NULL);
     file = vfs_fopen(fn ? fn : filename, "wb");
-    g_free(fn); fn = NULL;
+    g_free(fn);
     g_return_if_fail(file != NULL);
 
     if (cfg.use_pl_metadata)
@@ -194,8 +191,7 @@
 
         fn = g_filename_from_uri(entry->filename, NULL, NULL);
         vfs_fprintf(file, "%s\n", fn ? fn : entry->filename);
-
-        g_free(fn); fn = NULL;
+        g_free(fn);
     }
 
     PLAYLIST_UNLOCK(playlist->mutex);
--- a/src/modplug/plugin.cxx	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/modplug/plugin.cxx	Sat Sep 08 06:58:08 2007 +0300
@@ -16,108 +16,109 @@
 
 static void Init(void)
 {
-	gModplugXMMS.SetInputPlugin(gModPlug);
-	gModplugXMMS.Init();
+    gModplugXMMS.SetInputPlugin(gModPlug);
+    gModplugXMMS.Init();
 }
 
 static int CanPlayFileFromVFS(char* aFilename, VFSFile *VFSFile)
 {
-	if(gModplugXMMS.CanPlayFileFromVFS(aFilename, VFSFile))
-		return 1;
-	return 0;
+    if(gModplugXMMS.CanPlayFileFromVFS(aFilename, VFSFile))
+        return 1;
+    return 0;
 }
 
 static void PlayFile(InputPlayback *data)
 {
         char* aFilename = data->filename;
-	gModplugXMMS.SetOutputPlugin(*data->output);
-	gModplugXMMS.PlayFile(aFilename, data);
+    gModplugXMMS.SetOutputPlugin(*data->output);
+    gModplugXMMS.PlayFile(aFilename, data);
 }
 
 static void Stop(InputPlayback *data)
 {
-	gModplugXMMS.Stop();
+    gModplugXMMS.Stop();
 }
 
 static void Pause(InputPlayback *data, short aPaused)
 {
-	gModplugXMMS.Pause((bool)aPaused);
+    gModplugXMMS.Pause((bool)aPaused);
 }
 
 static void Seek(InputPlayback *data, int aTime)
 {
-	gModplugXMMS.Seek(float32(aTime));
+    gModplugXMMS.Seek(float32(aTime));
 }
 
 static int GetTime(InputPlayback *data)
 {
-	float32 lTime;
-	
-	lTime = gModplugXMMS.GetTime();
-	if(lTime == -1)
-		return -1;
-	else
-		return (int)(lTime * 1000);
+    float32 lTime;
+    
+    lTime = gModplugXMMS.GetTime();
+    if(lTime == -1)
+        return -1;
+    else
+        return (int)(lTime * 1000);
 }
 
 static Tuple* GetSongTuple(char* aFilename)
 {
-	return gModplugXMMS.GetSongTuple(aFilename);
+    return gModplugXMMS.GetSongTuple(aFilename);
 }
 
 void ShowAboutBox(void)
 {
-	ShowAboutWindow();
+    ShowAboutWindow();
 }
 
 void ShowConfigureBox(void)
 {
-	ShowConfigureWindow(gModplugXMMS.GetModProps());
+    ShowConfigureWindow(gModplugXMMS.GetModProps());
 }
 
 void ShowFileInfoBox(char* aFilename)
 {
-	ShowInfoWindow(aFilename);
+    ShowInfoWindow(aFilename);
 }
 
 const gchar *fmts[] =
-	{ "amf", "ams", "dbm", "dbf", "dsm", "far", "mdl", "stm", "ult", "j2b", "mt2",
-	  "mdz", "mdr", "mdgz", "mdbz", "mod", "s3z", "s3r", "s3gz", "s3m", "xmz", "xmr", "xmgz",
-	  "itz", "itr", "itgz", "dmf", "umx", "it", "669", "xm", "mtm", "psm", "ft2", NULL };
+    { "amf", "ams", "dbm", "dbf", "dsm", "far", "mdl", "stm", "ult", "j2b", "mt2",
+      "mdz", "mdr", "mdgz", "mdbz", "mod", "s3z", "s3r", "s3gz", "s3m", "xmz", "xmr", "xmgz",
+      "itz", "itr", "itgz", "dmf", "umx", "it", "669", "xm", "mtm", "psm", "ft2", NULL };
 
 InputPlugin gModPlug =
 {
-	NULL,
-	NULL,
-	(gchar *)"ModPlug Audio Plugin",
-	Init,
-	ShowAboutBox,
-	ShowConfigureBox,
-	NULL,
-	NULL,
-	PlayFile,
-	Stop,
-	Pause,
-	Seek,
-	NULL,
-	GetTime,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	ShowFileInfoBox,
-	NULL,	// output
-	GetSongTuple,
-	NULL,
-	NULL,
-	CanPlayFileFromVFS,	// vfs
-	(gchar **)fmts,
+    NULL,
+    NULL,
+    (gchar *)"ModPlug Audio Plugin",
+    Init,
+    NULL,
+    ShowAboutBox,
+    ShowConfigureBox,
+    FALSE,
+    NULL,
+    NULL,
+    PlayFile,
+    Stop,
+    Pause,
+    Seek,
+    NULL,
+    GetTime,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    ShowFileInfoBox,
+    NULL,   // output
+    GetSongTuple,
+    NULL,
+    NULL,
+    CanPlayFileFromVFS, // vfs
+    (gchar **)fmts
 };
 
 InputPlugin *modplug_iplist[] = { &gModPlug, NULL };
 
-DECLARE_PLUGIN(modplug, NULL, NULL, modplug_iplist, NULL, NULL, NULL, NULL,NULL);
+SIMPLE_INPUT_PLUGIN(modplug, modplug_iplist);
--- a/src/null/null.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/null/null.c	Sat Sep 08 06:58:08 2007 +0300
@@ -240,25 +240,19 @@
 
 OutputPlugin null_op =
 {
-	NULL,
-	NULL,
-	"Null Output Plugin",
-	null_init,
-	NULL,			/* cleanup */
-	null_about,
-	null_configure,
-	NULL,			/* Get volume */
-	NULL,			/* Set volume */
-	null_open,
-	null_write,
-	null_close,
-	null_flush,
-	null_pause,
-	null_buffer_free,
-	null_playing,
-	null_get_output_time,
-	null_get_written_time,
-	NULL			/* tell */
+	.description = "Null Output Plugin",
+	.init = null_init,
+	.about = null_about,
+	.configure = null_configure,
+	.open_audio = null_open,
+	.write_audio = null_write,
+	.close_audio = null_close,
+	.flush = null_flush,
+	.pause = null_pause,
+	.buffer_free = null_buffer_free,
+	.buffer_playing = null_playing,
+	.output_time = null_get_output_time,
+	.written_time = null_get_written_time,
 };
 
 OutputPlugin *null_oplist[] = { &null_op, NULL };
--- a/src/paranormal/plugin.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/paranormal/plugin.c	Sat Sep 08 06:58:08 2007 +0300
@@ -60,20 +60,15 @@
 
 static VisPlugin pn_vp = 
 {
-  NULL,
-  NULL,
-  "Paranormal Visualization Studio",
-  2,
-  2,
-  pn_xmms_init,
-  pn_xmms_cleanup,
-  pn_xmms_about,
-  pn_xmms_configure,
-  NULL, /* disable_plugin */
-  NULL, /* pn_xmms_playback_start */
-  NULL, /* pn_xmms_playback_stop */
-  pn_xmms_render_pcm,
-  pn_xmms_render_freq
+  .description = "Paranormal Visualization Studio",
+  .num_pcm_chs_wanted = 2,
+  .num_freq_chs_wanted = 2,
+  .init = pn_xmms_init,
+  .cleanup = pn_xmms_cleanup,
+  .about = pn_xmms_about,
+  .configure = pn_xmms_configure,
+  .render_pcm = pn_xmms_render_pcm,
+  .render_freq = pn_xmms_render_freq
 };
 
 VisPlugin *pn_vplist[] = { &pn_vp, NULL };
--- a/src/projectm/main.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/projectm/main.c	Sat Sep 08 06:58:08 2007 +0300
@@ -73,20 +73,17 @@
 
 // Callback functions
 VisPlugin projectM_vtable = {
-  NULL, // Handle, filled in by xmms
-  NULL, // Filename, filled in by xmms
-  "projectM v0.99",       // description
-  2, // # of PCM channels for render_pcm()
-  0, // # of freq channels wanted for render_freq()
-  projectM_xmms_init,     // Called when plugin is enabled
-  projectM_cleanup,        // Called when plugin is disabled
-  projectM_about,          // Show the about box
-  projectM_configure,      // Show the configure box
-  NULL,                     // Called to disable plugin, filled in by xmms
-  projectM_playback_start, // Called when playback starts
-  projectM_playback_stop,  // Called when playback stops
-  projectM_render_pcm,      // Render the PCM data, must return quickly
-  projectM_render_freq     // Render the freq data, must return quickly
+  .description = "projectM v0.99",       // description
+  .num_pcm_chs_wanted = 2, // # of PCM channels for render_pcm()
+  .num_freq_chs_wanted = 0, // # of freq channels wanted for render_freq()
+  .init = projectM_xmms_init,     // Called when plugin is enabled
+  .cleanup = projectM_cleanup,        // Called when plugin is disabled
+  .about = projectM_about,          // Show the about box
+  .configure = projectM_configure,      // Show the configure box
+  .playback_start = projectM_playback_start, // Called when playback starts
+  .playback_stop = projectM_playback_stop,  // Called when playback stops
+  .render_pcm = projectM_render_pcm,      // Render the PCM data, must return quickly
+  .render_freq = projectM_render_freq     // Render the freq data, must return quickly
 };
 
 VisPlugin *projectM_vplist[] = { &projectM_vtable, NULL };
--- a/src/rootvis/rootvis.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/rootvis/rootvis.c	Sat Sep 08 06:58:08 2007 +0300
@@ -23,28 +23,20 @@
 
 // Callback functions
 VisPlugin rootvis_vtable = {
-	0, // Handle, filled in by xmms
-	0, // Filename, filled in by xmms
-
-	"Root Spectrum Analyzer 0.0.8",  // description
-
-	0, // # of PCM channels for render_pcm()
-	2, // # of freq channels wanted for render_freq()
-
-	rootvis_init,           // Called when plugin is enabled
-	rootvis_cleanup,        // Called when plugin is disabled
-	NULL,//rootvis_about,          // Show the about box
-	rootvis_configure,      // Show the configure box
-	NULL,                     // Called to disable plugin, filled in by xmms
-	rootvis_playback_start, // Called when playback starts
-	rootvis_playback_stop,  // Called when playback stops
-	NULL,                     // Render the PCM data, must return quickly
-	rootvis_render_freq     // Render the freq data, must return quickly
+	.description = "Root Spectrum Analyzer 0.0.8",
+	.num_pcm_chs_wanted = 0,
+	.num_freq_chs_wanted = 2,
+	.init = rootvis_init,
+	.cleanup = rootvis_cleanup,
+	.configure = rootvis_configure,
+	.playback_start = rootvis_playback_start,
+	.playback_stop = rootvis_playback_stop,
+	.render_freq = rootvis_render_freq
 };
 
 VisPlugin *rootvis_vplist[] = { &rootvis_vtable, NULL };
 
-DECLARE_PLUGIN(rootvis, NULL, NULL, NULL, NULL, NULL, NULL, rootvis_vplist,NULL);
+SIMPLE_VISUAL_PLUGIN(rootvis, rootvis_vplist);
 
 // X related
 struct rootvis_x {
--- a/src/rovascope/plugin.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/rovascope/plugin.c	Sat Sep 08 06:58:08 2007 +0300
@@ -60,20 +60,15 @@
 
 static VisPlugin pn_vp = 
 {
-  NULL,
-  NULL,
-  "Rovascope " VERSION,
-  2,
-  2,
-  pn_xmms_init,
-  pn_xmms_cleanup,
-  pn_xmms_about,
-  pn_xmms_configure,
-  NULL, /* disable_plugin */
-  NULL, /* pn_xmms_playback_start */
-  NULL, /* pn_xmms_playback_stop */
-  pn_xmms_render_pcm,
-  pn_xmms_render_freq
+  .description = "Rovascope " VERSION,
+  .num_pcm_chs_wanted = 2,
+  .num_freq_chs_wanted = 2,
+  .init = pn_xmms_init,
+  .cleanup = pn_xmms_cleanup,
+  .about = pn_xmms_about,
+  .configure = pn_xmms_configure,
+  .render_pcm = pn_xmms_render_pcm,
+  .render_freq = pn_xmms_render_freq
 };
 
 VisPlugin *rovascope_vplist[] = { &pn_vp, NULL };
--- a/src/scrobbler/fmt.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/scrobbler/fmt.c	Sat Sep 08 06:58:08 2007 +0300
@@ -9,11 +9,17 @@
 
 char *fmt_escape(const char *str)
 {
+	if (str == NULL)
+		return "";
+
 	return curl_escape(str, 0);
 }
 
 char *fmt_unescape(char *str)
 {
+	if (str == NULL)
+		return "";
+
 	return curl_unescape(str, 0);
 }
 
--- a/src/scrobbler/plugin.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/scrobbler/plugin.c	Sat Sep 08 06:58:08 2007 +0300
@@ -56,13 +56,10 @@
 
 static GeneralPlugin scrobbler_gp =
 {
-	NULL,
-	NULL,
-	"Scrobbler Plugin",
-	init,
-	about_show,
-	NULL,
-	cleanup
+	.description = "Scrobbler Plugin",
+	.init = init,
+	.about = about_show,
+	.cleanup = cleanup
 };
 
 static gboolean ishttp(const char *a)
--- a/src/scrobbler/scrobbler.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/scrobbler/scrobbler.c	Sat Sep 08 06:58:08 2007 +0300
@@ -147,7 +147,7 @@
 		item->mb = fmt_escape((char*)tuple->mb);
 #endif
 
-	if((album = tuple_get_string(tuple, FIELD_ALBUM, NULL)))
+	if((album = tuple_get_string(tuple, FIELD_ALBUM, NULL)) != NULL)
 		item->album = fmt_escape("");
 	else
 		item->album = fmt_escape((char*) album);
--- a/src/sid/xmms-sid.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/sid/xmms-sid.c	Sat Sep 08 06:58:08 2007 +0300
@@ -266,14 +266,12 @@
 	if (pcFilename == NULL)
 		return 0;
 
-//	XS_MUTEX_LOCK(xs_status);
 	if ((f = xs_fopen(pcFilename, "rb")) != NULL) {
 		if (xs_status.sidPlayer->plrProbe(f))
 			result = 1;
 		xs_fclose(f);
 	}
 
-//	XS_MUTEX_UNLOCK(xs_status);
 	return result;
 }
 
@@ -312,11 +310,19 @@
 	/* Check the filename */
 	if (pcFilename == NULL)
 		return 0;
-	
+
+#ifdef LULZ
+	/* FIXME! ATTENTION! Subtune addition is now temporarily disabled
+	 * again, due to following reason: the way it currently is "supposed"
+	 * to be done is horribly broken and causes an "infinite recursive
+	 * addition loop" in some cases. - ccr
+	 */
 	if (xs_has_tracknumber(pcFilename) != NULL)
 		return 1;
+#endif
 	
 	if (xs_status.sidPlayer->plrProbe(f)) {
+#ifdef LULZ
 		t_xs_tuneinfo *pInfo;
 		
 		pInfo = xs_status.sidPlayer->plrGetSIDInfo(pcFilename);
@@ -345,6 +351,9 @@
 			tmpResult = 1;
 			
 		xs_tuneinfo_free(pInfo);
+#else
+		tmpResult = 1;
+#endif
 	}
 		
 	return tmpResult;
--- a/src/sndstretch/sndstretch_xmms.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/sndstretch/sndstretch_xmms.c	Sat Sep 08 06:58:08 2007 +0300
@@ -44,15 +44,11 @@
 int sndstretch_mod_samples (gpointer *ptr, gint length, AFormat fmt, gint srate, gint nch);
 
 EffectPlugin sndstretch_ep = {
-	NULL,
-	NULL,
-	"SndStretch",
-	sndstretch_init,
-	NULL,
-	sndstretch_about,
-	sndstretch_config,
-	sndstretch_mod_samples,
-	NULL
+	.description = "SndStretch",
+	.init = sndstretch_init,
+	.about = sndstretch_about,
+	.configure = sndstretch_config,
+	.mod_samples = sndstretch_mod_samples,
 };
 
 EffectPlugin *sndstretch_eplist[] = { &sndstretch_ep, NULL };
--- a/src/spectrum/spectrum.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/spectrum/spectrum.c	Sat Sep 08 06:58:08 2007 +0300
@@ -61,20 +61,14 @@
 static void fsanalyzer_render_freq(gint16 data[2][256]);
 
 VisPlugin fsanalyzer_vp = {
-	NULL,
-	NULL,
-	"Spectrum Analyzer",
-	0,
-	1,
-	fsanalyzer_init, /* init */
-	fsanalyzer_cleanup, /* cleanup */
-	NULL, /* about */
-	NULL, /* configure */
-	NULL, /* disable_plugin */
-	fsanalyzer_playback_start, /* playback_start */
-	fsanalyzer_playback_stop, /* playback_stop */
-	NULL, /* render_pcm */
-	fsanalyzer_render_freq  /* render_freq */
+	.description = "Spectrum Analyzer",
+	.num_pcm_chs_wanted = 0,
+	.num_freq_chs_wanted = 1,
+	.init = fsanalyzer_init, /* init */
+	.cleanup = fsanalyzer_cleanup, /* cleanup */
+	.playback_start = fsanalyzer_playback_start, /* playback_start */
+	.playback_stop = fsanalyzer_playback_stop, /* playback_stop */
+	.render_freq = fsanalyzer_render_freq  /* render_freq */
 };
 
 VisPlugin *spectrum_vplist[] = { &fsanalyzer_vp, NULL };
--- a/src/statusicon/si.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/statusicon/si.c	Sat Sep 08 06:58:08 2007 +0300
@@ -28,7 +28,7 @@
 
 
 GeneralPlugin *statusicon_gplist[] = { &si_gp, NULL };
-DECLARE_PLUGIN(statusicon, NULL, NULL, NULL, NULL, NULL, statusicon_gplist, NULL, NULL);
+SIMPLE_GENERAL_PLUGIN(statusicon, statusicon_gplist);
 
 static gboolean plugin_active = FALSE;
 
--- a/src/statusicon/si.h	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/statusicon/si.h	Sat Sep 08 06:58:08 2007 +0300
@@ -32,13 +32,11 @@
 
 GeneralPlugin si_gp =
 {
-    NULL,					/* handle */
-    NULL,					/* filename */
-    "Status Icon " SI_VERSION_PLUGIN,		/* description */
-    si_init,					/* init */
-    si_about,					/* about */
-    si_prefs,					/* configure */
-    si_cleanup					/* cleanup */
+    .description = "Status Icon " SI_VERSION_PLUGIN,
+    .init = si_init,
+    .about = si_about,
+    .configure = si_prefs,
+    .cleanup = si_cleanup
 };
 
 #endif /* !_I_SI_H */
--- a/src/stereo_plugin/stereo.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/stereo_plugin/stereo.c	Sat Sep 08 06:58:08 2007 +0300
@@ -16,14 +16,11 @@
 
 EffectPlugin stereo_ep =
 {
-	NULL,
-	NULL,
-	"Extra Stereo Plugin", /* Description */
-	init,
-	NULL,
-	about,
-	configure,
-	mod_samples
+	.description = "Extra Stereo Plugin", /* Description */
+	.init = init,
+	.about = about,
+	.configure = configure,
+	.mod_samples = mod_samples
 };
 
 static const char *about_text = N_("Extra Stereo Plugin\n\n"
--- a/src/timidity/src/xmms-timidity.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/timidity/src/xmms-timidity.c	Sat Sep 08 06:58:08 2007 +0300
@@ -37,34 +37,18 @@
 #include "interface.h"
 
 InputPlugin xmmstimid_ip = {
-	NULL,
-	NULL,
-	"TiMidity Audio Plugin",
-	xmmstimid_init,
-	xmmstimid_about,
-	xmmstimid_configure,
-	NULL,
-	NULL,
-	xmmstimid_play_file,
-	xmmstimid_stop,
-	xmmstimid_pause,
-	xmmstimid_seek,
-	NULL,
-	xmmstimid_get_time,
-	NULL,
-	NULL,
-	xmmstimid_cleanup,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	xmmstimid_get_song_info,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	xmmstimid_is_our_fd,
+	.description = "TiMidity Audio Plugin",
+	.init = xmmstimid_init,
+	.about = xmmstimid_about,
+	.configure = xmmstimid_configure,
+	.play_file = xmmstimid_play_file,
+	.stop = xmmstimid_stop,
+	.pause = xmmstimid_pause,
+	.seek = xmmstimid_seek,
+	.get_time = xmmstimid_get_time,
+	.cleanup = xmmstimid_cleanup,
+	.get_song_info = xmmstimid_get_song_info,
+	.is_our_file_from_vfs = xmmstimid_is_our_fd,
 };
 
 InputPlugin *timidity_iplist[] = { &xmmstimid_ip, NULL };
--- a/src/tta/libtta.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/tta/libtta.c	Sat Sep 08 06:58:08 2007 +0300
@@ -84,36 +84,20 @@
 
 InputPlugin tta_ip =
 {
-	NULL,
-	NULL,
-	"True Audio Plugin",
-	init,
-	about,
-	NULL,
-	is_our_file,
-	NULL,
-	play_file,
-	stop,
-	tta_pause,
-	seek,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	cleanup,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	get_song_info,
-	file_info,
-	NULL,
-	get_song_tuple, // get_song_tuple
-	NULL, // set_song_tuple
-	NULL, // buffer
-	NULL, // vfs
-	tta_fmts,
-	mseek,
+	.description = "True Audio Plugin",
+	.init = init,
+	.about = about,
+	.is_our_file = is_our_file,
+	.play_file = play_file,
+	.stop = stop,
+	.pause = tta_pause,
+	.seek = seek,
+	.cleanup = cleanup,
+	.get_song_info = get_song_info,
+	.file_info_box = file_info,
+	.get_song_tuple = get_song_tuple,
+	.vfs_extensions = tta_fmts,
+	.mseek = mseek,
 };
 
 InputPlugin *tta_iplist[] = { &tta_ip, NULL };
--- a/src/voice_removal/voice_removal.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/voice_removal/voice_removal.c	Sat Sep 08 06:58:08 2007 +0300
@@ -32,15 +32,8 @@
 			gint srate, gint nch);
 
 static EffectPlugin xmms_plugin = {
-	NULL,
-	NULL,
-	PLUGIN_NAME,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	apply_effect,
-	NULL
+	.description = PLUGIN_NAME,
+	.mod_samples = apply_effect,
 };
 
 EffectPlugin *voice_eplist[] = { &xmms_plugin, NULL };
--- a/src/xspf/xspf.c	Fri Sep 07 12:48:27 2007 +0300
+++ b/src/xspf/xspf.c	Sat Sep 08 06:58:08 2007 +0300
@@ -1,7 +1,8 @@
 /*
  * Audacious: A cross-platform multimedia player
  * Copyright (c) 2006 William Pitcock, Tony Vroon, George Averill,
- *                    Giacomo Lozito, Derek Pomery and Yoshiki Yazawa.
+ *                    Giacomo Lozito, Derek Pomery, Yoshiki Yazawa
+ *                    and Matti Hämäläinen.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,7 +18,6 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
-
 #include <config.h>
 
 #include <glib.h>
@@ -46,9 +46,37 @@
 #define XSPF_ROOT_NODE_NAME "playlist"
 #define XSPF_XMLNS "http://xspf.org/ns/0/"
 
-#define TMP_BUF_LEN 128
+enum {
+    CMP_DEF = 0,
+    CMP_GT,
+    CMP_NULL
+} xspf_compare;
+
+typedef struct {
+    gint tupleField;
+    gchar *xspfName;
+    TupleValueType type;
+    gboolean isMeta;
+    gint compare;
+} xspf_entry_t;
+
 
-gchar *base = NULL;
+static const xspf_entry_t xspf_entries[] = {
+    { FIELD_TITLE,        "title",        TUPLE_STRING,   FALSE,  CMP_DEF },
+    { FIELD_ARTIST,       "creator",      TUPLE_STRING,   FALSE,  CMP_DEF },
+    { FIELD_COMMENT,      "annotation",   TUPLE_STRING,   FALSE,  CMP_DEF },
+    { FIELD_ALBUM,        "album",        TUPLE_STRING,   FALSE,  CMP_DEF },
+    { FIELD_TRACK_NUMBER, "trackNum",     TUPLE_INT,      FALSE,  CMP_DEF },
+    { FIELD_LENGTH,       "duration",     TUPLE_INT,      FALSE,  CMP_GT },
+
+    { FIELD_YEAR,         "year",         TUPLE_INT,      TRUE,   CMP_DEF },
+    { FIELD_DATE,         "date",         TUPLE_STRING,   TRUE,   CMP_DEF },
+    { FIELD_GENRE,        "genre",        TUPLE_STRING,   TRUE,   CMP_DEF },
+    { FIELD_FORMATTER,    "formatter",    TUPLE_STRING,   TRUE,   CMP_DEF },
+};
+
+static const gint xspf_nentries = (sizeof(xspf_entries) / sizeof(xspf_entry_t));
+
 
 static gboolean is_uri(gchar *uri)
 {
@@ -58,157 +86,103 @@
         return FALSE;
 }
 
-#if 0
-static gboolean is_remote(gchar *uri)
-{
-    if(strstr(uri, "file://"))
-        return FALSE;
-
-    if(strstr(uri, "://"))
-        return TRUE;
-    else
-        return FALSE;
-}
-#endif
-
-// this function is taken from libxml2-2.6.27.
-static xmlChar *audPathToURI(const xmlChar *path)
+/* This function is taken from libxml2-2.6.27.
+ */
+static xmlChar *xspf_path_to_uri(const xmlChar *path)
 {
     xmlURIPtr uri;
     xmlURI temp;
     xmlChar *ret, *cal;
 
-    if(path == NULL)
+    if (path == NULL)
         return NULL;
 
-    if((uri = xmlParseURI((const char *)path)) != NULL) {
+    if ((uri = xmlParseURI((const char *)path)) != NULL) {
         xmlFreeURI(uri);
         return xmlStrdup(path);
     }
+
     cal = xmlCanonicPath(path);
-    if(cal == NULL)
+    if (cal == NULL)
         return NULL;
+    
     memset(&temp, 0, sizeof(temp));
     temp.path = (char *)cal;
     ret = xmlSaveUri(&temp);
     xmlFree(cal);
+    
     return ret;
 }
 
-static void add_file(xmlNode *track, const gchar *filename, gint pos)
+
+static void xspf_add_file(xmlNode *track, const gchar *filename, gint pos, const gchar *base)
 {
     xmlNode *nptr;
     Tuple *tuple;
     gchar *location = NULL;
     Playlist *playlist = playlist_get_active();
 
-    tuple = tuple_new();
 
+    tuple = tuple_new();
     tuple_associate_int(tuple, FIELD_LENGTH, NULL, -1);
-    tuple_associate_int(tuple, FIELD_MTIME, NULL, -1);          // mark as uninitialized.
+    tuple_associate_int(tuple, FIELD_MTIME, NULL, -1);
+
 
-    // creator, album, title, duration, trackNum, annotation, image, 
-    for(nptr = track->children; nptr != NULL; nptr = nptr->next) {
-        if(nptr->type == XML_ELEMENT_NODE
-           && !xmlStrcmp(nptr->name, (xmlChar *)"location")) {
-            gchar *str = (gchar *)xmlNodeGetContent(nptr);
+    for (nptr = track->children; nptr != NULL; nptr = nptr->next) {
+        if (nptr->type == XML_ELEMENT_NODE) {
+            if (!xmlStrcmp(nptr->name, (xmlChar *)"location")) {
+                /* Location is a special case */
+                gchar *str = (gchar *)xmlNodeGetContent(nptr);
 
-            location = g_strdup_printf("%s%s", base ? base : "", str);
-            xmlFree(str);
-            str = g_filename_from_uri(location, NULL, NULL);
-            if (str) {
-                g_free(location);
-                location = g_strdup_printf("file://%s", str);
-            }
+                location = g_strdup_printf("%s%s", base ? base : "", str);
+                xmlFree(str);
+                str = g_filename_from_uri(location, NULL, NULL);
+                if (str) {
+                    g_free(location);
+                    location = g_strdup_printf("file://%s", str);
+                }
             
-            g_free(str);
-        }
-        else if(nptr->type == XML_ELEMENT_NODE
-                && !xmlStrcmp(nptr->name, (xmlChar *)"title")) {
-            xmlChar *str = xmlNodeGetContent(nptr);
-	    tuple_associate_string(tuple, FIELD_TITLE, NULL, (gchar *) str);
-            xmlFree(str);
-        }
-        else if(nptr->type == XML_ELEMENT_NODE
-                && !xmlStrcmp(nptr->name, (xmlChar *)"creator")) {
-            xmlChar *str = xmlNodeGetContent(nptr);
-	    tuple_associate_string(tuple, FIELD_ARTIST, NULL, (gchar *) str);
-            xmlFree(str);
-        }
-        else if(nptr->type == XML_ELEMENT_NODE
-                && !xmlStrcmp(nptr->name, (xmlChar *)"annotation")) {
-            xmlChar *str = xmlNodeGetContent(nptr);
-            tuple_associate_string(tuple, FIELD_COMMENT, NULL, (gchar *) str);
-            xmlFree(str);
-        }
-        else if(nptr->type == XML_ELEMENT_NODE
-                && !xmlStrcmp(nptr->name, (xmlChar *)"album")) {
-            xmlChar *str = xmlNodeGetContent(nptr);
-	    tuple_associate_string(tuple, FIELD_ALBUM, NULL, (gchar *) str);
-            xmlFree(str);
-        }
-        else if(nptr->type == XML_ELEMENT_NODE
-                && !xmlStrcmp(nptr->name, (xmlChar *)"trackNum")) {
-            xmlChar *str = xmlNodeGetContent(nptr);
-            tuple_associate_int(tuple, FIELD_TRACK_NUMBER, NULL, atol((char *)str));
-            xmlFree(str);
+                g_free(str);
+            } else {
+                /* Rest of the nodes are handled here */
+                gint i;
+                gboolean isMeta;
+                xmlChar *findName;
+
+                if (!xmlStrcmp(nptr->name, (xmlChar *)"meta")) {
+                    isMeta = TRUE;
+                    findName = xmlGetProp(nptr, (xmlChar *)"rel");
+                } else {
+                    isMeta = FALSE;
+                    findName = xmlStrdup(nptr->name);
+                }
+                
+                for (i = 0; i < xspf_nentries; i++)
+                if ((xspf_entries[i].isMeta == isMeta) &&
+                    !xmlStrcmp(findName, (xmlChar *)xspf_entries[i].xspfName)) {
+                    xmlChar *str = xmlNodeGetContent(nptr);
+                    switch (xspf_entries[i].type) {
+                        case TUPLE_STRING:
+                            tuple_associate_string(tuple, xspf_entries[i].tupleField, NULL, (gchar *)str);
+                            break;
+                        
+                        case TUPLE_INT:
+                            tuple_associate_int(tuple, xspf_entries[i].tupleField, NULL, atol((char *)str));
+                            break;
+                        
+                        default:
+                            break;
+                    }
+                    xmlFree(str);
+                    break;
+                }
+
+                xmlFree(findName);
+            }
         }
-        else if(nptr->type == XML_ELEMENT_NODE
-                && !xmlStrcmp(nptr->name, (xmlChar *)"duration")) {
-            xmlChar *str = xmlNodeGetContent(nptr);
-            tuple_associate_int(tuple, FIELD_LENGTH, NULL, atol((char *)str));
-            xmlFree(str);
-        }
-
-        //
-        // additional metadata
-        //
-        // year, date, genre, formatter, mtime
-        //
-        else if(nptr->type == XML_ELEMENT_NODE
-                && !xmlStrcmp(nptr->name, (xmlChar *)"meta")) {
-            xmlChar *rel = NULL;
-
-            rel = xmlGetProp(nptr, (xmlChar *)"rel");
-
-            if(!xmlStrcmp(rel, (xmlChar *)"year")) {
-                xmlChar *cont = xmlNodeGetContent(nptr);
-                tuple_associate_int(tuple, FIELD_YEAR, NULL, atol((char *)cont));
-                xmlFree(cont);
-                continue;
-            }
-            else if(!xmlStrcmp(rel, (xmlChar *)"date")) {
-                xmlChar *cont = xmlNodeGetContent(nptr);
-                tuple_associate_string(tuple, FIELD_DATE, NULL, (gchar *) cont);
-                xmlFree(cont);
-                continue;
-            }
-            else if(!xmlStrcmp(rel, (xmlChar *)"genre")) {
-                xmlChar *cont = xmlNodeGetContent(nptr);
-                tuple_associate_string(tuple, FIELD_GENRE, NULL, (gchar *) cont);
-                xmlFree(cont);
-                continue;
-            }
-            else if(!xmlStrcmp(rel, (xmlChar *)"formatter")) {
-                xmlChar *cont = xmlNodeGetContent(nptr);
-                tuple_associate_string(tuple, FIELD_FORMATTER, NULL, (gchar *) cont);
-                xmlFree(cont);
-                continue;
-            }
-            else if(!xmlStrcmp(rel, (xmlChar *)"mtime")) {
-                xmlChar *str = NULL;
-                str = xmlNodeGetContent(nptr);
-                tuple_associate_int(tuple, FIELD_MTIME, NULL, atoll((char *)str));
-                xmlFree(str);
-                continue;
-            }
-            xmlFree(rel);
-            rel = NULL;
-        }
-
     }
 
-    if(location) {
+    if (location) {
         gchar *uri = NULL;
         gchar *scratch;
 
@@ -220,77 +194,80 @@
         tuple_associate_string(tuple, FIELD_FILE_PATH, NULL, scratch);
         g_free(scratch);
 
+        tuple_associate_string(tuple, FIELD_FILE_EXT, strrchr(location, '.'));
+
 #ifdef DEBUG
         printf("xspf: tuple->file_name = %s\n", tuple_get_string(tuple, FIELD_FILE_NAME, NULL));
         printf("xspf: tuple->file_path = %s\n", tuple_get_string(tuple, FIELD_FILE_PATH, NULL));
 #endif
-        tuple_associate_string(tuple, FIELD_FILE_EXT, NULL, strrchr(location, '.'));
         // add file to playlist
         uri = g_filename_to_uri(location, NULL, NULL);
         // uri would be NULL if location is already uri. --yaz
         playlist_load_ins_file_tuple(playlist, uri ? uri: location, filename, pos, tuple);
-        g_free(uri); uri = NULL;
+        g_free(uri);
         pos++;
     }
 
     g_free(location);
-    location = NULL;
 }
 
-static void find_track(xmlNode *tracklist, const gchar *filename, gint pos)
+
+static void xspf_find_track(xmlNode *tracklist, const gchar *filename, gint pos, const gchar *base)
 {
     xmlNode *nptr;
-    for(nptr = tracklist->children; nptr != NULL; nptr = nptr->next) {
-        if(nptr->type == XML_ELEMENT_NODE
-           && !xmlStrcmp(nptr->name, (xmlChar *)"track")) {
-            add_file(nptr, filename, pos);
+
+    for (nptr = tracklist->children; nptr != NULL; nptr = nptr->next) {
+        if (nptr->type == XML_ELEMENT_NODE &&
+            !xmlStrcmp(nptr->name, (xmlChar *)"track")) {
+            xspf_add_file(nptr, filename, pos, base);
         }
     }
 }
 
-static void find_audoptions(xmlNode *tracklist, const gchar *filename, gint pos)
+
+static void xspf_find_audoptions(xmlNode *tracklist, const gchar *filename, gint pos)
 {
     xmlNode *nptr;
     Playlist *playlist = playlist_get_active();
 
-    for(nptr = tracklist->children; nptr != NULL; nptr = nptr->next) {
-        if(nptr->type == XML_ELEMENT_NODE
-           && !xmlStrcmp(nptr->name, (xmlChar *)"options")) {
+    for (nptr = tracklist->children; nptr != NULL; nptr = nptr->next) {
+        if (nptr->type == XML_ELEMENT_NODE &&
+            !xmlStrcmp(nptr->name, (xmlChar *)"options")) {
             xmlChar *opt = NULL;
 
             opt = xmlGetProp(nptr, (xmlChar *)"staticlist");
-            if(!strcasecmp((char *)opt, "true")) {
+            if (!g_strcasecmp((char *)opt, "true"))
                 playlist->attribute |= PLAYLIST_STATIC;
-            }
             else
                 playlist->attribute ^= PLAYLIST_STATIC;
+
             xmlFree(opt);
             opt = NULL;
         }
     }
 }
 
-static void playlist_load_xspf(const gchar *filename, gint pos)
+
+static void xspf_playlist_load(const gchar *filename, gint pos)
 {
     xmlDocPtr doc;
     xmlNode *nptr, *nptr2;
-    gchar *tmp = NULL;
+    gchar *tmp = NULL, *base = NULL;
 
     g_return_if_fail(filename != NULL);
+
 #ifdef DEBUG
     printf("playlist_load_xspf: filename = %s\n", filename);
 #endif
+
     doc = xmlRecoverFile(filename);
     if(doc == NULL)
         return;
 
-    xmlFree(base);
-    base = NULL;
-
     // find trackList
-    for(nptr = doc->children; nptr != NULL; nptr = nptr->next) {
-        if(nptr->type == XML_ELEMENT_NODE
-           && !xmlStrcmp(nptr->name, (xmlChar *)"playlist")) {
+    for (nptr = doc->children; nptr != NULL; nptr = nptr->next) {
+        if (nptr->type == XML_ELEMENT_NODE &&
+            !xmlStrcmp(nptr->name, (xmlChar *)"playlist")) {
             base = (gchar *)xmlNodeGetBase(doc, nptr);
 #ifdef DEBUG
             printf("playlist_load_xspf: base @1 = %s\n", base);
@@ -308,34 +285,32 @@
 #ifdef DEBUG
             printf("playlist_load_xspf: base @2 = %s\n", base);
 #endif
-            for(nptr2 = nptr->children; nptr2 != NULL; nptr2 = nptr2->next) {
+            for (nptr2 = nptr->children; nptr2 != NULL; nptr2 = nptr2->next) {
 
-                if(nptr2->type == XML_ELEMENT_NODE
-                   && !xmlStrcmp(nptr2->name, (xmlChar *)"extension")) {
+                if (nptr2->type == XML_ELEMENT_NODE &&
+                    !xmlStrcmp(nptr2->name, (xmlChar *)"extension")) {
                     //check if application is audacious
                     xmlChar *app = NULL;
                     app = xmlGetProp(nptr2, (xmlChar *)"application");
-                    if(!xmlStrcmp(app, (xmlChar *)"audacious")) {
-                        find_audoptions(nptr2, filename, pos);
-                    }
+                    if (!xmlStrcmp(app, (xmlChar *)"audacious"))
+                        xspf_find_audoptions(nptr2, filename, pos);
                     xmlFree(app);
-                }
-
-                if(nptr2->type == XML_ELEMENT_NODE
-                   && !xmlStrcmp(nptr2->name, (xmlChar *)"title")) {
+                } else
+                if (nptr2->type == XML_ELEMENT_NODE &&
+                    !xmlStrcmp(nptr2->name, (xmlChar *)"title")) {
                     Playlist *plist = playlist_get_active();
                     xmlChar *title = xmlNodeGetContent(nptr2);
+                    
                     if (title && *title) {
                         gchar *old = plist->title;
                         plist->title = g_strdup((gchar*)title);
                         g_free(old);
                     }
                     xmlFree(title);
-                }
-
-                if(nptr2->type == XML_ELEMENT_NODE
-                   && !xmlStrcmp(nptr2->name, (xmlChar *)"trackList")) {
-                    find_track(nptr2, filename, pos);
+                } else
+                if(nptr2->type == XML_ELEMENT_NODE &&
+                    !xmlStrcmp(nptr2->name, (xmlChar *)"trackList")) {
+                    xspf_find_track(nptr2, filename, pos, base);
                 }
             }
         }
@@ -343,22 +318,52 @@
     xmlFreeDoc(doc);
 }
 
-static void playlist_save_xspf(const gchar *filename, gint pos)
+
+static void xspf_add_node(
+        xmlNodePtr node, TupleValueType type, gboolean isMeta,
+        const gchar *xspfName, const gchar *strVal, const gint intVal)
+{
+    gchar tmps[64];
+    xmlNodePtr tmp;
+    
+    if (isMeta) {
+        tmp = xmlNewNode(NULL, (xmlChar *) "meta");
+        xmlSetProp(tmp, (xmlChar *) "rel", (xmlChar *) xspfName);
+    } else
+        tmp = xmlNewNode(NULL, (xmlChar *) xspfName);
+    
+    switch (type) {
+        case TUPLE_STRING:
+            xmlAddChild(tmp, xmlNewText((xmlChar *) strVal));
+            break;
+            
+        case TUPLE_INT:
+            g_snprintf(tmps, sizeof(tmps), "%d", intVal);
+            xmlAddChild(tmp, xmlNewText((xmlChar *) tmps));
+            break;
+
+        default:
+            break;
+    }
+
+    xmlAddChild(node, tmp);
+}
+
+
+static void xspf_playlist_save(const gchar *filename, gint pos)
 {
     xmlDocPtr doc;
-    xmlNodePtr rootnode, tmp, tracklist;
+    xmlNodePtr rootnode, tracklist;
     GList *node;
     gint baselen = 0;
+    gchar *base = NULL;
     Playlist *playlist = playlist_get_active();
 
 #ifdef DEBUG
     printf("playlist_save_xspf: filename = %s\n", filename);
 #endif
-    xmlFree(base);
-    base = NULL;
 
     doc = xmlNewDoc((xmlChar *)"1.0");
-
     doc->charset = XML_CHAR_ENCODING_UTF8;
     doc->encoding = xmlStrdup((xmlChar *)"UTF-8");
 
@@ -369,21 +374,20 @@
     PLAYLIST_LOCK(playlist->mutex);
 
     /* relative */
-    if(playlist->attribute & PLAYLIST_USE_RELATIVE) {
+    if (playlist->attribute & PLAYLIST_USE_RELATIVE) {
         /* prescan to determine base uri */
-        for(node = playlist->entries; node != NULL; node = g_list_next(node)) {
+        for (node = playlist->entries; node != NULL; node = g_list_next(node)) {
             gchar *ptr1, *ptr2;
             PlaylistEntry *entry = PLAYLIST_ENTRY(node->data);
             gchar *tmp;
             gint tmplen = 0;
 
-            if(!is_uri(entry->filename)) { //obsolete
+            if (!is_uri(entry->filename)) { //obsolete
                 gchar *tmp2;
                 tmp2 = g_path_get_dirname(entry->filename);
                 tmp = g_strdup_printf("%s/", tmp2);
-                g_free(tmp2); tmp2 = NULL;
-            }
-            else { //uri
+                g_free(tmp2);
+            } else {
                 tmp = g_strdup(entry->filename);
             }
 
@@ -391,6 +395,7 @@
                 base = strdup(tmp);
                 baselen = strlen(base);
             }
+            
             ptr1 = base;
             ptr2 = tmp;
 
@@ -398,10 +403,11 @@
                 ptr1++;
                 ptr2++;
             }
+            
             *ptr2 = '\0';       //terminate
             tmplen = ptr2 - tmp;
 
-            if(tmplen <= baselen) {
+            if (tmplen <= baselen) {
                 g_free(base);
                 base = tmp;
                 baselen = tmplen;
@@ -414,11 +420,12 @@
                 tmp = NULL;
             }
         }
+        
         /* set base URI */
-        if(base) {
+        if (base) {
             gchar *tmp;
             if(!is_uri(base)) {
-                tmp = (gchar *)audPathToURI((xmlChar *)base);
+                tmp = (gchar *) xspf_path_to_uri((xmlChar *)base);
                 if(tmp) {
                     g_free(base);
                     base = tmp;
@@ -432,7 +439,6 @@
                 tmp = g_strdup_printf("file://%s", base);
                 xmlSetProp(rootnode, (xmlChar *)"xml:base", (xmlChar *)tmp);
                 g_free(tmp);
-                tmp = NULL;
             }
             else
                 xmlSetProp(rootnode, (xmlChar *)"xml:base", (xmlChar *)base);
@@ -442,12 +448,10 @@
     /* common */
     xmlDocSetRootElement(doc, rootnode);
 
-    tmp = xmlNewNode(NULL, (xmlChar *)"creator");
-    xmlAddChild(tmp, xmlNewText((xmlChar *)PACKAGE "-" VERSION));
-    xmlAddChild(rootnode, tmp);
+    xspf_add_node(rootnode, TUPLE_STRING, FALSE, "creator", PACKAGE "-" VERSION, 0);
 
-    // add staticlist marker
-    if(playlist->attribute & PLAYLIST_STATIC) {
+    /* add staticlist marker */
+    if (playlist->attribute & PLAYLIST_STATIC) {
         xmlNodePtr extension, options;
 
         extension = xmlNewNode(NULL, (xmlChar *)"extension");
@@ -461,13 +465,10 @@
     }
 
     /* save playlist title */
-    if(playlist->title && playlist->title[0]
-            && g_utf8_validate(playlist->title, -1, NULL)) {
-        xmlNodePtr title;
-        title = xmlNewNode(NULL, (xmlChar *)"title");
-        xmlAddChild(title, xmlNewText((xmlChar *)playlist->title));
-        xmlAddChild(rootnode, title);
-    }
+    if (playlist->title && playlist->title[0] &&
+        g_utf8_validate(playlist->title, -1, NULL))
+        xspf_add_node(rootnode, TUPLE_STRING, FALSE, "title", playlist->title, 0);
+
 
     tracklist = xmlNewNode(NULL, (xmlChar *)"trackList");
     xmlAddChild(rootnode, tracklist);
@@ -476,9 +477,8 @@
         PlaylistEntry *entry = PLAYLIST_ENTRY(node->data);
         xmlNodePtr track, location;
         gchar *filename = NULL;
-        const gchar *scratch;
-        gchar tmps[64];
-        gint tmpi;
+        const gchar *scratch = NULL;
+        gint scratchi = 0;
 
         track = xmlNewNode(NULL, (xmlChar *)"track");
         location = xmlNewNode(NULL, (xmlChar *)"location");
@@ -490,7 +490,7 @@
             filename = g_strdup(entry->filename + baselen); // entry->filename is always uri now.
         }
         else {                  /* local file (obsolete) */
-            gchar *tmp = (gchar *)audPathToURI((const xmlChar *)entry->filename + baselen);
+            gchar *tmp = (gchar *) xspf_path_to_uri((const xmlChar *)entry->filename + baselen);
             if(base) { /* relative */
                 filename = g_strdup_printf("%s", tmp);
             } else {
@@ -509,118 +509,54 @@
         xmlAddChild(track, location);
         xmlAddChild(tracklist, track);
 
-        /* do we have a tuple? */
-        if(entry->tuple != NULL) {
-
-            if((scratch = tuple_get_string(entry->tuple, FIELD_TITLE, NULL)) != NULL &&
-                g_utf8_validate(scratch, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"title");
-                xmlAddChild(tmp, xmlNewText((xmlChar *) scratch));
-                xmlAddChild(track, tmp);
-            }
-
-            if((scratch = tuple_get_string(entry->tuple, FIELD_ARTIST, NULL)) != NULL &&
-                g_utf8_validate(scratch, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"creator");
-                xmlAddChild(tmp, xmlNewText((xmlChar *) scratch));
-                xmlAddChild(track, tmp);
-            }
-
-            if((scratch = tuple_get_string(entry->tuple, FIELD_COMMENT, NULL)) != NULL &&
-                g_utf8_validate(scratch, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"annotation");
-                xmlAddChild(tmp, xmlNewText((xmlChar *) scratch));
-                xmlAddChild(track, tmp);
-            }
-
-            if((scratch = tuple_get_string(entry->tuple, FIELD_ALBUM, NULL)) != NULL &&
-                g_utf8_validate(scratch, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"album");
-                xmlAddChild(tmp, xmlNewText((xmlChar *) scratch));
-                xmlAddChild(track, tmp);
-            }
-
-            if((tmpi = tuple_get_int(entry->tuple, FIELD_TRACK_NUMBER, NULL)) != 0) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"trackNum");
-                g_snprintf(tmps, sizeof(tmps), "%d", tmpi);
-                xmlAddChild(tmp, xmlNewText((xmlChar *) tmps));
-                xmlAddChild(track, tmp);
-            }
-
-            if((tmpi = tuple_get_int(entry->tuple, FIELD_LENGTH, NULL)) > 0) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"duration");
-                g_snprintf(tmps, sizeof(tmps), "%d", tmpi);
-                xmlAddChild(tmp, xmlNewText((xmlChar *) tmps));
-                xmlAddChild(track, tmp);
+        /* Do we have a tuple? */
+        if (entry->tuple != NULL) {
+            gint i;
+            for (i = 0; i < xspf_nentries; i++) {
+                const xspf_entry_t *xs = &xspf_entries[i];
+                gboolean isOK = FALSE;
+                
+                switch (xs->type) {
+                    case TUPLE_STRING:
+                        scratch = tuple_get_string(entry->tuple, xs->tupleField, NULL);
+                        switch (xs->compare) {
+                            case CMP_DEF: isOK = (scratch != NULL); break;
+                            case CMP_NULL: isOK = (scratch == NULL); break;
+                        }
+                        if (scratch != NULL && !g_utf8_validate(scratch, -1, NULL))
+                            isOK = FALSE;
+                        break;
+                    
+                    case TUPLE_INT:
+                        scratchi = tuple_get_int(entry->tuple, xs->tupleField, NULL);
+                        switch (xs->compare) {
+                            case CMP_DEF: isOK = (scratchi != 0); break;
+                            case CMP_GT:  isOK = (scratchi > 0); break;
+                        }
+                        break;
+                        
+                    default:
+                        break;
+                }
+                
+                if (isOK)
+                    xspf_add_node(track, xs->type, xs->isMeta, xs->xspfName, scratch, scratchi);
             }
 
-            //
-            // additional metadata
-            //
-            // year, date, genre, formatter, mtime
-            //
-
-            if((tmpi = tuple_get_int(entry->tuple, FIELD_YEAR, NULL)) != 0) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"meta");
-                xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"year");
-                g_snprintf(tmps, sizeof(tmps), "%d", tmpi);
-                xmlAddChild(tmp, xmlNewText((xmlChar *) tmps));
-                xmlAddChild(track, tmp);
-            }
-
-            if((scratch = tuple_get_string(entry->tuple, FIELD_DATE, NULL)) != NULL &&
-                g_utf8_validate(scratch, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"meta");
-                xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"date");
-                xmlAddChild(tmp, xmlNewText((xmlChar *) scratch));
-                xmlAddChild(track, tmp);
-            }
-
-            if((scratch = tuple_get_string(entry->tuple, FIELD_GENRE, NULL)) != NULL &&
-                g_utf8_validate(scratch, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"meta");
-                xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"genre");
-                xmlAddChild(tmp, xmlNewText((xmlChar *) scratch));
-                xmlAddChild(track, tmp);
-            }
+            /* Write mtime unconditionally to support staticlist */
+            xspf_add_node(track, TUPLE_INT, TRUE, "mtime", NULL,
+                tuple_get_int(entry->tuple, FIELD_MTIME, NULL));
+        } else {
 
-            if((scratch = tuple_get_string(entry->tuple, FIELD_FORMATTER, NULL)) != NULL &&
-                g_utf8_validate(scratch, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"meta");
-                xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"formatter");
-                xmlAddChild(tmp, xmlNewText((xmlChar *) scratch));
-                xmlAddChild(track, tmp);
-            }
-
-            // mtime: write mtime unconditionally to support staticlist.
-            tmp = xmlNewNode(NULL, (xmlChar *)"meta");
-            xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"mtime");
-            g_snprintf(tmps, sizeof(tmps), "%ld", (long) tuple_get_int(entry->tuple, FIELD_MTIME, NULL));
-            xmlAddChild(tmp, xmlNewText((xmlChar *) tmps));
-            xmlAddChild(track, tmp);
-        }                       /* tuple */
-        else {
+            if (entry->title != NULL && g_utf8_validate(entry->title, -1, NULL))
+                xspf_add_node(track, TUPLE_STRING, FALSE, "title", entry->title, 0);
 
-            if(entry->title != NULL && g_utf8_validate(entry->title, -1, NULL)) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"title");
-                xmlAddChild(tmp, xmlNewText((xmlChar *)entry->title));
-                xmlAddChild(track, tmp);
-            }
+            if (entry->length > 0)
+                xspf_add_node(track, TUPLE_INT, FALSE, "duration", NULL, entry->length);
 
-            if(entry->length > 0) {
-                tmp = xmlNewNode(NULL, (xmlChar *)"duration");
-                g_snprintf(tmps, sizeof(tmps), "%d", entry->length);
-                xmlAddChild(tmp, xmlNewText((xmlChar *) tmps));
-                xmlAddChild(track, tmp);
-            }
-
-            /* add mtime of -1 */
-            tmp = xmlNewNode(NULL, (xmlChar *)"meta");
-            xmlSetProp(tmp, (xmlChar *)"rel", (xmlChar *)"mtime");
-            g_snprintf(tmps, sizeof(tmps), "%ld", -1L);
-            xmlAddChild(tmp, xmlNewText((xmlChar *) tmps));
-            xmlAddChild(track, tmp);
-        }                       /* no tuple */
+            /* Add mtime of -1 */
+            xspf_add_node(track, TUPLE_INT, TRUE, "mtime", NULL, -1);
+        }
 
         g_free(filename);
         filename = NULL;
@@ -636,21 +572,22 @@
     base = NULL;
 }
 
+
 PlaylistContainer plc_xspf = {
     .name = "XSPF Playlist Format",
     .ext = "xspf",
-    .plc_read = playlist_load_xspf,
-    .plc_write = playlist_save_xspf,
+    .plc_read = xspf_playlist_load,
+    .plc_write = xspf_playlist_save,
 };
 
-static void init(void)
+static void xspf_init(void)
 {
     playlist_container_register(&plc_xspf);
 }
 
-static void cleanup(void)
+static void xspf_cleanup(void)
 {
     playlist_container_unregister(&plc_xspf);
 }
 
-DECLARE_PLUGIN(xspf, init, cleanup, NULL, NULL, NULL, NULL, NULL, NULL);
+DECLARE_PLUGIN(xspf, xspf_init, xspf_cleanup, NULL, NULL, NULL, NULL, NULL, NULL);