changeset 3829:710a31107239

Automated merge with ssh://hg.atheme.org//hg/audacious
author William Pitcock <nenolod@atheme.org>
date Sun, 21 Oct 2007 07:07:09 -0500
parents d31089ffe40a (current diff) 53c5ec0aed0d (diff)
children 10053e99d90f
files
diffstat 5 files changed, 325 insertions(+), 325 deletions(-) [+]
line wrap: on
line diff
--- a/po/audacious.pot	Sun Oct 21 07:06:17 2007 -0500
+++ b/po/audacious.pot	Sun Oct 21 07:07:09 2007 -0500
@@ -486,6 +486,15 @@
 msgid "Enable Sampling Rate Converter"
 msgstr ""
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr ""
--- a/po/fr.po	Sun Oct 21 07:06:17 2007 -0500
+++ b/po/fr.po	Sun Oct 21 07:07:09 2007 -0500
@@ -26,8 +26,7 @@
 msgstr ""
 "<b><big>Impossible de créer %s.</big></b>\n"
 "\n"
-"Impossible d'ouvrir le fichier 'glade' (%s). Veuillez vérifier "
-"l'installation.\n"
+"Impossible d'ouvrir le fichier 'glade' (%s). Veuillez vérifier l'installation.\n"
 
 #: src/audacious/glade/fileinfo.glade:8
 msgid "Track Information"
@@ -101,7 +100,8 @@
 msgid "<b>Effects</b>"
 msgstr "<b>Effets</b>"
 
-#: src/audacious/glade/prefswin.glade:693 src/audacious/ui_preferences.c:117
+#: src/audacious/glade/prefswin.glade:693
+#: src/audacious/ui_preferences.c:117
 msgid "Plugins"
 msgstr "Modules"
 
@@ -134,12 +134,8 @@
 msgstr "Police de la liste de lecture :"
 
 #: src/audacious/glade/prefswin.glade:1112
-msgid ""
-"Use bitmap fonts if they are available. Bitmap fonts do not support Unicode "
-"strings."
-msgstr ""
-"Cette option permet d'utiliser les polices matricielles ('bitmap'). Ces "
-"polices ne gèrent pas la norme 'Unicode' (caractères accentués)."
+msgid "Use bitmap fonts if they are available. Bitmap fonts do not support Unicode strings."
+msgstr "Cette option permet d'utiliser les polices matricielles ('bitmap'). Ces polices ne gèrent pas la norme 'Unicode' (caractères accentués)."
 
 #: src/audacious/glade/prefswin.glade:1114
 msgid "Use Bitmap fonts if available"
@@ -163,43 +159,30 @@
 
 #: src/audacious/glade/prefswin.glade:1306
 msgid "This enables the window manager to show decorations for windows."
-msgstr ""
-"Cette option affiche les ornements propres au gestionnaire de fenêtres."
+msgstr "Cette option affiche les ornements propres au gestionnaire de fenêtres."
 
 #: src/audacious/glade/prefswin.glade:1308
 msgid "Show window manager decoration"
 msgstr "Montrer la décoration du gestionnaire de fenêtres"
 
 #: src/audacious/glade/prefswin.glade:1342
-msgid ""
-"This enables the XMMS/GTK1-style file selection dialogs. This selector is "
-"provided by Audacious itself and is faster than the default GTK2 selector "
-"(but sadly not as user-friendly)."
-msgstr ""
-"Cette option active les boîtes de sélection de fichiers 'XMMS/GTK1'. Comme "
-"ce système est géré par Audacious, il est plus rapide que la version 'GTK2' "
-"par défaut. Cependant, il n'est pas très esthétique."
+msgid "This enables the XMMS/GTK1-style file selection dialogs. This selector is provided by Audacious itself and is faster than the default GTK2 selector (but sadly not as user-friendly)."
+msgstr "Cette option active les boîtes de sélection de fichiers 'XMMS/GTK1'. Comme ce système est géré par Audacious, il est plus rapide que la version 'GTK2' par défaut. Cependant, il n'est pas très esthétique."
 
 #: src/audacious/glade/prefswin.glade:1344
 msgid "Use XMMS-style file selector instead of the default selector"
-msgstr ""
-"Utiliser le système de sélection de fichiers de XMMS à la place du système "
-"par défaut"
+msgstr "Utiliser le système de sélection de fichiers de XMMS à la place du système par défaut"
 
 #: src/audacious/glade/prefswin.glade:1378
-msgid ""
-"If selected, the file information text in the main window will scroll back "
-"and forth. If not selected, the text will only scroll in one direction."
-msgstr ""
-"Si cette option est cochée, le texte d'information relatif au morceau "
-"défilera, dans la fenêtre principale, vers la gauche et vers la droite. "
-"Sinon, le texte défilera dans une seule direction."
+msgid "If selected, the file information text in the main window will scroll back and forth. If not selected, the text will only scroll in one direction."
+msgstr "Si cette option est cochée, le texte d'information relatif au morceau défilera, dans la fenêtre principale, vers la gauche et vers la droite. Sinon, le texte défilera dans une seule direction."
 
 #: src/audacious/glade/prefswin.glade:1380
 msgid "Use two-way text scroller"
 msgstr "Utiliser le défilement de texte bidirectionnel"
 
-#: src/audacious/glade/prefswin.glade:1422 src/audacious/ui_preferences.c:111
+#: src/audacious/glade/prefswin.glade:1422
+#: src/audacious/ui_preferences.c:111
 msgid "Appearance"
 msgstr "Apparence"
 
@@ -223,7 +206,8 @@
 msgid "Changes volume by"
 msgstr "Ajustement du niveau sonore de"
 
-#: src/audacious/glade/prefswin.glade:1701 src/audacious/ui_preferences.c:115
+#: src/audacious/glade/prefswin.glade:1701
+#: src/audacious/ui_preferences.c:115
 msgid "Mouse"
 msgstr "Souris"
 
@@ -265,9 +249,7 @@
 
 #: src/audacious/glade/prefswin.glade:1993
 msgid "Load metadata on demand when displaying the file in the playlist"
-msgstr ""
-"Charge les métadonnées à la demande, lors de l'affichage des fichiers dans "
-"la liste de lecture"
+msgstr "Charge les métadonnées à la demande, lors de l'affichage des fichiers dans la liste de lecture"
 
 #: src/audacious/glade/prefswin.glade:1995
 msgid "On display"
@@ -278,17 +260,8 @@
 msgstr "Détection automatique de l'encodage pour  "
 
 #: src/audacious/glade/prefswin.glade:2070
-msgid ""
-"List of character encodings used for fall back conversion of metadata. If "
-"automatic character encoding detector failed or has been disabled, encodings "
-"in this list would be treated as candidates of the encoding of metadata, and "
-"fall back conversion from these encodings to UTF-8 would be attempted."
-msgstr ""
-"Ce champ reprend les divers types d'encodages utilisés pour la conversion "
-"des métadonnées. Si la détection automatique de l'encodage échoue ou n'a pas "
-"été activée, les éléments de cette liste seront considérés comme des "
-"encodages possibles et la conversion des métadonnées en UTF-8 sera tentée à "
-"partir de ces encodages."
+msgid "List of character encodings used for fall back conversion of metadata. If automatic character encoding detector failed or has been disabled, encodings in this list would be treated as candidates of the encoding of metadata, and fall back conversion from these encodings to UTF-8 would be attempted."
+msgstr "Ce champ reprend les divers types d'encodages utilisés pour la conversion des métadonnées. Si la détection automatique de l'encodage échoue ou n'a pas été activée, les éléments de cette liste seront considérés comme des encodages possibles et la conversion des métadonnées en UTF-8 sera tentée à partir de ces encodages."
 
 #: src/audacious/glade/prefswin.glade:2094
 msgid "Fallback character encodings:"
@@ -299,14 +272,8 @@
 msgstr "<b>Fenêtre de sélection des fichiers</b>"
 
 #: src/audacious/glade/prefswin.glade:2189
-msgid ""
-"Always refresh the file dialog (this will slow opening the dialog on large "
-"directories, and Gnome VFS should handle automatically)."
-msgstr ""
-"Réactualise systématiquement l'arborescence de la boîte de sélection des "
-"fichiers (l'opération peut ralentir l'ouverture de répertoires contenant "
-"beaucoup de fichiers et le système 'VFS' de Gnome procède déjà à une "
-"réactualisation automatique)."
+msgid "Always refresh the file dialog (this will slow opening the dialog on large directories, and Gnome VFS should handle automatically)."
+msgstr "Réactualise systématiquement l'arborescence de la boîte de sélection des fichiers (l'opération peut ralentir l'ouverture de répertoires contenant beaucoup de fichiers et le système 'VFS' de Gnome procède déjà à une réactualisation automatique)."
 
 #: src/audacious/glade/prefswin.glade:2191
 msgid "Always refresh directory when opening file dialog"
