Mercurial > audlegacy
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;