@@ -351,27 +318,21 @@
 msgstr "<b>Fenêtre d'informations contextuelle</b>"
 
 #: src/audacious/glade/prefswin.glade:2475
-msgid ""
-"Toggles popup information window for the pointed entry in the playlist. The "
-"window shows title of song, name of album, genre, year of publish, track "
-"number, track length, and artwork."
-msgstr ""
-"Affiche une fenêtre d'informations sur l'entrée de la liste de lecture "
-"pointée par le curseur de la souris. La fenêtre présente le titre du "
-"morceau, le nom de l'album, le genre, l'année de publication, le numéro de "
-"la piste, la durée du morceau, ainsi que la pochette de l'album."
+msgid "Toggles popup information window for the pointed entry in the playlist. The window shows title of song, name of album, genre, year of publish, track number, track length, and artwork."
+msgstr "Affiche une fenêtre d'informations sur l'entrée de la liste de lecture pointée par le curseur de la souris. La fenêtre présente le titre du morceau, le nom de l'album, le genre, l'année de publication, le numéro de la piste, la durée du morceau, ainsi que la pochette de l'album."
 
 #: src/audacious/glade/prefswin.glade:2477
 msgid "Show popup information for playlist entries"
-msgstr ""
-"Montrer la fenêtre d'informations pour les entrées de la liste de lecture"
+msgstr "Montrer la fenêtre d'informations pour les entrées de la liste de lecture"
 
 #: src/audacious/glade/prefswin.glade:2504
 msgid "Edit settings for popup information"
 msgstr "Modifie les préférences de la fenêtre d'informations contextuelle"
 
-#: src/audacious/glade/prefswin.glade:2553 src/audacious/ui_manager.c:203
-#: src/audacious/ui_playlist_manager.c:402 src/audacious/ui_preferences.c:116
+#: src/audacious/glade/prefswin.glade:2553
+#: src/audacious/ui_manager.c:203
+#: src/audacious/ui_playlist_manager.c:402
+#: src/audacious/ui_preferences.c:116
 msgid "Playlist"
 msgstr "Liste de lecture"
 
@@ -391,7 +352,8 @@
 msgid "Available _Presets:"
 msgstr "_Préréglages disponibles :"
 
-#: src/audacious/glade/prefswin.glade:2921 src/audacious/ui_preferences.c:114
+#: src/audacious/glade/prefswin.glade:2921
+#: src/audacious/ui_preferences.c:114
 msgid "Equalizer"
 msgstr "Égaliseur"
 
@@ -424,12 +386,8 @@
 msgstr "Nom d'utilisateur :"
 
 #: src/audacious/glade/prefswin.glade:3354
-msgid ""
-"<span size=\"small\">Changing these settings will require a restart of "
-"Audacious.</span>"
-msgstr ""
-"<span size=\"small\">La modification de ces préférences nécessite le "
-"redémarrage d'Audacious.</span>"
+msgid "<span size=\"small\">Changing these settings will require a restart of Audacious.</span>"
+msgstr "<span size=\"small\">La modification de ces préférences nécessite le redémarrage d'Audacious.</span>"
 
 #: src/audacious/glade/prefswin.glade:3493
 msgid "<b>Audio System</b>"
@@ -441,17 +399,13 @@
 
 #: src/audacious/glade/prefswin.glade:3593
 msgid ""
-"<span size=\"small\">This is the amount of time to prebuffer audio streams "
-"by, in milliseconds.\n"
+"<span size=\"small\">This is the amount of time to prebuffer audio streams by, in milliseconds.\n"
 "Increase this value if you are experiencing audio skipping.\n"
-"Please note however, that high values will result in Audacious performing "
-"poorly.</span>"
+"Please note however, that high values will result in Audacious performing poorly.</span>"
 msgstr ""
-"<span size=\"small\">Ce champ détermine la durée du tampon à allouer aux "
-"flux, en millisecondes.\n"
+"<span size=\"small\">Ce champ détermine la durée du tampon à allouer aux flux, en millisecondes.\n"
 "Augmentez cette valeur, si la lecture du flux est saccadée.\n"
-"Sachez, toutefois, que des valeurs élevées détérioreront les performances "
-"d'Audacious.</span>"
+"Sachez, toutefois, que des valeurs élevées détérioreront les performances d'Audacious.</span>"
 
 #: src/audacious/glade/prefswin.glade:3663
 msgid "Current output plugin:"
@@ -470,29 +424,16 @@
 msgstr "<b>Détection du format audio</b>"
 
 #: src/audacious/glade/prefswin.glade:3935
-msgid ""
-"When checked, Audacious will detect file formats on demand. This can result "
-"in a messier playlist, but delivers a major speed benefit."
-msgstr ""
-"Si cette option est activée, Audacious détectera les formats audio à la "
-"demande. Cette méthode peut affecter l'organisation de la liste de lecture, "
-"mais elle offre une rapidité sensiblement supérieure."
+msgid "When checked, Audacious will detect file formats on demand. This can result in a messier playlist, but delivers a major speed benefit."
+msgstr "Si cette option est activée, Audacious détectera les formats audio à la demande. Cette méthode peut affecter l'organisation de la liste de lecture, mais elle offre une rapidité sensiblement supérieure."
 
 #: src/audacious/glade/prefswin.glade:3937
 msgid "Detect file formats on demand, instead of immediately."
-msgstr ""
-"Déterminer les formats audio à la demande, au lieu de les détecter "
-"immédiatement."
+msgstr "Déterminer les formats audio à la demande, au lieu de les détecter immédiatement."
 
 #: src/audacious/glade/prefswin.glade:3971
-msgid ""
-"When checked, Audacious will detect file formats based by extension. This is "
-"slightly slower than detection on demand, but still provides a minimal level "
-"of format detection."
-msgstr ""
-"Si cette option est activée, Audacious détectera les formats audio d'après "
-"l'extension des fichiers. Cette méthode est un peu plus lente que la "
-"détection à la demande, mais elle offre un certain niveau de détection."
+msgid "When checked, Audacious will detect file formats based by extension. This is slightly slower than detection on demand, but still provides a minimal level of format detection."
+msgstr "Si cette option est activée, Audacious détectera les formats audio d'après l'extension des fichiers. Cette méthode est un peu plus lente que la détection à la demande, mais elle offre un certain niveau de détection."
 
 #: src/audacious/glade/prefswin.glade:3973
 msgid "Detect file formats by extension."
@@ -503,12 +444,8 @@
 msgstr "<b>Lecture</b>"
 
 #: src/audacious/glade/prefswin.glade:4046
-msgid ""
-"When Audacious starts, automatically begin playing from the point where we "
-"stopped before."
-msgstr ""
-"Au démarrage d'Audacious, la lecture reprendra là où elle s'était arrêtée "
-"lors de la session précédente."
+msgid "When Audacious starts, automatically begin playing from the point where we stopped before."
+msgstr "Au démarrage d'Audacious, la lecture reprendra là où elle s'était arrêtée lors de la session précédente."
 
 #: src/audacious/glade/prefswin.glade:4048
 msgid "Continue playback on startup"
@@ -542,6 +479,20 @@
 msgid "Enable Sampling Rate Converter"
 msgstr "Activer la conversion du taux d'échantillonnage"
 
+#: src/audacious/glade/prefswin.glade:4338
+msgid ""
+"Best Sinc Interpolation\n"
+"Medium Sinc Interpolation\n"
+"Fastest Sinc Interpolation\n"
+"ZOH Interpolation\n"
+"Linear Interpolation"
+msgstr ""
+"Qualité optimale\n"
+"Qualité moyenne\n"
+"Vitesse optimale\n"
+"ZOH (blocage d'ordre zéro)\n"
+"Méthode linéaire"
+
 #: src/audacious/glade/prefswin.glade:4361
 msgid "Interpolation Engine:"
 msgstr "Algorithme d'interpolation :"
@@ -565,12 +516,8 @@
 msgstr "<b>Contrôle du volume</b>"
 
 #: src/audacious/glade/prefswin.glade:4556
-msgid ""
-"Use software volume control. This may be useful for situations where your "
-"audio system does not support controlling the playback volume."
-msgstr ""
-"Utilise le contrôle du volume logiciel. Cette option peut se révéler utile, "
-"si votre système audio ne dispose pas de support de contrôle du volume."
+msgid "Use software volume control. This may be useful for situations where your audio system does not support controlling the playback volume."
+msgstr "Utilise le contrôle du volume logiciel. Cette option peut se révéler utile, si votre système audio ne dispose pas de support de contrôle du volume."
 
 #: src/audacious/glade/prefswin.glade:4558
 msgid "Use software volume control"
@@ -589,14 +536,8 @@
 msgstr "<b>Récupération des pochettes</b>"
 
 #: src/audacious/glade/prefswin.glade:4856
-msgid ""
-"While searching for the album's cover, Audacious looks for certain words in "
-"the filename. You can specify those words in the lists below, separated "
-"using commas."
-msgstr ""
-"Lors de la recherche de la pochette d'un album, Audacious vérifie certains "
-"mots dans le nom du fichier. Vous pouvez spécifier ces mots dans les listes "
-"ci-dessous, séparés par des virgules."
+msgid "While searching for the album's cover, Audacious looks for certain words in the filename. You can specify those words in the lists below, separated using commas."
+msgstr "Lors de la recherche de la pochette d'un album, Audacious vérifie certains mots dans le nom du fichier. Vous pouvez spécifier ces mots dans les listes ci-dessous, séparés par des virgules."
 
 #: src/audacious/glade/prefswin.glade:4911
 msgid "Exclude:"
@@ -635,12 +576,8 @@
 msgstr "Ajustement des couleurs"
 
 #: src/audacious/glade/prefswin.glade:5325
-msgid ""
-"Audacious allows you to alter the color balance of the skinned UI. The "
-"sliders below will allow you to do this."
-msgstr ""
-"Audacious permet de modifier la balance des couleurs de l'interface, à "
-"l'aide des curseurs ci-dessous."
+msgid "Audacious allows you to alter the color balance of the skinned UI. The sliders below will allow you to do this."
+msgstr "Audacious permet de modifier la balance des couleurs de l'interface, à l'aide des curseurs ci-dessous."
 
 #: src/audacious/glade/prefswin.glade:5359
 msgid "Blue"
@@ -677,7 +614,9 @@
 msgid "Unable to create log file (%s)!\n"
 msgstr "Impossible de créer le fichier journal (%s)!\n"
 
-#: src/audacious/main.c:90 src/audacious/main.c:92 src/audacious/ui_main.c:491
+#: src/audacious/main.c:90
+#: src/audacious/main.c:92
+#: src/audacious/ui_main.c:491
 #: src/audacious/ui_main.c:2466
 msgid "Audacious"
 msgstr "Audacious"
@@ -756,28 +695,23 @@
 msgid ""
 "<b><big>Unable to load skin.</big></b>\n"
 "\n"
-"Check that skin at '%s' is usable and default skin is properly installed at "
-"'%s'\n"
+"Check that skin at '%s' is usable and default skin is properly installed at '%s'\n"
 msgstr ""
 "<b><big>Impossible de charger le thème.</big></b>\n"
 "\n"
-"Vérifier que le thème '%s' est valide et que le thème par défaut est bien "
-"installé dans '%s'\n"
+"Vérifier que le thème '%s' est valide et que le thème par défaut est bien installé dans '%s'\n"
 
 #: src/audacious/main.c:1320
 msgid ""
 "Sorry, threads isn't supported on your platform.\n"
 "\n"
-"If you're on a libc5 based linux system and installed Glib & GTK+ before "
-"you\n"
+"If you're on a libc5 based linux system and installed Glib & GTK+ before you\n"
 "installed LinuxThreads you need to recompile Glib & GTK+.\n"
 msgstr ""
 "Désolé, mais votre plate-forme ne gère pas les processus multiples.\n"
 "\n"
-"Si vous utilisez un système Linux basé sur 'libc5' et que vous avez "
-"installé\n"
-"'Glib' et 'GTK+' avant 'LinuxThreads', vous devez recompiler 'Glib' et 'GTK"
-"+'.\n"
+"Si vous utilisez un système Linux basé sur 'libc5' et que vous avez installé\n"
+"'Glib' et 'GTK+' avant 'LinuxThreads', vous devez recompiler 'Glib' et 'GTK+'.\n"
 
 #: src/audacious/main.c:1351
 msgid "- play multimedia files"
@@ -811,53 +745,40 @@
 "Audacious has caught signal 11 (SIGSEGV).\n"
 "\n"
 "We apologize for the inconvenience, but Audacious has crashed.\n"
-"This is a bug in the program, and should never happen under normal "
-"circumstances.\n"
+"This is a bug in the program, and should never happen under normal circumstances.\n"
 "Your current configuration has been saved and should not be damaged.\n"
 "\n"
-"You can help improve the quality of Audacious by filing a bug at http://bugs-"
-"meta.atheme.org\n"
-"Please include the entire text of this message and a description of what you "
-"were doing when\n"
-"this crash occured in order to quickly expedite the handling of your bug "
-"report:\n"
+"You can help improve the quality of Audacious by filing a bug at http://bugs-meta.atheme.org\n"
+"Please include the entire text of this message and a description of what you were doing when\n"
+"this crash occured in order to quickly expedite the handling of your bug report:\n"
 "\n"
 msgstr ""
 "\n"
 "Audacious a reçu un signal 11 ('SIGSEGV').\n"
 "\n"
-"Nous sommes désolés pour ce désagrément, mais la session d'Audacious s'est "
-"interrompue.\n"
-"La situation résulte d'une erreur dans Audacious : elle ne devrait pas "
-"survenir dans des conditions normales.\n"
-"Votre configuration actuelle a toutefois été enregistrée : elle ne devrait "
-"pas avoir été altérée.\n"
+"Nous sommes désolés pour ce désagrément, mais la session d'Audacious s'est interrompue.\n"
+"La situation résulte d'une erreur dans Audacious : elle ne devrait pas survenir dans des conditions normales.\n"
+"Votre configuration actuelle a toutefois été enregistrée : elle ne devrait pas avoir été altérée.\n"
 "\n"
-"Vous pouvez nous aider à améliorer la qualité d'Audacious en soumettant "
-"cette erreur à l'adresse suivante : http://bugs-meta.atheme.org\n"
-"Veillez à joindre le message suivant à votre rapport, ainsi qu'une "
-"description (en anglais) de ce que vous faisiez\n"
-"lorsque cette erreur s'est produite, de manière à ce que nous puissions "
-"traiter votre rapport dans les plus brefs délais :\n"
+"Vous pouvez nous aider à améliorer la qualité d'Audacious en soumettant cette erreur à l'adresse suivante : http://bugs-meta.atheme.org\n"
+"Veillez à joindre le message suivant à votre rapport, ainsi qu'une description (en anglais) de ce que vous faisiez\n"
+"lorsque cette erreur s'est produite, de manière à ce que nous puissions traiter votre rapport dans les plus brefs délais :\n"
 "\n"
 
 #: src/audacious/signals.c:80
 msgid ""
 "\n"
-"Bugs can be reported at http://bugs-meta.atheme.org against the Audacious "
-"product.\n"
+"Bugs can be reported at http://bugs-meta.atheme.org against the Audacious product.\n"
 msgstr ""
 "\n"
-"Les erreurs relatives à Audacious peuvent être soumises à l'adresse "
-"suivantes : http://bugs-meta.atheme.org\n"
+"Les erreurs relatives à Audacious peuvent être soumises à l'adresse suivantes : http://bugs-meta.atheme.org\n"
 
 #: src/audacious/signals.c:266
 msgid ""
 "Your signaling implementation is broken.\n"
 "Expect unusable crash reports.\n"
 msgstr ""
-"Le système de gestion des signaux d'erreur de votre système semble "
-"corrompu.\n"
+"Le système de gestion des signaux d'erreur de votre système semble corrompu.\n"
 "Attendez-vous à des rapports d'erreurs inutilisables.\n"
 
 #: src/audacious/strings.c:170
@@ -873,14 +794,17 @@
 msgstr ""
 "<big><b>Audacious %s</b></big>\n"
 "\n"
-"Droits d'utilisation (C) 2005-2007, Équipe de Développement Audacious"
-
-#: src/audacious/ui_about.c:125 src/audacious/ui_credits.c:357
-#: src/audacious/ui_manager.c:391 src/audacious/ui_manager.c:392
+"Droits d'utilisation : Équipe de Développement Audacious (2005-2007)"
+
+#: src/audacious/ui_about.c:125
+#: src/audacious/ui_credits.c:357
+#: src/audacious/ui_manager.c:391
+#: src/audacious/ui_manager.c:392
 msgid "About Audacious"
 msgstr "À propos d'Audacious"
 
-#: src/audacious/ui_about.c:174 src/audacious/ui_credits.c:400
+#: src/audacious/ui_about.c:174
+#: src/audacious/ui_credits.c:400
 msgid "Credits"
 msgstr "Crédits"
 
@@ -893,10 +817,10 @@
 "Copyright (C) 2005-2007 Audacious Development Team\n"
 msgstr ""
 "<big><b>Audacious %s</b></big>\n"
-"Un lecteur multimedia personnalisable, disponible pour de nombreuses "
-"plateformes.\n"
+"Un lecteur multimédia à l'interface personnalisable,\n"
+"disponible pour de nombreuses plate-formes.\n"
 "\n"
-"Droits d'utilisation : (C) 2005-2007, Équipe de Développement Audacious\n"
+"Droits d'utilisation : Équipe de Développement Audacious (2005-2007)\n"
 
 #: src/audacious/ui_credits.c:53
 msgid "Audacious core developers:"
@@ -1070,24 +994,29 @@
 msgid "Track Information Window"
 msgstr "Fenêtre d'informations sur le morceau"
 
-#: src/audacious/ui_fileinfopopup.c:252 src/audacious/ui_fileinfopopup.c:364
+#: src/audacious/ui_fileinfopopup.c:252
+#: src/audacious/ui_fileinfopopup.c:364
 #: src/audacious/ui_preferences.c:125
 msgid "Title"
 msgstr "Titre"
 
-#: src/audacious/ui_fileinfopopup.c:255 src/audacious/ui_preferences.c:123
+#: src/audacious/ui_fileinfopopup.c:255
+#: src/audacious/ui_preferences.c:123
 msgid "Artist"
 msgstr "Artiste"
 
-#: src/audacious/ui_fileinfopopup.c:258 src/audacious/ui_preferences.c:124
+#: src/audacious/ui_fileinfopopup.c:258
+#: src/audacious/ui_preferences.c:124
 msgid "Album"
 msgstr "Album"
 
-#: src/audacious/ui_fileinfopopup.c:261 src/audacious/ui_preferences.c:127
+#: src/audacious/ui_fileinfopopup.c:261
+#: src/audacious/ui_preferences.c:127
 msgid "Genre"
 msgstr "Genre"
 
-#: src/audacious/ui_fileinfopopup.c:264 src/audacious/ui_preferences.c:131
+#: src/audacious/ui_fileinfopopup.c:264
+#: src/audacious/ui_preferences.c:131
 msgid "Year"
 msgstr "Année"
 
@@ -1099,7 +1028,8 @@
 msgid "Track Length"
 msgstr "Durée"
 
-#: src/audacious/ui_fileinfopopup.c:373 src/audacious/ui_preferences.c:128
+#: src/audacious/ui_fileinfopopup.c:373
+#: src/audacious/ui_preferences.c:128
 #: src/audacious/ui_preferences.c:420
 msgid "Filename"
 msgstr "Nom du fichier"
@@ -1132,7 +1062,8 @@
 msgid "Un_queue"
 msgstr "Enlever de la file d'attente"
 
-#: src/audacious/ui_jumptotrack.c:140 src/audacious/ui_jumptotrack.c:603
+#: src/audacious/ui_jumptotrack.c:140
+#: src/audacious/ui_jumptotrack.c:603
 msgid "_Queue"
 msgstr "_Mettre dans la file"
 
@@ -1163,15 +1094,18 @@
 msgid "VBR"
 msgstr "VBR"
 
-#: src/audacious/ui_main.c:761 src/audacious/ui_main.c:765
+#: src/audacious/ui_main.c:761
+#: src/audacious/ui_main.c:765
 msgid "stereo"
-msgstr "stéréo"
-
-#: src/audacious/ui_main.c:761 src/audacious/ui_main.c:765
+msgstr "stereo"
+
+#: src/audacious/ui_main.c:761
+#: src/audacious/ui_main.c:765
 msgid "mono"
 msgstr "mono"
 
-#: src/audacious/ui_main.c:1060 src/audacious/ui_manager.c:420
+#: src/audacious/ui_main.c:1060
+#: src/audacious/ui_manager.c:420
 #: src/audacious/ui_manager.c:421
 msgid "Jump to Time"
 msgstr "Aller au temps..."
@@ -1199,22 +1133,17 @@
 #: src/audacious/ui_main.c:1235
 msgid ""
 "Audacious has been started with all of its windows hidden.\n"
-"You may want to show the player window again to control Audacious; "
-"otherwise, you'll have to control it remotely via audtool or enabled plugins "
-"(such as the statusicon plugin)."
+"You may want to show the player window again to control Audacious; otherwise, you'll have to control it remotely via audtool or enabled plugins (such as the statusicon plugin)."
 msgstr ""
 "Audacious a démarré, mais toutes les fenêtres de l'interface sont cachées.\n"
 "Peut-être voulez-vous voir à nouveau la fenêtre principale, afin de pouvoir\n"
-"contrôler Audacious. Dans le cas contraire, vous devrez utiliser les "
-"commandes\n"
+"contrôler Audacious. Dans le cas contraire, vous devrez utiliser les commandes\n"
 "distantes, par l'intermédiaire de 'audtool' ou des extensions activées\n"
 "('statusicon', par exemple)."
 
 #: src/audacious/ui_main.c:1241
 msgid "Always ignore, show/hide is controlled remotely"
-msgstr ""
-"Toujours ignorer : la fonction 'montrer'/'cacher' est contrôlée de manière "
-"distante."
+msgstr "Toujours ignorer : la fonction 'montrer'/'cacher' est contrôlée de manière distante."
 
 #: src/audacious/ui_main.c:1259
 msgid "Enter location to play:"
@@ -1223,7 +1152,7 @@
 #: src/audacious/ui_main.c:1504
 #, c-format
 msgid "Seek to: %d:%-2.2d/%d:%-2.2d (%d%%)"
-msgstr "Aller a : %d:%-2.2d/%d:%-2.2d (%d%%)"
+msgstr "Position : %d:%-2.2d/%d:%-2.2d (%d%%)"
 
 #: src/audacious/ui_main.c:1536
 #, c-format
@@ -1292,67 +1221,83 @@
 msgid "Error in Audacious."
 msgstr "Erreur dans Audacious."
 
-#: src/audacious/ui_manager.c:48 src/audacious/ui_manager.c:49
+#: src/audacious/ui_manager.c:48
+#: src/audacious/ui_manager.c:49
 msgid "Autoscroll Songname"
 msgstr "Défilement du titre"
 
-#: src/audacious/ui_manager.c:51 src/audacious/ui_manager.c:52
+#: src/audacious/ui_manager.c:51
+#: src/audacious/ui_manager.c:52
 msgid "Stop after Current Song"
 msgstr "Arrêter après le titre en cours de lecture"
 
-#: src/audacious/ui_manager.c:54 src/audacious/ui_manager.c:55
+#: src/audacious/ui_manager.c:54
+#: src/audacious/ui_manager.c:55
 msgid "Peaks"
 msgstr "Pics"
 
-#: src/audacious/ui_manager.c:57 src/audacious/ui_manager.c:58
+#: src/audacious/ui_manager.c:57
+#: src/audacious/ui_manager.c:58
 msgid "Repeat"
 msgstr "Répéter"
 
-#: src/audacious/ui_manager.c:60 src/audacious/ui_manager.c:61
+#: src/audacious/ui_manager.c:60
+#: src/audacious/ui_manager.c:61
 msgid "Shuffle"
 msgstr "Mode aléatoire"
 
-#: src/audacious/ui_manager.c:63 src/audacious/ui_manager.c:64
+#: src/audacious/ui_manager.c:63
+#: src/audacious/ui_manager.c:64
 msgid "No Playlist Advance"
 msgstr "Ne pas avancer dans la liste de lecture"
 
-#: src/audacious/ui_manager.c:66 src/audacious/ui_manager.c:67
+#: src/audacious/ui_manager.c:66
+#: src/audacious/ui_manager.c:67
 msgid "Show Player"
 msgstr "Montrer le lecteur"
 
-#: src/audacious/ui_manager.c:69 src/audacious/ui_manager.c:70
+#: src/audacious/ui_manager.c:69
+#: src/audacious/ui_manager.c:70
 msgid "Show Playlist Editor"
 msgstr "Montrer l'éditeur de liste"
 
-#: src/audacious/ui_manager.c:72 src/audacious/ui_manager.c:73
+#: src/audacious/ui_manager.c:72
+#: src/audacious/ui_manager.c:73
 msgid "Show Equalizer"
 msgstr "Montrer l'égaliseur"
 
-#: src/audacious/ui_manager.c:75 src/audacious/ui_manager.c:76
+#: src/audacious/ui_manager.c:75
+#: src/audacious/ui_manager.c:76
 msgid "Always on Top"
 msgstr "Toujours au premier plan"
 
-#: src/audacious/ui_manager.c:78 src/audacious/ui_manager.c:79
+#: src/audacious/ui_manager.c:78
+#: src/audacious/ui_manager.c:79
 msgid "Put on All Workspaces"
 msgstr "Afficher sur tous les bureaux"
 
-#: src/audacious/ui_manager.c:81 src/audacious/ui_manager.c:82
+#: src/audacious/ui_manager.c:81
+#: src/audacious/ui_manager.c:82
 msgid "Roll up Player"
 msgstr "Enrouler le lecteur"
 
-#: src/audacious/ui_manager.c:84 src/audacious/ui_manager.c:85
+#: src/audacious/ui_manager.c:84
+#: src/audacious/ui_manager.c:85
 msgid "Roll up Playlist Editor"
 msgstr "Enrouler l'éditeur de liste"
 
-#: src/audacious/ui_manager.c:87 src/audacious/ui_manager.c:88
+#: src/audacious/ui_manager.c:87
+#: src/audacious/ui_manager.c:88
 msgid "Roll up Equalizer"
 msgstr "Enrouler l'égaliseur"
 
-#: src/audacious/ui_manager.c:90 src/audacious/ui_manager.c:91
+#: src/audacious/ui_manager.c:90
+#: src/audacious/ui_manager.c:91
 msgid "DoubleSize"
 msgstr "Taille double"
 
-#: src/audacious/ui_manager.c:93 src/audacious/ui_manager.c:94
+#: src/audacious/ui_manager.c:93
+#: src/audacious/ui_manager.c:94
 msgid "Easy Move"
 msgstr "Déplacement facile"
 
@@ -1372,12 +1317,14 @@
 msgid "Off"
 msgstr "Arrêt"
 
-#: src/audacious/ui_manager.c:109 src/audacious/ui_manager.c:126
+#: src/audacious/ui_manager.c:109
+#: src/audacious/ui_manager.c:126
 #: src/audacious/ui_manager.c:132
 msgid "Normal"
 msgstr "Normal"
 
-#: src/audacious/ui_manager.c:110 src/audacious/ui_manager.c:127
+#: src/audacious/ui_manager.c:110
+#: src/audacious/ui_manager.c:127
 msgid "Fire"
 msgstr "Feu"
 
@@ -1429,23 +1376,28 @@
 msgid "Eighth (~6 fps)"
 msgstr "Huitième (~6 fps)"
 
-#: src/audacious/ui_manager.c:144 src/audacious/ui_manager.c:152
+#: src/audacious/ui_manager.c:144
+#: src/audacious/ui_manager.c:152
 msgid "Slowest"
 msgstr "Très lente"
 
-#: src/audacious/ui_manager.c:145 src/audacious/ui_manager.c:153
+#: src/audacious/ui_manager.c:145
+#: src/audacious/ui_manager.c:153
 msgid "Slow"
 msgstr "Lente"
 
-#: src/audacious/ui_manager.c:146 src/audacious/ui_manager.c:154
+#: src/audacious/ui_manager.c:146
+#: src/audacious/ui_manager.c:154
 msgid "Medium"
 msgstr "Moyenne"
 
-#: src/audacious/ui_manager.c:147 src/audacious/ui_manager.c:155
+#: src/audacious/ui_manager.c:147
+#: src/audacious/ui_manager.c:155
 msgid "Fast"
 msgstr "Rapide"
 
-#: src/audacious/ui_manager.c:148 src/audacious/ui_manager.c:156
+#: src/audacious/ui_manager.c:148
+#: src/audacious/ui_manager.c:156
 msgid "Fastest"
 msgstr "Très rapide"
 
@@ -1461,23 +1413,28 @@
 msgid "Playback"
 msgstr "Lecture"
 
-#: src/audacious/ui_manager.c:172 src/audacious/ui_manager.c:173
+#: src/audacious/ui_manager.c:172
+#: src/audacious/ui_manager.c:173
 msgid "Play"
 msgstr "Lecture"
 
-#: src/audacious/ui_manager.c:175 src/audacious/ui_manager.c:176
+#: src/audacious/ui_manager.c:175
+#: src/audacious/ui_manager.c:176
 msgid "Pause"
 msgstr "Pause"
 
-#: src/audacious/ui_manager.c:178 src/audacious/ui_manager.c:179
+#: src/audacious/ui_manager.c:178
+#: src/audacious/ui_manager.c:179
 msgid "Stop"
 msgstr "Arrêt"
 
-#: src/audacious/ui_manager.c:181 src/audacious/ui_manager.c:182
+#: src/audacious/ui_manager.c:181
+#: src/audacious/ui_manager.c:182
 msgid "Previous"
 msgstr "Précédent"
 
-#: src/audacious/ui_manager.c:184 src/audacious/ui_manager.c:185
+#: src/audacious/ui_manager.c:184
+#: src/audacious/ui_manager.c:185
 msgid "Next"
 msgstr "Suivant"
 
@@ -1517,19 +1474,23 @@
 msgid "Peaks Falloff"
 msgstr "Retombée des pics"
 
-#: src/audacious/ui_manager.c:205 src/audacious/ui_manager.c:206
+#: src/audacious/ui_manager.c:205
+#: src/audacious/ui_manager.c:206
 msgid "New Playlist"
 msgstr "Nouvelle liste"
 
-#: src/audacious/ui_manager.c:208 src/audacious/ui_manager.c:209
+#: src/audacious/ui_manager.c:208
+#: src/audacious/ui_manager.c:209
 msgid "Select Next Playlist"
 msgstr "Liste suivante"
 
-#: src/audacious/ui_manager.c:211 src/audacious/ui_manager.c:212
+#: src/audacious/ui_manager.c:211
+#: src/audacious/ui_manager.c:212
 msgid "Select Previous Playlist"
 msgstr "Liste précédente"
 
-#: src/audacious/ui_manager.c:214 src/audacious/ui_manager.c:215
+#: src/audacious/ui_manager.c:214
+#: src/audacious/ui_manager.c:215
 msgid "Delete Playlist"
 msgstr "Supprimer la liste"
 
@@ -1598,12 +1559,8 @@
 msgstr "Chercher et sélectionner"
 
 #: src/audacious/ui_manager.c:253
-msgid ""
-"Searches the playlist and selects playlist entries based on specific "
-"criteria."
-msgstr ""
-"Effectue une recherche dans la liste de lecture et sélectionne des entrées "
-"en fonction de critères définis."
+msgid "Searches the playlist and selects playlist entries based on specific criteria."
+msgstr "Effectue une recherche dans la liste de lecture et sélectionne des entrées en fonction de critères définis."
 
 #: src/audacious/ui_manager.c:256
 msgid "Invert Selection"
@@ -1649,7 +1606,8 @@
 msgid "Remove Duplicates"
 msgstr "Effacer les éléments redondants"
 
-#: src/audacious/ui_manager.c:280 src/audacious/ui_manager.c:316
+#: src/audacious/ui_manager.c:280
+#: src/audacious/ui_manager.c:316
 #: src/audacious/ui_manager.c:346
 msgid "By Title"
 msgstr "Par titre"
@@ -1658,7 +1616,8 @@
 msgid "Removes duplicate entries from the playlist by title."
 msgstr "Efface les entrées redondantes, en fonction de leur titre."
 
-#: src/audacious/ui_manager.c:284 src/audacious/ui_manager.c:324
+#: src/audacious/ui_manager.c:284
+#: src/audacious/ui_manager.c:324
 #: src/audacious/ui_manager.c:354
 msgid "By Filename"
 msgstr "Par nom de fichier"
@@ -1667,7 +1626,8 @@
 msgid "Removes duplicate entries from the playlist by filename."
 msgstr "Efface les entrées redondantes, en fonction de leur nom de fichier."
 
-#: src/audacious/ui_manager.c:288 src/audacious/ui_manager.c:328
+#: src/audacious/ui_manager.c:288
+#: src/audacious/ui_manager.c:328
 #: src/audacious/ui_manager.c:358
 msgid "By Path + Filename"
 msgstr "Par chemin et nom de fichier"
@@ -1720,47 +1680,58 @@
 msgid "Sort List"
 msgstr "Trier la liste"
 
-#: src/audacious/ui_manager.c:317 src/audacious/ui_manager.c:347
+#: src/audacious/ui_manager.c:317
+#: src/audacious/ui_manager.c:347
 msgid "Sorts the list by title."
 msgstr "Trie la liste, en fonction du titre des entrées."
 
-#: src/audacious/ui_manager.c:320 src/audacious/ui_manager.c:350
+#: src/audacious/ui_manager.c:320
+#: src/audacious/ui_manager.c:350
 msgid "By Artist"
 msgstr "Par artiste"
 
-#: src/audacious/ui_manager.c:321 src/audacious/ui_manager.c:351
+#: src/audacious/ui_manager.c:321
+#: src/audacious/ui_manager.c:351
 msgid "Sorts the list by artist."
 msgstr "Trie la liste, en fonction de l'artiste."
 
-#: src/audacious/ui_manager.c:325 src/audacious/ui_manager.c:355
+#: src/audacious/ui_manager.c:325
+#: src/audacious/ui_manager.c:355
 msgid "Sorts the list by filename."
 msgstr "Trie la liste, en fonction du nom de fichier des entrées."
 
-#: src/audacious/ui_manager.c:329 src/audacious/ui_manager.c:359
+#: src/audacious/ui_manager.c:329
+#: src/audacious/ui_manager.c:359
 msgid "Sorts the list by full pathname."
 msgstr "Trie la liste, en fonction du chemin complet des entrées."
 
-#: src/audacious/ui_manager.c:332 src/audacious/ui_manager.c:362
+#: src/audacious/ui_manager.c:332
+#: src/audacious/ui_manager.c:362
 msgid "By Date"
 msgstr "Par date"
 
-#: src/audacious/ui_manager.c:333 src/audacious/ui_manager.c:363
+#: src/audacious/ui_manager.c:333
+#: src/audacious/ui_manager.c:363
 msgid "Sorts the list by modification time."
 msgstr "Trie la liste, en fonction de la date de modification."
 
-#: src/audacious/ui_manager.c:336 src/audacious/ui_manager.c:366
+#: src/audacious/ui_manager.c:336
+#: src/audacious/ui_manager.c:366
 msgid "By Track Number"
 msgstr "Par numéro de piste"
 
-#: src/audacious/ui_manager.c:337 src/audacious/ui_manager.c:367
+#: src/audacious/ui_manager.c:337
+#: src/audacious/ui_manager.c:367
 msgid "Sorts the list by track number."
 msgstr "Trie la liste, en fonction du numéro des pistes."
 
-#: src/audacious/ui_manager.c:340 src/audacious/ui_manager.c:370
+#: src/audacious/ui_manager.c:340
+#: src/audacious/ui_manager.c:370
 msgid "By Playlist Entry"
 msgstr "Par entrée de liste"
 
-#: src/audacious/ui_manager.c:341 src/audacious/ui_manager.c:371
+#: src/audacious/ui_manager.c:341
+#: src/audacious/ui_manager.c:371
 msgid "Sorts the list by playlist entry."
 msgstr "Trie la liste, en fonction des entrées qu'elle contient."
 
@@ -1780,11 +1751,13 @@
 msgid "Plugin Services"
 msgstr "Services des modules"
 
-#: src/audacious/ui_manager.c:385 src/audacious/ui_manager.c:388
+#: src/audacious/ui_manager.c:385
+#: src/audacious/ui_manager.c:388
 msgid "View Track Details"
 msgstr "Afficher les détails"
 
-#: src/audacious/ui_manager.c:386 src/audacious/ui_manager.c:389
+#: src/audacious/ui_manager.c:386
+#: src/audacious/ui_manager.c:389
 msgid "View track details"
 msgstr "Affiche les informations relatives au morceau."
 
@@ -1824,19 +1797,23 @@
 msgid "Quit Audacious"
 msgstr "Ferme Audacious."
 
-#: src/audacious/ui_manager.c:408 src/audacious/ui_manager.c:409
+#: src/audacious/ui_manager.c:408
+#: src/audacious/ui_manager.c:409
 msgid "Set A-B"
 msgstr "Marquer A-B"
 
-#: src/audacious/ui_manager.c:411 src/audacious/ui_manager.c:412
+#: src/audacious/ui_manager.c:411
+#: src/audacious/ui_manager.c:412
 msgid "Clear A-B"
 msgstr "Effacer A-B"
 
-#: src/audacious/ui_manager.c:414 src/audacious/ui_manager.c:415
+#: src/audacious/ui_manager.c:414
+#: src/audacious/ui_manager.c:415
 msgid "Jump to Playlist Start"
 msgstr "Aller au début de la liste"
 
-#: src/audacious/ui_manager.c:417 src/audacious/ui_manager.c:418
+#: src/audacious/ui_manager.c:417
+#: src/audacious/ui_manager.c:418
 msgid "Jump to File"
 msgstr "Aller au fichier..."
 
@@ -1864,7 +1841,8 @@
 msgid "Delete"
 msgstr "Effacer"
 
-#: src/audacious/ui_manager.c:436 src/audacious/ui_manager.c:457
+#: src/audacious/ui_manager.c:436
+#: src/audacious/ui_manager.c:457
 #: src/audacious/ui_manager.c:472
 msgid "Preset"
 msgstr "Préréglage général"
@@ -1873,7 +1851,8 @@
 msgid "Load preset"
 msgstr "Charge un préréglage général."
 
-#: src/audacious/ui_manager.c:439 src/audacious/ui_manager.c:460
+#: src/audacious/ui_manager.c:439
+#: src/audacious/ui_manager.c:460
 #: src/audacious/ui_manager.c:475
 msgid "Auto-load preset"
 msgstr "Préréglage spécifique"
@@ -1882,7 +1861,8 @@
 msgid "Load auto-load preset"
 msgstr "Charge un préréglage spécifique."
 
-#: src/audacious/ui_manager.c:442 src/audacious/ui_manager.c:463
+#: src/audacious/ui_manager.c:442
+#: src/audacious/ui_manager.c:463
 msgid "Default"
 msgstr "Préréglage par défaut"
 
@@ -1963,17 +1943,8 @@
 msgstr "Chercher des entrées dans la liste active"
 
 #: src/audacious/ui_playlist.c:485
-msgid ""
-"Select entries in playlist by filling one or more fields. Fields use regular "
-"expressions syntax, case-insensitive. If you don't know how regular "
-"expressions work, simply insert a literal portion of what you're searching "
-"for."
-msgstr ""
-"Le choix des entrées de la liste de lecture s'effectue au moyen des champs "
-"ci-dessous. La syntaxe utilisée est celle des expressions régulières et est "
-"sensible à la casse. Si vous ne savez pas comment fonctionnent les "
-"expressions régulières, vous pouvez simplement indiquer une expression "
-"littérale de ce que vous cherchez."
+msgid "Select entries in playlist by filling one or more fields. Fields use regular expressions syntax, case-insensitive. If you don't know how regular expressions work, simply insert a literal portion of what you're searching for."
+msgstr "Le choix des entrées de la liste de lecture s'effectue au moyen des champs ci-dessous. La syntaxe utilisée est celle des expressions régulières et est sensible à la casse. Si vous ne savez pas comment fonctionnent les expressions régulières, vous pouvez simplement indiquer une expression littérale de ce que vous cherchez."
 
 #: src/audacious/ui_playlist.c:493
 msgid "Title: "
@@ -2100,7 +2071,6 @@
 msgid "Description"
 msgstr "Description"
 
-#: src/audacious/ui_preferences.c:1395
 msgid "Category"
 msgstr "Catégorie"
 
@@ -2110,7 +2080,7 @@
 
 #: src/audacious/ui_skinned_equalizer_slider.c:386
 msgid "PREAMP"
-msgstr "PREAMPLIFICATION"
+msgstr "Amplification"
 
 #: src/audacious/ui_skinned_equalizer_slider.c:386
 msgid "60HZ"
@@ -2163,3 +2133,4 @@
 #: src/audacious/ui_urlopener.c:88
 msgid "Add/Open URL Dialog"
 msgstr "Ouvrir/Ajouter un flux"
+
--- a/src/audacious/glade/prefswin.glade	Sun Oct 21 07:06:17 2007 -0500
+++ b/src/audacious/glade/prefswin.glade	Sun Oct 21 07:07:09 2007 -0500
@@ -4335,7 +4335,7 @@
 				      <child>
 					<widget class="GtkComboBox" id="src_converter_type">
 					  <property name="visible">True</property>
-					  <property name="items">Best Sinc Interpolation
+					  <property name="items" translatable="yes">Best Sinc Interpolation
 Medium Sinc Interpolation
 Fastest Sinc Interpolation
 ZOH Interpolation
--- a/src/audacious/tuple_compiler.c	Sun Oct 21 07:06:17 2007 -0500
+++ b/src/audacious/tuple_compiler.c	Sun Oct 21 07:07:09 2007 -0500
@@ -20,10 +20,13 @@
 
 /*
  * TODO:
+ * - Unicode/UTF-8 support in format strings. using any non-ASCII
+ *   characters in Tuplez format strings WILL cause things go boom
+ *   at the moment!
+ *
  * - implement definitions (${=foo,"baz"} ${=foo,1234})
  * - implement functions
  * - implement handling of external expressions
- * - error handling issues?
  * - evaluation context: how local variables should REALLY work?
  *   currently there is just a single context, is a "global" context needed?
  */
@@ -38,14 +41,14 @@
 #define MIN_ALLOC_BUF	(64)
 
 
-void tuple_error(const char *fmt, ...)
+void tuple_error(TupleEvalContext *ctx, const gchar *fmt, ...)
 {
   va_list ap;
-  fprintf(stderr, "compiler: ");
+  g_free(ctx->errmsg);
   va_start(ap, fmt);
-  vfprintf(stderr, fmt, ap);
+  ctx->errmsg = g_strdup_vprintf(fmt, ap);
   va_end(ap);
-//  exit(5);
+  ctx->iserror = TRUE;
 }
 
 
@@ -89,6 +92,8 @@
       if (ctx->variables[i]->istemp)
         tuple_evalctx_free_var(ctx->variables[i]);
     }
+  
+  ctx->iserror = FALSE;
 }
 
 
@@ -122,7 +127,8 @@
 gint tuple_evalctx_add_var(TupleEvalContext *ctx, const gchar *name, const gboolean istemp, const gint type)
 {
   gint i, ref = -1;
-  TupleEvalVar * tmp = g_new0(TupleEvalVar, 1);
+  TupleEvalVar *tmp = g_new0(TupleEvalVar, 1);
+  assert(tmp != NULL);
 
   tmp->name = g_strdup(name);
   tmp->istemp = istemp;
@@ -209,16 +215,18 @@
 static TupleEvalNode *tuple_compiler_pass1(gint *level, TupleEvalContext *ctx, gchar **expression);
 
 
-static gboolean tc_get_item(gchar **str, gchar *buf, size_t max, gchar endch, gboolean *literal, gchar *errstr, gchar *item)
+static gboolean tc_get_item(TupleEvalContext *ctx,
+    gchar **str, gchar *buf, gssize max,
+    gchar endch, gboolean *literal, gchar *errstr, gchar *item)
 {
-  size_t i = 0;
+  gssize i = 0;
   gchar *s = *str, tmpendch;
   assert(str != NULL);
   assert(buf != NULL);
   
   if (*s == '"') {
     if (*literal == FALSE) {
-      tuple_error("Literal string value not allowed in '%s'.\n", item);
+      tuple_error(ctx, "Literal string value not allowed in '%s'.\n", item);
       return FALSE;
     }
     s++;
@@ -235,10 +243,10 @@
     }
     
     if (*s != tmpendch && *s != '}' && !isalnum(*s) && *s != '-') {
-      tuple_error("Invalid field '%s' in '%s'.\n", *str, item);
+      tuple_error(ctx, "Invalid field '%s' in '%s'.\n", *str, item);
       return FALSE;
     } else if (*s != tmpendch) {
-      tuple_error("Expected '%c' in '%s'.\n", tmpendch, item);
+      tuple_error(ctx, "Expected '%c' in '%s'.\n", tmpendch, item);
       return FALSE;
     }
   } else {
@@ -253,13 +261,13 @@
     if (*s == tmpendch)
       s++;
     else {
-      tuple_error("Expected literal string end ('%c') in '%s'.\n", tmpendch, item);
+      tuple_error(ctx, "Expected literal string end ('%c') in '%s'.\n", tmpendch, item);
       return FALSE;
     }
   }
 
   if (*s != endch) {
-    tuple_error("Expected '%c' after %s in '%s'\n", endch, errstr, item);
+    tuple_error(ctx, "Expected '%c' after %s in '%s'\n", endch, errstr, item);
     return FALSE;
   } else {
     *str = s;
@@ -288,21 +296,21 @@
   gboolean literal1 = TRUE, literal2 = TRUE;
 
   (*c)++;
-  if (tc_get_item(c, tmps1, MAX_STR, ',', &literal1, "tag1", item)) {
+  if (tc_get_item(ctx, c, tmps1, MAX_STR, ',', &literal1, "tag1", item)) {
     (*c)++;
-    if (tc_get_item(c, tmps2, MAX_STR, ':', &literal2, "tag2", item)) {
+    if (tc_get_item(ctx, c, tmps2, MAX_STR, ':', &literal2, "tag2", item)) {
       TupleEvalNode *tmp = tuple_evalnode_new();
       (*c)++;
 
       tmp->opcode = opcode;
       if ((tmp->var[0] = tc_get_variable(ctx, tmps1, literal1 ? VAR_CONST : VAR_FIELD)) < 0) {
         tuple_evalnode_free(tmp);
-        tuple_error("Invalid variable '%s' in '%s'.\n", tmps1, item);
+        tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps1, item);
         return FALSE;
       }
       if ((tmp->var[1] = tc_get_variable(ctx, tmps2, literal2 ? VAR_CONST : VAR_FIELD)) < 0) {
         tuple_evalnode_free(tmp);
-        tuple_error("Invalid variable '%s' in '%s'.\n", tmps2, item);
+        tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps2, item);
         return FALSE;
       }
       tmp->children = tuple_compiler_pass1(level, ctx, c);
@@ -347,12 +355,12 @@
           case '?': c++;
             /* Exists? */
             literal = FALSE;
-            if (tc_get_item(&c, tmps1, MAX_STR, ':', &literal, "tag", item)) {
+            if (tc_get_item(ctx, &c, tmps1, MAX_STR, ':', &literal, "tag", item)) {
               c++;
               tmp = tuple_evalnode_new();
               tmp->opcode = OP_EXISTS;
               if ((tmp->var[0] = tc_get_variable(ctx, tmps1, VAR_FIELD)) < 0) {
-                tuple_error("Invalid variable '%s' in '%s'.\n", tmps1, expr);
+                tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps1, expr);
                 goto ret_error;
               }
               tmp->children = tuple_compiler_pass1(level, ctx, &c);
@@ -365,7 +373,7 @@
             if (*c != '=') {
               /* Definition */
               literal = FALSE;
-              if (tc_get_item(&c, tmps1, MAX_STR, ',', &literal, "variable", item)) {
+              if (tc_get_item(ctx, &c, tmps1, MAX_STR, ',', &literal, "variable", item)) {
                 c++;
                 if (*c == '"') {
                   /* String */
@@ -374,7 +382,7 @@
                   /* Integer */
                 }
                 
-                tuple_error("Definitions are not yet supported!\n");
+                tuple_error(ctx, "Definitions are not yet supported!\n");
                 goto ret_error;
               } else
                 goto ret_error;
@@ -417,12 +425,12 @@
             if (!strncmp(c, "empty)?", 7)) {
               c += 7;
               literal = FALSE;
-              if (tc_get_item(&c, tmps1, MAX_STR, ':', &literal, "tag", item)) {
+              if (tc_get_item(ctx, &c, tmps1, MAX_STR, ':', &literal, "tag", item)) {
                 c++;
                 tmp = tuple_evalnode_new();
                 tmp->opcode = OP_EXISTS;
                 if ((tmp->var[0] = tc_get_variable(ctx, tmps1, VAR_FIELD)) < 0) {
-                  tuple_error("Invalid variable '%s' in '%s'.\n", tmps1, expr);
+                  tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps1, expr);
                   goto ret_error;
                 }
                 tmp->children = tuple_compiler_pass1(level, ctx, &c);
@@ -438,14 +446,14 @@
             /* Get expression content */
             c = expr;
             literal = FALSE;
-            if (tc_get_item(&c, tmps1, MAX_STR, '}', &literal, "field", item)) {
+            if (tc_get_item(ctx, &c, tmps1, MAX_STR, '}', &literal, "field", item)) {
               /* FIXME!! FIX ME! Check for external expressions */
               
               /* I HAS A FIELD - A field. You has it. */
               tmp = tuple_evalnode_new();
               tmp->opcode = OP_FIELD;
               if ((tmp->var[0] = tc_get_variable(ctx, tmps1, VAR_FIELD)) < 0) {
-                tuple_error("Invalid variable '%s' in '%s'.\n", tmps1, expr);
+                tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps1, expr);
                 goto ret_error;
               }
               tuple_evalnode_insert(&res, tmp);
@@ -455,7 +463,7 @@
               goto ret_error;
         }        
       } else {
-        tuple_error("Expected '{', got '%c' in '%s'.\n", *c, c);
+        tuple_error(ctx, "Expected '{', got '%c' in '%s'.\n", *c, c);
         goto ret_error;
       }
        
@@ -463,7 +471,7 @@
       /* Function? */
       item = c++;
       if (*c == '{') {
-        size_t i = 0;
+        gssize i = 0;
         c++;
         
         while (*c != '\0' && (isalnum(*c) || *c == '-') && *c != '}' && *c != ':' && i < (MAX_STR - 1))
@@ -475,16 +483,16 @@
         } else if (*c == '}') {
           c++;
         } else if (*c == '\0') {
-          tuple_error("Expected '}' or function arguments in '%s'\n", item);
+          tuple_error(ctx, "Expected '}' or function arguments in '%s'\n", item);
           goto ret_error;
         }
       } else {
-        tuple_error("Expected '{', got '%c' in '%s'.\n", *c, c);
+        tuple_error(ctx, "Expected '{', got '%c' in '%s'.\n", *c, c);
         goto ret_error;
       }
     } else {
       /* Parse raw/literal text */
-      size_t i = 0;
+      gssize i = 0;
       while (*c != '\0' && *c != '$' && *c != '%' && *c != '}' && i < (MAX_STR - 1)) {
         if (*c == '\\') c++;
         tmps1[i++] = *(c++);
@@ -499,7 +507,7 @@
   }
 
   if (*level <= 0) {
-    tuple_error("Syntax error! Uneven/unmatched nesting of elements in '%s'!\n", c);
+    tuple_error(ctx, "Syntax error! Uneven/unmatched nesting of elements in '%s'!\n", c);
     goto ret_error;
   }
   
@@ -518,7 +526,6 @@
   /* TupleEvalNode *curr = expr; */
   TupleEvalNode *res = NULL;
   assert(ctx != NULL);
-  assert(expr != NULL);
   
   return res;
 }
@@ -534,7 +541,7 @@
   res1 = tuple_compiler_pass1(&level, ctx, &tmpexpr);
 
   if (level != 1) {
-    tuple_error("Syntax error! Uneven/unmatched nesting of elements! (%d)\n", level);
+    tuple_error(ctx, "Syntax error! Uneven/unmatched nesting of elements! (%d)\n", level);
     tuple_evalnode_free(res1);
     return NULL;
   }
@@ -598,16 +605,15 @@
 /* Evaluate tuple in given TupleEval expression in given
  * context and return resulting string.
  */
-static gboolean tuple_formatter_eval_do(TupleEvalContext *ctx, TupleEvalNode *expr, Tuple *tuple, gchar **res, size_t *resmax, size_t *reslen)
+static gboolean tuple_formatter_eval_do(TupleEvalContext *ctx, TupleEvalNode *expr, Tuple *tuple, gchar **res, gssize *resmax, gssize *reslen)
 {
   TupleEvalNode *curr = expr;
-  gchar tmps[MAX_STR], *tmps2;
+  TupleEvalVar *var0, *var1;
+  TupleValueType type0, type1;
+  gint tmpi0, tmpi1;
+  gchar tmps[MAX_STR], *tmps0, *tmps1, *tmps2;
   gboolean result;
   gint resulti;
-  TupleEvalVar *var0, *var1;
-  gint tmpi0, tmpi1;
-  gchar *tmps0, *tmps1;
-  TupleValueType type0, type1;
   
   if (!expr) return FALSE;
   
@@ -635,7 +641,7 @@
                   break;
           
                 case TUPLE_INT:
-                  snprintf(tmps, sizeof(tmps), "%d", var0->fieldref->value.integer);
+                  g_snprintf(tmps, sizeof(tmps), "%d", var0->fieldref->value.integer);
                   str = tmps;
                   break;
                 
@@ -646,14 +652,7 @@
             break;
         }
         break;
-      
-      case OP_EXISTS:
-        if (tf_get_fieldref(ctx->variables[curr->var[0]], tuple)) {
-          if (!tuple_formatter_eval_do(ctx, curr->children, tuple, res, resmax, reslen))
-            return FALSE;
-        }
-        break;
-      
+
       case OP_EQUALS:
       case OP_NOT_EQUALS:
       case OP_LT: case OP_LTEQ:
@@ -669,7 +668,7 @@
             resulti = strcmp(tmps0, tmps1);
           else
             resulti = tmpi0 - tmpi1;
-
+          
           switch (curr->opcode) {
             case OP_EQUALS:     result = (resulti == 0); break;
             case OP_NOT_EQUALS: result = (resulti != 0); break;
@@ -679,7 +678,7 @@
             case OP_GTEQ:       result = (resulti >= 0); break;
             default:		result = FALSE;
           }
-            
+          
           if (result && !tuple_formatter_eval_do(ctx, curr->children, tuple, res, resmax, reslen))
             return FALSE;
         } else {
@@ -687,6 +686,15 @@
         }
         break;
       
+      case OP_EXISTS:
+#ifdef NO_EXISTS_HACK
+        if (tf_get_fieldref(ctx->variables[curr->var[0]], tuple)) {
+          if (!tuple_formatter_eval_do(ctx, curr->children, tuple, res, resmax, reslen))
+            return FALSE;
+        }
+        break;
+#endif
+
       case OP_IS_EMPTY:
         var0 = ctx->variables[curr->var[0]];
 
@@ -700,27 +708,35 @@
           case TUPLE_STRING:
             result = TRUE;
             tmps2 = var0->fieldref->value.string;
-          
-            while (result && *tmps2 != '\0') {
-              if (*tmps2 == ' ')
-                tmps2++;
+            
+            while (result && tmps2 && *tmps2 != '\0') {
+              gunichar uc = g_utf8_get_char(tmps2);
+              if (g_unichar_isspace(uc))
+                tmps2 = g_utf8_next_char(tmps2);
               else
                 result = FALSE;
             }
             break;
-
+            
           default:
             result = TRUE;
           }
         } else
           result = TRUE;
-        
+
+#ifdef NO_EXISTS_HACK        
         if (result && !tuple_formatter_eval_do(ctx, curr->children, tuple, res, resmax, reslen))
           return FALSE;
+#else
+        if ((curr->opcode == OP_EXISTS && !result) || (curr->opcode == OP_IS_EMPTY && result)) {
+          if (!tuple_formatter_eval_do(ctx, curr->children, tuple, res, resmax, reslen))
+            return FALSE;
+        }
+#endif
         break;
       
       default:
-        tuple_error("Unimplemented opcode %d!\n", curr->opcode);
+        tuple_error(ctx, "Unimplemented opcode %d!\n", curr->opcode);
         return FALSE;
         break;
     }
@@ -730,7 +746,7 @@
       *reslen += strlen(str);
       if (*res) {
         if (*reslen >= *resmax) {
-          *resmax += MIN_ALLOC_BUF;
+          *resmax += *reslen + MIN_ALLOC_BUF;
           *res = g_realloc(*res, *resmax);
         }
         
@@ -753,7 +769,7 @@
 gchar *tuple_formatter_eval(TupleEvalContext *ctx, TupleEvalNode *expr, Tuple *tuple)
 {
   gchar *res = g_strdup("");
-  size_t resmax = 0, reslen = 0;
+  gssize resmax = 0, reslen = 0;
   assert(ctx != NULL);
   assert(tuple != NULL);
   
--- a/src/audacious/tuple_compiler.h	Sun Oct 21 07:06:17 2007 -0500
+++ b/src/audacious/tuple_compiler.h	Sun Oct 21 07:07:09 2007 -0500
@@ -88,6 +88,10 @@
     gint nvariables, nfunctions, nexpressions;
     TupleEvalVar **variables;
     TupleEvalFunc **functions;
+    
+    /* Error context */
+    gboolean iserror;
+    gchar *errmsg;
 } TupleEvalContext;