summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS67
-rw-r--r--Doxyfile1419
-rw-r--r--Makefile8
-rw-r--r--acinclude.m4286
-rw-r--r--audacious.desktop6
-rw-r--r--audacious.pc.in14
-rw-r--r--audclient.pc.in13
-rwxr-xr-xautogen.sh10
-rwxr-xr-xbuild-aux/config.guess (renamed from config.guess)0
-rwxr-xr-xbuild-aux/config.rpath (renamed from config.rpath)0
-rwxr-xr-xbuild-aux/config.sub (renamed from config.sub)0
-rwxr-xr-xbuild-aux/install-sh (renamed from install-sh)0
-rw-r--r--buildsys.mk.in73
-rw-r--r--config.h.in34
-rwxr-xr-xconfigure3890
-rw-r--r--configure.ac266
-rw-r--r--contrib/Makefile13
-rw-r--r--contrib/g15_audacious.py140
-rwxr-xr-xcontrib/lap.py130
-rw-r--r--contrib/win32/notes.html203
-rw-r--r--contrib/win32/patches/gcontenttype.c.diff11
-rw-r--r--contrib/win32/patches/ggettext.c.diff66
-rw-r--r--contrib/win32/patches/gwin32.c.diff20
-rw-r--r--contrib/win32/patches/gwin32.h.diff13
-rw-r--r--contrib/win32/patches/libintl.h.diff11
-rw-r--r--contrib/win32/patches/wavpack.pc.in.diff8
-rw-r--r--contrib/win32/settings.ini4
-rw-r--r--extra.mk.in24
-rw-r--r--m4/buildsys.m429
-rw-r--r--man/audacious.1.in70
-rw-r--r--man/audtool.1.in31
-rw-r--r--po/Makefile7
-rw-r--r--po/POTFILES.in8
-rw-r--r--po/ast.po810
-rw-r--r--po/audacious.pot718
-rw-r--r--po/be.po866
-rw-r--r--po/bg.po822
-rw-r--r--po/ca.po817
-rw-r--r--po/cmn.po816
-rw-r--r--po/cs.po822
-rw-r--r--po/da.po814
-rw-r--r--po/de.po845
-rw-r--r--po/el.po814
-rw-r--r--po/en_GB.po814
-rw-r--r--po/eo.po905
-rw-r--r--po/es.po819
-rw-r--r--po/es_AR.po815
-rw-r--r--po/es_MX.po820
-rw-r--r--po/et.po815
-rw-r--r--po/eu.po819
-rw-r--r--po/fa_IR.po1016
-rw-r--r--po/fi.po814
-rw-r--r--po/fr.po937
-rw-r--r--po/gl.po817
-rw-r--r--po/he.po1035
-rw-r--r--po/hu.po817
-rw-r--r--po/id_ID.po829
-rw-r--r--po/it.po824
-rw-r--r--po/ja.po821
-rw-r--r--po/ko.po845
-rw-r--r--po/ky.po797
-rw-r--r--po/lt.po818
-rw-r--r--po/lv.po813
-rw-r--r--po/ml_IN.po816
-rw-r--r--po/ms.po811
-rw-r--r--po/nl.po815
-rw-r--r--po/pl.po830
-rwxr-xr-xpo/process-transifex-po13
-rw-r--r--po/pt_BR.po819
-rw-r--r--po/pt_PT.po816
-rw-r--r--po/ro.po794
-rw-r--r--po/ru.po894
-rw-r--r--po/si.po816
-rw-r--r--po/sk.po817
-rw-r--r--po/sq.po814
-rw-r--r--po/sr.po901
-rw-r--r--po/sr@latin.po815
-rw-r--r--po/sr_RS.po1047
-rw-r--r--po/sv.po1034
-rw-r--r--po/ta.po816
-rw-r--r--po/tr.po824
-rw-r--r--po/uk.po817
-rw-r--r--po/vi.po812
-rw-r--r--po/zh_CN.po829
-rw-r--r--po/zh_TW.po827
-rw-r--r--src/Makefile13
-rw-r--r--src/audacious/Makefile62
-rw-r--r--src/audacious/adder.c146
-rw-r--r--src/audacious/api-alias-begin.h2
-rw-r--r--src/audacious/api-alias-end.h2
-rw-r--r--src/audacious/api-declare-begin.h2
-rw-r--r--src/audacious/api-declare-end.h2
-rw-r--r--src/audacious/api-define-begin.h2
-rw-r--r--src/audacious/api-define-end.h2
-rw-r--r--src/audacious/api-local-begin.h2
-rw-r--r--src/audacious/api-local-end.h2
-rw-r--r--src/audacious/api.h19
-rw-r--r--src/audacious/art.c66
-rw-r--r--src/audacious/chardet.c194
-rw-r--r--src/audacious/config.c411
-rw-r--r--src/audacious/dbus-server.c779
-rw-r--r--src/audacious/dbus-service.h237
-rw-r--r--src/audacious/dbus.c1049
-rw-r--r--src/audacious/dbus.h48
-rw-r--r--src/audacious/debug.h2
-rw-r--r--src/audacious/drct-api.h24
-rw-r--r--src/audacious/drct.c21
-rw-r--r--src/audacious/effect.c13
-rw-r--r--src/audacious/effect.h2
-rw-r--r--src/audacious/equalizer.c12
-rw-r--r--src/audacious/equalizer_preset.c272
-rw-r--r--src/audacious/fft.c6
-rw-r--r--src/audacious/history.c14
-rw-r--r--src/audacious/images/appearance.pngbin0 -> 2721 bytes
-rw-r--r--src/audacious/images/audacious.pngbin1788 -> 0 bytes
-rw-r--r--src/audacious/images/menu_playlist.pngbin688 -> 0 bytes
-rw-r--r--src/audacious/images/menu_plugin.pngbin588 -> 0 bytes
-rw-r--r--src/audacious/images/menu_queue_toggle.pngbin686 -> 0 bytes
-rw-r--r--src/audacious/input-api.h60
-rw-r--r--src/audacious/input.h69
-rw-r--r--src/audacious/interface.c72
-rw-r--r--src/audacious/main.c555
-rw-r--r--src/audacious/main.h21
-rw-r--r--src/audacious/misc-api.h65
-rw-r--r--src/audacious/misc.h12
-rw-r--r--src/audacious/mpris-signals.c64
-rw-r--r--src/audacious/mpris_player.xml77
-rw-r--r--src/audacious/mpris_root.xml31
-rw-r--r--src/audacious/mpris_tracklist.xml52
-rw-r--r--src/audacious/output.c75
-rw-r--r--src/audacious/output.h4
-rw-r--r--src/audacious/playback.c422
-rw-r--r--src/audacious/playback.h2
-rw-r--r--src/audacious/playlist-api.h7
-rw-r--r--src/audacious/playlist-files.c181
-rw-r--r--src/audacious/playlist-new.c101
-rw-r--r--src/audacious/playlist-utils.c136
-rw-r--r--src/audacious/plugin-init.c8
-rw-r--r--src/audacious/plugin-preferences.c27
-rw-r--r--src/audacious/plugin-registry.c151
-rw-r--r--src/audacious/plugin-view.c44
-rw-r--r--src/audacious/plugin.h181
-rw-r--r--src/audacious/pluginenum.c57
-rw-r--r--src/audacious/plugins-api.h9
-rw-r--r--src/audacious/plugins.h8
-rw-r--r--src/audacious/preferences.c641
-rw-r--r--src/audacious/preferences.h6
-rw-r--r--src/audacious/probe-buffer.c28
-rw-r--r--src/audacious/probe.c49
-rw-r--r--src/audacious/scanner.c12
-rw-r--r--src/audacious/scanner.h2
-rw-r--r--src/audacious/signals.c18
-rw-r--r--src/audacious/types.h8
-rw-r--r--src/audacious/ui_albumart.c239
-rw-r--r--src/audacious/ui_plugin_menu.c38
-rw-r--r--src/audacious/ui_preferences.c1405
-rw-r--r--src/audacious/ui_preferences.h4
-rw-r--r--src/audacious/util.c184
-rw-r--r--src/audacious/util.h14
-rw-r--r--src/audacious/vis_runner.c141
-rw-r--r--src/audtool/Makefile17
-rw-r--r--src/audtool/audtool.h215
-rw-r--r--src/audtool/handlers_equalizer.c142
-rw-r--r--src/audtool/handlers_general.c225
-rw-r--r--src/audtool/handlers_playback.c127
-rw-r--r--src/audtool/handlers_playlist.c451
-rw-r--r--src/audtool/handlers_playqueue.c147
-rw-r--r--src/audtool/handlers_vitals.c176
-rw-r--r--src/audtool/main.c314
-rw-r--r--src/audtool/report.c111
-rw-r--r--src/audtool/wrappers.c194
-rw-r--r--src/audtool/wrappers.h43
-rw-r--r--src/dbus/Makefile18
-rw-r--r--src/dbus/aud-dbus.xml (renamed from src/audacious/objects.xml)262
-rw-r--r--src/libaudclient/Makefile23
-rw-r--r--src/libaudclient/audctrl.c993
-rw-r--r--src/libaudclient/audctrl.h138
-rw-r--r--src/libaudcore/Makefile17
-rw-r--r--src/libaudcore/audio.c7
-rw-r--r--src/libaudcore/audio.h.in2
-rw-r--r--src/libaudcore/audstrings.c599
-rw-r--r--src/libaudcore/audstrings.h101
-rw-r--r--src/libaudcore/charset.c180
-rw-r--r--src/libaudcore/core.h27
-rw-r--r--src/libaudcore/eventqueue.c31
-rw-r--r--src/libaudcore/hook.c2
-rw-r--r--src/libaudcore/hook.h3
-rw-r--r--src/libaudcore/index.c142
-rw-r--r--src/libaudcore/index.h66
-rw-r--r--src/libaudcore/inifile.c134
-rw-r--r--src/libaudcore/inifile.h (renamed from src/libaudgui/ui_regex.h)72
-rw-r--r--src/libaudcore/multihash.c153
-rw-r--r--src/libaudcore/multihash.h95
-rw-r--r--src/libaudcore/strpool.c259
-rw-r--r--src/libaudcore/tinylock.c65
-rw-r--r--src/libaudcore/tinylock.h.in56
-rw-r--r--src/libaudcore/tuple.c286
-rw-r--r--src/libaudcore/tuple.h49
-rw-r--r--src/libaudcore/tuple_compiler.c182
-rw-r--r--src/libaudcore/tuple_compiler.h5
-rw-r--r--src/libaudcore/tuple_formatter.c74
-rw-r--r--src/libaudcore/vfs.c103
-rw-r--r--src/libaudcore/vfs.h34
-rw-r--r--src/libaudcore/vfs_async.c2
-rw-r--r--src/libaudcore/vfs_common.c280
-rw-r--r--src/libaudcore/vfs_local.c231
-rw-r--r--src/libaudcore/vfs_local.h (renamed from src/libaudcore/tuple_formatter.h)15
-rw-r--r--src/libaudgui/Makefile17
-rw-r--r--src/libaudgui/about.c37
-rw-r--r--src/libaudgui/confirm.c84
-rw-r--r--src/libaudgui/effects-menu.c94
-rw-r--r--src/libaudgui/equalizer.c134
-rw-r--r--src/libaudgui/icons-stock.c60
-rw-r--r--src/libaudgui/iface-menu.c55
-rw-r--r--src/libaudgui/infopopup.c62
-rw-r--r--src/libaudgui/infowin.c402
-rw-r--r--src/libaudgui/init.c111
-rw-r--r--src/libaudgui/init.h42
-rw-r--r--src/libaudgui/jump-to-time.c62
-rw-r--r--src/libaudgui/libaudgui-gtk.h36
-rw-r--r--src/libaudgui/libaudgui.h18
-rw-r--r--src/libaudgui/list.c2
-rw-r--r--src/libaudgui/menu.c134
-rw-r--r--src/libaudgui/menu.h62
-rw-r--r--src/libaudgui/pixbufs.c141
-rw-r--r--src/libaudgui/playlists.c182
-rw-r--r--src/libaudgui/queue-manager.c67
-rw-r--r--src/libaudgui/scaled-image.c114
-rw-r--r--src/libaudgui/ui_fileopener.c180
-rw-r--r--src/libaudgui/ui_jumptotrack.c96
-rw-r--r--src/libaudgui/ui_jumptotrack_cache.c105
-rw-r--r--src/libaudgui/ui_playlist_manager.c148
-rw-r--r--src/libaudgui/urilist.c9
-rw-r--r--src/libaudgui/url-opener.c77
-rw-r--r--src/libaudgui/util.c267
-rw-r--r--src/libaudtag/ape/ape.c137
-rw-r--r--src/libaudtag/audtag.c62
-rw-r--r--src/libaudtag/audtag.h3
-rw-r--r--src/libaudtag/id3/id3-common.c287
-rw-r--r--src/libaudtag/id3/id3-common.h33
-rw-r--r--src/libaudtag/id3/id3v1.c200
-rw-r--r--src/libaudtag/id3/id3v22.c315
-rw-r--r--src/libaudtag/id3/id3v24.c447
-rw-r--r--src/libaudtag/tag_module.c5
-rw-r--r--src/libaudtag/util.c255
-rw-r--r--src/libaudtag/util.h44
246 files changed, 35127 insertions, 34798 deletions
diff --git a/AUTHORS b/AUTHORS
index d8c1ca3..afe623e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -22,74 +22,29 @@ maintain a list of those who have done so.
DEVELOPERS
-Please note that many of Audacious’s features are implemented by plugins, whose
-authors are listed elsewhere.
-
-Core executable (src/audacious):
- * Copyright © 2001 Anders Johansson
- * Copyright © 2003-2012:
- Michael FĂ€rber
- Matti HÀmÀlÀinen
- Michael Hanselmann
- John Lindgren
- MichaƂ Lipski
- Tomasz MoƄ
- William Pitcock
- Andrew Shadoura
- Ben Tucker
- Yoshiki Yazawa
- Eugene Zagidullin
+Audacious was written by:
-Command line tool (src/audtool):
- * Copyright © 2005-2011:
George Averill
- Matti HÀmÀlÀinen
- John Lindgren
- Giacomo Lozito
- William Pitcock
- Yoshiki Yazawa
-
-Remote control shared library (src/libaudclient):
- * Copyright © 2007-2011:
- Matti HÀmÀlÀinen
- John Lindgren
- William Pitcock
- Ben Tucker
- Yoshiki Yazawa
-
-Core shared library (src/libaudcore):
- * Copyright © 2006-2012:
Daniel Barkalow
Christian Birchinger
Ralf Ertzinger
- Maciej Grela
+ Michael FĂ€rber
Matti HÀmÀlÀinen
+ Michael Hanselmann
Anders Johansson
- John Lindgren
- MichaƂ Lipski
- Giacomo Lozito
- William Pitcock
- Tony Vroon
- Yoshiki Yazawa
- Eugene Zagidullin
-
-User interface shared library (src/libaudgui):
- * Copyright © 2006-2012:
- Carlo Bramini
- Michael FĂ€rber
Jussi Judin
+ Thomas Lange
John Lindgren
+ MichaƂ Lipski
Giacomo Lozito
+ Mikael Magnusson
Tomasz MoƄ
William Pitcock
+ Paula Stanciu
+ Ben Tucker
+ Tony Vroon
Yoshiki Yazawa
Eugene Zagidullin
-Tagging support (src/libaudtag):
- * Copyright © 2009-2011:
- John Lindgren
- MichaƂ Lipski
- Mikael Magnusson
- William Pitcock
- Paula Stanciu
- Tony Vroon
+Please note that many of Audacious’s features are implemented by plugins, whose
+authors are listed elsewhere.
diff --git a/Doxyfile b/Doxyfile
deleted file mode 100644
index 83c2411..0000000
--- a/Doxyfile
+++ /dev/null
@@ -1,1419 +0,0 @@
-# Doxyfile 1.5.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = Audacious
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = $Id:Doxyfile42802007-03-2104:39:00Znenolod$
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = doc/
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
-# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
-# and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen to replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = YES
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page. This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = src/libaudcore \
- src/audacious \
- src/libaudclient
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE = src/audacious/intl
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = YES
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-
-GENERATE_DOCSET = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to FRAME, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature. Other possible values
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
-# and Class Hiererachy pages using a tree view instead of an ordered list;
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with previous
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
-# respectively.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE = 10
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# By default doxygen will write a font called FreeSans.ttf to the output
-# directory and reference it in all dot files that doxygen generates. This
-# font does not include all possible unicode characters however, so when you need
-# these (or just want a differently looking font) you can specify the font name
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
-# which can be done by putting it in a standard location or by setting the
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
-# containing the font.
-
-DOT_FONTNAME = FreeSans
-
-# By default doxygen will tell dot to use the output directory to look for the
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a
-# different font using DOT_FONTNAME you can set the path where dot
-# can find it using this tag.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is enabled by default, which results in a transparent
-# background. Warning: Depending on the platform used, enabling this option
-# may lead to badly anti-aliased labels on the edges of a graph (i.e. they
-# become hard to read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/Makefile b/Makefile
index 8d4dffd..aa1c787 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,13 @@
-SUBDIRS = src man pixmaps po contrib
+SUBDIRS = src man pixmaps po
-DISTCLEAN = audacious.pc audclient.pc buildsys.mk config.h config.log config.status extra.mk
+DISTCLEAN = audacious.pc buildsys.mk config.h config.log config.status extra.mk
DATA = AUTHORS COPYING
include buildsys.mk
install-extra:
- for i in audacious.pc audclient.pc; do \
+ for i in audacious.pc; do \
${INSTALL_STATUS}; \
if ${MKDIR_P} ${DESTDIR}${pkgconfigdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${pkgconfigdir}/$$i; then \
${INSTALL_OK}; \
@@ -28,7 +28,7 @@ install-extra:
fi
uninstall-extra:
- for i in audacious.pc audclient.pc; do \
+ for i in audacious.pc; do \
if [ -f ${DESTDIR}${pkgconfigdir}/$$i ]; then \
if rm -f ${DESTDIR}${pkgconfigdir}/$$i; then \
${DELETE_OK}; \
diff --git a/acinclude.m4 b/acinclude.m4
index 3f51012..157258c 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1,133 +1,3 @@
-dnl ** AUD_CHECK_MODULE([define name], [module], [version required],
-dnl ** [informational name], [additional error message])
-dnl **
-dnl ** Works like PKG_CHECK_MODULES, but provides an informative
-dnl ** error message if the package is not found. NOTICE! Unlike
-dnl ** PKG_C_M, this macro ONLY supports one module name!
-dnl **
-dnl ** AUD_CHECK_MODULE([GLIB], [gtk+-2.0], [>= 2.8.0], [Gtk+2], [See http://www.gtk.org/])
-AC_DEFUN([AUD_CHECK_MODULE], [
- PKG_CHECK_MODULES([$1], [$2 $3], [
- ],[
- PKG_CHECK_EXISTS([$2], [
- cv_pkg_version=`$PKG_CONFIG --modversion "$2" 2>/dev/null`
- AC_MSG_ERROR([[
-$4 version $cv_pkg_version was found, but $2 $3 is required.
-$5]])
- ],[
- AC_MSG_ERROR([[
-Cannot find $4! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-$5]])
- ])
- ])
-])
-
-
-dnl ** AUD_CONDITIONAL([symbol], [variable to test][, value])
-dnl ** Simplifying wrapper for AM_CONDITIONAL.
-dnl **
-dnl ** AUD_CONDITIONAL([FOO], [foo])
-AC_DEFUN([AUD_CONDITIONAL],
-[if test "x${$2}" = m4_ifval([$3], ["x$3"],["xyes"]) ; then
- $1="yes"
-else
- $1="no"
-fi
-AC_SUBST([$1])dnl
-])
-
-
-dnl ** Simple wrapper for AC_ARG_ENABLE
-dnl ** AUD_ARG_ENABLE([name], [default value], [help string], [if enabled], [if disabled])
-AC_DEFUN([AUD_ARG_ENABLE], [dnl
-define([Name], [translit([$1], [./-], [___])])dnl
-define([cBasce], [ifelse([$2],[yes],[Disable],[Enable]) $3 (def: ifelse([$2],[yes],[enabled],[disabled]))])dnl
- AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$2],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_[]Name=$2])
- if test "x${enable_[]Name}" = "xyes"; then
- m4_ifvaln([$4], [$4], [:])dnl
- m4_ifvaln([$5], [else $5])dnl
- fi
-])
-
-
-AC_DEFUN([AUD_ARG_SIMPLE], [dnl
-define([Name], [translit([$1], [./-], [___])])dnl
-define([cBasce], [ifelse([$2],[yes],[Disable],[Enable]) $3 (def: ifelse([$2],[yes],[enabled],[disabled]))])dnl
- AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$2],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_[]Name=$2])
- if test "x${enable_[]Name}" = "xyes"; then
- AC_DEFINE([$4], [$5], [$6])
- fi
- AUD_CONDITIONAL([$4], [enable_$1])
- AC_SUBST([$4])
-])
-
-
-dnl ** Wrapper for cached compilation check
-dnl ** AUD_TRY_COMPILE([message], [result variable], [includes], [body], [if ok], [if not ok])
-AC_DEFUN([AUD_TRY_COMPILE], [dnl
- AC_CACHE_CHECK([$1], [$2],
- [AC_TRY_COMPILE([$3], [$4], [$2="yes"], [$2="no"])])
- if test "x${$2}" = "xyes"; then
- m4_ifvaln([$5], [$5], [:])dnl
- m4_ifvaln([$6], [else $6])dnl
- fi
-])
-
-
-dnl ** Check for GNU make
-AC_DEFUN([AUD_CHECK_GNU_MAKE],[
- AC_CACHE_CHECK([for GNU make],_cv_gnu_make_command,[
- _cv_gnu_make_command=""
- for a in "$MAKE" make gmake gnumake; do
- test "x$a" = "x" && continue
- if ( sh -c "$a --version" 2>/dev/null | grep "GNU Make" >/dev/null ) ; then
- _cv_gnu_make_command="$a"
- break
- fi
- done
- ])
- if test "x$_cv_gnu_make_command" != "x" ; then
- MAKE="$_cv_gnu_make_command"
- else
- AC_MSG_ERROR([** GNU make not found. If it is installed, try setting MAKE environment variable. **])
- fi
- AC_SUBST([MAKE])dnl
-])dnl
-
-
-dnl *** Define plugin directories
-AC_DEFUN([AUD_DEFINE_PLUGIN_DIR],[dnl
-define([Name], [translit([$1], [a-z], [A-Z])])dnl
-if test "x$enable_one_plugin_dir" = "xyes"; then
-ifdef([aud_plugin_dirs_defined],[],
-[ pluginsubs="\\\"Plugins\\\""
-])dnl
- Name[]_PLUGIN_DIR="Plugins"
-else
- ifdef([aud_def_plugin_dirs_defined],
- [pluginsubs="$pluginsubs,\\\"$1\\\""],
- [pluginsubs="\\\"$1\\\""])
- Name[]_PLUGIN_DIR="$1"
-fi
-AC_SUBST(Name[]_PLUGIN_DIR)dnl
-define([aud_def_plugin_dirs_defined],[1])dnl
-])dnl
-
-
-dnl *** Get plugin directories
-AC_DEFUN([AUD_GET_PLUGIN_DIR],[dnl
-define([Name], [translit([$1_plugin_dir], [A-Z], [a-z])])dnl
-define([BigName], [translit([$1], [a-z], [A-Z])])dnl
-ifdef([aud_get_plugin_dirs_defined],
-[pluginsubs="$pluginsubs,\\\"$1\\\""],
-[pluginsubs="\\\"$1\\\""])
-BigName[]_PLUGIN_DIR=`pkg-config audacious --variable=[]Name[]`
-AC_SUBST(BigName[]_PLUGIN_DIR)dnl
-define([aud_get_plugin_dirs_defined],[1])dnl
-])dnl
-
-
dnl Add $1 to CFLAGS and CXXFLAGS if supported
dnl ------------------------------------------
@@ -155,7 +25,6 @@ dnl Check for C and C++ compilers
dnl =============================
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([AM_PROG_AS])
AC_REQUIRE([AC_C_BIGENDIAN])
AC_REQUIRE([AC_SYS_LARGEFILE])
@@ -165,29 +34,53 @@ if test "x$GCC" = "xyes"; then
AUD_CHECK_CFLAGS(-Wtype-limits)
fi
-dnl Enable "-Wl,-z,defs" only on Linux
-dnl ==============================
-AC_MSG_CHECKING([for Linux])
+dnl Check platform
+dnl ==============
+
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
+AC_MSG_CHECKING([operating system type])
+
+HAVE_LINUX=no
+HAVE_MSWINDOWS=no
+
case "$target" in
*linux*)
- AC_MSG_RESULT([yes])
- LDFLAGS="$LDFLAGS -Wl,-z,defs"
+ AC_MSG_RESULT(Linux)
+ HAVE_LINUX=yes
+ ;;
+ *mingw*)
+ AC_MSG_RESULT(Windows)
+ HAVE_MSWINDOWS=yes
;;
*)
- AC_MSG_RESULT([no])
+ AC_MSG_RESULT(other UNIX)
;;
esac
+AC_SUBST(HAVE_MSWINDOWS)
+AC_SUBST(HAVE_LINUX)
+
+dnl Enable "-Wl,-z,defs" only on Linux
+dnl ==================================
+if test $HAVE_LINUX = yes ; then
+ LDFLAGS="$LDFLAGS -Wl,-z,defs"
+fi
+
+dnl MinGW needs -march=i686 for atomics
+dnl ===================================
+if test $HAVE_MSWINDOWS = yes ; then
+ CFLAGS="$CFLAGS -march=i686"
+fi
+
dnl Checks for various programs
dnl ===========================
-AUD_CHECK_GNU_MAKE
AC_PROG_LN_S
-AC_PROG_MAKE_SET
AC_PATH_PROG([RM], [rm])
AC_PATH_PROG([MV], [mv])
AC_PATH_PROG([CP], [cp])
AC_PATH_PROG([AR], [ar])
-AC_PATH_PROG([TR], [tr])
AC_PATH_PROG([RANLIB], [ranlib])
AC_PATH_PROG([WINDRES], [windres])
@@ -195,103 +88,26 @@ dnl Check for POSIX threads
dnl =======================
AC_SEARCH_LIBS([pthread_create], [pthread])
-dnl Check for Gtk+/GLib and pals
-dnl ============================
-AUD_CHECK_MODULE([GLIB], [glib-2.0], [>= 2.28], [Glib2])
-AUD_CHECK_MODULE([GMODULE], [gmodule-2.0], [>= 2.28], [GModule])
-AUD_CHECK_MODULE([GTHREAD], [gthread-2.0], [>= 2.28], [GThread])
-AUD_CHECK_MODULE([PANGO], [pango], [>= 1.20], [Pango])
-AUD_CHECK_MODULE([CAIRO], [cairo], [>= 1.6], [Cairo])
-AUD_CHECK_MODULE([GTK], [gtk+-3.0], [>= 3.0.0], [GTK+])
-
-])
-
-
-dnl **
-dnl ** Plugin helper macros
-dnl **
-
-dnl ** Unconditionally add a plugin to "build these" list
-AC_DEFUN([AUD_PLUGIN_ADD], [dnl
-define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
-have_[]Name="yes"; res_short_[]Name="$1"
-res_desc_[]Name="$3"; ifdef([aud_def_plugin_$2], [$2[]_PLUGINS="${$2[]_PLUGINS} $1"], [$2[]_PLUGINS="$1"])dnl
-define([aud_def_plugin_$2],[1])dnl
-])
-
-
-dnl ** Generic template for macros below
-AC_DEFUN([AUD_PLUGIN_CHK], [dnl
-define([cBasce], [ifelse([$3],[yes],[Disable],[Enable]) $5 (def: ifelse([$3],[yes],[enabled],[disabled]))])dnl
-AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$3],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_$2="$3"])dnl
- have_$2="no"
- if test "x${enable_$2}" = "xyes"; then
- m4_ifvaln([$6], [$6], [:])
- if test "x${have_$2}" = "xyes"; then
- m4_ifvaln([$7], [$7], [:])dnl
- else
- res_msg_$2="(not found)"
- m4_ifvaln([$8], [$8], [:])dnl
- fi
- else
- res_msg_$2="(disabled)"
- m4_ifvaln([$9], [$9], [:])dnl
- fi
-])
-
-
-dnl ** Add a plugin based on --enable/--disable options
-AC_DEFUN([AUD_PLUGIN_CHECK_SIMPLE], [dnl
-define([cBasce], [ifelse([$2],[yes],[Disable],[Enable]) $6 (def: ifelse([$2],[yes],[enabled],[disabled]))])dnl
-AC_ARG_ENABLE([$1], [AS_HELP_STRING([ifelse([$2],[yes],[--disable-$1],[--enable-$1])], cBasce)],, [enable_$2="$3"])dnl
- have_$2="no"
- if test "x${enable_$2}" = "xyes"; then
- m4_ifvaln([$6], [$6], [:])
- else
- res_msg_$2="(disabled)"
- m4_ifvaln([$7], [$7], [:])dnl
- fi
-])
-
-
-dnl ** Check and enable a plugin with a pkg-config check
-AC_DEFUN([AUD_PLUGIN_CHECK_PKG], [dnl
-define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
-define([BigN], [translit([$1], [a-z./-], [A-Z___])])dnl
- AUD_PLUGIN_CHK([$1], Name, [$2], [$4], [$6], [dnl
- PKG_CHECK_MODULES([]BigN, [$7], [have_[]Name[]="yes"], [have_[]Name[]="no"])
- ], [
- AUD_PLUGIN_ADD([$5], [$3])
- m4_ifvaln([$8], [$8])
- ], [$9], [$10])
-])
+dnl Check for GTK+ and pals
+dnl =======================
+PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.32)
+PKG_CHECK_MODULES(GMODULE, gmodule-2.0 >= 2.32)
+PKG_CHECK_MODULES(GTK, gtk+-3.0 >= 3.4)
-dnl ** Check and enable a plugin with a header files check
-AC_DEFUN([AUD_PLUGIN_CHECK_HEADERS], [
-define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
- AUD_PLUGIN_CHK([$1], Name, [$2], [$4], [$6], [
- AC_CHECK_HEADERS([$7], [have_[]Name[]="yes"], [have_[]Name[]="no"])
- ], [
- AUD_PLUGIN_ADD([$5], [$3])
- m4_ifvaln([$8], [$8])
- ], [$9], [$10])
-])
+if test $HAVE_MSWINDOWS = yes ; then
+ PKG_CHECK_MODULES(GIO, gio-2.0 >= 2.32)
+else
+ PKG_CHECK_MODULES(GIO, gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32)
+fi
+AC_SUBST(GLIB_CFLAGS)
+AC_SUBST(GLIB_LIBS)
+AC_SUBST(GIO_CFLAGS)
+AC_SUBST(GIO_LIBS)
+AC_SUBST(GMODULE_CFLAGS)
+AC_SUBST(GMODULE_LIBS)
+AC_SUBST(GTK_CFLAGS)
+AC_SUBST(GTK_LIBS)
-dnl ** Check and enable a plugin with a complex check
-AC_DEFUN([AUD_PLUGIN_CHECK_COMPLEX], [
-# CHECK_COMPLEX #1 : $1
-define([Name], [translit([$1], [A-Z./-], [a-z___])])dnl
- AUD_PLUGIN_CHK([$1], Name, [$2], [$4], [$6], [
-# CHECK_COMPLEX #2 BEGIN
- $7
-# CHECK_COMPLEX #2 END
- ], [
-# CHECK_COMPLEX #3 BEGIN
- AUD_PLUGIN_ADD([$5], [$3])
- m4_ifvaln([$8], [$8])
-# CHECK_COMPLEX #3 END
- ], [$9], [$10])
-# CHECK_COMPLEX #4 END
])
diff --git a/audacious.desktop b/audacious.desktop
index 17a954a..4504f92 100644
--- a/audacious.desktop
+++ b/audacious.desktop
@@ -1,8 +1,6 @@
[Desktop Entry]
Version=1.0
-
Type=Application
-
Name=Audacious
GenericName=Music Player
GenericName[be]=ĐœŃƒĐ·Ń‹Ń‡ĐœŃ‹ ĐżĐ»ŃĐ”Ń€
@@ -32,10 +30,8 @@ Comment[ru]=ХлушаĐčŃ‚Đ” ĐŒŃƒĐ·Ń‹Đșу
Comment[es]=Escucha mĂșsica
Comment[zh_TW]=éŸłæš‚é‘‘èłž
Icon=audacious
-
Categories=AudioVideo;Audio;Player;GTK;
-
Exec=audacious %U
TryExec=audacious
Terminal=false
-MimeType=application/ogg;application/x-cue;application/x-ogg;application/xspf+xml;audio/midi;audio/mp3;audio/mpeg;audio/mpegurl;audio/ogg;audio/prs.sid;audio/x-flac;audio/x-it;audio/x-mod;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-ms-wma;audio/x-musepack;audio/x-s3m;audio/x-scpls;audio/x-stm;audio/x-vorbis+ogg;audio/x-wav;audio/x-xm;inode/directory;x-content/audio-cdda;
+MimeType=application/ogg;application/x-cue;application/x-ogg;application/xspf+xml;audio/midi;audio/mp3;audio/mp4;audio/mpeg;audio/mpegurl;audio/ogg;audio/prs.sid;audio/x-flac;audio/x-it;audio/x-mod;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-ms-asx;audio/x-ms-wma;audio/x-musepack;audio/x-s3m;audio/x-scpls;audio/x-stm;audio/x-vorbis+ogg;audio/x-wav;audio/x-xm;inode/directory;x-content/audio-cdda;
diff --git a/audacious.pc.in b/audacious.pc.in
index 0eda817..27d265c 100644
--- a/audacious.pc.in
+++ b/audacious.pc.in
@@ -1,24 +1,16 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
-data_dir=@datadir@/@PACKAGE@
+data_dir=@datadir@/audacious
-version=@VERSION@
+version=@PACKAGE_VERSION@
include_dir=@includedir@
audacious_include_dir=@includedir@
lib_dir=@libdir@
plugin_dir=@plugindir@
-input_plugin_dir=@plugindir@/@INPUT_PLUGIN_DIR@
-output_plugin_dir=@plugindir@/@OUTPUT_PLUGIN_DIR@
-general_plugin_dir=@plugindir@/@GENERAL_PLUGIN_DIR@
-visualization_plugin_dir=@plugindir@/@VISUALIZATION_PLUGIN_DIR@
-effect_plugin_dir=@plugindir@/@EFFECT_PLUGIN_DIR@
-container_plugin_dir=@plugindir@/@CONTAINER_PLUGIN_DIR@
-transport_plugin_dir=@plugindir@/@TRANSPORT_PLUGIN_DIR@
-discovery_plugin_dir=@plugindir@/@DISCOVERY_PLUGIN_DIR@
Name: Audacious
Description: Audacious is a versatile and handy multi platform media player
-Version: @VERSION@
+Version: @PACKAGE_VERSION@
Libs: -L${lib_dir} -laudcore -laudgui
Cflags: -I${audacious_include_dir}
diff --git a/audclient.pc.in b/audclient.pc.in
deleted file mode 100644
index 9754a33..0000000
--- a/audclient.pc.in
+++ /dev/null
@@ -1,13 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-data_dir=@datadir@/@PACKAGE@
-
-version=@VERSION@
-audacious_include_dir=@includedir@
-lib_dir=@libdir@
-
-Name: Audacious Client Library
-Description: Remote control library for Audacious
-Version: @VERSION@
-Libs: -L${lib_dir} @LIBAUDCLIENT_LDFLAGS@
-Cflags: -I${audacious_include_dir}
diff --git a/autogen.sh b/autogen.sh
index 81946cc..14657bc 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,8 +1,4 @@
#!/bin/sh
-
-# compatibility script for automake <= 1.12
-# users of automake >= 1.13 should run 'autoreconf' instead
-
-aclocal -I m4
-autoheader
-autoconf
+aclocal -I m4 || exit 1
+autoconf || exit 1
+autoheader || exit 1
diff --git a/config.guess b/build-aux/config.guess
index b79252d..b79252d 100755
--- a/config.guess
+++ b/build-aux/config.guess
diff --git a/config.rpath b/build-aux/config.rpath
index c38b914..c38b914 100755
--- a/config.rpath
+++ b/build-aux/config.rpath
diff --git a/config.sub b/build-aux/config.sub
index 8b612ab..8b612ab 100755
--- a/config.sub
+++ b/build-aux/config.sub
diff --git a/install-sh b/build-aux/install-sh
index 377bb86..377bb86 100755
--- a/install-sh
+++ b/build-aux/install-sh
diff --git a/buildsys.mk.in b/buildsys.mk.in
index 268104c..95f1c98 100644
--- a/buildsys.mk.in
+++ b/buildsys.mk.in
@@ -60,9 +60,14 @@ PLUGIN_SUFFIX = @PLUGIN_SUFFIX@
INSTALL_LIB = @INSTALL_LIB@
UNINSTALL_LIB = @UNINSTALL_LIB@
CLEAN_LIB = @CLEAN_LIB@
+AS_DEPENDS = @AS_DEPENDS@
+CC_DEPENDS = @CC_DEPENDS@
+CXX_DEPENDS = @CXX_DEPENDS@
+OBJC_DEPENDS = @OBJC_DEPENDS@
+OBJCXX_DEPENDS = @OBJCXX_DEPENDS@
LN_S = @LN_S@
MKDIR_P = mkdir -p
-INSTALL = @INSTALL@
+INSTALL = @INSTALL@ -p
SHELL = @SHELL@
MSGFMT = @MSGFMT@
JAVAC = @JAVAC@
@@ -105,15 +110,17 @@ MO_FILES = ${LOCALES:.po=.mo}
.SILENT:
.SUFFIXES:
.SUFFIXES: .beam .c .c.dep .cc .cc.dep .class .cxx .cxx.dep .d .erl .lib.o .java .mo .m .m.dep .mm .mm.dep .o .plugin.o .po .py .pyc .rc .S .S.dep .xpm
-.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales
+.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales ${SUBDIRS}
all:
${MAKE} ${MFLAGS} subdirs
${MAKE} ${MFLAGS} depend
${MAKE} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales
-subdirs:
- for i in ${SUBDIRS}; do \
+subdirs: ${SUBDIRS}
+
+${SUBDIRS}:
+ for i in $@; do \
${DIR_ENTER}; \
${MAKE} ${MFLAGS} || exit $$?; \
${DIR_LEAVE}; \
@@ -125,9 +132,35 @@ depend: pre-depend ${SRCS}
test -f .deps || regen=1; \
for i in ${SRCS}; do \
case $$i in \
- *.c | *.cc | *.cxx | *.m | *.mm | *.S) \
- test $$i -nt .deps && regen=1; \
- deps="$$deps $$i.dep"; \
+ *.c) \
+ if test x"${CC_DEPENDS}" = x"yes"; then \
+ test $$i -nt .deps && regen=1; \
+ deps="$$deps $$i.dep"; \
+ fi; \
+ ;; \
+ *.cc | *.cxx) \
+ if test x"${CXX_DEPENDS}" = x"yes"; then \
+ test $$i -nt .deps && regen=1; \
+ deps="$$deps $$i.dep"; \
+ fi; \
+ ;; \
+ *.m) \
+ if test x"${OBJC_DEPENDS}" = x"yes"; then \
+ test $$i -nt .deps && regen=1; \
+ deps="$$deps $$i.dep"; \
+ fi; \
+ ;; \
+ *.mm) \
+ if test x"${OBJCXX_DEPENDS}" = x"yes"; then \
+ test $$i -nt .deps && regen=1; \
+ deps="$$deps $$i.dep"; \
+ fi; \
+ ;; \
+ *.S) \
+ if test x"${AS_DEPENDS}" = x"yes"; then \
+ test $$i -nt .deps && regen=1; \
+ deps="$$deps $$i.dep"; \
+ fi; \
;; \
esac; \
done; \
@@ -143,8 +176,28 @@ depend: pre-depend ${SRCS}
fi; \
fi
-.c.c.dep .cc.cc.dep .cxx.cxx.dep .m.m.dep .mm.mm.dep .S.S.dep:
- ${CPP} ${CPPFLAGS} -M $< | \
+.c.c.dep:
+ ${CPP} ${CPPFLAGS} ${CFLAGS} -M $< | \
+ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \
+ { rm -f $@; false; }
+
+.cc.cc.dep .cxx.cxx.dep:
+ ${CPP} ${CPPFLAGS} ${CXXFLAGS} -M $< | \
+ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \
+ { rm -f $@; false; }
+
+.m.m.dep:
+ ${CPP} ${CPPFLAGS} ${OBJCFLAGS} -M $< | \
+ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \
+ { rm -f $@; false; }
+
+.mm.mm.dep:
+ ${CPP} ${CPPFLAGS} ${OBJCPPFLAGS} -M $< | \
+ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \
+ { rm -f $@; false; }
+
+.S.S.dep:
+ ${CPP} ${CPPFLAGS} ${ASFLAGS} -M $< | \
sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \
{ rm -f $@; false; }
@@ -508,7 +561,7 @@ locales: ${MO_FILES}
${COMPILE_PLUGIN_FAILED}; \
fi
-install: ${SHARED_LIB} ${STATIC_LIB} ${STATIC_PIC_LIB} ${PLUGIN} ${PROG} install-extra
+install: install-extra
for i in ${SUBDIRS}; do \
${DIR_ENTER}; \
${MAKE} ${MFLAGS} install || exit $$?; \
diff --git a/config.h.in b/config.h.in
index 136c63f..7bcf59b 100644
--- a/config.h.in
+++ b/config.h.in
@@ -6,9 +6,6 @@
/* Build stamp */
#undef BUILDSTAMP
-/* Define to disable per user plugin directory */
-#undef DISABLE_USER_PLUGIN_DIR
-
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS
@@ -16,12 +13,6 @@
/* Define to compiler syntax for public symbols */
#undef EXPORT
-/* Define to 1 if you have the `backtrace' function. */
-#undef HAVE_BACKTRACE
-
-/* Define if cexpf is present */
-#undef HAVE_CEXPF
-
/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#undef HAVE_CFLOCALECOPYCURRENT
@@ -34,9 +25,6 @@
*/
#undef HAVE_DCGETTEXT
-/* Define to 1 if you have the <execinfo.h> header file. */
-#undef HAVE_EXECINFO_H
-
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
@@ -52,15 +40,6 @@
/* Define if the /proc/self/exe symlink is supported */
#undef HAVE_PROC_SELF_EXE
-/* Define to 1 if you have the <regex.h> header file. */
-#undef HAVE_REGEX_H
-
-/* Define to 1 if you have the <rxposix.h> header file. */
-#undef HAVE_RXPOSIX_H
-
-/* Define to 1 if you have the <rx/rxposix.h> header file. */
-#undef HAVE_RX_RXPOSIX_H
-
/* Define to 1 if you have the `sigwait' function. */
#undef HAVE_SIGWAIT
@@ -85,6 +64,9 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
/* Name of package */
#undef PACKAGE
@@ -118,14 +100,8 @@
/* Define if D-Bus support enabled */
#undef USE_DBUS
-/* If this macro is defined, use GNU regex library. */
-#undef USE_REGEX_GNU
-
-/* If this macro is defined, use Oniguruma regex library. */
-#undef USE_REGEX_ONIGURUMA
-
-/* If this macro is defined, use PCRE regex library. */
-#undef USE_REGEX_PCRE
+/* Define to allow Valgrind analysis */
+#undef VALGRIND_FRIENDLY
/* Version number of package */
#undef VERSION
diff --git a/configure b/configure
index 6fe9d8e..dbb845f 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for audacious 3.4.3.
+# Generated by GNU Autoconf 2.69 for audacious 3.5.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='audacious'
PACKAGE_TARNAME='audacious'
-PACKAGE_VERSION='3.4.3'
-PACKAGE_STRING='audacious 3.4.3'
+PACKAGE_VERSION='3.5'
+PACKAGE_STRING='audacious 3.5'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -621,40 +621,32 @@ ac_includes_default="\
#endif"
gt_needs=
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='TERM_SETAF6
+TERM_SETAF4
+TERM_SETAF3
+TERM_SETAF2
+TERM_SETAF1
+TERM_BOLD
+TERM_SGR0
+TERM_EL
+TPUT
+OBJCXX_DEPENDS
+OBJC_DEPENDS
+CXX_DEPENDS
+CC_DEPENDS
+LTLIBOBJS
LIBOBJS
-AUDACIOUS_DEFINES
-DISCOVERY_PLUGIN_DIR
-CONTAINER_PLUGIN_DIR
-VISUALIZATION_PLUGIN_DIR
-GENERAL_PLUGIN_DIR
-EFFECT_PLUGIN_DIR
-OUTPUT_PLUGIN_DIR
-INPUT_PLUGIN_DIR
-TRANSPORT_PLUGIN_DIR
-pluginsubs
plugindir
-REGEX_CFLAGS
-REGEX_LIBS
-LIBPCRE_LIBS
-LIBPCRE_CFLAGS
+VALGRIND_FRIENDLY
USE_DBUS
-LIBAUDCLIENT_LDFLAGS
-GLIB_GENMARSHAL
-DBUS_BINDING_TOOL
-DBUS_LIBS
-DBUS_CFLAGS
+have_dbus
USE_CHARDET
LIBGUESS_LIBS
LIBGUESS_CFLAGS
-USE_THUNAR
-AUDACIOUS_PATH
POSUB
LTLIBINTL
LIBINTL
INTLLIBS
-LTLIBICONV
-LIBICONV
INTL_MACOSX_LIBS
XGETTEXT_EXTRA_OPTIONS
MSGMERGE
@@ -671,7 +663,9 @@ MKDIR_P
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
-HAVE_MSWINDOWS
+SET_MAKE
+LTLIBICONV
+LIBICONV
BIGENDIAN
pkgconfigdir
CLEAN_LIB
@@ -685,23 +679,10 @@ LIB_SUFFIX
LIB_PREFIX
LIB_LDFLAGS
LIB_CFLAGS
-TERM_SETAF6
-TERM_SETAF4
-TERM_SETAF3
-TERM_SETAF2
-TERM_SETAF1
-TERM_BOLD
-TERM_SGR0
-TERM_EL
-TPUT
+GIO_LIBS
+GIO_CFLAGS
GTK_LIBS
GTK_CFLAGS
-CAIRO_LIBS
-CAIRO_CFLAGS
-PANGO_LIBS
-PANGO_CFLAGS
-GTHREAD_LIBS
-GTHREAD_CFLAGS
GMODULE_LIBS
GMODULE_CFLAGS
GLIB_LIBS
@@ -711,30 +692,28 @@ PKG_CONFIG_PATH
PKG_CONFIG
WINDRES
RANLIB
-TR
AR
CP
MV
RM
-SET_MAKE
LN_S
-MAKE
+HAVE_LINUX
+HAVE_MSWINDOWS
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
EGREP
GREP
CPP
-am__fastdepCCAS_FALSE
-am__fastdepCCAS_TRUE
-CCASDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-am__leading_dot
-CCASFLAGS
-CCAS
ac_ct_CXX
CXXFLAGS
CXX
@@ -745,20 +724,6 @@ CPPFLAGS
LDFLAGS
CFLAGS
CC
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-VERSION
-PACKAGE
target_alias
host_alias
build_alias
@@ -800,21 +765,18 @@ SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
-enable_dependency_tracking
enable_largefile
with_pkgconfigdir
-enable_nls
with_gnu_ld
enable_rpath
with_libiconv_prefix
+enable_nls
with_libintl_prefix
with_buildstamp
enable_text_console
-enable_user_plugin_dir
-enable_thunar
enable_chardet
enable_dbus
-with_regexlib
+enable_valgrind
'
ac_precious_vars='build_alias
host_alias
@@ -827,8 +789,6 @@ CPPFLAGS
CXX
CXXFLAGS
CCC
-CCAS
-CCASFLAGS
CPP
PKG_CONFIG
PKG_CONFIG_PATH
@@ -837,20 +797,12 @@ GLIB_CFLAGS
GLIB_LIBS
GMODULE_CFLAGS
GMODULE_LIBS
-GTHREAD_CFLAGS
-GTHREAD_LIBS
-PANGO_CFLAGS
-PANGO_LIBS
-CAIRO_CFLAGS
-CAIRO_LIBS
GTK_CFLAGS
GTK_LIBS
+GIO_CFLAGS
+GIO_LIBS
LIBGUESS_CFLAGS
-LIBGUESS_LIBS
-DBUS_CFLAGS
-DBUS_LIBS
-LIBPCRE_CFLAGS
-LIBPCRE_LIBS'
+LIBGUESS_LIBS'
# Initialize some variables set by options.
@@ -1391,7 +1343,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures audacious 3.4.3 to adapt to many kinds of systems.
+\`configure' configures audacious 3.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1457,7 +1409,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of audacious 3.4.3:";;
+ short | recursive ) echo "Configuration of audacious 3.5:";;
esac
cat <<\_ACEOF
@@ -1465,20 +1417,13 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-dependency-tracking
- do not reject slow dependency extractors
- --disable-dependency-tracking
- speeds up one-time build
--disable-largefile omit support for large files
- --disable-nls do not use Native Language Support
--disable-rpath do not hardcode runtime library paths
+ --disable-nls do not use Native Language Support
--enable-text-console Enable text console for MS-Windows hosts
- --disable-user-plugin-dir
- Disable per-user plugin dir (def: enabled)
- --disable-rpath Disable disable rpath (def: enabled)
- --enable-thunar Enable thunar (Xfce) support files (def: disabled)
- --disable-chardet Disable charset detection support (def: enabled)
- --disable-dbus Disable D-Bus support (def: enabled)
+ --enable-chardet Disable character set detection (default=auto)
+ --disable-dbus Disable D-Bus support (default=enabled)
+ --enable-valgrind Valgrind analysis support (default=disabled)
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1491,8 +1436,6 @@ Optional Packages:
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
--without-libintl-prefix don't search for libintl in includedir and libdir
--with-buildstamp=XXX Set build stamp to XXX
- --with-regexlib=gnu/oniguruma/pcre
- Use the chosen regex library (def: gnu)
Some influential environment variables:
CC C compiler command
@@ -1504,8 +1447,6 @@ Some influential environment variables:
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
- CCAS assembler compiler command (defaults to CC)
- CCASFLAGS assembler compiler flags (defaults to CFLAGS)
CPP C preprocessor
PKG_CONFIG path to pkg-config utility
PKG_CONFIG_PATH
@@ -1518,28 +1459,14 @@ Some influential environment variables:
C compiler flags for GMODULE, overriding pkg-config
GMODULE_LIBS
linker flags for GMODULE, overriding pkg-config
- GTHREAD_CFLAGS
- C compiler flags for GTHREAD, overriding pkg-config
- GTHREAD_LIBS
- linker flags for GTHREAD, overriding pkg-config
- PANGO_CFLAGS
- C compiler flags for PANGO, overriding pkg-config
- PANGO_LIBS linker flags for PANGO, overriding pkg-config
- CAIRO_CFLAGS
- C compiler flags for CAIRO, overriding pkg-config
- CAIRO_LIBS linker flags for CAIRO, overriding pkg-config
GTK_CFLAGS C compiler flags for GTK, overriding pkg-config
GTK_LIBS linker flags for GTK, overriding pkg-config
+ GIO_CFLAGS C compiler flags for GIO, overriding pkg-config
+ GIO_LIBS linker flags for GIO, overriding pkg-config
LIBGUESS_CFLAGS
C compiler flags for LIBGUESS, overriding pkg-config
LIBGUESS_LIBS
linker flags for LIBGUESS, overriding pkg-config
- DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config
- DBUS_LIBS linker flags for DBUS, overriding pkg-config
- LIBPCRE_CFLAGS
- C compiler flags for LIBPCRE, overriding pkg-config
- LIBPCRE_LIBS
- linker flags for LIBPCRE, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1607,7 +1534,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-audacious configure 3.4.3
+audacious configure 3.5
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1855,93 +1782,6 @@ fi
} # ac_fn_c_try_link
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2012,7 +1852,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by audacious $as_me 3.4.3, which was
+It was created by audacious $as_me 3.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2363,23 +2203,19 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-PACKAGE=audacious
-
-VERSION=3.4.3
-
cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+#define PACKAGE "$PACKAGE_NAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+#define VERSION "$PACKAGE_VERSION"
_ACEOF
ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+for ac_dir in build-aux "$srcdir"/build-aux; do
if test -f "$ac_dir/install-sh"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
@@ -2395,7 +2231,7 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
fi
done
if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
@@ -2407,116 +2243,6 @@ ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if ${ac_cv_target+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$target_alias" = x; then
- ac_cv_target=$ac_cv_host
-else
- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
ac_config_headers="$ac_config_headers config.h"
@@ -3567,211 +3293,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
- enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
- am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
- AMDEP_TRUE=
- AMDEP_FALSE='#'
-else
- AMDEP_TRUE='#'
- AMDEP_FALSE=
-fi
-
-
-# By default we simply use the C compiler to build assembly code.
-
-test "${CCAS+set}" = set || CCAS=$CC
-test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
-
-
-
-depcc="$CCAS" am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named 'D' -- because '-MD' means "put the output
- # in D".
- rm -rf conftest.dir
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CCAS_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
-
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
- # Solaris 10 /bin/sh.
- echo '/* dummy */' > sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with '-c' and '-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle '-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs.
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # After this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested.
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvc7 | msvc7msys | msvisualcpp | msvcmsys)
- # This compiler won't grok '-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CCAS_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CCAS_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; }
-CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then
- am__fastdepCCAS_TRUE=
- am__fastdepCCAS_FALSE='#'
-else
- am__fastdepCCAS_TRUE='#'
- am__fastdepCCAS_FALSE=
-fi
-
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -4594,6 +4115,116 @@ rm -rf conftest*
fi
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
@@ -4721,7 +4352,6 @@ fi
-
if test "x$GCC" = "xyes"; then
CFLAGS="$CFLAGS -std=gnu99 -ffast-math -Wall -pipe"
CXXFLAGS="$CXXFLAGS -Wall -pipe"
@@ -4759,44 +4389,43 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux" >&5
-$as_echo_n "checking for Linux... " >&6; }
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking operating system type" >&5
+$as_echo_n "checking operating system type... " >&6; }
+
+HAVE_LINUX=no
+HAVE_MSWINDOWS=no
+
case "$target" in
*linux*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- LDFLAGS="$LDFLAGS -Wl,-z,defs"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux" >&5
+$as_echo "Linux" >&6; }
+ HAVE_LINUX=yes
+ ;;
+ *mingw*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Windows" >&5
+$as_echo "Windows" >&6; }
+ HAVE_MSWINDOWS=yes
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: other UNIX" >&5
+$as_echo "other UNIX" >&6; }
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU make" >&5
-$as_echo_n "checking for GNU make... " >&6; }
-if ${_cv_gnu_make_command+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- _cv_gnu_make_command=""
- for a in "$MAKE" make gmake gnumake; do
- test "x$a" = "x" && continue
- if ( sh -c "$a --version" 2>/dev/null | grep "GNU Make" >/dev/null ) ; then
- _cv_gnu_make_command="$a"
- break
- fi
- done
+if test $HAVE_LINUX = yes ; then
+ LDFLAGS="$LDFLAGS -Wl,-z,defs"
+fi
+
+if test $HAVE_MSWINDOWS = yes ; then
+ CFLAGS="$CFLAGS -march=i686"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_cv_gnu_make_command" >&5
-$as_echo "$_cv_gnu_make_command" >&6; }
- if test "x$_cv_gnu_make_command" != "x" ; then
- MAKE="$_cv_gnu_make_command"
- else
- as_fn_error $? "** GNU make not found. If it is installed, try setting MAKE environment variable. **" "$LINENO" 5
- fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
$as_echo_n "checking whether ln -s works... " >&6; }
@@ -4809,37 +4438,6 @@ else
$as_echo "no, using $LN_S" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
- *@@@%%%=?*=@@@%%%*)
- eval ac_cv_prog_make_${ac_make}_set=yes;;
- *)
- eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- SET_MAKE=
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
# Extract the first word of "rm", so it can be a program name with args.
set dummy rm; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -5000,46 +4598,6 @@ $as_echo "no" >&6; }
fi
-# Extract the first word of "tr", so it can be a program name with args.
-set dummy tr; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_TR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $TR in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_TR="$TR" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_TR="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-TR=$ac_cv_path_TR
-if test -n "$TR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TR" >&5
-$as_echo "$TR" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -5188,12 +4746,12 @@ if test -n "$GLIB_CFLAGS"; then
pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.28\""; } >&5
- ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.28") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.28" 2>/dev/null`
+ pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5205,12 +4763,12 @@ if test -n "$GLIB_LIBS"; then
pkg_cv_GLIB_LIBS="$GLIB_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.28\""; } >&5
- ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.28") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.28" 2>/dev/null`
+ pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5231,71 +4789,46 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.28" 2>&1`
+ GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.32" 2>&1`
else
- GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.28" 2>&1`
+ GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.32" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$GLIB_PKG_ERRORS" >&5
+ as_fn_error $? "Package requirements (glib-2.0 >= 2.32) were not met:
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "glib-2.0" 2>/dev/null`
- as_fn_error $? "
-Glib2 version $cv_pkg_version was found, but glib-2.0 >= 2.28 is required.
-" "$LINENO" 5
-
-else
+$GLIB_PKG_ERRORS
- as_fn_error $? "
-Cannot find Glib2! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+Alternatively, you may set the environment variables GLIB_CFLAGS
+and GLIB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "glib-2.0" 2>/dev/null`
- as_fn_error $? "
-Glib2 version $cv_pkg_version was found, but glib-2.0 >= 2.28 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find Glib2! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Alternatively, you may set the environment variables GLIB_CFLAGS
+and GLIB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
else
GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS
GLIB_LIBS=$pkg_cv_GLIB_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-
fi
-
-
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMODULE" >&5
$as_echo_n "checking for GMODULE... " >&6; }
@@ -5304,12 +4837,12 @@ if test -n "$GMODULE_CFLAGS"; then
pkg_cv_GMODULE_CFLAGS="$GMODULE_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0 >= 2.28\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gmodule-2.0 >= 2.28") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gmodule-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GMODULE_CFLAGS=`$PKG_CONFIG --cflags "gmodule-2.0 >= 2.28" 2>/dev/null`
+ pkg_cv_GMODULE_CFLAGS=`$PKG_CONFIG --cflags "gmodule-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5321,12 +4854,12 @@ if test -n "$GMODULE_LIBS"; then
pkg_cv_GMODULE_LIBS="$GMODULE_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0 >= 2.28\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gmodule-2.0 >= 2.28") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gmodule-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GMODULE_LIBS=`$PKG_CONFIG --libs "gmodule-2.0 >= 2.28" 2>/dev/null`
+ pkg_cv_GMODULE_LIBS=`$PKG_CONFIG --libs "gmodule-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5347,85 +4880,60 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GMODULE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gmodule-2.0 >= 2.28" 2>&1`
+ GMODULE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gmodule-2.0 >= 2.32" 2>&1`
else
- GMODULE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gmodule-2.0 >= 2.28" 2>&1`
+ GMODULE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gmodule-2.0 >= 2.32" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$GMODULE_PKG_ERRORS" >&5
+ as_fn_error $? "Package requirements (gmodule-2.0 >= 2.32) were not met:
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gmodule-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
+$GMODULE_PKG_ERRORS
- cv_pkg_version=`$PKG_CONFIG --modversion "gmodule-2.0" 2>/dev/null`
- as_fn_error $? "
-GModule version $cv_pkg_version was found, but gmodule-2.0 >= 2.28 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find GModule! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+Alternatively, you may set the environment variables GMODULE_CFLAGS
+and GMODULE_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gmodule-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gmodule-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "gmodule-2.0" 2>/dev/null`
- as_fn_error $? "
-GModule version $cv_pkg_version was found, but gmodule-2.0 >= 2.28 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find GModule! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Alternatively, you may set the environment variables GMODULE_CFLAGS
+and GMODULE_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
else
GMODULE_CFLAGS=$pkg_cv_GMODULE_CFLAGS
GMODULE_LIBS=$pkg_cv_GMODULE_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-
fi
-
-
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5
-$as_echo_n "checking for GTHREAD... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5
+$as_echo_n "checking for GTK... " >&6; }
-if test -n "$GTHREAD_CFLAGS"; then
- pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS"
+if test -n "$GTK_CFLAGS"; then
+ pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.28\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.28") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 >= 2.28" 2>/dev/null`
+ pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0 >= 3.4" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5433,16 +4941,16 @@ fi
else
pkg_failed=untried
fi
-if test -n "$GTHREAD_LIBS"; then
- pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS"
+if test -n "$GTK_LIBS"; then
+ pkg_cv_GTK_LIBS="$GTK_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= 2.28\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= 2.28") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0 >= 2.28" 2>/dev/null`
+ pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-3.0 >= 3.4" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5463,85 +4971,62 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gthread-2.0 >= 2.28" 2>&1`
+ GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0 >= 3.4" 2>&1`
else
- GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gthread-2.0 >= 2.28" 2>&1`
+ GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0 >= 3.4" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
- echo "$GTHREAD_PKG_ERRORS" >&5
-
-
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "gthread-2.0" 2>/dev/null`
- as_fn_error $? "
-GThread version $cv_pkg_version was found, but gthread-2.0 >= 2.28 is required.
-" "$LINENO" 5
+ echo "$GTK_PKG_ERRORS" >&5
-else
+ as_fn_error $? "Package requirements (gtk+-3.0 >= 3.4) were not met:
- as_fn_error $? "
-Cannot find GThread! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
+$GTK_PKG_ERRORS
-fi
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+Alternatively, you may set the environment variables GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "gthread-2.0" 2>/dev/null`
- as_fn_error $? "
-GThread version $cv_pkg_version was found, but gthread-2.0 >= 2.28 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find GThread! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Alternatively, you may set the environment variables GTK_CFLAGS
+and GTK_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
else
- GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS
- GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS
+ GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
+ GTK_LIBS=$pkg_cv_GTK_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-
fi
-
+if test $HAVE_MSWINDOWS = yes ; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5
-$as_echo_n "checking for PANGO... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO" >&5
+$as_echo_n "checking for GIO... " >&6; }
-if test -n "$PANGO_CFLAGS"; then
- pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS"
+if test -n "$GIO_CFLAGS"; then
+ pkg_cv_GIO_CFLAGS="$GIO_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.20\""; } >&5
- ($PKG_CONFIG --exists --print-errors "pango >= 1.20") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.20" 2>/dev/null`
+ pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5549,16 +5034,16 @@ fi
else
pkg_failed=untried
fi
-if test -n "$PANGO_LIBS"; then
- pkg_cv_PANGO_LIBS="$PANGO_LIBS"
+if test -n "$GIO_LIBS"; then
+ pkg_cv_GIO_LIBS="$GIO_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.20\""; } >&5
- ($PKG_CONFIG --exists --print-errors "pango >= 1.20") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= 1.20" 2>/dev/null`
+ pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5579,201 +5064,61 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pango >= 1.20" 2>&1`
+ GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.32" 2>&1`
else
- PANGO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pango >= 1.20" 2>&1`
+ GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.32" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
- echo "$PANGO_PKG_ERRORS" >&5
+ echo "$GIO_PKG_ERRORS" >&5
+ as_fn_error $? "Package requirements (gio-2.0 >= 2.32) were not met:
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5
- ($PKG_CONFIG --exists --print-errors "pango") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
+$GIO_PKG_ERRORS
- cv_pkg_version=`$PKG_CONFIG --modversion "pango" 2>/dev/null`
- as_fn_error $? "
-Pango version $cv_pkg_version was found, but pango >= 1.20 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find Pango! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5
- ($PKG_CONFIG --exists --print-errors "pango") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "pango" 2>/dev/null`
- as_fn_error $? "
-Pango version $cv_pkg_version was found, but pango >= 1.20 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find Pango! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
else
- PANGO_CFLAGS=$pkg_cv_PANGO_CFLAGS
- PANGO_LIBS=$pkg_cv_PANGO_LIBS
+ GIO_CFLAGS=$pkg_cv_GIO_CFLAGS
+ GIO_LIBS=$pkg_cv_GIO_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-
fi
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
-$as_echo_n "checking for CAIRO... " >&6; }
-
-if test -n "$CAIRO_CFLAGS"; then
- pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.6\""; } >&5
- ($PKG_CONFIG --exists --print-errors "cairo >= 1.6") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= 1.6" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$CAIRO_LIBS"; then
- pkg_cv_CAIRO_LIBS="$CAIRO_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo >= 1.6\""; } >&5
- ($PKG_CONFIG --exists --print-errors "cairo >= 1.6") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo >= 1.6" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo >= 1.6" 2>&1`
- else
- CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo >= 1.6" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$CAIRO_PKG_ERRORS" >&5
-
-
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5
- ($PKG_CONFIG --exists --print-errors "cairo") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "cairo" 2>/dev/null`
- as_fn_error $? "
-Cairo version $cv_pkg_version was found, but cairo >= 1.6 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find Cairo! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
-
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo\""; } >&5
- ($PKG_CONFIG --exists --print-errors "cairo") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "cairo" 2>/dev/null`
- as_fn_error $? "
-Cairo version $cv_pkg_version was found, but cairo >= 1.6 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find Cairo! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
-
-else
- CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
- CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-
-fi
-
-
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5
-$as_echo_n "checking for GTK... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO" >&5
+$as_echo_n "checking for GIO... " >&6; }
-if test -n "$GTK_CFLAGS"; then
- pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
+if test -n "$GIO_CFLAGS"; then
+ pkg_cv_GIO_CFLAGS="$GIO_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0 >= 3.0.0" 2>/dev/null`
+ pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5781,16 +5126,16 @@ fi
else
pkg_failed=untried
fi
-if test -n "$GTK_LIBS"; then
- pkg_cv_GTK_LIBS="$GTK_LIBS"
+if test -n "$GIO_LIBS"; then
+ pkg_cv_GIO_LIBS="$GIO_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-3.0 >= 3.0.0" 2>/dev/null`
+ pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -5811,184 +5156,57 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1`
+ GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32" 2>&1`
else
- GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0 >= 3.0.0" 2>&1`
+ GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
- echo "$GTK_PKG_ERRORS" >&5
-
-
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gtk+-3.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
+ echo "$GIO_PKG_ERRORS" >&5
- cv_pkg_version=`$PKG_CONFIG --modversion "gtk+-3.0" 2>/dev/null`
- as_fn_error $? "
-GTK+ version $cv_pkg_version was found, but gtk+-3.0 >= 3.0.0 is required.
-" "$LINENO" 5
-
-else
+ as_fn_error $? "Package requirements (gio-2.0 >= 2.32 gio-unix-2.0 >= 2.32) were not met:
- as_fn_error $? "
-Cannot find GTK+! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
+$GIO_PKG_ERRORS
-fi
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gtk+-3.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "gtk+-3.0" 2>/dev/null`
- as_fn_error $? "
-GTK+ version $cv_pkg_version was found, but gtk+-3.0 >= 3.0.0 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find GTK+! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
else
- GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
- GTK_LIBS=$pkg_cv_GTK_LIBS
+ GIO_CFLAGS=$pkg_cv_GIO_CFLAGS
+ GIO_LIBS=$pkg_cv_GIO_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-
-fi
-
-
-
-
-
- # Extract the first word of "tput", so it can be a program name with args.
-set dummy tput; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_TPUT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $TPUT in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_TPUT="$TPUT" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_TPUT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
fi
-TPUT=$ac_cv_path_TPUT
-if test -n "$TPUT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TPUT" >&5
-$as_echo "$TPUT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
fi
- if test x"$TPUT" != x""; then :
- if x=$($TPUT el 2>/dev/null); then
- TERM_EL="$x"
- else
- TERM_EL="$($TPUT ce 2>/dev/null)"
- fi
- if x=$($TPUT sgr0 2>/dev/null); then
- TERM_SGR0="$x"
- else
- TERM_SGR0="$($TPUT me 2>/dev/null)"
- fi
- if x=$($TPUT bold 2>/dev/null); then
- TERM_BOLD="$x"
- else
- TERM_BOLD="$($TPUT md 2>/dev/null)"
-
- fi
-
- if x=$($TPUT setaf 1 2>/dev/null); then
- TERM_SETAF1="$x"
-
- TERM_SETAF2="$($TPUT setaf 2 2>/dev/null)"
-
- TERM_SETAF3="$($TPUT setaf 3 2>/dev/null)"
-
- TERM_SETAF4="$($TPUT setaf 4 2>/dev/null)"
-
- TERM_SETAF6="$($TPUT setaf 6 2>/dev/null)"
-
- else
- TERM_SETAF1="$($TPUT AF 1 2>/dev/null)"
-
- TERM_SETAF2="$($TPUT AF 2 2>/dev/null)"
-
- TERM_SETAF3="$($TPUT AF 3 2>/dev/null)"
-
- TERM_SETAF4="$($TPUT AF 4 2>/dev/null)"
-
- TERM_SETAF6="$($TPUT AF 6 2>/dev/null)"
-
- fi
-
-else
-
- TERM_EL='\033\133K'
-
- TERM_SGR0='\033\133m'
-
- TERM_BOLD='\033\1331m'
-
- TERM_SETAF1='\033\13331m'
-
- TERM_SETAF2='\033\13332m'
-
- TERM_SETAF3='\033\13333m'
-
- TERM_SETAF4='\033\13334m'
-
- TERM_SETAF6='\033\13336m'
-
-
-fi
@@ -5999,14 +5217,14 @@ $as_echo_n "checking for shared library system... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
$as_echo "Darwin" >&6; }
LIB_CFLAGS='-fPIC -DPIC'
- LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR} -install_name ${libdir}/$$(i=${SHARED_LIB}; echo $${i%.dylib}).${LIB_MAJOR}.dylib'
+ LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
LIB_PREFIX='lib'
LIB_SUFFIX='.dylib'
LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
PLUGIN_CFLAGS='-fPIC -DPIC'
PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup'
PLUGIN_SUFFIX='.bundle'
- INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i'
+ INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && install_name_tool -id ${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i'
UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib'
CLEAN_LIB=''
;;
@@ -6106,8 +5324,6 @@ pkgconfigdir=$with_pkgconfigdir
-CFLAGS="$CFLAGS -Wno-deprecated-declarations"
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
if ${ac_cv_c_bigendian+:} false; then :
@@ -6330,22 +5546,6 @@ $as_echo "$ac_cv_c_bigendian" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Microsoft Windows" >&5
-$as_echo_n "checking for Microsoft Windows... " >&6; }
-case "$target" in
- *mingw*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- HAVE_MSWINDOWS="yes"
- ;;
- *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- HAVE_MSWINDOWS="no"
- ;;
-esac
-
-
if test "x$HAVE_MSWINDOWS" = "xyes" ; then
EXPORT="__declspec(dllexport)"
elif test "x$GCC" = "xyes" ; then
@@ -6361,62 +5561,19 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
-for ac_header in execinfo.h regex.h rxposix.h rx/rxposix.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-for ac_func in sigwait backtrace
+for ac_func in sigwait
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ ac_fn_c_check_func "$LINENO" "sigwait" "ac_cv_func_sigwait"
+if test "x$ac_cv_func_sigwait" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_SIGWAIT 1
_ACEOF
fi
done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cexpf" >&5
-$as_echo_n "checking for cexpf... " >&6; }
-OLD_LIBS="$LIBS"
-LIBS="$LIBS -lm"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <complex.h>
- #include <stdio.h>
-int
-main ()
-{
-printf ("%f", crealf (cexpf (1)))
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAVE_CEXPF 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS="$OLD_LIBS"
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc/self/exe" >&5
$as_echo_n "checking for /proc/self/exe... " >&6; }
if test -e "/proc/self/exe" ; then
@@ -6430,506 +5587,6 @@ else
$as_echo "no" >&6; }
fi
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
- done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in mkdir gmkdir; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
- 'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
- break 3;;
- esac
- done
- done
- done
-IFS=$as_save_IFS
-
-fi
-
- test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
- MKDIR_P="$ac_cv_path_mkdir -p"
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for MKDIR_P within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- MKDIR_P="$ac_install_sh -d"
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
- for ac_i in 1 2 3 4 5 6 7; do
- ac_script="$ac_script$as_nl$ac_script"
- done
- echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
- { ac_script=; unset ac_script;}
- if test -z "$SED"; then
- ac_path_SED_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
- # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
- ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
- "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_SED_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_SED="$ac_path_SED"
- ac_path_SED_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_SED_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_SED"; then
- as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
- fi
-else
- ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
- rm -f conftest.sed
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
-$as_echo_n "checking whether NLS is requested... " >&6; }
- # Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
- enableval=$enable_nls; USE_NLS=$enableval
-else
- USE_NLS=yes
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
-
-
-
-
- GETTEXT_MACRO_VERSION=0.18
-
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
- # contains only /bin. Note that ksh looks also at the FPATH variable,
- # so we have to set that as well for the test.
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- || PATH_SEPARATOR=';'
- }
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$MSGFMT" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
- ;;
-esac
-fi
-MSGFMT="$ac_cv_path_MSGFMT"
-if test "$MSGFMT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GMSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $GMSGFMT in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
- ;;
-esac
-fi
-GMSGFMT=$ac_cv_path_GMSGFMT
-if test -n "$GMSGFMT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
-$as_echo "$GMSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
- case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
- *) MSGFMT_015=$MSGFMT ;;
- esac
-
- case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
- *) GMSGFMT_015=$GMSGFMT ;;
- esac
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
- # contains only /bin. Note that ksh looks also at the FPATH variable,
- # so we have to set that as well for the test.
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- || PATH_SEPARATOR=';'
- }
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XGETTEXT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$XGETTEXT" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
- ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
-$as_echo "$XGETTEXT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- rm -f messages.po
-
- case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
- *) XGETTEXT_015=$XGETTEXT ;;
- esac
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
- # contains only /bin. Note that ksh looks also at the FPATH variable,
- # so we have to set that as well for the test.
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- || PATH_SEPARATOR=';'
- }
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "msgmerge", so it can be a program name with args.
-set dummy msgmerge; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGMERGE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$MSGMERGE" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
- ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
- ;;
-esac
-fi
-MSGMERGE="$ac_cv_path_MSGMERGE"
-if test "$MSGMERGE" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
-$as_echo "$MSGMERGE" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$localedir" || localedir='${datadir}/locale'
-
-
- test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
-
-
- ac_config_commands="$ac_config_commands po-directories"
-
if test "X$prefix" = "XNONE"; then
@@ -7634,6 +6291,842 @@ fi
+ am_save_CPPFLAGS="$CPPFLAGS"
+
+ for element in $INCICONV; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if ${am_cv_func_iconv+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdlib.h>
+#include <iconv.h>
+
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdlib.h>
+#include <iconv.h>
+
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ if test "$cross_compiling" = yes; then :
+
+ case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+ int result = 0;
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 1;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\263";
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_ascii_to_88591);
+ }
+ }
+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ const char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+ result |= 4;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ result |= 8;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#endif
+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+ provided. */
+ if (/* Try standardized names. */
+ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+ /* Try IRIX, OSF/1 names. */
+ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+ /* Try AIX names. */
+ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+ /* Try HP-UX names. */
+ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+ result |= 16;
+ return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ am_cv_func_iconv_works=yes
+else
+ am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+
+
+
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+ if ${am_cv_proto_iconv+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ am_cv_proto_iconv_arg1=""
+else
+ am_cv_proto_iconv_arg1="const"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+ am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ $am_cv_proto_iconv" >&5
+$as_echo "
+ $am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+
+ fi
+
+LIBS="$LIBS $LIBICONV"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+ # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+ enableval=$enable_nls; USE_NLS=$enableval
+else
+ USE_NLS=yes
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+ GETTEXT_MACRO_VERSION=0.18
+
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGFMT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGFMT" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+ ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GMSGFMT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XGETTEXT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$XGETTEXT" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ rm -f messages.po
+
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGMERGE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGMERGE" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
+ ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+ ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$localedir" || localedir='${datadir}/locale'
+
+
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+
+
+ ac_config_commands="$ac_config_commands po-directories"
+
+
+
+
+
+
+
@@ -8733,113 +8226,16 @@ if test "x$HAVE_MSWINDOWS" = "xyes" && test "x$use_text_console" = "xno" ; then
LDFLAGS="$LDFLAGS -Wl,-subsystem,windows"
fi
-### ---------------------------------------------------------------------------
-# Extract the first word of "audacious", so it can be a program name with args.
-set dummy audacious; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_AUDACIOUS_PATH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $AUDACIOUS_PATH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_AUDACIOUS_PATH="$AUDACIOUS_PATH" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_AUDACIOUS_PATH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_AUDACIOUS_PATH" && ac_cv_path_AUDACIOUS_PATH="no"
- ;;
-esac
-fi
-AUDACIOUS_PATH=$ac_cv_path_AUDACIOUS_PATH
-if test -n "$AUDACIOUS_PATH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUDACIOUS_PATH" >&5
-$as_echo "$AUDACIOUS_PATH" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
- # Check whether --enable-user-plugin-dir was given.
-if test "${enable_user_plugin_dir+set}" = set; then :
- enableval=$enable_user_plugin_dir;
-else
- enable_user_plugin_dir=yes
-fi
- if test "x${enable_user_plugin_dir}" = "xyes"; then
- :
- fi
-
-
-if test "x$enable_user_plugin_dir" = "xno"; then
-
-$as_echo "#define DISABLE_USER_PLUGIN_DIR 1" >>confdefs.h
-
-fi
-
- # Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then :
- enableval=$enable_rpath;
-else
- enable_rpath=yes
-fi
-
- if test "x${enable_rpath}" = "xyes"; then
- :
- fi
-
-
-if test "x$enable_rpath" = "xyes"; then
- LDFLAGS="$LDFLAGS $LDFLAGS_RPATH"
-fi
-
-### ---------------------------------------------------------------------------
-
- # Check whether --enable-thunar was given.
-if test "${enable_thunar+set}" = set; then :
- enableval=$enable_thunar;
-else
- enable_thunar=no
-fi
-
- if test "x${enable_thunar}" = "xyes"; then
- :
- fi
-
-if test "x${enable_thunar}" = "xyes" ; then
- USE_THUNAR="yes"
-else
- USE_THUNAR="no"
-fi
-
-
-### ---------------------------------------------------------------------------
- # Check whether --enable-chardet was given.
+# Check whether --enable-chardet was given.
if test "${enable_chardet+set}" = set; then :
- enableval=$enable_chardet;
+ enableval=$enable_chardet; USE_CHARDET=$enableval
else
- enable_chardet=yes
+ USE_CHARDET=auto
fi
- if test "x${enable_chardet}" = "xyes"; then
+if test $USE_CHARDET != no ; then
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBGUESS" >&5
@@ -8849,12 +8245,12 @@ if test -n "$LIBGUESS_CFLAGS"; then
pkg_cv_LIBGUESS_CFLAGS="$LIBGUESS_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libguess >= 1.1\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libguess >= 1.1") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libguess >= 1.2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libguess >= 1.2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_LIBGUESS_CFLAGS=`$PKG_CONFIG --cflags "libguess >= 1.1" 2>/dev/null`
+ pkg_cv_LIBGUESS_CFLAGS=`$PKG_CONFIG --cflags "libguess >= 1.2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -8866,12 +8262,12 @@ if test -n "$LIBGUESS_LIBS"; then
pkg_cv_LIBGUESS_LIBS="$LIBGUESS_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libguess >= 1.1\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libguess >= 1.1") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libguess >= 1.2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libguess >= 1.2") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_LIBGUESS_LIBS=`$PKG_CONFIG --libs "libguess >= 1.1" 2>/dev/null`
+ pkg_cv_LIBGUESS_LIBS=`$PKG_CONFIG --libs "libguess >= 1.2" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -8892,185 +8288,67 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- LIBGUESS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libguess >= 1.1" 2>&1`
+ LIBGUESS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libguess >= 1.2" 2>&1`
else
- LIBGUESS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libguess >= 1.1" 2>&1`
+ LIBGUESS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libguess >= 1.2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$LIBGUESS_PKG_ERRORS" >&5
- enable_chardet=no
+ have_libguess=no
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- enable_chardet=no
+ have_libguess=no
else
LIBGUESS_CFLAGS=$pkg_cv_LIBGUESS_CFLAGS
LIBGUESS_LIBS=$pkg_cv_LIBGUESS_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- enable_chardet=yes
+ have_libguess=yes
fi
-
- if test "x$enable_chardet" = "xyes"; then
+ if test $have_libguess = yes ; then
+ USE_CHARDET=yes
$as_echo "#define USE_CHARDET 1" >>confdefs.h
+ elif test $USE_CHARDET = yes ; then
+ as_fn_error $? "Character set detection could not be enabled; check config.log" "$LINENO" 5
+ else
+ USE_CHARDET=no
fi
-
- fi
-
-if test "x${enable_chardet}" = "xyes" ; then
- USE_CHARDET="yes"
-else
- USE_CHARDET="no"
fi
-### ---------------------------------------------------------------------------
- # Check whether --enable-dbus was given.
-if test "${enable_dbus+set}" = set; then :
- enableval=$enable_dbus;
-else
- enable_dbus=yes
-fi
-
- if test "x${enable_dbus}" = "xyes"; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
-$as_echo_n "checking for DBUS... " >&6; }
-
-if test -n "$DBUS_CFLAGS"; then
- pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$DBUS_LIBS"; then
- pkg_cv_DBUS_LIBS="$DBUS_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
+# Check whether --enable-dbus was given.
+if test "${enable_dbus+set}" = set; then :
+ enableval=$enable_dbus; USE_DBUS=$enableval
else
- _pkg_short_errors_supported=no
+ USE_DBUS=yes
fi
- if test $_pkg_short_errors_supported = yes; then
- DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>&1`
- else
- DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$DBUS_PKG_ERRORS" >&5
- enable_dbus=no
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- enable_dbus=no
-else
- DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS
- DBUS_LIBS=$pkg_cv_DBUS_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- enable_dbus=yes
-fi
- # Extract the first word of "dbus-binding-tool", so it can be a program name with args.
-set dummy dbus-binding-tool; ac_word=$2
+if test $USE_DBUS = yes ; then
+ # Extract the first word of "gdbus-codegen", so it can be a program name with args.
+set dummy gdbus-codegen; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_DBUS_BINDING_TOOL+:} false; then :
+if ${ac_cv_prog_have_dbus+:} false; then :
$as_echo_n "(cached) " >&6
else
- case $DBUS_BINDING_TOOL in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_DBUS_BINDING_TOOL="$DBUS_BINDING_TOOL" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_DBUS_BINDING_TOOL="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_DBUS_BINDING_TOOL" && ac_cv_path_DBUS_BINDING_TOOL="no"
- ;;
-esac
-fi
-DBUS_BINDING_TOOL=$ac_cv_path_DBUS_BINDING_TOOL
-if test -n "$DBUS_BINDING_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBUS_BINDING_TOOL" >&5
-$as_echo "$DBUS_BINDING_TOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- # Extract the first word of "glib-genmarshal", so it can be a program name with args.
-set dummy glib-genmarshal; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GLIB_GENMARSHAL+:} false; then :
- $as_echo_n "(cached) " >&6
+ if test -n "$have_dbus"; then
+ ac_cv_prog_have_dbus="$have_dbus" # Let the user override the test.
else
- case $GLIB_GENMARSHAL in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GLIB_GENMARSHAL="$as_dir/$ac_word$ac_exec_ext"
+ ac_cv_prog_have_dbus="yes"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -9078,485 +8356,63 @@ done
done
IFS=$as_save_IFS
- test -z "$ac_cv_path_GLIB_GENMARSHAL" && ac_cv_path_GLIB_GENMARSHAL="no"
- ;;
-esac
+ test -z "$ac_cv_prog_have_dbus" && ac_cv_prog_have_dbus="no"
+fi
fi
-GLIB_GENMARSHAL=$ac_cv_path_GLIB_GENMARSHAL
-if test -n "$GLIB_GENMARSHAL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_GENMARSHAL" >&5
-$as_echo "$GLIB_GENMARSHAL" >&6; }
+have_dbus=$ac_cv_prog_have_dbus
+if test -n "$have_dbus"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_dbus" >&5
+$as_echo "$have_dbus" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
- if test "x$DBUS_BINDING_TOOL" = "xno" || test "x$GLIB_GENMARSHAL" = "xno" || test "x$enable_dbus" = "xno" ; then
- enable_dbus="no"
- else
+ if test $have_dbus = no ; then
+ as_fn_error $? "D-Bus support unavailable; use --disable-dbus for a crippled build" "$LINENO" 5
+ fi
$as_echo "#define USE_DBUS 1" >>confdefs.h
- LIBAUDCLIENT_LDFLAGS="-laudclient"
-
-
-
-
- fi
-
- fi
-
-if test "x${enable_dbus}" = "xyes" ; then
- USE_DBUS="yes"
-else
- USE_DBUS="no"
-fi
-
-
-
-### ---------------------------------------------------------------------------
-REGEX_LIBS=
-REGEX_CFLAGS=
-
-regex_selected=
-
-
-# Check whether --with-regexlib was given.
-if test "${with_regexlib+set}" = set; then :
- withval=$with_regexlib; regex_selected=$withval
-else
- regex_selected=gnu
-
-fi
-
-
-case $regex_selected in
- pcre)
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBPCRE" >&5
-$as_echo_n "checking for LIBPCRE... " >&6; }
-
-if test -n "$LIBPCRE_CFLAGS"; then
- pkg_cv_LIBPCRE_CFLAGS="$LIBPCRE_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre >= 6.7\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libpcre >= 6.7") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_LIBPCRE_CFLAGS=`$PKG_CONFIG --cflags "libpcre >= 6.7" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$LIBPCRE_LIBS"; then
- pkg_cv_LIBPCRE_LIBS="$LIBPCRE_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre >= 6.7\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libpcre >= 6.7") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_LIBPCRE_LIBS=`$PKG_CONFIG --libs "libpcre >= 6.7" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- LIBPCRE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpcre >= 6.7" 2>&1`
- else
- LIBPCRE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpcre >= 6.7" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$LIBPCRE_PKG_ERRORS" >&5
-
-
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libpcre") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "libpcre" 2>/dev/null`
- as_fn_error $? "
-PCRE version $cv_pkg_version was found, but libpcre >= 6.7 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find PCRE! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
-
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libpcre") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
-
- cv_pkg_version=`$PKG_CONFIG --modversion "libpcre" 2>/dev/null`
- as_fn_error $? "
-PCRE version $cv_pkg_version was found, but libpcre >= 6.7 is required.
-" "$LINENO" 5
-
-else
-
- as_fn_error $? "
-Cannot find PCRE! If you are using binary packages based system, check that you
-have the corresponding -dev/devel packages installed.
-" "$LINENO" 5
-
-fi
-
-else
- LIBPCRE_CFLAGS=$pkg_cv_LIBPCRE_CFLAGS
- LIBPCRE_LIBS=$pkg_cv_LIBPCRE_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-
fi
-$as_echo "#define USE_REGEX_PCRE 1" >>confdefs.h
- REGEX_LIBS="-lpcreposix $LIBPCRE_LIBS"
- REGEX_CFLAGS="$LIBPCRE_CFLAGS"
- ;;
- oniguruma)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for onig_new in -lonig" >&5
-$as_echo_n "checking for onig_new in -lonig... " >&6; }
-if ${ac_cv_lib_onig_onig_new+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lonig $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char onig_new ();
-int
-main ()
-{
-return onig_new ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_onig_onig_new=yes
+# Check whether --enable-valgrind was given.
+if test "${enable_valgrind+set}" = set; then :
+ enableval=$enable_valgrind; enable_valgrind=$enableval
else
- ac_cv_lib_onig_onig_new=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+ enable_valgrind=no
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_onig_onig_new" >&5
-$as_echo "$ac_cv_lib_onig_onig_new" >&6; }
-if test "x$ac_cv_lib_onig_onig_new" = xyes; then :
-
-$as_echo "#define USE_REGEX_ONIGURUMA 1" >>confdefs.h
- REGEX_LIBS="-lonig"
-
-else
-
- as_fn_error $? "Cannot find Oniguruma regex library." "$LINENO" 5
-
-fi
-
- ;;
- *)
-
-$as_echo "#define USE_REGEX_GNU 1" >>confdefs.h
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lc" >&5
-$as_echo_n "checking for regcomp in -lc... " >&6; }
-if ${ac_cv_lib_c_regcomp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+if test $enable_valgrind = yes ; then
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char regcomp ();
-int
-main ()
-{
-return regcomp ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_c_regcomp=yes
-else
- ac_cv_lib_c_regcomp=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_regcomp" >&5
-$as_echo "$ac_cv_lib_c_regcomp" >&6; }
-if test "x$ac_cv_lib_c_regcomp" = xyes; then :
- REGEX_LIBS="-lc"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lregex" >&5
-$as_echo_n "checking for regcomp in -lregex... " >&6; }
-if ${ac_cv_lib_regex_regcomp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lregex $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char regcomp ();
-int
-main ()
-{
-return regcomp ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_regex_regcomp=yes
-else
- ac_cv_lib_regex_regcomp=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_regex_regcomp" >&5
-$as_echo "$ac_cv_lib_regex_regcomp" >&6; }
-if test "x$ac_cv_lib_regex_regcomp" = xyes; then :
- REGEX_LIBS="-lregex"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcomp in -lrx" >&5
-$as_echo_n "checking for regcomp in -lrx... " >&6; }
-if ${ac_cv_lib_rx_regcomp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lrx $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+$as_echo "#define VALGRIND_FRIENDLY 1" >>confdefs.h
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char regcomp ();
-int
-main ()
-{
-return regcomp ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_rx_regcomp=yes
+ VALGRIND_FRIENDLY=1
else
- ac_cv_lib_rx_regcomp=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rx_regcomp" >&5
-$as_echo "$ac_cv_lib_rx_regcomp" >&6; }
-if test "x$ac_cv_lib_rx_regcomp" = xyes; then :
- REGEX_LIBS="-lrx"
-else
- as_fn_error $? "Cannot find GNU regex library." "$LINENO" 5
-
+ VALGRIND_FRIENDLY=0
fi
-fi
-fi
-
- ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking regex library type" >&5
-$as_echo_n "checking regex library type... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $regex_selected" >&5
-$as_echo "$regex_selected" >&6; }
-
-
-
-
-### ---------------------------------------------------------------------------
plugindir="$libdir/audacious"
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- TRANSPORT_PLUGIN_DIR="Plugins"
-else
- pluginsubs="\\\"Transport\\\""
- TRANSPORT_PLUGIN_DIR="Transport"
-fi
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- INPUT_PLUGIN_DIR="Plugins"
-else
- pluginsubs="$pluginsubs,\\\"Input\\\""
- INPUT_PLUGIN_DIR="Input"
-fi
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- OUTPUT_PLUGIN_DIR="Plugins"
-else
- pluginsubs="$pluginsubs,\\\"Output\\\""
- OUTPUT_PLUGIN_DIR="Output"
-fi
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- EFFECT_PLUGIN_DIR="Plugins"
-else
- pluginsubs="$pluginsubs,\\\"Effect\\\""
- EFFECT_PLUGIN_DIR="Effect"
-fi
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- GENERAL_PLUGIN_DIR="Plugins"
-else
- pluginsubs="$pluginsubs,\\\"General\\\""
- GENERAL_PLUGIN_DIR="General"
-fi
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- VISUALIZATION_PLUGIN_DIR="Plugins"
-else
- pluginsubs="$pluginsubs,\\\"Visualization\\\""
- VISUALIZATION_PLUGIN_DIR="Visualization"
-fi
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- CONTAINER_PLUGIN_DIR="Plugins"
-else
- pluginsubs="$pluginsubs,\\\"Container\\\""
- CONTAINER_PLUGIN_DIR="Container"
-fi
-
-if test "x$enable_one_plugin_dir" = "xyes"; then
- pluginsubs="\\\"Plugins\\\""
- DISCOVERY_PLUGIN_DIR="Plugins"
-else
- pluginsubs="$pluginsubs,\\\"Discovery\\\""
- DISCOVERY_PLUGIN_DIR="Discovery"
-fi
-
-
-
-### ---------------------------------------------------------------------------
-if test "x$prefix" = "xNONE"; then
- prefix="${ac_default_prefix}"
-fi
-
-if test -z "$datadir"; then
- datadir="${prefix}/share"
-fi
-
localedir="$datarootdir/locale"
-AUDACIOUS_DEFINES="-DPLUGINSUBS=$pluginsubs"
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_BINDIR=\\\"$bindir\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_DATADIR=\\\"$datadir/audacious\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_PLUGINDIR=\\\"$plugindir\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_LOCALEDIR=\\\"$localedir\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_DESKTOPFILE=\\\"${datarootdir}/applications/audacious.desktop\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_ICONFILE=\\\"${datarootdir}/pixmaps/audacious.png\\\""
-
-
-
CPPFLAGS="$CPPFLAGS -include config.h"
### ---------------------------------------------------------------------------
-ac_config_files="$ac_config_files audacious.pc audclient.pc buildsys.mk extra.mk man/audtool.1 man/audacious.1 src/libaudcore/audio.h"
+ac_config_files="$ac_config_files audacious.pc buildsys.mk extra.mk man/audtool.1 man/audacious.1 src/libaudcore/audio.h src/libaudcore/tinylock.h"
-
- ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
- for i in $(find . -name Makefile); do
- DEPSFILE="$(dirname $i)/.deps"
- test -f "$DEPSFILE" && rm "$DEPSFILE"
- touch -t 0001010000 "$DEPSFILE"
- done
-
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -9666,16 +8522,130 @@ LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+
+ CC_DEPENDS=$GCC
+
+ CXX_DEPENDS=$GXX
+
+ OBJC_DEPENDS=$GOBJC
+
+ OBJCXX_DEPENDS=$GOBJCXX
+
+
+ # Extract the first word of "tput", so it can be a program name with args.
+set dummy tput; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TPUT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TPUT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TPUT="$TPUT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TPUT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
fi
-if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
- as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+TPUT=$ac_cv_path_TPUT
+if test -n "$TPUT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TPUT" >&5
+$as_echo "$TPUT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
+
+ if test x"$TPUT" != x""; then :
+
+ if x=$($TPUT el 2>/dev/null); then
+ TERM_EL="$x"
+
+ else
+ TERM_EL="$($TPUT ce 2>/dev/null)"
+
+ fi
+
+ if x=$($TPUT sgr0 2>/dev/null); then
+ TERM_SGR0="$x"
+
+ else
+ TERM_SGR0="$($TPUT me 2>/dev/null)"
+
+ fi
+
+ if x=$($TPUT bold 2>/dev/null); then
+ TERM_BOLD="$x"
+
+ else
+ TERM_BOLD="$($TPUT md 2>/dev/null)"
+
+ fi
+
+ if x=$($TPUT setaf 1 2>/dev/null); then
+ TERM_SETAF1="$x"
+
+ TERM_SETAF2="$($TPUT setaf 2 2>/dev/null)"
+
+ TERM_SETAF3="$($TPUT setaf 3 2>/dev/null)"
+
+ TERM_SETAF4="$($TPUT setaf 4 2>/dev/null)"
+
+ TERM_SETAF6="$($TPUT setaf 6 2>/dev/null)"
+
+ else
+ TERM_SETAF1="$($TPUT AF 1 2>/dev/null)"
+
+ TERM_SETAF2="$($TPUT AF 2 2>/dev/null)"
+
+ TERM_SETAF3="$($TPUT AF 3 2>/dev/null)"
+
+ TERM_SETAF4="$($TPUT AF 4 2>/dev/null)"
+
+ TERM_SETAF6="$($TPUT AF 6 2>/dev/null)"
+
+ fi
+
+else
+
+ TERM_EL='\033\133K'
+
+ TERM_SGR0='\033\133m'
+
+ TERM_BOLD='\033\1331m'
+
+ TERM_SETAF1='\033\13331m'
+
+ TERM_SETAF2='\033\13332m'
+
+ TERM_SETAF3='\033\13333m'
+
+ TERM_SETAF4='\033\13334m'
+
+ TERM_SETAF6='\033\13336m'
+
+
+fi
+
+
+
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
@@ -10072,7 +9042,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by audacious $as_me 3.4.3, which was
+This file was extended by audacious $as_me 3.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -10138,7 +9108,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-audacious config.status 3.4.3
+audacious config.status 3.5
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -10256,7 +9226,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
#
# INIT-COMMANDS
#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
# Capture the value of obsolete ALL_LINGUAS because we need it to compute
# POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
# from automake < 1.5.
@@ -10274,15 +9243,14 @@ for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
"audacious.pc") CONFIG_FILES="$CONFIG_FILES audacious.pc" ;;
- "audclient.pc") CONFIG_FILES="$CONFIG_FILES audclient.pc" ;;
"buildsys.mk") CONFIG_FILES="$CONFIG_FILES buildsys.mk" ;;
"extra.mk") CONFIG_FILES="$CONFIG_FILES extra.mk" ;;
"man/audtool.1") CONFIG_FILES="$CONFIG_FILES man/audtool.1" ;;
"man/audacious.1") CONFIG_FILES="$CONFIG_FILES man/audacious.1" ;;
"src/libaudcore/audio.h") CONFIG_FILES="$CONFIG_FILES src/libaudcore/audio.h" ;;
+ "src/libaudcore/tinylock.h") CONFIG_FILES="$CONFIG_FILES src/libaudcore/tinylock.h" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
@@ -10844,99 +9812,6 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
case $ac_file$ac_mode in
- "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Older Autoconf quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named 'Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running 'make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "$am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir=$dirpart/$fdir; as_fn_mkdir_p
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
- ;;
"po-directories":C)
for ac_file in $CONFIG_FILES; do
# Support "outfile[:infile[:infile...]]"
@@ -11064,6 +9939,14 @@ test $ac_write_fail = 0 ||
as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+ ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
+ for i in $(find . -name Makefile); do
+ DEPSFILE="$(dirname $i)/.deps"
+ test -f "$DEPSFILE" && rm "$DEPSFILE"
+ touch -t 0001010000 "$DEPSFILE"
+ done
+
+
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
# Unfortunately, on DOS this fails, as config.log is still kept open
@@ -11095,35 +9978,8 @@ echo ""
echo "Configuration:"
echo ""
echo " Install path: $prefix"
-
-if test "x$AUDACIOUS_PATH" != "xno"; then
-echo " Current Audacious executable: $AUDACIOUS_PATH"
-fi
-
-echo " Allow user plugin dir: $enable_user_plugin_dir"
echo ""
-echo " Automatic character code detection: $enable_chardet"
-echo " D-Bus support: $enable_dbus"
-echo " Thunar support: $enable_thunar"
+echo " Automatic character code detection: $USE_CHARDET"
+echo " D-Bus support: $USE_DBUS"
+echo " Valgrind analysis support: $enable_valgrind"
echo ""
-
-if test "x$AUDACIOUS_PATH" != "xno" && test "x$prefix/bin/audacious" != "x$AUDACIOUS_PATH"; then
- audlocation=`dirname $AUDACIOUS_PATH`
- echo "**"
- echo "** NOTICE! Configure has discovered that you already have Audacious installed"
- echo "** and it does not match with the given --prefix. You have Audacious installed"
- echo "** in ${audlocation} and you chose ${prefix}/bin."
- echo "**"
- echo "** If you don't want two copies of Audacious installed, rerun configure with"
- echo "** the --prefix option set to the location of the old Audacious, or uninstall"
- echo "** the old Audacious."
- echo "**"
-fi
-
-if test "x$enable_dbus" != "xyes"; then
- echo "**"
- echo "** WARNING! DBUS support is disabled. This means that various features"
- echo "** the user might expect (such as remotely adding files to session via"
- echo "** commandline) will not work!"
- echo "**"
-fi
diff --git a/configure.ac b/configure.ac
index 3dc5cc1..209e4e2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,31 +5,23 @@ dnl ***
dnl Initialize
dnl ==========
AC_PREREQ([2.59])
-AC_INIT([audacious], [3.4.3])
+AC_INIT([audacious], [3.5])
AC_COPYRIGHT([(C) 2005-2014 Audacious Team])
-AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])
-AC_SUBST([VERSION], [AC_PACKAGE_VERSION])
-AC_DEFINE_UNQUOTED([PACKAGE], "$PACKAGE", [Name of package])
-AC_DEFINE_UNQUOTED([VERSION], "$VERSION", [Version number of package])
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE_NAME", [Name of package])
+AC_DEFINE_UNQUOTED(VERSION, "$PACKAGE_VERSION", [Version number of package])
-AC_CANONICAL_HOST
-AC_CANONICAL_TARGET
+AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AUD_COMMON_PROGS
-BUILDSYS_INIT
BUILDSYS_SHARED_LIB
AC_DEFINE_UNQUOTED(PLUGIN_SUFFIX, "$PLUGIN_SUFFIX", [Suffix for plugins])
m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig))
-dnl Disable deprecation warnings for stable branch
-dnl ==============================================
-CFLAGS="$CFLAGS -Wno-deprecated-declarations"
-
dnl Byte order
dnl ==========
AC_C_BIGENDIAN([BIGENDIAN=1], [BIGENDIAN=0],
@@ -37,21 +29,6 @@ AC_C_BIGENDIAN([BIGENDIAN=1], [BIGENDIAN=0],
[AC_MSG_ERROR([Universal builds are not supported, sorry])])
AC_SUBST([BIGENDIAN])
-dnl Platform
-dnl ========
-AC_MSG_CHECKING([for Microsoft Windows])
-case "$target" in
- *mingw*)
- AC_MSG_RESULT([yes])
- HAVE_MSWINDOWS="yes"
- ;;
- *)
- AC_MSG_RESULT([no])
- HAVE_MSWINDOWS="no"
- ;;
-esac
-AC_SUBST([HAVE_MSWINDOWS])
-
dnl Prevent symbol collisions
dnl =========================
if test "x$HAVE_MSWINDOWS" = "xyes" ; then
@@ -67,19 +44,8 @@ AC_DEFINE_UNQUOTED([EXPORT], [$EXPORT], [Define to compiler syntax for public sy
dnl Headers and functions
dnl ===============================
-AC_CHECK_HEADERS([execinfo.h regex.h rxposix.h rx/rxposix.h])
-AC_CHECK_FUNCS([sigwait backtrace])
-
-AC_MSG_CHECKING([for cexpf])
-OLD_LIBS="$LIBS"
-LIBS="$LIBS -lm"
-AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <complex.h>
- #include <stdio.h>],
- [printf ("%f", crealf (cexpf (1)))])],
- [AC_MSG_RESULT(yes)
- AC_DEFINE([HAVE_CEXPF], [1], [Define if cexpf is present])],
- [AC_MSG_RESULT(no)])
-LIBS="$OLD_LIBS"
+
+AC_CHECK_FUNCS([sigwait])
AC_MSG_CHECKING([for /proc/self/exe])
if test -e "/proc/self/exe" ; then
@@ -89,6 +55,12 @@ else
AC_MSG_RESULT(no)
fi
+dnl iconv
+dnl =====
+
+AM_ICONV
+LIBS="$LIBS $LIBICONV"
+
dnl gettext
dnl =======
AM_GNU_GETTEXT([external])
@@ -117,160 +89,68 @@ if test "x$HAVE_MSWINDOWS" = "xyes" && test "x$use_text_console" = "xno" ; then
LDFLAGS="$LDFLAGS -Wl,-subsystem,windows"
fi
-### ---------------------------------------------------------------------------
-dnl Path settings
-dnl =============
-AC_PATH_PROG([AUDACIOUS_PATH], [audacious], [no])
-
-AUD_ARG_ENABLE([user-plugin-dir], [yes],
-[per-user plugin dir])
-
-if test "x$enable_user_plugin_dir" = "xno"; then
- AC_DEFINE([DISABLE_USER_PLUGIN_DIR], 1, [Define to disable per user plugin directory])
-fi
-
-AUD_ARG_ENABLE([rpath], [yes], [disable rpath])
-
-if test "x$enable_rpath" = "xyes"; then
- LDFLAGS="$LDFLAGS $LDFLAGS_RPATH"
-fi
-
-### ---------------------------------------------------------------------------
-dnl Thunar support
-dnl ==============
+dnl Character set detection
+dnl =======================
-AUD_ARG_ENABLE([thunar], [no], [thunar (Xfce) support files])
-AUD_CONDITIONAL([USE_THUNAR], [enable_thunar])
+AC_ARG_ENABLE(chardet,
+ AS_HELP_STRING(--enable-chardet, [Disable character set detection (default=auto)]),
+ USE_CHARDET=$enableval, USE_CHARDET=auto)
-### ---------------------------------------------------------------------------
-dnl Chardet support
-dnl ===============
-AUD_ARG_ENABLE([chardet], [yes],
-[charset detection support],
-[
- PKG_CHECK_MODULES([LIBGUESS], [libguess >= 1.1], [enable_chardet=yes], [enable_chardet=no])
-
- if test "x$enable_chardet" = "xyes"; then
- AC_DEFINE([USE_CHARDET], 1, [Define if character set detection enabled])
+if test $USE_CHARDET != no ; then
+ PKG_CHECK_MODULES(LIBGUESS, libguess >= 1.2, have_libguess=yes, have_libguess=no)
+ if test $have_libguess = yes ; then
+ USE_CHARDET=yes
+ AC_DEFINE(USE_CHARDET, 1, [Define if character set detection enabled])
+ elif test $USE_CHARDET = yes ; then
+ AC_MSG_ERROR([Character set detection could not be enabled; check config.log])
+ else
+ USE_CHARDET=no
fi
-])
-AUD_CONDITIONAL([USE_CHARDET], [enable_chardet])
+fi
+AC_SUBST(USE_CHARDET)
-### ---------------------------------------------------------------------------
dnl D-Bus support
dnl =============
-AUD_ARG_ENABLE([dbus], [yes],
-[D-Bus support],
-[
- PKG_CHECK_MODULES([DBUS], [dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gthread-2.0],
- [enable_dbus=yes],
- [enable_dbus=no])
-
- AC_PATH_PROG([DBUS_BINDING_TOOL], [dbus-binding-tool], [no])
- AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal], [no])
- if test "x$DBUS_BINDING_TOOL" = "xno" || test "x$GLIB_GENMARSHAL" = "xno" || test "x$enable_dbus" = "xno" ; then
- enable_dbus="no"
- else
- AC_DEFINE([USE_DBUS], 1, [Define if D-Bus support enabled])
- LIBAUDCLIENT_LDFLAGS="-laudclient"
- AC_SUBST([DBUS_CFLAGS])
- AC_SUBST([DBUS_LIBS])
- AC_SUBST([DBUS_BINDING_TOOL])
- AC_SUBST([LIBAUDCLIENT_LDFLAGS])
- fi
-])
-AUD_CONDITIONAL([USE_DBUS], [enable_dbus])
-
-### ---------------------------------------------------------------------------
-dnl regex support (gnu/oniguruma/pcre)
-dnl ==================================
-REGEX_LIBS=
-REGEX_CFLAGS=
-
-regex_selected=
+AC_ARG_ENABLE(dbus,
+ AS_HELP_STRING(--disable-dbus, [Disable D-Bus support (default=enabled)]),
+ USE_DBUS=$enableval, USE_DBUS=yes)
-AC_ARG_WITH([regexlib],
-[AS_HELP_STRING([--with-regexlib[=gnu/oniguruma/pcre]],[Use the chosen regex library (def: gnu)])],
-[regex_selected=$withval],
-[regex_selected=gnu]
-)
+if test $USE_DBUS = yes ; then
+ AC_CHECK_PROG(have_dbus, gdbus-codegen, yes, no)
+ if test $have_dbus = no ; then
+ AC_MSG_ERROR([D-Bus support unavailable; use --disable-dbus for a crippled build])
+ fi
+ AC_DEFINE(USE_DBUS, 1, [Define if D-Bus support enabled])
+fi
-case $regex_selected in
- pcre)
- AUD_CHECK_MODULE([LIBPCRE], [libpcre], [>= 6.7], [PCRE])
- AC_DEFINE([USE_REGEX_PCRE], 1, [If this macro is defined, use PCRE regex library.])
- REGEX_LIBS="-lpcreposix $LIBPCRE_LIBS"
- REGEX_CFLAGS="$LIBPCRE_CFLAGS"
- ;;
- oniguruma)
- AC_CHECK_LIB([onig], [onig_new],
- [
- AC_DEFINE([USE_REGEX_ONIGURUMA], 1, [If this macro is defined, use Oniguruma regex library.])
- REGEX_LIBS="-lonig"
- ],[
- AC_MSG_ERROR([Cannot find Oniguruma regex library.])
- ])
- ;;
- *)
- AC_DEFINE([USE_REGEX_GNU], 1, [If this macro is defined, use GNU regex library.])
-
- AC_CHECK_LIB(c, regcomp, REGEX_LIBS="-lc",
- [AC_CHECK_LIB(regex, regcomp, REGEX_LIBS="-lregex",
- [AC_CHECK_LIB(rx, regcomp, REGEX_LIBS="-lrx",
- AC_MSG_ERROR([Cannot find GNU regex library.])
- )]
- )]
- )
- ;;
-esac
-
-AC_MSG_CHECKING([regex library type])
-AC_MSG_RESULT($regex_selected)
-
-AC_SUBST([REGEX_LIBS])
-AC_SUBST([REGEX_CFLAGS])
+AC_SUBST(USE_DBUS)
-### ---------------------------------------------------------------------------
-dnl Define plugin directories
+dnl Valgrind analysis support
dnl =========================
-plugindir="$libdir/audacious"
-AC_SUBST([plugindir])
-AC_SUBST([pluginsubs])
-
-AUD_DEFINE_PLUGIN_DIR([Transport])
-AUD_DEFINE_PLUGIN_DIR([Input])
-AUD_DEFINE_PLUGIN_DIR([Output])
-AUD_DEFINE_PLUGIN_DIR([Effect])
-AUD_DEFINE_PLUGIN_DIR([General])
-AUD_DEFINE_PLUGIN_DIR([Visualization])
-AUD_DEFINE_PLUGIN_DIR([Container])
-AUD_DEFINE_PLUGIN_DIR([Discovery])
+AC_ARG_ENABLE(valgrind,
+ AS_HELP_STRING(--enable-valgrind, [Valgrind analysis support (default=disabled)]),
+ enable_valgrind=$enableval, enable_valgrind=no)
-### ---------------------------------------------------------------------------
-dnl XXX Work around some autoconf bugs.
-if test "x$prefix" = "xNONE"; then
- prefix="${ac_default_prefix}"
+if test $enable_valgrind = yes ; then
+ AC_DEFINE(VALGRIND_FRIENDLY, 1, [Define to allow Valgrind analysis])
+ VALGRIND_FRIENDLY=1
+else
+ VALGRIND_FRIENDLY=0
fi
-if test -z "$datadir"; then
- datadir="${prefix}/share"
-fi
+AC_SUBST([VALGRIND_FRIENDLY])
-localedir="$datarootdir/locale"
-AC_SUBST([localedir])
+dnl Paths
+dnl =====
-AUDACIOUS_DEFINES="-DPLUGINSUBS=$pluginsubs"
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_BINDIR=\\\"$bindir\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_DATADIR=\\\"$datadir/audacious\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_PLUGINDIR=\\\"$plugindir\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_LOCALEDIR=\\\"$localedir\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_DESKTOPFILE=\\\"${datarootdir}/applications/audacious.desktop\\\""
-AUDACIOUS_DEFINES="$AUDACIOUS_DEFINES -DHARDCODE_ICONFILE=\\\"${datarootdir}/pixmaps/audacious.png\\\""
-AC_SUBST([AUDACIOUS_DEFINES])
+plugindir="$libdir/audacious"
+AC_SUBST([plugindir])
+localedir="$datarootdir/locale"
+AC_SUBST([localedir])
dnl Reliably #include "config.h" (for large file support)
dnl =====================================================
@@ -282,15 +162,14 @@ dnl Output configuration files
dnl ==========================
AC_CONFIG_FILES([
audacious.pc
- audclient.pc
buildsys.mk
extra.mk
man/audtool.1
man/audacious.1
src/libaudcore/audio.h
+ src/libaudcore/tinylock.h
])
-BUILDSYS_TOUCH_DEPS
AC_OUTPUT
### ---------------------------------------------------------------------------
@@ -300,35 +179,8 @@ echo ""
echo "Configuration:"
echo ""
echo " Install path: $prefix"
-
-if test "x$AUDACIOUS_PATH" != "xno"; then
-echo " Current Audacious executable: $AUDACIOUS_PATH"
-fi
-
-echo " Allow user plugin dir: $enable_user_plugin_dir"
echo ""
-echo " Automatic character code detection: $enable_chardet"
-echo " D-Bus support: $enable_dbus"
-echo " Thunar support: $enable_thunar"
+echo " Automatic character code detection: $USE_CHARDET"
+echo " D-Bus support: $USE_DBUS"
+echo " Valgrind analysis support: $enable_valgrind"
echo ""
-
-if test "x$AUDACIOUS_PATH" != "xno" && test "x$prefix/bin/audacious" != "x$AUDACIOUS_PATH"; then
- audlocation=`dirname $AUDACIOUS_PATH`
- echo "**"
- echo "** NOTICE! Configure has discovered that you already have Audacious installed"
- echo "** and it does not match with the given --prefix. You have Audacious installed"
- echo "** in ${audlocation} and you chose ${prefix}/bin."
- echo "**"
- echo "** If you don't want two copies of Audacious installed, rerun configure with"
- echo "** the --prefix option set to the location of the old Audacious, or uninstall"
- echo "** the old Audacious."
- echo "**"
-fi
-
-if test "x$enable_dbus" != "xyes"; then
- echo "**"
- echo "** WARNING! DBUS support is disabled. This means that various features"
- echo "** the user might expect (such as remotely adding files to session via"
- echo "** commandline) will not work!"
- echo "**"
-fi
diff --git a/contrib/Makefile b/contrib/Makefile
deleted file mode 100644
index 3ed9a01..0000000
--- a/contrib/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-include ../buildsys.mk
-include ../extra.mk
-
-ifeq ($(USE_THUNAR),yes)
-
-install-extra:
- ${MKDIR_P} ${DESTDIR}${datarootdir}/Thunar/sendto
- ${INSTALL} -m 644 thunar-sendto-audacious-playlist.desktop "${DESTDIR}${datarootdir}/Thunar/sendto"
-
-uninstall-extra:
- if test -f "${DESTDIR}${datarootdir}/Thunar/sendto/thunar-sendto-audacious-playlist.desktop" ; then ${RM} "${DESTDIR}${datarootdir}/Thunar/sendto/thunar-sendto-audacious-playlist.desktop" ; fi
-
-endif
diff --git a/contrib/g15_audacious.py b/contrib/g15_audacious.py
deleted file mode 100644
index 96a6c25..0000000
--- a/contrib/g15_audacious.py
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/env python
-"""g15_audacious.py
-By: Stephan Sokolow (deitarion/SSokolow)
-
-Audacious Media Player Monitor applet for the Logitech G15 Gaming Keyboard's LCD (via g15composer)
-
-Requires Audacious 1.4 or newer. (Uses the D-Bus API)
-
-TODO:
-- Every second update should skip the D-Bus calls. They are the biggest CPU drain.
- (I also only use a half-second update interval for the scroller. Feel free to
- turn it off and use a 1-second interval.
-- Wipe and redraw the entire screen at songchange. I'm not sure why yet, but some songs can cause mess-ups.
-- Clean up this quick hack of a script.
-
-Notes for people hacking this script:
-- The LCD is 160px wide and 43px tall
-- The Large (2 or L) font is 7 pixels tall.
-- The Medium (1 or M) font is 6 pixels tall.
-- The Small (0 or S) font is 5 pixels tall.
-- When using the small font, the screen is 40 characters wide.
-"""
-
-control_pipe = "/var/run/g15composer"
-
-ICON_DIMS = (7,7)
-ICN_STOP = "1" * ICON_DIMS[0] * ICON_DIMS[1]
-ICN_PAUSE = "0110110" * ICON_DIMS[1]
-ICN_PLAY = (
-"0100000" +
-"0110000" +
-"0111000" +
-"0111100" +
-"0111000" +
-"0110000" +
-"0100000" )
-
-# 3x5 "Characters" (Icon glyphs sized to match the Small font)
-CHAR_S_NOTE = "011010010110110"
-CHAR_S_HALFTONE = "101010101010101"
-CHAR_S_CROSS = "000010111010000"
-
-# I prefer no icon when it's playing, so overwrite the play icon with a blank.
-ICN_PLAY = '0' * ICON_DIMS[0] * ICON_DIMS[1]
-
-
-import os, sys, time
-from dbus import Bus, DBusException
-
-message_pipe = os.path.join(os.environ["HOME"], ".g15_audacious_pipe")
-
-def get_aud():
- try: return session_bus.get_object('org.atheme.audacious', '/org/atheme/audacious')
- except DBusException: return None
-
-def draw_state(icon):
- msg_handle.write('PO 0 0 %d %d "%s"\n' % (ICON_DIMS[0], ICON_DIMS[1], icon))
-
-session_bus = Bus(Bus.TYPE_SESSION)
-
-if not os.path.exists(control_pipe) and not (os.path.isfile(control_pipe) and os.path.isdir(control_pipe)):
- print "ERROR: Not a g15composer control pipe: %s" % control_pipe
- sys.exit(1)
-
-if os.path.exists(message_pipe) and not (os.path.isfile(control_pipe) and os.path.isdir(control_pipe)):
- os.remove(message_pipe)
-
-try:
- file(control_pipe, 'w').write('SN "%s"\n' % message_pipe)
- time.sleep(0.5)
- msg_handle = file(message_pipe,'w')
-
- oldTitleString = ''
- while True:
- aud = get_aud()
- if aud:
- pos = aud.Position()
-
- lengthSecs = aud.SongLength(pos)
- length = (lengthSecs > 0) and ("%d:%02d" % (lengthSecs / 60, lengthSecs % 60)) or "stream"
-
- songTitle = aud.SongTitle(pos).encode("latin1", "replace")
- titleString = "%d. %s" % (pos, songTitle)
-
- playSecs = aud.Time() / 1000
- played = "%d:%02d" % (playSecs / 60, playSecs % 60)
-
- volume = aud.Volume()
-
- # Cache changes until I'm done making them
- msg_handle.write('MC 1\n')
-
- # Set up the static elements
- msg_handle.write('TO 0 0 2 1 "Now Playing"\n')
- msg_handle.write('TO 0 26 0 0 "Volume:"\n')
-
- # State Indicator
- if aud.Paused():
- draw_state(ICN_PAUSE)
- elif aud.Playing():
- draw_state(ICN_PLAY)
- else:
- draw_state(ICN_STOP)
-
- # Scroll the title string
- if len(titleString) > 40 and oldTitleString == titleString:
- tsTemp = titleString + ' '
- titleString = tsTemp[scrollPivot:] + tsTemp[:scrollPivot]
- scrollPivot = (scrollPivot < len(tsTemp)) and (scrollPivot + 1) or 0
- else:
- scrollPivot = 0
- oldTitleString = titleString
-
- # Title
- msg_handle.write('PB 0 9 160 14 0 1 1\n') # Wipe away any remnants of the old title that wouldn't be overwritten.
- msg_handle.write('TO 0 9 0 0 "%s"\n' % titleString)
-
- # Uncomment to place a note in the gap where the scroller wraps around
- #notePos = (len(titleString) - scrollPivot - 1) * 4
- #if len(titleString) > 40 and notePos <= 156:
- # msg_handle.write('PO %d 9 3 5 "%s"\n' % (notePos, CHAR_S_NOTE))
-
- # Volume bar
- msg_handle.write('DB 29 28 159 29 1 %d 100 1\n' % ((volume[0] + volume[1])/2))
-
- # Progress Bar
- msg_handle.write('DB 0 33 159 41 1 %d %d 1\n' % (playSecs, lengthSecs)) # Progress Bar
- msg_handle.write('MX 1\n')
- msg_handle.write('TO 0 34 2 1 "Position: %s/%s"\n' % (played, length)) # Progress Text
- msg_handle.write('MX 0\n')
-
- # Push changes to the display and sleep for a second.
- msg_handle.write('MC 0\n')
- msg_handle.flush()
- time.sleep(0.5)
- else:
- msg_handle.write('PC 0\nTL "D-Bus Exception:" "Can\'t find Audacious"\n"')
-finally:
- msg_handle.write("SC\n")
- msg_handle.close()
diff --git a/contrib/lap.py b/contrib/lap.py
deleted file mode 100755
index 038e38c..0000000
--- a/contrib/lap.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python
-"""Locate and Play
-Author: Stephan Sokolow (deitarion/SSokolow)
-License: GNU GPL-2
-Version: 1.0
-
-Description:
-- A quick wrapper to make playing songs via the local command quick and easy.
-- Works with any player which implements the MPRIS standard for remote control via D-Bus.
-- Accepts multiple space- and/or comma-separated choices after presenting the results.
-- Can enqueue or enqueue and play.
-- Can show full paths or just filenames.
-- Will behave in a sane fashion when asked to enqueue and play multiple files.
-
-TODO:
- - Complete the list of extensions for ModPlug, Embedded MPlayer (plugins-ugly), and UADE (3rd-party)
- - Support sticking a 'q' in the result to choose enqueue on the fly
- - Support an "all" keyword and an alternative to Ctrl+C for cancelling. (maybe 0)
-"""
-
-ADLIB_EXTS = ['.a2m', '.adl', '.adlib', '.amd', '.bam', '.cff', '.cmf', '.d00', '.dfm', '.dmo', '.dro', '.dtm', '.hsc', '.hsp',
- '.jbm', '.ksm', '.laa', '.lds', '.m', '.mad', '.mkj', '.msc', '.mtk', '.rad', '.raw', '.rix', '.rol', '.sat',
- '.sa2', '.sci', '.sng', '.imf', '.wlf', '.xad', '.xsm']
-CONSOLE_EXTS = ['.adx', '.ay', '.gbs', '.gym', '.hes', '.kss', '.minipsf', '.nsf', '.nsfe', '.psf', '.sap', '.sid', '.spc',
- '.vgm', '.vgz', '.vtx', '.ym']
-MIDI_EXTS = ['.mid', '.midi', '.rmi']
-MODULE_EXTS = [ '.it', ',mod', '.s3m', '.stm', '.xm']
-PLAYLIST_EXTS = ['.cue', '.m3u', '.pls', '.xspf']
-WAVEFORM_EXTS = ['.aac', '.aif', '.aiff', '.au', '.flac', '.m4a', '.mp2', '.mp3', '.mpc', '.ogg', '.snd', '.tta', '.voc', '.wav',
- '.wma', '.wv']
-
-# Edit these lines to choose the kind of files to be filtered for. By default, playlist extensions are excluded.
-OK_EXTS = WAVEFORM_EXTS + MODULE_EXTS + CONSOLE_EXTS + MIDI_EXTS + ADLIB_EXTS
-# If you want true format filtering, YOU write the mimetype cache.
-USE_PAGER = False # Should we page output if it's more than a screenful?
-
-locate_command = ['locate', '-i']
-
-# ========== Configuration Ends ==========
-
-import fnmatch, optparse, os, subprocess
-from dbus import Bus, DBusException
-
-# Support audtool as a fallback but don't depend on it
-try: import subprocess
-except ImportError: pass
-
-# Use readline if available but don't depend on it
-try: import readline
-except ImportError: pass
-
-# connect to DBus
-bus = Bus(Bus.TYPE_SESSION)
-
-def get_results(query):
- """Given a query or series of queries for the locate command, run them."""
- results, cmd = [], locate_command + (isinstance(query, basestring) and [query] or query)
- for line in subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout:
- result = line.strip()
- if os.path.splitext(result)[1] in OK_EXTS:
- results.append(result)
- results.sort()
- return results
-
-def filter(results, filters):
- for filter in filters:
- results = [x for x in results if fnmatch.fnmatch(x.lower(), '*%s*' % filter.lower())]
- return results
-
-def makeMenu(results, strip_path=True):
- for pos, val in enumerate(results):
- val = strip_path and os.path.split(val)[1] or val
- print "%3d) %s" % (pos+1, val)
-
-def addTrack(path, play=False):
- try:
- file_url = 'file://' + path
- mp = bus.get_object('org.freedesktop.MediaPlayer', '/TrackList')
- mp.AddTrack(file_url, play)
- except DBusException:
- try:
- if subprocess.call(['audtool','playlist-addurl',file_url]):
- print "ERROR: audtool fallback returned an error for: %s" % file_url
- elif play:
- os.system('audtool playlist-jump `audtool playlist-length`; audtool playback-play')
- except OSError:
- print "ERROR: Unable to call audtool as a fallback for: %s" % file_url
-
-def parseChoice(inString):
- try:
- return [int(inString)]
- except ValueError:
- choices = []
- for x in inString.replace(',',' ').split():
- try: choices.append(int(x))
- except ValueError: print "Not an integer: %s" % x
- return choices
-
-if __name__ == '__main__':
- try:
- op = optparse.OptionParser()
- op.add_option("-q", "--enqueue", action="store_true", dest="enqueue", default=False,
- help="Don't start the song playing after enqueueing it.")
- op.add_option("-p", "--show_path", action="store_true", dest="show_path", default=False,
- help="Show the full path to each result.")
-
- (opts, args) = op.parse_args()
-
- results = (len(args) > 0) and get_results(args.pop(0)) or []
- results = filter(results, args)
-
- def takeChoice(index, play=False):
- index = index - 1
- if index >= 0 and index < len(results):
- addTrack(results[index], play)
- else:
- print "Invalid result index: %s" % (index + 1)
-
- if len(results):
- makeMenu(results, not opts.show_path)
- choices = parseChoice(raw_input("Choice(s) (Ctrl+C to cancel): "))
-
- if len(choices):
- takeChoice(choices.pop(0), not opts.enqueue)
- for item in choices:
- takeChoice(item, False) # This ensures proper behaviour with no --enqueue and multiple choices.
- else:
- print "No Results"
- except KeyboardInterrupt:
- pass
diff --git a/contrib/win32/notes.html b/contrib/win32/notes.html
index 80323df..9bd57fa 100644
--- a/contrib/win32/notes.html
+++ b/contrib/win32/notes.html
@@ -10,32 +10,10 @@
<h2>Notes for Building Audacious on Windows</h2>
<p><em>John Lindgren<br>
-September 15, 2013</em></p>
+January 24, 2014</em></p>
<p>Several patch files should accompany this document.</p>
-<h3>Install MinGW</h3>
-
-<p>Download and run:<br>
-<a href="http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe/download">
-<tt>http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe/download</tt></a></p>
-
-<p>When prompted, use these options:</p>
-<ul><li>Use pre-packaged repository catalogues</li>
-<li>C++ compiler</li>
-<li>MinGW Developer Toolkit</li></ul>
-
-<p>Copy <tt>C:\MinGW\lib\libiconv.*</tt> to <tt>C:\MinGW\msys\1.0\lib</tt>.<br>
-Apply the patch <tt>libintl.h.diff</tt> to <tt>C:\MinGW\include\libintl.h</tt>.</p>
-
-<h3>Install Python</h3>
-
-<p>Download and run:<br>
-<a href="http://python.org/ftp/python/2.7.5/python-2.7.5.msi">
-<tt>http://python.org/ftp/python/2.7.5/python-2.7.5.msi</tt></a></p>
-
-<p>Follow the prompts to install with default options to <tt>C:\Python27</tt>.</p>
-
<h3>Set up system paths</h3>
<p>Under <em>My Computer -> Properties -> Advanced -> Environment Variables</em>, set:</p>
@@ -45,22 +23,43 @@ C_INCLUDE_PATH=/C/GTK/include:/C/libs/include<br>
CPLUS_INCLUDE_PATH=/C/GTK/include:/C/libs/include<br>
LIBRARY_PATH=/C/GTK/lib:/C/libs/lib</tt></p></blockquote>
-<h3>Install zlib</h3>
+<h3>Install MinGW</h3>
-<p>Download and unzip to <tt>C:\zlib</tt>:<br>
-<a href="http://zlib.net/zlib-1.2.8.tar.gz">
-<tt>http://zlib.net/zlib-1.2.8.tar.gz</tt></a></p>
+<p>Download and run:<br>
+<a href="http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download">
+<tt>http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download</tt></a></p>
+
+<p>In the MinGW Installation Manager window, install the following packages:</p>
+<ul><li>mingw32-base (bin)</li>
+<li>mingw32-gcc-g++ (bin)</li>
+<li>mingw32-gcc-g++ (bin)</li>
+<li>mingw-developer-toolkit (bin)</li>
+<li>mingw32-pthreads-w32 (dev)</li>
+<li>mingw32-libz (dev)</li></ul>
+
+<p>Edit the file <tt>C:\MinGW\msys\1.0\etc\fstab</tt> to contain only the
+following line, in lowercase:</p>
+<blockquote><p><tt>c:/mingw /mingw</tt></p></blockquote>
+
+<p>As of version 4.0.3-1, the MinGW runtime library is missing some mathematical
+functions that are necessary to build Audacious. Downgrade the library by
+running the following in a command prompt window:<p>
+<blockquote><p><tt>mingw-get upgrade mingw32-mingwrt-dev=3.20-2<br>
+mingw-get upgrade mingw32-w32api=3.17-2</tt></p></blockquote>
-<p>In the MinGW shell:</p>
-<blockquote><p><tt>cd /C/zlib<br>
-make -f win32/Makefile.gcc<br>
-BINARY_PATH=/C/GTK/bin INCLUDE_PATH=/C/GTK/include LIBRARY_PATH=/C/GTK/lib make -f win32/Makefile.gcc SHARED_MODE=1 install</tt></p></blockquote>
+<h3>Install Python</h3>
+
+<p>Download and run:<br>
+<a href="http://python.org/ftp/python/2.7.6/python-2.7.6.msi">
+<tt>http://python.org/ftp/python/2.7.6/python-2.7.6.msi</tt></a></p>
+
+<p>Follow the prompts to install with default options to <tt>C:\Python27</tt>.</p>
<h3>Install libpng</h3>
<p>Download and unzip to <tt>C:\libpng</tt>:<br>
-<a href="http://sourceforge.net/projects/libpng/files/libpng16/1.6.3/libpng-1.6.3.tar.xz/download">
-<tt>http://sourceforge.net/projects/libpng/files/libpng16/1.6.3/libpng-1.6.3.tar.xz/download</tt></a></p>
+<a href="http://sourceforge.net/projects/libpng/files/libpng16/1.6.8/libpng-1.6.8.tar.xz/download">
+<tt>http://sourceforge.net/projects/libpng/files/libpng16/1.6.8/libpng-1.6.8.tar.xz/download</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libpng<br>
@@ -71,8 +70,8 @@ make install</tt></p></blockquote>
<h3>Install libjpeg</h3>
<p>Download and unzip to <tt>C:\libjpeg</tt>:<br>
-<a href="http://www.ijg.org/files/jpegsrc.v9.tar.gz">
-<tt>http://www.ijg.org/files/jpegsrc.v9.tar.gz</tt></a></p>
+<a href="http://www.ijg.org/files/jpegsrc.v9a.tar.gz">
+<tt>http://www.ijg.org/files/jpegsrc.v9a.tar.gz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libjpeg<br>
@@ -95,17 +94,14 @@ make install</tt></p></blockquote>
<h3>Install GLib</h3>
<p>Download and unzip to <tt>C:\glib</tt>:<br>
-<a href="http://ftp.gnome.org/pub/GNOME/sources/glib/2.36/glib-2.36.4.tar.xz">
-<tt>http://ftp.gnome.org/pub/GNOME/sources/glib/2.36/glib-2.36.4.tar.xz</tt></a></p>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/glib/2.38/glib-2.38.2.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/glib/2.38/glib-2.38.2.tar.xz</tt></a></p>
-<p>Apply the patch <tt>gwin32.c.diff</tt> to <tt>C:\glib\glib\gwin32.c</tt>.<br>
-Apply the patch <tt>gwin32.h.diff</tt> to <tt>C:\glib\glib\gwin32.h</tt>.<br>
-Apply the patch <tt>gcontenttype.c.diff</tt> to <tt>C:\glib\gio\gcontenttype.c</tt>.<br>
-Apply the patch <tt>gdbus-codegen.in.diff</tt> to <tt>C:\glib\gio\gdbus-2.0\codegen\gdbus-codegen.in</tt>.</p>
+<p>Apply the patch <tt>gdbus-codegen.in.diff</tt> to <tt>C:\glib\gio\gdbus-2.0\codegen\gdbus-codegen.in</tt>.<br>
+Apply the patch <tt>ggettext.diff</tt> to <tt>C:\glib\glib\ggettext.c</tt>.</p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/glib<br>
-touch -t 200001010000 gtk-doc.make<br>
CFLAGS="-march=i686" LIBFFI_CFLAGS="-I/C/GTK/lib/libffi-3.0.13/include" LIBFFI_LIBS="-lffi" ZLIB_CFLAGS="" ZLIB_LIBS="-lz" ./configure --prefix=/C/GTK<br>
make<br>
make install</tt></p></blockquote>
@@ -127,12 +123,12 @@ make install</tt></p></blockquote>
<h3>Install pixman</h3>
<p>Download and unzip to <tt>C:\pixman</tt>:<br>
-<a href="http://cairographics.org/releases/pixman-0.30.2.tar.gz">
-<tt>http://cairographics.org/releases/pixman-0.30.2.tar.gz</tt></a></p>
+<a href="http://cairographics.org/releases/pixman-0.32.4.tar.gz">
+<tt>http://cairographics.org/releases/pixman-0.32.4.tar.gz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/pixman<br>
-./configure --prefix=/C/GTK --disable-sse2<br>
+./configure --prefix=/C/GTK --disable-sse2 --disable-ssse3<br>
make<br>
make install</tt></p></blockquote>
@@ -151,8 +147,8 @@ make install</tt></p></blockquote>
<h3>Install Pango</h3>
<p>Download and unzip to <tt>C:\pango</tt>:<br>
-<a href="http://ftp.gnome.org/pub/GNOME/sources/pango/1.35/pango-1.35.3.tar.xz">
-<tt>http://ftp.gnome.org/pub/GNOME/sources/pango/1.35/pango-1.35.3.tar.xz</tt></a></p>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/pango/1.36/pango-1.36.1.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/pango/1.36/pango-1.36.1.tar.xz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/pango<br>
@@ -163,8 +159,8 @@ make install</tt></p></blockquote>
<h3>Install gdk-pixbuf</h3>
<p>Download and unzip to <tt>C:\gdk-pixbuf</tt>:<br>
-<a href="http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.28/gdk-pixbuf-2.28.2.tar.xz">
-<tt>http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.28/gdk-pixbuf-2.28.2.tar.xz</tt></a></p>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.30/gdk-pixbuf-2.30.3.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.30/gdk-pixbuf-2.30.3.tar.xz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/gdk-pixbuf<br>
@@ -175,8 +171,8 @@ make install</tt></p></blockquote>
<h3>Install ATK</h3>
<p>Download and unzip to <tt>C:\atk</tt>:<br>
-<a href="http://ftp.gnome.org/pub/gnome/sources/atk/2.8/atk-2.8.0.tar.xz">
-<tt>http://ftp.gnome.org/pub/gnome/sources/atk/2.8/atk-2.8.0.tar.xz</tt></a></p>
+<a href="http://ftp.gnome.org/pub/gnome/sources/atk/2.10/atk-2.10.0.tar.xz">
+<tt>http://ftp.gnome.org/pub/gnome/sources/atk/2.10/atk-2.10.0.tar.xz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/atk<br>
@@ -187,8 +183,8 @@ make install</tt></p></blockquote>
<h3>Install GTK+</h3>
<p>Download and unzip to <tt>C:\gtksrc</tt>:<br>
-<a href="http://ftp.gnome.org/pub/GNOME/sources/gtk+/3.8/gtk+-3.8.4.tar.xz">
-<tt>http://ftp.gnome.org/pub/GNOME/sources/gtk+/3.8/gtk+-3.8.4.tar.xz</tt></a></p>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/gtk+/3.8/gtk+-3.8.8.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/gtk+/3.8/gtk+-3.8.8.tar.xz</tt></a></p>
<p>Apply the patch <tt>gtksettings.c.diff</tt> to <tt>C:\gtksrc\gtk\gtksettings.c</tt>.</p>
@@ -198,14 +194,41 @@ CFLAGS="-DHAVE_ISNAN -DHAVE_ISINF" ./configure --prefix=/C/GTK<br>
make<br>
make install</tt></p></blockquote>
-<p>On Windows Vista or later, User Account Control may need to be disabled
-temporarily in order for GTK+ to build successfully.</p>
+<p><i>It may be necessary to run the MinGW shell with administrative privileges
+for GTK+ to build successfully.</i></p>
+
+<p>Copy <tt>settings.ini</tt> (accompanying this document) to
+<tt>C:\GTK\etc\gtk-3.0\settings.ini</tt>.
+
+<h3>Install intltool</h3>
+
+<p>Download and unzip to <tt>C:\intltool</tt>:<br>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/intltool/0.40/intltool-0.40.6.tar.bz2">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/intltool/0.40/intltool-0.40.6.tar.bz2</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/intltool<br>
+./configure --prefix=/C/GTK<br>
+make<br>
+make install</tt></p></blockquote>
+
+<h3>Install GNOME Icon Theme</h3>
+
+<p>Download and unzip to <tt>C:\gnome-icon-theme</tt>:<br>
+<a href="http://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/3.8/gnome-icon-theme-3.8.3.tar.xz">
+<tt>http://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/3.8/gnome-icon-theme-3.8.3.tar.xz</tt></a></p>
+
+<p>In the MinGW shell:</p>
+<blockquote><p><tt>cd /C/gnome-icon-theme<br>
+./configure --prefix=/C/GTK --disable-icon-mapping<br>
+make<br>
+make install</tt></p></blockquote>
<h3>Install SDL</h3>
<p>Download and unzip to <tt>C:\libsdl</tt>:<br>
-<a href="http://www.libsdl.org/release/SDL2-2.0.0.tar.gz">
-<tt>http://www.libsdl.org/release/SDL2-2.0.0.tar.gz</tt></a></p>
+<a href="http://www.libsdl.org/release/SDL2-2.0.1.tar.gz">
+<tt>http://www.libsdl.org/release/SDL2-2.0.1.tar.gz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libsdl<br>
@@ -213,6 +236,14 @@ temporarily in order for GTK+ to build successfully.</p>
make<br>
make install</tt></p></blockquote>
+<h3>Install GNU regex</h3>
+
+<p>Download and unzip to <tt>C:\libs</tt>:<br>
+<a href="http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download">
+<tt>http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download</tt></a><br>
+<a href="http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download">
+<tt>http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download</tt></a></p>
+
<h3>Install libxml</h3>
<p>Download and unzip to <tt>C:\libxml</tt>:<br>
@@ -225,19 +256,11 @@ make install</tt></p></blockquote>
make<br>
make install</tt></p></blockquote>
-<h3>Install regex</h3>
-
-<p>Download and unzip to <tt>C:\libs</tt>:<br>
-<a href="http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download">
-<tt>http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download</tt></a><br>
-<a href="http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download">
-<tt>http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download</tt></a></p>
-
<h3>Install mpg123</h3>
<p>Download and unzip to <tt>C:\mpg123</tt>:<br>
-<a href="http://mpg123.de/download/mpg123-1.15.4.tar.bz2">
-<tt>http://mpg123.de/download/mpg123-1.15.4.tar.bz2</tt></a></p>
+<a href="http://mpg123.de/download/mpg123-1.17.0.tar.bz2">
+<tt>http://mpg123.de/download/mpg123-1.17.0.tar.bz2</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/mpg123<br>
@@ -293,8 +316,8 @@ make install</tt></p></blockquote>
<h3>Install libcdio</h3>
<p>Download and unzip to <tt>C:\libcdio</tt>:<br>
-<a href="http://ftp.gnu.org/gnu/libcdio/libcdio-0.90.tar.gz">
-<tt>http://ftp.gnu.org/gnu/libcdio/libcdio-0.90.tar.gz</tt></a></p>
+<a href="http://ftp.gnu.org/gnu/libcdio/libcdio-0.83.tar.gz">
+<tt>http://ftp.gnu.org/gnu/libcdio/libcdio-0.83.tar.gz</tt></a></p>
<p>Apply the patch <tt>libcdio-util.c.diff</tt> to <tt>C:\libcdio\src\util.c</tt>.</p>
@@ -304,18 +327,6 @@ make install</tt></p></blockquote>
make<br>
make install</tt></p></blockquote>
-<h3>Install libcdio-paranoia</h3>
-
-<p>Download and unzip to <tt>C:\libcdio-paranoia</tt>:<br>
-<a href="http://ftp.gnu.org/gnu/libcdio/libcdio-paranoia-10.2+0.90+1.tar.bz2">
-<tt>http://ftp.gnu.org/gnu/libcdio/libcdio-paranoia-10.2+0.90+1.tar.bz2</tt></a></p>
-
-<p>In the MinGW shell:</p>
-<blockquote><p><tt>cd /C/libcdio-paranoia<br>
-./configure --prefix=/C/libs<br>
-make<br>
-make install</tt></p></blockquote>
-
<h3>Install libcddb</h3>
<p>Download and unzip to <tt>C:\libcddb</tt>:<br>
@@ -384,8 +395,8 @@ make install</tt></p></blockquote>
<h3>Install libvorbis</h3>
<p>Download and unzip to <tt>C:\libvorbis</tt>:<br>
-<a href="http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.xz">
-<tt>http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.xz</tt></a></p>
+<a href="http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.xz">
+<tt>http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.xz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libvorbis<br>
@@ -396,8 +407,8 @@ make install</tt></p></blockquote>
<h3>Install OpenSSL</h3>
<p>Download and unzip to <tt>C:\openssl</tt>:<br>
-<a href="http://www.openssl.org/source/openssl-1.0.1e.tar.gz">
-<tt>http://www.openssl.org/source/openssl-1.0.1e.tar.gz</tt></a></p>
+<a href="http://www.openssl.org/source/openssl-1.0.1f.tar.gz">
+<tt>http://www.openssl.org/source/openssl-1.0.1f.tar.gz</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/openssl<br>
@@ -432,10 +443,11 @@ make install</tt></p></blockquote>
<h3>Install libwavpack</h3>
<p>Download and unzip to <tt>C:\libwavpack</tt>:<br>
-<a href="http://www.wavpack.com/wavpack-4.60.1.tar.bz2">
-<tt>http://www.wavpack.com/wavpack-4.60.1.tar.bz2</tt></a></p>
+<a href="http://www.wavpack.com/wavpack-4.70.0.tar.bz2">
+<tt>http://www.wavpack.com/wavpack-4.70.0.tar.bz2</tt></a></p>
-<p>Apply the patch <tt>libwavpack-utils.c.diff</tt> to <tt>C:\libwavpack\cli\utils.c</tt>.</p>
+<p>Apply the patch <tt>wavpack.pc.in.diff</tt> to <tt>C:\libwavpack\wavpack.pc.in</tt>.<br>
+Apply the patch <tt>libwavpack-utils.c.diff</tt> to <tt>C:\libwavpack\cli\utils.c</tt>.</p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libwavpack<br>
@@ -446,8 +458,8 @@ make install</tt></p></blockquote>
<h3>Install FFmpeg</h3>
<p>Download and unzip to <tt>C:\ffmpeg</tt>:<br>
-<a href="http://ffmpeg.org/releases/ffmpeg-2.0.1.tar.bz2">
-<tt>http://ffmpeg.org/releases/ffmpeg-2.0.1.tar.bz2</tt></a></p>
+<a href="http://ffmpeg.org/releases/ffmpeg-2.1.3.tar.bz2">
+<tt>http://ffmpeg.org/releases/ffmpeg-2.1.3.tar.bz2</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/ffmpeg<br>
@@ -475,8 +487,8 @@ make install</tt></p></blockquote>
<h3>Install libcurl</h3>
<p>Download and unzip to <tt>C:\libcurl</tt>:<br>
-<a href="http://curl.haxx.se/download/curl-7.32.0.tar.bz2">
-<tt>http://curl.haxx.se/download/curl-7.32.0.tar.bz2</tt></a></p>
+<a href="http://curl.haxx.se/download/curl-7.34.0.tar.bz2">
+<tt>http://curl.haxx.se/download/curl-7.34.0.tar.bz2</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libcurl<br>
@@ -496,7 +508,7 @@ Apply the patch <tt>libmms-seek-fix.diff</tt> (it changes multiple files).</p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libmms<br>
./autogen.sh<br>
-./configure --prefix=/C/libs<br>
+LIBS=-liconv ./configure --prefix=/C/libs<br>
make<br>
make install</tt></p></blockquote>
@@ -515,8 +527,8 @@ make install</tt></p></blockquote>
<h3>Install libsidplayfp</h3>
<p>Download and unzip to <tt>C:\libsidplayfp</tt>:<br>
-<a href="http://sourceforge.net/projects/sidplay-residfp/files/libsidplayfp/1.0/libsidplayfp-1.0.3.tar.gz/download">
-<tt>http://sourceforge.net/projects/sidplay-residfp/files/libsidplayfp/1.0/libsidplayfp-1.0.3.tar.gz/download</tt></a></p>
+<a href="http://sourceforge.net/projects/sidplay-residfp/files/libsidplayfp/1.2/libsidplayfp-1.2.2.tar.gz/download">
+<tt>http://sourceforge.net/projects/sidplay-residfp/files/libsidplayfp/1.2/libsidplayfp-1.2.2.tar.gz/download</tt></a></p>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/libsidplayfp<br>
@@ -534,6 +546,7 @@ make install</tt></p></blockquote>
<p>In the MinGW shell:</p>
<blockquote><p><tt>cd /C/fluidsynth<br>
+./autogen.sh<br>
./configure --prefix=/C/libs<br>
make<br>
make install</tt></p></blockquote>
diff --git a/contrib/win32/patches/gcontenttype.c.diff b/contrib/win32/patches/gcontenttype.c.diff
deleted file mode 100644
index 2c1e6d1..0000000
--- a/contrib/win32/patches/gcontenttype.c.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcontenttype.c.0 2012-07-14 16:33:18 -0400
-+++ gcontenttype.c 2012-08-04 16:02:09 -0400
-@@ -332,7 +332,7 @@
-
- /* our test suite and potentially other code used -1 in the past, which is
- * not documented and not allowed; guard against that */
-- g_return_val_if_fail (data_size != (gsize) -1, g_strdup (XDG_MIME_TYPE_UNKNOWN));
-+ g_return_val_if_fail (data_size != (gsize) -1, g_strdup ("*"));
-
- if (filename)
- {
diff --git a/contrib/win32/patches/ggettext.c.diff b/contrib/win32/patches/ggettext.c.diff
new file mode 100644
index 0000000..7bb8ae8
--- /dev/null
+++ b/contrib/win32/patches/ggettext.c.diff
@@ -0,0 +1,66 @@
+--- ggettext.c.0 2013-10-25 11:58:38 -0400
++++ ggettext.c 2014-03-23 22:07:29 -0400
+@@ -94,17 +94,32 @@
+ #endif /* G_OS_WIN32 */
+
+
+-static void
++static gboolean
+ ensure_gettext_initialized (void)
+ {
+ static gsize initialised;
+
++#ifdef G_OS_WIN32
++ static GThread * init_thread_atomic;
++ GThread * init_thread = g_atomic_pointer_get (& init_thread_atomic);
++
++ /* avoid deadlock if _glib_get_locale_dir() calls back into gettext */
++ if (G_UNLIKELY (init_thread && init_thread == g_thread_self ()))
++ return FALSE;
++#endif
++
+ if (g_once_init_enter (&initialised))
+ {
+ #ifdef G_OS_WIN32
+- gchar *tmp = _glib_get_locale_dir ();
++ gchar *tmp;
++
++ g_atomic_pointer_set (&init_thread_atomic, g_thread_self ());
++
++ tmp = _glib_get_locale_dir ();
+ bindtextdomain (GETTEXT_PACKAGE, tmp);
+ g_free (tmp);
++
++ g_atomic_pointer_set (&init_thread_atomic, NULL);
+ #else
+ bindtextdomain (GETTEXT_PACKAGE, GLIB_LOCALE_DIR);
+ #endif
+@@ -113,6 +128,8 @@
+ # endif
+ g_once_init_leave (&initialised, TRUE);
+ }
++
++ return TRUE;
+ }
+
+ /**
+@@ -128,7 +145,8 @@
+ const gchar *
+ glib_gettext (const gchar *str)
+ {
+- ensure_gettext_initialized ();
++ if (G_UNLIKELY (!ensure_gettext_initialized ()))
++ return str;
+
+ return g_dgettext (GETTEXT_PACKAGE, str);
+ }
+@@ -152,7 +170,8 @@
+ glib_pgettext (const gchar *msgctxtid,
+ gsize msgidoffset)
+ {
+- ensure_gettext_initialized ();
++ if (G_UNLIKELY (!ensure_gettext_initialized ()))
++ return msgctxtid;
+
+ return g_dpgettext (GETTEXT_PACKAGE, msgctxtid, msgidoffset);
+ }
diff --git a/contrib/win32/patches/gwin32.c.diff b/contrib/win32/patches/gwin32.c.diff
deleted file mode 100644
index 0738768..0000000
--- a/contrib/win32/patches/gwin32.c.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- gwin32.c.0 2012-04-01 15:34:07 -0400
-+++ gwin32.c 2012-04-01 15:33:21 -0400
-@@ -396,6 +396,8 @@
-
- #if !defined (_WIN64)
-
-+#undef g_win32_get_package_installation_directory
-+
- /* DLL ABI binary compatibility version that uses system codepage file names */
-
- gchar *
-@@ -473,6 +475,8 @@
-
- #if !defined (_WIN64)
-
-+#undef g_win32_get_package_installation_subdirectory
-+
- /* DLL ABI binary compatibility version that uses system codepage file names */
-
- gchar *
diff --git a/contrib/win32/patches/gwin32.h.diff b/contrib/win32/patches/gwin32.h.diff
deleted file mode 100644
index fdc3048..0000000
--- a/contrib/win32/patches/gwin32.h.diff
+++ /dev/null
@@ -1,13 +0,0 @@
---- gwin32.h.0 2013-05-07 14:26:07 -0400
-+++ gwin32.h 2013-09-11 19:32:14 -0400
-@@ -115,10 +115,8 @@
- #endif /* G_PLATFORM_WIN32 */
-
- #ifdef G_OS_WIN32
--#ifdef _WIN64
- #define g_win32_get_package_installation_directory g_win32_get_package_installation_directory_utf8
- #define g_win32_get_package_installation_subdirectory g_win32_get_package_installation_subdirectory_utf8
--#endif
-
- GLIB_AVAILABLE_IN_ALL
- gchar *g_win32_get_package_installation_directory_utf8 (const gchar *package,
diff --git a/contrib/win32/patches/libintl.h.diff b/contrib/win32/patches/libintl.h.diff
deleted file mode 100644
index d4c91ed..0000000
--- a/contrib/win32/patches/libintl.h.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- libintl.h.0 2009-07-25 21:18:24 -0400
-+++ libintl.h 2011-04-02 00:31:51 -0500
-@@ -308,7 +308,7 @@
- or gettext() but for which the format string could be the return value
- of _() or gettext() need to add this #include. Oh well. */
-
--#if !0
-+#if 0
-
- #include <stdio.h>
- #include <stddef.h>
diff --git a/contrib/win32/patches/wavpack.pc.in.diff b/contrib/win32/patches/wavpack.pc.in.diff
new file mode 100644
index 0000000..455a01e
--- /dev/null
+++ b/contrib/win32/patches/wavpack.pc.in.diff
@@ -0,0 +1,8 @@
+--- wavpack.pc.in.0 2013-09-29 17:30:14 -0400
++++ wavpack.pc.in 2014-01-25 16:47:55 -0500
+@@ -1,4 +1,5 @@
+ prefix=@prefix@
++exec_prefix=@exec_prefix@
+ libdir=@libdir@
+ includedir=${prefix}/include
+
diff --git a/contrib/win32/settings.ini b/contrib/win32/settings.ini
new file mode 100644
index 0000000..17e1139
--- /dev/null
+++ b/contrib/win32/settings.ini
@@ -0,0 +1,4 @@
+[Settings]
+gtk-auto-mnemonics = 1
+gtk-font-name = Segoe UI 9
+gtk-icon-theme-name=gnome
diff --git a/extra.mk.in b/extra.mk.in
index 9bf78dc..669a4c3 100644
--- a/extra.mk.in
+++ b/extra.mk.in
@@ -1,34 +1,14 @@
-AUDACIOUS_DEFINES ?= @AUDACIOUS_DEFINES@
-LIBAUDCLIENT_LDFLAGS ?= @LIBAUDCLIENT_LDFLAGS@
-PACKAGE ?= @PACKAGE@
-USE_NLS ?= @USE_NLS@
-VERSION ?= @VERSION@
-
-CONTAINER_PLUGIN_DIR ?= @CONTAINER_PLUGIN_DIR@
-EFFECT_PLUGIN_DIR ?= @EFFECT_PLUGIN_DIR@
-GENERAL_PLUGIN_DIR ?= @GENERAL_PLUGIN_DIR@
-INPUT_PLUGIN_DIR ?= @INPUT_PLUGIN_DIR@
-OUTPUT_PLUGIN_DIR ?= @OUTPUT_PLUGIN_DIR@
-TRANSPORT_PLUGIN_DIR ?= @TRANSPORT_PLUGIN_DIR@
-VISUALIZATION_PLUGIN_DIR ?= @VISUALIZATION_PLUGIN_DIR@
-
-DBUS_BINDING_TOOL ?= @DBUS_BINDING_TOOL@
HAVE_MSWINDOWS ?= @HAVE_MSWINDOWS@
-USE_THUNAR ?= @USE_THUNAR@
USE_CHARDET ?= @USE_CHARDET@
USE_DBUS ?= @USE_DBUS@
-DBUS_CFLAGS ?= @DBUS_CFLAGS@
-DBUS_LIBS ?= @DBUS_LIBS@
+GIO_CFLAGS ?= @GIO_CFLAGS@
+GIO_LIBS ?= @GIO_LIBS@
GLIB_CFLAGS ?= @GLIB_CFLAGS@
GLIB_LIBS ?= @GLIB_LIBS@
GMODULE_CFLAGS ?= @GMODULE_CFLAGS@
GMODULE_LIBS ?= @GMODULE_LIBS@
-GTHREAD_CFLAGS ?= @GTHREAD_CFLAGS@
-GTHREAD_LIBS ?= @GTHREAD_LIBS@
GTK_CFLAGS ?= @GTK_CFLAGS@
GTK_LIBS ?= @GTK_LIBS@
LIBGUESS_CFLAGS ?= @LIBGUESS_CFLAGS@
LIBGUESS_LIBS ?= @LIBGUESS_LIBS@
-REGEX_CFLAGS ?= @REGEX_CFLAGS@
-REGEX_LIBS ?= @REGEX_LIBS@
diff --git a/m4/buildsys.m4 b/m4/buildsys.m4
index 43cebeb..6afd8c6 100644
--- a/m4/buildsys.m4
+++ b/m4/buildsys.m4
@@ -21,7 +21,12 @@ dnl ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
dnl POSSIBILITY OF SUCH DAMAGE.
dnl
-AC_DEFUN([BUILDSYS_INIT], [
+AC_CONFIG_COMMANDS_PRE([
+ AC_SUBST(CC_DEPENDS, $GCC)
+ AC_SUBST(CXX_DEPENDS, $GXX)
+ AC_SUBST(OBJC_DEPENDS, $GOBJC)
+ AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)
+
AC_PATH_PROG(TPUT, tput)
AS_IF([test x"$TPUT" != x""], [
@@ -68,6 +73,15 @@ AC_DEFUN([BUILDSYS_INIT], [
])
])
+AC_CONFIG_COMMANDS_POST([
+ ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
+ for i in $(find . -name Makefile); do
+ DEPSFILE="$(dirname $i)/.deps"
+ test -f "$DEPSFILE" && rm "$DEPSFILE"
+ touch -t 0001010000 "$DEPSFILE"
+ done
+])
+
AC_DEFUN([BUILDSYS_PROG_IMPLIB], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_MSG_CHECKING(whether we need an implib)
@@ -95,14 +109,14 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
darwin*)
AC_MSG_RESULT(Darwin)
LIB_CFLAGS='-fPIC -DPIC'
- LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR} -install_name ${libdir}/$$(i=${SHARED_LIB}; echo $${i%.dylib}).${LIB_MAJOR}.dylib'
+ LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
LIB_PREFIX='lib'
LIB_SUFFIX='.dylib'
LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
PLUGIN_CFLAGS='-fPIC -DPIC'
PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup'
PLUGIN_SUFFIX='.bundle'
- INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i'
+ INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && install_name_tool -id ${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i'
UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib'
CLEAN_LIB=''
;;
@@ -176,12 +190,3 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
AC_SUBST(UNINSTALL_LIB)
AC_SUBST(CLEAN_LIB)
])
-
-AC_DEFUN([BUILDSYS_TOUCH_DEPS], [
- ${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
- for i in $(find . -name Makefile); do
- DEPSFILE="$(dirname $i)/.deps"
- test -f "$DEPSFILE" && rm "$DEPSFILE"
- touch -t 0001010000 "$DEPSFILE"
- done
-])
diff --git a/man/audacious.1.in b/man/audacious.1.in
index 8e76c05..2c69889 100644
--- a/man/audacious.1.in
+++ b/man/audacious.1.in
@@ -1,4 +1,4 @@
-.TH AUDACIOUS "1" "April 2009" "Version @VERSION@" "Audacious"
+.TH AUDACIOUS "1" "February 2014" "Version @PACKAGE_VERSION@" "Audacious"
.SH NAME
audacious \- an advanced audio player.
@@ -17,21 +17,9 @@ Media Player, which was in turn based on XMMS.
.B Getting help:
.TP
-.I -?, --help
+.I -h, --help
Show a brief list of options.
-.TP
-.I --help-all
-Show a complete list of options.
-
-.TP
-.I --help-gtk
-Show a list of GTK+-related options.
-
-.TP
-.I --help-sm-client
-Show a list of session management options.
-
.PP
.B Opening files:
@@ -83,7 +71,7 @@ Show the Audacious window if it is hidden and bring it to the top.
Show the Jump to Song window.
.TP
-.I -h, --headless
+.I -H, --headless
Start in command-line mode; i.e., without any graphical user interface.
.TP
@@ -98,52 +86,6 @@ Print version information and exit.
.I -V, --verbose
Print debugging output while running.
-.PP
-.B GTK+-related:
-
-.TP
-.I --display DISPLAY
-Start Audacious on the given X display.
-
-.TP
-.I --screen SCREEN
-Start Audacious on the given X screen.
-
-.TP
-.I --sync
-Use synchronous X calls.
-
-.TP
-.I --name NAME
-Set Audacious's program name (for use by the window manager).
-
-.TP
-.I --class CLASS
-Set Audacious's program class (for use by the window manager).
-
-.TP
-.I --gtk-module MODULE
-Load a GTK+ module manually.
-
-.TP
-.I --g-fatal-warnings
-Treat all warnings as fatal errors.
-
-.PP
-.B Session management:
-
-.TP
-.I --sm-client-disable
-Do not connect to the session manager.
-
-.TP
-.I --sm-client-id ID
-Set session management ID.
-
-.TP
-.I --sm-client-state-file FILE
-Load saved configuration from FILE.
-
.SH KEYBINDINGS
.ta 24
z Previous song
@@ -221,13 +163,9 @@ Control + p Display Preferences dialog
~/.config/audacious/config
User's Audacious configuration.
.TP
-~/.config/audacious/playlist.xspf
+~/.config/audacious/playlists/1000.audpl
Default playlist usually loaded on startup.
.TP
-~/.config/audacious/gtkrc
-User's set of Audacious-specific GTK+ config settings. Options such as widget
-color and fonts sizes can be set here.
-.TP
~/.local/share/audacious/Skins, @datarootdir@/audacious/Skins
Default location(s) where Audacious should look for skin files.
.TP
diff --git a/man/audtool.1.in b/man/audtool.1.in
index 4e59ebd..13a9b56 100644
--- a/man/audtool.1.in
+++ b/man/audtool.1.in
@@ -1,4 +1,4 @@
-.TH AUDTOOL "1" "April 2009" "Version @VERSION@"
+.TH AUDTOOL "1" "February 2014" "Version @PACKAGE_VERSION@"
.SH NAME
.B audtool
- a small tool to modify behavior of a running Audacious instance.
@@ -128,6 +128,32 @@ Toggles the "stop after current song" option.
.I --playlist-tuple-data <fieldname> <position>
Returns the value of a tuple field for a song in the playlist.
.PP
+.B More playlist manipulation:
+.TP
+.I --number-of-playlists
+Returns the number of open playlists.
+.TP
+.I --current-playlist
+Returns the number of the active playlist.
+.TP
+.I --set-current-playlist
+Activates the specified playlist.
+.TP
+.I --current-playlist-name
+Returns the title of the active playlist.
+.TP
+.I --set-current-playlist-name
+Sets the title of the active playlist.
+.TP
+.I --new-playlist
+Creates a new playlist.
+.TP
+.I --delete-current-playlist
+Removes the active playlist.
+.TP
+.I --play-current-playlist
+Starts or resumes playing the active playlist.
+.PP
.B Playqueue manipulation:
.TP
.I --playqueue-add <position>
@@ -237,9 +263,6 @@ Shows/hides the preferences window.
.I --about-show <on/off>
Shows/hides the about window.
.TP
-.I --always-on-top <on/off>
-Enables/disables always on top setting.
-.TP
.I --version
Displays Audacious version.
.TP
diff --git a/po/Makefile b/po/Makefile
index d3aab98..a4ea7d2 100644
--- a/po/Makefile
+++ b/po/Makefile
@@ -27,6 +27,7 @@ LOCALES = ast.po \
fi.po \
fr.po \
gl.po \
+ he.po \
hu.po \
id_ID.po \
it.po \
@@ -48,6 +49,8 @@ LOCALES = ast.po \
sq.po \
sr@latin.po \
sr.po \
+ sr_RS.po \
+ sv.po \
ta.po \
tr.po \
uk.po \
@@ -58,11 +61,11 @@ LOCALES = ast.po \
include ../extra.mk
include ../buildsys.mk
-POTTEMPLATE=$(PACKAGE).pot
+POTTEMPLATE=$(PACKAGE_NAME).pot
update-pot:
@echo Updating $(POTTEMPLATE) ...
- xgettext --default-domain=$(PACKAGE) --language=C \
+ xgettext --default-domain=$(PACKAGE_NAME) --language=C \
--keyword=_ --keyword=N_ --from-code="utf-8" \
--msgid-bugs-address="http://redmine.audacious-media-player.org/" \
--directory=.. --files-from=POTFILES.in -o $(POTTEMPLATE)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 40fefcf..f4b7224 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,21 +1,19 @@
# Please don't update this file manually - use ./update-potfiles.sh instead!
src/audacious/adder.c
-src/audacious/chardet.c
-src/audacious/equalizer_preset.c
+src/audacious/interface.c
src/audacious/main.c
src/audacious/playback.c
src/audacious/playlist-files.c
src/audacious/playlist-new.c
src/audacious/plugin-preferences.c
+src/audacious/plugin-view.c
+src/audacious/ui_plugin_menu.c
src/audacious/ui_preferences.c
src/audacious/util.c
-src/audtool/handlers_playlist.c
-src/audtool/handlers_vitals.c
src/libaudcore/audstrings.c
src/libaudcore/tuple.c
src/libaudgui/about.c
src/libaudgui/confirm.c
-src/libaudgui/effects-menu.c
src/libaudgui/equalizer.c
src/libaudgui/infopopup.c
src/libaudgui/infowin.c
diff --git a/po/ast.po b/po/ast.po
index f0d90e0..5e428cc 100644
--- a/po/ast.po
+++ b/po/ast.po
@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-17 02:35+0000\n"
-"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Asturian (http://www.transifex.com/projects/p/audacious/"
"language/ast/)\n"
"Language: ast\n"
@@ -19,140 +19,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Guetando ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "AlcontrĂłse %d ficheru"
msgstr[1] "AlcontrĂĄronse %d ficheros"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 invĂĄlidu)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Llista de reproducciĂłn nueva"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Fallu importando ficheru Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Saltar haza darrera na llista de reproducciĂłn"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Aniciar la reproducciĂłn de la llista de reproducciĂłn actual"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Amosar versiĂłn"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Posar la canciĂłn actual"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Parar la canciĂłn actual"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Posar si se ta reproduciendo, o reproducir"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Saltar haza alantre na llista de reproducciĂłn"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Amosar diĂĄlogu de Saltu al ficheru"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Amestar ficheros a la llista de reproducciĂłn"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Amestar nuevos ficheros a una llista de reproducciĂłn temporal"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Amosar la ventana principal"
-#: src/audacious/main.c:242
-msgid "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Colar al parar la reproducciĂłn"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Amosar versiĂłn"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Ver mensaxes de depuraciĂłn"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FICHERU..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- reproducir ficheros multimedia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Prueba `%s --help' pa mĂĄs informaciĂłn.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Nun s'alcontrĂł decodificador pa %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr ""
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Nun se pue %s %s: estensiĂłn de ficheru ensin sofitu."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "guardar"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "cargar"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Nun se pue %s %s: estensiĂłn de ficheru ensin sofitu."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Llista de reproducciĂłn nueva"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "En reproducciĂłn"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -160,412 +151,444 @@ msgstr ""
"La llista de reproducciĂłn nun pue ordenase porque ta executandose la gueta "
"de metadatos (o ta desactivada)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Tocante a %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "Preferencies de %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Rede"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Llista de reproducciĂłn"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Info de canciĂłn"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Complementos"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Xeneral"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efeutu"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VisualizaciĂłn"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrada"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Tresporte"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Álbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tulu"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "NĂșmberu de pista"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "XĂ©neru"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nome de ficheru"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "CamĂ­n hasta'l ficheru"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Añu"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comentariu"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec (formatu)"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "CalidĂĄ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "dengĂșn"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ĂĄrabe"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂĄlticu"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "chinu"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "griegu"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "hebréu"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "xaponés"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "coreanu"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polacu:"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "rusu"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "taiwanés"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "turcu"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Coma flotante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Mou ĂĄlbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Complementu de salida:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Preferencies de salida</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Fondura de bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Tamañu del bĂșfer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr ""
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Usar control de volume por software (nun se recomienda)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Ganancia de reproducciĂłn</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Activar Replay Gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Mou ĂĄlbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evitar saltos (recomendao)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Axustar niveles</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar tolos ficheros:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar ficheros ensin etiqueta:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Sirvidor proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Puertu del proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nome d'usuariu del proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Contraseña del proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ConfiguraciĂłn del Proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Activar l'usu del proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Usar autenticaciĂłn col proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Deteutor de codificĂĄu automĂĄticu de carauteres pa: "
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "CĂłdigu de carauteres de fallback:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamientu</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continuar la reproducciĂłn al aniciase"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avanzar al desaniciar la canciĂłn actual"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Llimpiar la llista de reproducciĂłn al abrir ficheros"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Abrir ficheros nuna llista temporal"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Nun cargar los metadatos de les canciones fasta que se reproduzan"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>CompatibilidĂĄ</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Portada d'ĂĄlbum</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Guetar imaxes que casen con estes pallabres (separaes por comes):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Saltar les imaxes que casen con estes pallabres (separaes por comes):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Guetar imaxes que casen col tĂ­tutlu de la canciĂłn"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Gueta recursiva"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "ProfundidĂĄ de la gueta:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>InformaciĂłn emerxente</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr ""
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr ""
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr ""
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TÍTULU"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TÍTULU"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ÁLBUM - TÍTULU"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ÁLBUM - PISTA. TÍTULU"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ ÁLBUM ] - PISTA. TÍTULU"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ÁLBUM - TÍTULU"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "CategorĂ­a"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizada"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>VisualizaciĂłn de les canciones</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Amosar nĂșmberos de canciĂłn"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Ver los ceros del principiu (02:00 en llugar de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Amosar informaciĂłn tocante al formatu del tĂ­tulu"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Cadena personalizada:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formatu del tĂ­tulu:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Complementu de salida:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Tresporte"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrada"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efeutu"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VisualizaciĂłn"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Xeneral"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Cadena personalizada:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferencies d'Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nun pudo crease'l direutoriu (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Nun s'alcuentra la posiciĂłn."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Nun hai res reproduciéndose."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD de sonĂ­u, pista %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estéreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -580,409 +603,420 @@ msgstr "Créditos:"
msgid "License"
msgstr "Llicencia"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Tocante a Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Daveres quies zarrar %s? Si lo faes, va perdese cualesquier cambéu fechu "
-"dende que s'esportĂł la llista de reproducciĂłn."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "N_un amosar mĂĄs esti mensax"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Renomar la llista de reproducciĂłn"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "axustes..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "A_ctivar"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ecualizador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "PreamplificaciĂłn"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Pista"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "LlonxitĂș"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Jazz ĂĄcedu"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Rock ĂĄcidu"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de cĂĄmara"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂĄsica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Discu"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Escucha fĂĄcil"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folclore"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Ruiu"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Rock Punk"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata anovada ensin problemes"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "FallĂł l'anovamientu de Metadatos"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaciĂłn de pista"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formatu:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">CalidĂĄ:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrate:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tulu</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Álbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comentariu</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">XĂ©neru</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Añu</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">NĂșmberu de pista</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Nun hai info disponible pa %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Saltar nel tiempu"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Escriba'l tiempu (minutos:segundos):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ÂżSobrescribir %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Esportar llista de reproducciĂłn"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar llista de reproducciĂłn"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ÂżSobrescribir %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Alministrador de la cola"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Abrir ficheros"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Amestar ficheros..."
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Zarrar diĂĄlogu al abrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Zarrar diĂĄlogu al amestar"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Cola"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Quitar de la Cola"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Saltar a canciĂłn"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Peñera:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "P_eñera:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Remembrar"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Llimpi_ar"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Zarrar al Saltar"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Alministrador de la llista de reproducciĂłn"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entraess"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "Renomar"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Zarrar diĂĄlogu al activar llista de reproducciĂłn"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Abrir URL"
@@ -990,11 +1024,11 @@ msgstr "Abrir URL"
msgid "Add URL"
msgstr "Amestar URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Escriba la URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/audacious.pot b/po/audacious.pot
index 1130149..0ef0ae6 100644
--- a/po/audacious.pot
+++ b/po/audacious.pot
@@ -8,559 +8,584 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:28+0100\n"
+"POT-Creation-Date: 2014-04-21 23:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr ""
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] ""
msgstr[1] ""
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
msgstr ""
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
+#: src/audacious/main.c:71
+msgid "Show version"
msgstr ""
-#: src/audacious/main.c:234
-msgid "Pause current song"
+#: src/audacious/main.c:72
+msgid "Start playback"
msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
+#: src/audacious/main.c:73
+msgid "Pause playback"
msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr ""
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr ""
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr ""
-#: src/audacious/main.c:242
-msgid "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
msgstr ""
-#: src/audacious/main.c:243
-msgid "Quit on playback stop"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
msgstr ""
-#: src/audacious/main.c:244
-msgid "Show version"
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
msgstr ""
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr ""
-#: src/audacious/main.c:246
-msgid "FILE..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr ""
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr ""
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr ""
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
+msgid "Cannot load %s: unsupported file extension."
msgstr ""
-#: src/audacious/playlist-files.c:51
-msgid "save"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
msgstr ""
-#: src/audacious/playlist-files.c:51
-msgid "load"
+#: src/audacious/playlist-new.c:98
+msgid "Now Playing"
msgstr ""
-#: src/audacious/playlist-files.c:133
-#, c-format
-msgid "Cannot save %s: plugin does not support saving."
+#: src/audacious/playlist-new.c:1656
+msgid ""
+"The playlist cannot be sorted because metadata scanning is still in progress "
+"(or has been disabled)."
msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
msgstr ""
-#: src/audacious/playlist-new.c:97
-msgid "Now Playing"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
msgstr ""
-#: src/audacious/playlist-new.c:1670
-msgid ""
-"The playlist cannot be sorted because metadata scanning is still in progress "
-"(or has been disabled)."
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
msgstr ""
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr ""
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr ""
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr ""
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr ""
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr ""
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr ""
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr ""
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr ""
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr ""
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr ""
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr ""
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr ""
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr ""
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr ""
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr ""
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr ""
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr ""
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr ""
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr ""
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr ""
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr ""
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr ""
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr ""
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr ""
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr ""
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr ""
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr ""
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr ""
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr ""
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr ""
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr ""
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr ""
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr ""
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr ""
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr ""
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr ""
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr ""
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr ""
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr ""
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr ""
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr ""
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr ""
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr ""
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr ""
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr ""
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr ""
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr ""
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr ""
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr ""
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr ""
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr ""
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr ""
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr ""
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr ""
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr ""
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr ""
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr ""
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr ""
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr ""
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr ""
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr ""
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr ""
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr ""
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr ""
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr ""
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr ""
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr ""
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr ""
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr ""
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr ""
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
msgstr ""
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr ""
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr ""
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr ""
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr ""
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr ""
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr ""
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -575,407 +600,420 @@ msgstr ""
msgid "License"
msgstr ""
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr ""
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
msgstr ""
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr ""
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr ""
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr ""
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr ""
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr ""
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr ""
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr ""
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr ""
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr ""
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr ""
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr ""
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr ""
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr ""
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr ""
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr ""
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr ""
-#: src/libaudgui/infowin.c:73
-msgid "Acid Jazz"
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
msgstr ""
-#: src/libaudgui/infowin.c:74
-msgid "Acid Rock"
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
msgstr ""
-#: src/libaudgui/infowin.c:75
-msgid "Ambient"
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
msgstr ""
#: src/libaudgui/infowin.c:76
-msgid "Bebop"
+msgid "Acid Jazz"
msgstr ""
#: src/libaudgui/infowin.c:77
-msgid "Bluegrass"
+msgid "Acid Rock"
msgstr ""
#: src/libaudgui/infowin.c:78
-msgid "Blues"
+msgid "Ambient"
msgstr ""
#: src/libaudgui/infowin.c:79
-msgid "Chamber Music"
+msgid "Bebop"
msgstr ""
#: src/libaudgui/infowin.c:80
-msgid "Classical"
+msgid "Bluegrass"
msgstr ""
#: src/libaudgui/infowin.c:81
-msgid "Country"
+msgid "Blues"
msgstr ""
#: src/libaudgui/infowin.c:82
-msgid "Death Metal"
+msgid "Chamber Music"
msgstr ""
#: src/libaudgui/infowin.c:83
-msgid "Disco"
+msgid "Classical"
msgstr ""
#: src/libaudgui/infowin.c:84
-msgid "Easy Listening"
+msgid "Country"
msgstr ""
#: src/libaudgui/infowin.c:85
-msgid "Folk"
+msgid "Death Metal"
msgstr ""
#: src/libaudgui/infowin.c:86
-msgid "Funk"
+msgid "Disco"
msgstr ""
#: src/libaudgui/infowin.c:87
-msgid "Gangsta Rap"
+msgid "Easy Listening"
msgstr ""
#: src/libaudgui/infowin.c:88
-msgid "Gospel"
+msgid "Folk"
msgstr ""
#: src/libaudgui/infowin.c:89
-msgid "Grunge"
+msgid "Funk"
msgstr ""
#: src/libaudgui/infowin.c:90
-msgid "Hard Rock"
+msgid "Gangsta Rap"
msgstr ""
#: src/libaudgui/infowin.c:91
-msgid "Heavy Metal"
+msgid "Gospel"
msgstr ""
#: src/libaudgui/infowin.c:92
-msgid "Hip-hop"
+msgid "Grunge"
msgstr ""
#: src/libaudgui/infowin.c:93
-msgid "House"
+msgid "Hard Rock"
msgstr ""
#: src/libaudgui/infowin.c:94
-msgid "Jazz"
+msgid "Heavy Metal"
msgstr ""
#: src/libaudgui/infowin.c:95
-msgid "Jungle"
+msgid "Hip-hop"
msgstr ""
#: src/libaudgui/infowin.c:96
-msgid "Metal"
+msgid "House"
msgstr ""
#: src/libaudgui/infowin.c:97
-msgid "New Age"
+msgid "Jazz"
msgstr ""
#: src/libaudgui/infowin.c:98
-msgid "New Wave"
+msgid "Jungle"
msgstr ""
#: src/libaudgui/infowin.c:99
-msgid "Noise"
+msgid "Metal"
msgstr ""
#: src/libaudgui/infowin.c:100
-msgid "Pop"
+msgid "New Age"
msgstr ""
#: src/libaudgui/infowin.c:101
-msgid "Punk Rock"
+msgid "New Wave"
msgstr ""
#: src/libaudgui/infowin.c:102
-msgid "Rap"
+msgid "Noise"
msgstr ""
#: src/libaudgui/infowin.c:103
-msgid "Reggae"
+msgid "Pop"
msgstr ""
#: src/libaudgui/infowin.c:104
-msgid "Rock"
+msgid "Punk Rock"
msgstr ""
#: src/libaudgui/infowin.c:105
-msgid "Rock and Roll"
+msgid "Rap"
msgstr ""
#: src/libaudgui/infowin.c:106
-msgid "Rhythm and Blues"
+msgid "Reggae"
msgstr ""
#: src/libaudgui/infowin.c:107
-msgid "Ska"
+msgid "Rock"
msgstr ""
#: src/libaudgui/infowin.c:108
-msgid "Soul"
+msgid "Rock and Roll"
msgstr ""
#: src/libaudgui/infowin.c:109
-msgid "Swing"
+msgid "Rhythm and Blues"
msgstr ""
#: src/libaudgui/infowin.c:110
-msgid "Techno"
+msgid "Ska"
msgstr ""
#: src/libaudgui/infowin.c:111
-msgid "Trip-hop"
-msgstr ""
-
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
+msgid "Soul"
msgstr ""
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
+#: src/libaudgui/infowin.c:112
+msgid "Swing"
msgstr ""
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
+#: src/libaudgui/infowin.c:113
+msgid "Techno"
msgstr ""
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
+#: src/libaudgui/infowin.c:114
+msgid "Trip-hop"
msgstr ""
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
msgstr ""
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
msgstr ""
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
msgstr ""
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
msgstr ""
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
+#: src/libaudgui/infowin.c:418
+#, c-format
+msgid "%d kb/s"
msgstr ""
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
msgstr ""
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
+#: src/libaudgui/infowin.c:453
+#, c-format
+msgid "No info available for %s.\n"
msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
+#: src/libaudgui/jump-to-time.c:52
+msgid "Jump to Time"
msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
+#: src/libaudgui/jump-to-time.c:52
+msgid "Enter time (minutes:seconds):"
msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/playlists.c:86
#, c-format
-msgid "%d kb/s"
+msgid "Overwrite %s?"
msgstr ""
-#: src/libaudgui/infowin.c:548
-#, c-format
-msgid "No info available for %s.\n"
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
msgstr ""
-#: src/libaudgui/jump-to-time.c:51
-msgid "Jump to Time"
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
msgstr ""
-#: src/libaudgui/jump-to-time.c:60
-msgid "Enter time (minutes:seconds):"
+#: src/libaudgui/playlists.c:121
+msgid "Export Playlist"
msgstr ""
-#: src/libaudgui/playlists.c:32
-msgid "Export Playlist"
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
msgstr ""
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr ""
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr ""
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr ""
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
+#: src/libaudgui/ui_playlist_manager.c:223
+msgid "Playlist Manager"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
+#: src/libaudgui/ui_playlist_manager.c:236
+msgid "Entries"
msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
-msgid "Playlist Manager"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:287
-msgid "Entries"
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr ""
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr ""
@@ -983,11 +1021,11 @@ msgstr ""
msgid "Add URL"
msgstr ""
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr ""
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/be.po b/po/be.po
index 2e9e439..7f14802 100644
--- a/po/be.po
+++ b/po/be.po
@@ -3,16 +3,18 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# debconf <prach.by@gmail.com>, 2014
# dreadnote87 <dreadnote87@gmail.com>, 2012
# dreadnote87 <dreadnote87@gmail.com>, 2012
# Mikalai Udodau <crom-a@tut.by>, 2012-2013
+# debconf <prach.by@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-12-16 14:16+0000\n"
-"Last-Translator: meequz <meequz@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Belarusian (http://www.transifex.com/projects/p/audacious/"
"language/be/)\n"
"Language: be\n"
@@ -22,11 +24,11 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "КуĐșаДцца ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -35,129 +37,120 @@ msgstr[1] "%d фаĐčлы Đ·ĐœĐŸĐčĐŽĐ·Đ”ĐœŃ‹Ń"
msgstr[2] "%d фаĐčлаў Đ·ĐœĐŸĐčĐŽĐ·Đ”ĐœĐ°"
msgstr[3] "%d фаĐčлаў Đ·ĐœĐŸĐčĐŽĐ·Đ”ĐœĐ°"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (ĐœĐ”ĐŽĐ°ĐżŃƒŃˆŃ‡Đ°Đ»ŃŒĐœŃ‹ UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "ĐĐŸĐČы ĐżĐ»ŃĐčліст"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "ĐŸĐ°ĐŒŃ‹Đ»ĐșĐ° паЮчас Ń–ĐŒĐżĐ°Ń€Ń‚Ńƒ фаĐčла Winamp EQF file '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "ĐŸĐ°ĐŒŃ‹Đ»ĐșĐ°"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Прапусціць ĐœĐ°Đ·Đ°ĐŽ у ĐżĐ»ŃĐčлісцД"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Пачаць праграĐČаць Đ±ŃĐłŃƒŃ‡Ń‹ спіс"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ПаĐșĐ°Đ·Đ°Ń†ŃŒ ĐČДрсію"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "ĐŸŃ€Ń‹ĐżŃ‹ĐœŃ–Ń†ŃŒ Đ±ŃĐłŃƒŃ‡ŃƒŃŽ ĐżĐ”ŃĐœŃŽ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Пачаць ĐłŃ€Đ°ĐœĐœĐ”"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ĐĄĐżŃ‹ĐœŃ–Ń†ŃŒ Đ±ŃĐłŃƒŃ‡ŃƒŃŽ ĐżĐ”ŃĐœŃŽ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "ĐŸŃ€Ń‹ĐżŃ‹ĐœŃ–Ń†ŃŒ ĐłŃ€Đ°ĐœĐœĐ”"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
-msgstr "ĐŸŃ€Ń‹ĐżŃ‹ĐœŃ–Ń†ŃŒ Đșалі праграĐČаДцца, Ń–ĐœĐ°Ń‡Đ°Đč граць"
+msgstr "ĐŸŃ€Ń‹ĐżŃ‹ĐœŃ–Ń†ŃŒ Đșалі граД, Ń–ĐœĐ°Đșш граць"
+
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ĐĄĐżŃ‹ĐœŃ–Ń†ŃŒ ĐłŃ€Đ°ĐœĐœĐ”"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Прапусціць ĐœĐ°ĐżĐ”Ń€Đ°ĐŽ у ĐżĐ»ŃĐčлісцД"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ПаĐșĐ°Đ·Đ°Ń†ŃŒ ĐŽŃ‹ŃĐ»ĐŸĐł ĐżĐ”Ń€Đ°Ń…ĐŸĐŽŃƒ ĐŽĐ° фаĐčла"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "ДаЮаць фаĐčлы ĐŽĐ° ĐżĐ»ŃĐčĐ»Ń–ŃŃ‚Ńƒ"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "ДаЮаць ĐœĐŸĐČыя фаĐčлы ĐŽĐ° Ń‡Đ°ŃĐŸĐČага ĐżĐ»ŃĐčĐ»Ń–ŃŃ‚Ńƒ"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "ДаЮаць фаĐčлы ĐŽĐ° Ń‡Đ°ŃĐŸĐČага ĐżĐ»ŃĐčĐ»Ń–ŃŃ‚Ńƒ"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ПаĐșĐ°Đ·Đ°Ń†ŃŒ ĐłĐ°Đ»ĐŸŃžĐœĐ°Đ” ĐČĐ°ĐșĐœĐŸ"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Headless-Ń€ŃĐ¶Ń‹ĐŒ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ВыĐčсці па сĐșĐ°ĐœŃ‡ŃĐœĐœŃ– ĐłŃ€Đ°ĐœĐœŃ"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ПаĐșĐ°Đ·Đ°Ń†ŃŒ ĐČДрсію"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "ВыĐČĐŸĐŽĐ·Ń–Ń†ŃŒ паĐČĐ”ĐŽĐ°ĐŒĐ»Đ”ĐœĐœŃ– аЎлаЎĐșі"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ЀАЙЛ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- ĐłŃ€Đ°ĐœĐœĐ” ĐŒŃƒĐ»ŃŒŃ‚Ń‹ĐŒĐ”ĐŽŃ‹ĐčĐœŃ‹Ń… фаĐčлаў"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"ĐŸĐ°ŃĐżŃ€Đ°Đ±ŃƒĐčцД `%s --help' ĐŽĐ»Ń Đ±ĐŸĐ»ŃŒŃˆ ĐżĐ°ĐŽŃ€Đ°Đ±ŃĐ·ĐœŃ‹Ń… Đ·ĐČДстаĐș.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
-msgstr "ĐĐ” Đ·ĐœĐ°ĐčŃˆĐ»ĐŸŃŃ ЮэĐșĐŸĐŽŃŃ€Đ° ĐŽĐ»Ń %s."
+msgstr "ĐĐ” Đ·ĐœĐ°ĐčŃˆĐ»ĐŸŃŃ ЮэĐșĐŸĐŽŃŃ€Ńƒ ĐŽĐ»Ń %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s ĐœĐ”Đ»ŃŒĐłĐ° Đ°ĐŽĐșрыць."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ĐĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° %s %s: тып фаĐčла ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "Đ·Đ°ĐżŃ–ŃĐ°Ń†ŃŒ"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "чытаць"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ĐĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° %s %s: тып фаĐčла ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "ĐĐŸĐČы ĐżĐ»ŃĐčліст"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "ĐŠŃĐżĐ”Ń€ граД"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -165,412 +158,444 @@ msgstr ""
"ĐŸĐ»ŃĐčліст ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° ўпараЮĐșĐ°ĐČаць, Đ±ĐŸ ўсё яшчэ Ń–ĐŽĐ·Đ” Ń‡Ń‹Ń‚Đ°ĐœĐœĐ” ĐŒĐ”Ń‚Đ°Đ·ĐČДстаĐș (ці "
"ŃĐœĐŸ Đ±Ń‹Đ»ĐŸ Đ°ĐŽĐșĐ»ŃŽŃ‡Đ°ĐœĐ°)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Пра %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ĐĐ°ŃŃ‚Đ°ŃžĐ»Đ”ĐœĐœŃ–"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_ĐĄĐșасаĐČаць"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_ЗаĐșрыць"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_ĐĐ°ŃŃ‚ĂĄŃžĐ»Đ”ĐœĐœŃ–"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Пра ĐżŃ€Đ°ĐłŃ€Đ°ĐŒŃƒ"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_ĐŸĐ»Đ°ĐłŃ–ĐœŃ‹ ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Đ’Ń‹ĐłĐ»ŃĐŽ"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "АўЮыё"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
-msgstr "ХДтĐșĐ°"
+msgstr "ХДціĐČĐ°"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ĐŸĐ»ŃĐčліст"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "ЗĐČДстĐșі пра ĐżĐ”ŃĐœŃŽ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ĐŸĐ»Đ°ĐłŃ–ĐœŃ‹"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "ĐĐłŃƒĐ»ŃŒĐœŃ‹Ń"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Đ­Ń„Đ”Đșты"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Đ’Ń–Đ·ŃƒĐ°Đ»Ń–Đ·Đ°Ń†Ń‹Ń"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ĐŁĐČĐŸĐŽ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ĐąŃ€Đ°ĐœŃĐżĐ°Ń€Ń‚"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "ВыĐșĐ°ĐœĐ°ŃžŃ†Đ°"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ĐĐ»ŃŒĐ±ĐŸĐŒ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Đ—Đ°ĐłĐ°Đ»ĐŸĐČĐ°Đș"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
-msgstr "ĐŃƒĐŒĐ°Ń€ трэĐșу"
+msgstr "ĐŃƒĐŒĐ°Ń€ трэĐșĐ°"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Đ–Đ°ĐœŃ€"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "ĐĐ°Đ·ĐČĐ° фаĐčла"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "ĐšĐ»ŃŃ… ĐŽĐ° фаĐčла"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Дата"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Đ“ĐŸĐŽ"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ĐšĐ°ĐŒĐ”ĐœŃ‚Đ°Ń€"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ĐšĐŸĐŽŃĐș"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "ĐŻĐșасць"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
-msgstr "ĐŃ–Ń…Ń‚ĐŸ"
+msgstr "ĐŃ–Ń‡ĐŸĐłĐ°"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "АрабсĐșая"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
-msgstr "БалтыĐčсĐșі"
+msgstr "БалцĐșая"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "КітаĐčсĐșая (ŃĐżŃ€ĐŸŃˆŃ‡Đ°ĐœĐ°Ń)"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ГрэцĐșая"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Іўрыт"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "ĐŻĐżĐŸĐœŃĐșая"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "КарэĐčсĐșая"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "ĐŸĐŸĐ»ŃŒŃĐșая"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
-msgstr "РусĐșая"
+msgstr "РасДĐčсĐșая"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
-msgstr "КітаĐčсĐșая (траЮыцыĐčĐœĐ°Ń)"
+msgstr "йаĐčĐČĐ°ĐœŃŒŃĐșая"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "бурэцĐșая"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "З ĐżĐ»Ń‹ŃžĐœĐŸĐč ĐșĐŸŃĐșĐ°Đč"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Đ ŃĐ¶Ń‹ĐŒ Đ°Đ»ŃŒĐ±ĐŸĐŒĐ°"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ĐĐ°ŃŃ‚ĂĄŃžĐ»Đ”ĐœĐœŃ– Ń–ĐœŃ‚ŃŃ€Ń„Đ”Đčсу</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ĐŸĐ»Đ°ĐłŃ–Đœ ĐČыĐČаЎу:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
-msgstr "<b>ĐĐ°ŃŃ‚Đ°ŃžĐ»Đ”ĐœĐœŃ– ĐČыĐČаЎу</b>"
+msgstr "<b>ĐĐ°ŃŃ‚ĂĄŃžĐ»Đ”ĐœĐœŃ– ĐČыĐČаЎу</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "БітаĐČая ĐłĐ»Ń‹Đ±Ń–ĐœŃ:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "ĐŸĐ°ĐŒĐ”Ń€ Đ±ŃƒŃ„Đ”Ń€Ńƒ:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ĐŒŃ"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "МяĐșĐșая аЎсДчĐșĐ°"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "УжыĐČаць ĐżŃ€Đ°ĐłŃ€Đ°ĐŒĐœŃ‹ Ń€ŃĐłŃƒĐ»ŃŃ‚Đ°Ń€ ĐłŃƒŃ‡ĐœĐ°ŃŃ†Ń– (ĐœĐ” рэĐșĐ°ĐŒĐ”ĐœĐŽŃƒĐ”Ń†Ń†Đ°)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Đ Đ°ŃžĐœĐ°ĐČĐ°ĐœŃ‹ гуĐș</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Đ Đ°ŃžĐœĐ°ĐČаць ĐłŃƒŃ‡ĐœĐ°ŃŃ†ŃŒ трэĐșаў"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Đ ŃĐ¶Ń‹ĐŒ Đ°Đ»ŃŒĐ±ĐŸĐŒĐ°"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "ĐŸŃ€Đ°ĐŽŃƒŃ…Ń–Đ»ŃŃ†ŃŒ аЎсДчĐșу (рэĐșĐ°ĐŒĐ”ĐœĐŽĐ°ĐČĐ°ĐœĐ°)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>ĐŸĐ°ĐŽĐłĐŸĐœĐșĐ° ŃžĐ·Ń€ĐŸŃžĐœŃŽ</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ĐŁĐ·ĐŒĐ°Ń†ĐœŃŃ†ŃŒ усД фаĐčлы:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "ЮБ"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ĐŁĐ·ĐŒĐ°Ń†ĐœŃŃ†ŃŒ фаĐčлы бДз тэгаў:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
-msgstr "Đ†ĐŒŃ Ń…ĐŸŃŃ‚Đ° ĐżŃ€ĐŸĐșсі:"
+msgstr "Đ†ĐŒŃ ĐżŃ€ĐŸĐșсі-Ń…ĐŸŃŃ‚Ńƒ:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "ĐŸĐŸŃ€Ń‚ ĐżŃ€ĐŸĐșсі:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "ĐšĐ°Ń€Ń‹ŃŃ‚Đ°Đ»ŃŒĐœŃ–Đș ĐżŃ€ĐŸĐșсі:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
-msgstr "ĐŸĐ°Ń€ĐŸĐ»ŃŒ:"
+msgstr "ĐŸĐ°Ń€ĐŸĐ»ŃŒ ĐżŃ€ĐŸĐșсі:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ĐšĐ°ĐœŃ„Ń–ĐłŃƒŃ€Đ°Ń†Ń‹Ń ĐżŃ€ĐŸĐșсі</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
-msgstr "ĐŁĐșĐ»ŃŽŃ‡Ń‹Ń†ŃŒ ĐżŃ€ĐŸĐșсі"
+msgstr "УжыĐČаць ĐżŃ€ĐŸĐșсі"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "УжыĐČаць Đ°ŃžŃ‚ŃĐœŃ‚Ń‹Ń„Ń–Đșацыю ĐœĐ° ĐżŃ€ĐŸĐșсі"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "АўтаĐČŃ‹Đ·ĐœĐ°Ń‡ŃĐœĐœĐ” Đ·ĐœĐ°ĐșĐ°Đ·Đ±ĐŸŃ€Ńƒ ĐŽĐ»Ń:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ĐŸŃ€Ń‹ĐŒĐ°Ń†ŃŒ ĐœĐ”Ń€Đ°ŃĐżĐ°Đ·ĐœĐ°ĐœŃ‹ Đ·ĐœĐ°ĐșĐ°Đ·Đ±ĐŸŃ€ яĐș:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>ПаĐČĐŸĐŽĐ·Ń–ĐœŃ‹</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
-msgstr "ПрацягĐČаць праграĐČĐ°ĐœĐœĐ” пры запусĐșу"
+msgstr "ПрацягĐČаць ĐłŃ€Đ°ĐœĐœĐ” пры запусĐșу"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
-msgstr "ĐŸĐ”Ń€Đ°Đčсці ĐŽĐ° ĐœĐ°ŃŃ‚ŃƒĐżĐœĐ°Đč па ŃŃ†Ń–Ń€Đ°ĐœĐœŃ– ĐżĐ”ŃĐœŃ–"
+msgstr "ĐŸĐ”Ń€Đ°Đčсці ĐŽĐ° ĐœĐ°ŃŃ‚ŃƒĐżĐœĐ°Đč па ĐČŃ‹ĐŽĐ°Đ»Đ”ĐœĐœŃ– ĐżĐ”ŃĐœŃ–"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
-msgstr "Ачышчаць ĐżĐ»ŃĐčліст па Đ°ĐŽĐșрыцці фаĐčла"
+msgstr "ĐĄĐżŃƒŃŃ‚ĐŸŃˆŃ‹Ń†ŃŒ ĐżĐ»ŃĐčліст па Đ°ĐŽĐșрыцці фаĐčла"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "АЎĐșрыĐČаць фаĐčлы ў Ń‡Đ°ŃĐŸĐČŃ‹ĐŒ ĐżĐ»ŃĐčлісцД"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ĐĐ” чытаць ĐŒĐ”Ń‚Đ°Đ·ĐČДстĐșі, паĐșŃƒĐ»ŃŒ ĐżĐ”ŃĐœŃ ĐœĐ” праĐčграĐČĐ°Đ»Đ°ŃŃ"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>ĐĄŃƒĐŒŃŃˆŃ‡Đ°Đ»ŃŒĐœĐ°ŃŃ†ŃŒ</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Чытаць \\ (Đ°ĐŽĐČĐ°Ń€ĐŸŃ‚ĐœŃ‹ сĐșĐŸŃ) яĐș ĐŒĐ”Đ¶ĐœŃ–Đș ĐșĐ°Ń‚Đ°Đ»ĐŸĐłŃƒ"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ĐŃ„Đ°Ń€ĐŒĐ»Đ”ĐœĐœĐ” Đ°Đ»ŃŒĐ±ĐŸĐŒĐ°</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "КуĐșаць ĐČыяĐČы, у яĐșіх ёсць ŃĐ»ĐŸĐČы (пДраліĐș праз ĐșĐŸŃĐșу):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "За ĐČыĐșĐ»ŃŽŃ‡ŃĐœĐœĐ”ĐŒ ĐČыяў, у яĐșіх ёсць ŃĐ»ĐŸĐČы (пДраліĐș праз ĐșĐŸŃĐșу):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "КуĐșаць ĐČыяĐČы, аЎпаĐČĐ”ĐŽĐœŃ‹Ń ĐœĐ°Đ·ĐČĐ” фаĐčла Đ· ĐżĐ”ŃĐœŃĐč"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "РэĐșŃƒŃ€ŃŃ–ŃžĐœŃ‹ ĐżĐŸŃˆŃƒĐș"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Đ“Đ»Ń‹Đ±Ń–ĐœŃ ĐżĐŸŃˆŃƒĐșу:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
-msgstr "<b>ĐŁŃĐżĐ»Ń‹ŃžĐœŃ‹Ń Đ·ĐČДстĐșі</b>"
+msgstr "<b>Đ’Ń‹ĐżĐ»Ń‹ŃžĐœŃ‹Ń Đ·ĐČДстĐșі</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
-msgstr "ПаĐșĐ°Đ·ĐČаць ŃƒŃĐżĐ»Ń‹ŃžĐœŃ‹Ń паĐČĐ”ĐŽĐ°ĐŒĐ»Đ”ĐœĐœŃ–"
+msgstr "ПаĐșĐ°Đ·ĐČаць ĐČŃ‹ĐżĐ»Ń‹ŃžĐœŃ‹Ń паĐČĐ”ĐŽĐ°ĐŒĐ»Đ”ĐœĐœŃ–"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Đ—Đ°Ń‚Ń€Ń‹ĐŒĐșĐ° паĐČĐ”ĐŽĐ°ĐŒĐ»Đ”ĐœĐœŃ (ĐŽĐ·ŃŃŃŃ‚Ń‹Ń сДĐșŃƒĐœĐŽŃ‹):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
-msgstr "ПаĐșĐ°Đ·ĐČаць Ń‡Đ°ŃĐŸĐČую шĐșалу ĐŽĐ»Ń Đ±ŃĐłŃƒŃ‡Đ°Đč ĐżĐ”ŃĐœŃ–"
+msgstr "ПаĐșĐ°Đ·ĐČаць часаĐČую шĐșалу ĐŽĐ»Ń ĐŽĐ·Đ”ĐčĐœĐ°Đč ĐżĐ”ŃĐœŃ–"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "НАЗВА"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "Đ’Đ«ĐšĐĐĐĐŽĐŠĐ - НАЗВА"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "Đ’Đ«ĐšĐĐĐĐŽĐŠĐ - АЛЬБОМ - НАЗВА"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "Đ’Đ«ĐšĐĐĐĐŽĐŠĐ - АЛЬБОМ - НУМАР. НАЗВА"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "Đ’Đ«ĐšĐĐĐĐŽĐŠĐ [ АЛЬБОМ ] - НУМАР. НАЗВА"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "АЛЬБОМ - НАЗВА"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ĐšĐ°Ń‚ŃĐłĐŸŃ€Ń‹Ń"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "ĐĐŽĐŒŃ‹ŃĐ»ĐŸĐČыя"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>ПаĐșĐ°Đ· ĐżĐ”ŃĐœŃ–</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "ПаĐșĐ°Đ·ĐČаць ĐœŃƒĐŒĐ°Ń€Ń‹ ĐżĐ”ŃĐ”ĐœŃŒ"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ПаĐșĐ°Đ·ĐČаць пачатĐșĐŸĐČыя ĐœŃƒĐ»Ń– (02:00 Đ·Đ°ĐŒĐ”ŃŃ‚ 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "ПаĐșĐ°Đ·ĐČаць Ń–ĐœŃ„Đ°Ń€ĐŒĐ°Ń†Ń‹ŃŽ па Ń„Đ°Ń€ĐŒĐ°Ń‚Ńƒ раЮĐșĐ° Đ·Đ°ĐłĐ°Đ»ĐŸŃžĐșĐ°"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "ĐĐŽĐŒŃ‹ŃĐ»ĐŸĐČы Ń€Đ°ĐŽĐŸĐș:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Đ€Đ°Ń€ĐŒĐ°Ń‚ Đ·Đ°ĐłĐ°Đ»ĐŸŃžĐșĐ°:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "ĐŸĐ»Đ°ĐłŃ–Đœ ĐČыĐČаЎу:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ĐąŃ€Đ°ĐœŃĐżĐ°Ń€Ń‚"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ĐŁĐČĐŸĐŽ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Đ­Ń„Đ”Đșты"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Đ’Ń–Đ·ŃƒĐ°Đ»Ń–Đ·Đ°Ń†Ń‹Ń"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "ĐĐłŃƒĐ»ŃŒĐœŃ‹Ń"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ĐĐŽĐŒŃ‹ŃĐ»ĐŸĐČы Ń€Đ°ĐŽĐŸĐș:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "ĐŸĐ”Ń€Đ°ĐČĐ°Đ¶Đ°ĐœĐœŃ– Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ĐĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° стĐČарыць ĐșĐ°Ń‚Đ°Đ»ĐŸĐł (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "ĐŸĐ°Đ·Ń–Ń†Ń‹Ń ĐœĐ” Đ·ĐœĐŸĐčĐŽĐ·Đ”ĐœĐ°."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ĐĐ” граД ĐżĐ”ŃĐœŃ."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, трэĐș %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ĐœĐŸĐœĐ°"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Стэрэа"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -587,409 +612,420 @@ msgstr "Аўтары"
msgid "License"
msgstr "Đ›Ń–Ń†ŃĐœĐ·Ń–Ń"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Пра Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Вы ŃžĐżŃŃžĐœĐ”ĐœŃ‹, ŃˆŃ‚ĐŸ Ń…ĐŸŃ‡Đ°Ń†Đ” Đ·Đ°Đșрыць %s? Калі ĐČы гэта Đ·Ń€ĐŸĐ±Ń–Ń†Đ”, усД Đ·ĐŒŃĐœĐ”ĐœĐœŃ–, "
-"Đ·Ń€ĐŸĐ±Đ»Đ”ĐœŃ‹Ń ĐżĐ°ŃĐ»Ń эĐșспарту ĐżĐ»ŃĐčĐ»Ń–ŃŃ‚Ńƒ, Đ±ŃƒĐŽŃƒŃ†ŃŒ Đ·ĐłŃƒĐ±Đ»Đ”ĐœŃ‹."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ЗаĐșрыць ĐżĐ»ŃĐčліст"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Đ’Ń‹ĐŽĐ°Đ»Ń–Ń†ŃŒ"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "Đ‘ĐŸĐ»ŃŒŃˆ ĐœĐ” паĐșĐ°Đ·_ĐČаць гэта паĐČĐ”ĐŽĐ°ĐŒĐ»Đ”ĐœĐœĐ”"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ĐŸĐ”Ń€Đ°ĐœĐ°Đ·ĐČаць ĐżĐ»ŃĐčліст"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ĐœĐ°ŃŃ‚Đ°ŃžĐ»Đ”ĐœĐœŃ– ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_ĐŁĐșĐ»ŃŽŃ‡Ń‹Ń†ŃŒ"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Гц"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "2 ĐșГц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 ĐșГц"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Đ­ĐșĐČалаĐčзДр"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ĐŸĐ”Ń€Đ°ĐŽŃƒĐ·ĐŒĐ°Ń†ĐœĐ”ĐœĐœĐ”"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "брэĐș"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Đ”Đ°ŃžĐ¶Ń‹ĐœŃ"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Đ€Đ°Ń€ĐŒĐ°Ń‚:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "ĐŻĐșасць:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "БітрэĐčт:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Đ­ĐčсіЮ Ўжаз"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Đ­ĐčсіЮ Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Đ­ĐŒĐ±Ń–Đ”ĐœŃ‚"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Đ‘Ń–ĐżĐŸĐż"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Блюграс"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Блюз"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ĐšĐ°ĐŒĐ”Ń€ĐœĐ°Ń ĐŒŃƒĐ·Ń‹ĐșĐ°"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ĐšĐ»Đ°ŃŃ–Ń‡ĐœĐ°Ń ĐŒŃƒĐ·Ń‹ĐșĐ°"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "ĐšĐ°ĐœŃ‚Ń€Ń‹"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Đ”ŃĐ·-ĐŒĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ДысĐșĐ°"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
-msgstr "ЛёгĐșĐ°Đ” ŃĐ»ŃƒŃ…Đ°ĐœĐœĐ”"
+msgstr "ЛёгĐșая ĐœŃƒĐ·Ń‹ĐșĐ°"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Đ€ĐŸĐ»Đș"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Đ€Đ°ĐœĐș"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Đ“Đ°ĐœŃŃ‚Đ° рэп"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
-msgstr "Đ“ĐŸŃĐżĐ”Đ»"
+msgstr "ЕĐČĐ°ĐœĐłĐ”Đ»Ń–Ń‡ĐœŃ‹Ń спДĐČы"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Đ“Ń€Đ°ĐœĐ¶"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "ЄарЎ-Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Đ„ŃĐČі-ĐŒĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Đ„Ń–Đż-Ń…ĐŸĐż"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "Єаўз"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Джаз"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Đ”Đ¶Đ°ĐœĐłĐ»"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "ĐœĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
-msgstr "Нью эĐčЎж"
+msgstr "Нью Đ­ĐčЎж"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "ĐĐŸĐČая хĐČĐ°Đ»Ń"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ĐĐŸĐčĐ·"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "ĐŸĐŸĐż"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "ĐŸĐ°ĐœĐș-Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Рэп"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Рэгі"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
-msgstr "Đ ĐŸĐș-ŃĐœ-Ń€ĐŸĐ»Đ»"
+msgstr "Đ ĐŸĐș'Đœ'Ń€ĐŸĐ»Đ»"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
-msgstr "Đ Ń‹Ń‚ĐŒ-ŃĐœ-блюз"
+msgstr "Đ Ń‹Ń‚ĐŒ'Đœ'блюз"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "ĐĄĐșĐ°"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "ĐĄĐŸŃžĐ»"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "ĐĄĐČŃ–ĐœĐł"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "ĐąŃŃ…ĐœĐ°"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "брып-Ń…ĐŸĐż"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ĐœĐ”Ń‚Đ°Đ·ĐČДстĐșі ĐżĐ°ŃĐżŃŃ…ĐŸĐČĐ° Đ°Đ±ĐœĐŸŃžĐ»Đ”ĐœŃ‹"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ĐĐ±ĐœĐ°ŃžĐ»Đ”ĐœĐœĐ” ĐŒĐ”Ń‚Đ°Đ·ĐČДстаĐș схібіла"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Đ†ĐœŃ„Đ°Ń€ĐŒĐ°Ń†Ń‹Ń па трэĐșу"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Đ€Đ°Ń€ĐŒĐ°Ń‚:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">ĐŻĐșасць:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">БітрэĐčт:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Đ—Đ°ĐłĐ°Đ»ĐŸĐČĐ°Đș</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ВыĐșĐ°ĐœĐ°ŃžŃ†Đ°</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ĐĐ»ŃŒĐ±ĐŸĐŒ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ĐšĐ°ĐŒĐ”ĐœŃ‚Đ°Ń€</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Đ–Đ°ĐœŃ€</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Đ“ĐŸĐŽ</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ĐŃƒĐŒĐ°Ń€ трэĐșĐ°</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d Кб/с"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
-msgstr "ĐŃĐŒĐ° ĐŽĐ°ŃŃ‚ŃƒĐżĐœŃ‹Ń… Đ·ĐČДстаĐș па %s.\n"
+msgstr "ĐŃĐŒĐ° Đ·ĐČДстаĐș па %s.\n"
+
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ĐŸĐ”Ń€Đ°Đčсці ĐŽĐ° часу"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ĐŁĐČŃĐŽĐ·Ń–Ń†Đ” час (ĐŒŃ–ĐœŃƒŃ‚:сДĐșŃƒĐœĐŽ):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ĐŸĐ”Ń€Đ°Đ·Đ°ĐżŃ–ŃĐ°Ń†ŃŒ %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Đ­ĐșспартаĐČаць ĐżĐ»ŃĐčліст"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Đ†ĐŒĐżĐ°Ń€Ń‚Đ°ĐČаць ĐżĐ»ŃĐčліст"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ĐŸĐ”Ń€Đ°ĐżŃ–ŃĐ°Ń†ŃŒ %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "ĐšŃ–Ń€Đ°ŃžĐœŃ–Đș чаргі"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "АЎĐșрыць фаĐčлы"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_АЎĐșрыць"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "ДаЮаць фаĐčлы"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ЗаĐșрыць ĐŽŃ‹ŃĐ»ĐŸĐł па Đ°ĐŽĐșрыцці"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ЗаĐșрыць ĐŽŃ‹ŃĐ»ĐŸĐł па ĐŽĐ°ĐŽĐ°ĐœĐœŃ–"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "У чаргу"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "З чаргі"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ĐŸĐ”Ń€Đ°Đčсці ĐŽĐ° ĐżĐ”ŃĐœŃ–"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Đ€Ń–Đ»ŃŒŃ‚Ń€: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "Đ€Ń–Đ»ŃŒŃ‚_р:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Đ—Đ°ĐżĐŸĐŒĐœŃ–Ń†ŃŒ"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Ачысціць"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ЗаĐșрыць па ĐżĐ”Ń€Đ°Ń…ĐŸĐŽĐ·Đ”"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "ĐšŃ–Ń€Đ°ŃžĐœŃ–Đș ĐżĐ»ŃĐčĐ»Ń–ŃŃ‚ĐŸŃž"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Запісы"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "ĐŸĐ”Ń€Đ°ĐœĐ°Đ·ĐČаць"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_ĐĐŸĐČы"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "ĐŸĐ”Ń€Đ°_ĐœĐ°Đ·ĐČаць"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Граць"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
-msgstr "ЗаĐșрыць ĐŽŃ‹ŃĐ»ĐŸĐł па Đ°ĐșтыĐČацыі ĐżĐ»ŃĐčлі_ста"
+msgstr "ЗаĐșрыць ĐŽŃ‹ŃĐ»ĐŸĐł па Đ°ĐșтыĐČацыі ĐżĐ»ŃĐčлі_сту"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "АЎĐșрыць URL"
@@ -997,11 +1033,11 @@ msgstr "АЎĐșрыць URL"
msgid "Add URL"
msgstr "ДаЮаць URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "ĐŁĐČŃĐŽĐ·Ń–Ń†Đ” URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/bg.po b/po/bg.po
index 2a8a0d1..f73f782 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -3,17 +3,21 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# breaker loc <breaker9loc@gmail.com>, 2014
# Kiril Kirilov (Cybercop) <acybecop_montana@abv.bg>, 2012
+# cybercop <cybercop_montana@abv.bg>, 2014
+# Pandi3a <pandi3a@gmail.com>, 2012
# Pandi3a <pandi3a@gmail.com>, 2012
# Đ“Đ”ĐŸŃ€ĐłĐž ĐŸĐ°Ń†Đ”ĐČ <>, 2012
+# Đ Đ°ĐŽĐŸŃĐ»Đ°ĐČ <reckku@gmail.com>, 2013-2014
# Đ Đ°ĐŽĐŸŃĐ»Đ°ĐČ <reckku@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-09-25 09:42+0000\n"
-"Last-Translator: Đ Đ°ĐŽĐŸŃĐ»Đ°ĐČ <reckku@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-06 13:28+0000\n"
+"Last-Translator: cybercop <cybercop_montana@abv.bg>\n"
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/audacious/"
"language/bg/)\n"
"Language: bg\n"
@@ -22,140 +26,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "ĐąŃŠŃ€ŃĐ”ĐœĐ”..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "ĐĐ°ĐŒĐ”Ń€Đ”ĐœĐžŃŃ‚ фаĐčĐ» Đ” %d"
msgstr[1] "ĐĐ°ĐŒĐ”Ń€Đ”ĐœĐžŃ‚Đ” фаĐčĐ»ĐŸĐČĐ” са: %d"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(ĐœĐ”ĐČĐ°Đ»ĐžĐŽĐ”Đœ UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "ĐĐŸĐČ ŃĐżĐžŃŃŠĐș Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Đ“Ń€Đ”ŃˆĐșĐ° про ĐČĐœĐ°ŃŃĐœĐ” ĐœĐ° Winamp EQF фаĐčĐ» „%s“"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Đ“Ń€Đ”ŃˆĐșĐ°"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ОтоĐČĐ°ĐœĐ” ĐœĐ° ĐżŃ€Đ”ĐŽĐžŃˆĐœĐ°Ń‚Đ° ĐżĐ”ŃĐ”Đœ ĐČ ŃĐżĐžŃŃŠĐșĐ°"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "ĐŸĐŸĐșажО ĐżĐŸĐŒĐŸŃ‰ Đ·Đ° Ń€Đ°Đ±ĐŸŃ‚Đ° ĐČ ĐșĐŸĐŒĐ°ĐœĐŽĐ”Đœ рДЎ"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "ĐĄŃ‚Đ°Ń€Ń‚ĐžŃ€Đ°ĐœĐ” ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”Ń‚ĐŸ ĐœĐ° Ń‚Đ”Đșущоят спосъĐș"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐČĐ”Ń€ŃĐžŃŃ‚Đ°"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Đ’Ń€Đ”ĐŒĐ”ĐœĐœĐŸ ŃĐżĐžŃ€Đ°ĐœĐ” ĐœĐ° Ń‚Đ”Đșущата ĐżĐ”ŃĐ”Đœ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "ĐĄŃ‚Đ°Ń€Ń‚ĐžŃ€Đ°ĐœĐ”"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ĐĄĐżĐžŃ€Đ°ĐœĐ” ĐœĐ° Ń‚Đ”Đșущата ĐżĐ”ŃĐ”Đœ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "ĐŸĐ°ŃƒĐ·Đ°"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Đ’Ń€Đ”ĐŒĐ”ĐœĐœĐŸ ŃĐżĐžŃ€Đ°ĐœĐ”, Đ°ĐșĐŸ сД ĐžĐ·ĐżŃŠĐ»ĐœŃĐČĐ°, ĐČ ĐżŃ€ĐŸŃ‚ĐžĐČĐ”Đœ ŃĐ»ŃƒŃ‡Đ°Đč ― ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ОтоĐČĐ°ĐœĐ” ĐœĐ° слДЎĐČащата ĐżĐ”ŃĐ”Đœ ĐČ ŃĐżĐžŃŃŠĐșĐ°"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ĐĄĐżĐžŃ€Đ°ĐœĐ”"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń† â€žĐŸŃ€Đ”ŃĐșĐ°Ń‡Đ°ĐœĐ” ĐŽĐŸ фаĐčĐ»â€œ"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "ĐŸŃ€Đ”ŃĐșĐŸŃ‡Đž ĐŽĐŸ ĐżŃ€Đ”ĐŽĐžŃˆĐœĐ°Ń‚Đ° ĐżĐ”ŃĐ”Đœ"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "ĐŸŃ€Đ”ŃĐșĐŸŃ‡Đž ĐŽĐŸ слДЎĐČащата ĐżĐ”ŃĐ”Đœ"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Đ”ĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ” ĐČ ŃĐżĐžŃŃŠĐșĐ° Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Đ”ĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° ĐœĐŸĐČĐž фаĐčĐ»ĐŸĐČĐ” ĐČъĐČ ĐČŃ€Đ”ĐŒĐ”ĐœĐœĐžŃŃ‚ спосъĐș"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Đ”ĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ” ĐșŃŠĐŒ ĐČŃ€Đ”ĐŒĐ”ĐœĐ”Đœ спосъĐș"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐŸŃĐœĐŸĐČĐœĐžŃ ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń†"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "ĐšĐŸĐŒĐżĐ°ĐșŃ‚Đ”Đœ Ń€Đ”Đ¶ĐžĐŒ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "ĐŸĐŸĐșажО ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń†Đ° ĐŸŃ€Đ”ŃĐșĐŸŃ‡Đž ĐŽĐŸ ĐżĐ”ŃĐ”Đœ"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "ПусĐșĐ°ĐœĐ” бДз ĐłŃ€Đ°Ń„ĐžŃ‡Đ”Đœ ĐžĐœŃ‚Đ”Ń€Ń„Đ”Đčс"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Đ˜Đ·Ń…ĐŸĐŽ про ŃĐżĐžŃ€Đ°ĐœĐ” ĐœĐ° ĐČŃŠĐ·ĐżŃ€ĐŸĐžĐ·ĐČĐ”Đ¶ĐŽĐ°ĐœĐ”Ń‚ĐŸ"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐČĐ”Ń€ŃĐžŃŃ‚Đ°"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "ИзĐČĐ”Đ¶ĐŽĐ°ĐœĐ” ĐœĐ° ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃŃ‚Đ° Đ·Đ° ĐŸŃ‚ŃŃ‚Ń€Đ°ĐœŃĐČĐ°ĐœĐ” ĐœĐ° ĐłŃ€Đ”ŃˆĐșĐž"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ЀАЙЛ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚Đ° ĐŸĐżŃ†ĐžŃ: %s \n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ” ĐœĐ° ĐŒŃƒĐ»Ń‚ĐžĐŒĐ”ĐŽĐžĐčĐœĐž фаĐčĐ»ĐŸĐČĐ”"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "ĐĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐ° ĐŸĐżŃ†ĐžŃ: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-msgstr ""
-"%s: %s\n"
-"ОпотаĐčŃ‚Đ” „%s --help“ Đ·Đ° ĐżĐŸĐČДчД ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr "ĐŁĐżĐŸŃ‚Ń€Đ”Đ±Đ°: audacious [ОПЩИЯ] ... [ЀАЙЛ] ...\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "ĐŃƒĐŽĐžĐŸ плДър - Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "ĐĐ” Đ” ĐœĐ°ĐŒĐ”Ń€Đ”Đœ ĐŽĐ”ĐșĐŸĐŽĐ”Ń€ Đ·Đ° %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐŸŃ‚ĐČĐ°Ń€ŃĐœĐ” ĐœĐ° %s."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ĐĐ”ĐČŃŠĐ·ĐŒĐŸĐ¶ĐœĐŸ %s %s: ĐœĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°ĐœĐŸ фаĐčĐ»ĐŸĐČĐŸ Ń€Đ°Đ·ŃˆĐžŃ€Đ”ĐœĐžĐ”."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "запазĐČĐ°ĐœĐ”"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "%s ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД Đ·Đ°Ń€Đ”ĐŽĐ”Đœ: ĐœĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°ĐœĐŸ Ń€Đ°Đ·ŃˆĐžŃ€Đ”ĐœĐžĐ”."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "Đ·Đ°Ń€Đ”Đ¶ĐŽĐ°ĐœĐ”"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ĐĐ”ĐČŃŠĐ·ĐŒĐŸĐ¶ĐœĐŸ %s %s: ĐœĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°ĐœĐŸ фаĐčĐ»ĐŸĐČĐŸ Ń€Đ°Đ·ŃˆĐžŃ€Đ”ĐœĐžĐ”."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "ĐĐŸĐČ ŃĐżĐžŃŃŠĐș Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "%s ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД Đ·Đ°ĐżĐ°ĐŒĐ”Ń‚Đ”Đœ: ĐœĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°ĐœĐŸ Ń€Đ°Đ·ŃˆĐžŃ€Đ”ĐœĐžĐ”."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Đ˜Đ·ĐżŃŠĐ»ĐœŃĐČĐ° сД"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -163,414 +158,446 @@ msgstr ""
"СпосъĐșът ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД ŃĐŸŃ€Ń‚ĐžŃ€Đ°Đœ, Đ·Đ°Ń‰ĐŸŃ‚ĐŸ сĐșĐ°ĐœĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐœĐžŃ‚Đ” ОлО Đ” "
"ĐČсД ĐŸŃ‰Đ” ĐČ ĐżŃ€ĐŸĐłŃ€Đ”Ń, ОлО Đ” Đ±ĐžĐ»ĐŸ ОзĐșĐ»ŃŽŃ‡Đ”ĐœĐŸ."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "ĐžŃ‚ĐœĐŸŃĐœĐŸ %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "ĐžŃ‚ĐœĐŸŃĐœĐŸ"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_ЗаЮаĐč"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_ОтĐșĐ°Đ·"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_ЗатĐČĐ°Ń€ŃĐœĐ”"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_ĐžŃ‚ĐœĐŸŃĐœĐŸ"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_ПростаĐČĐșĐž..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Đ’ŃŠĐœŃˆĐ”Đœ ĐČОЎ"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "ĐŃƒĐŽĐžĐŸ"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Đ˜ĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ ĐŒŃ€Đ”Đ¶Đ°"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "СпосъĐș Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ Đ·Đ° ĐżĐ”ŃĐ”ĐœŃ‚Đ°"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Đ Đ°Đ·ŃˆĐžŃ€Đ”ĐœĐžŃ"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "ОбщО"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Đ•Ń„Đ”Đșто"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Đ’ĐžĐ·ŃƒĐ°Đ»ĐžĐ·Đ°Ń†ĐžŃ"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Đ’Ń…ĐŸĐŽ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ĐŸŃ€Đ”ĐœĐ°ŃŃĐœĐ”"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Đ˜Đ·ĐżŃŠĐ»ĐœĐžŃ‚Đ”Đ»"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ĐĐ»Đ±ŃƒĐŒ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "ЗаглаĐČОД"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "ĐĐŸĐŒĐ”Ń€ ĐœĐ° запОс"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Đ–Đ°ĐœŃ€"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Đ˜ĐŒĐ” ĐœĐ° фаĐčĐ»"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Път ĐŽĐŸ фаĐčĐ»"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Дата"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Đ“ĐŸĐŽĐžĐœĐ°"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ĐšĐŸĐŒĐ”ĐœŃ‚Đ°Ń€"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ĐšĐŸĐŽĐžŃ€ĐŸĐČĐșĐ°"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "КачДстĐČĐŸ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "БДз"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "АрабсĐșĐž"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "БалтОĐčсĐșĐž"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "КотаĐčсĐșĐž"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ГръцĐșĐž"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ИĐČрот"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "ĐŻĐżĐŸĐœŃĐșĐž"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "ĐšĐŸŃ€Đ”ĐčсĐșĐž"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "ĐŸĐŸĐ»ŃĐșĐž"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "РусĐșĐž"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "йаĐčĐČĐ°ĐœŃĐșĐž"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "бурсĐșĐž"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "ĐŸĐ»Đ°ĐČаща Đ·Đ°ĐżĐ”Ń‚Đ°Ń"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "В Ń€Đ”Đ¶ĐžĐŒ â€žĐĐ»Đ±ŃƒĐŒâ€œ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐœĐ° ĐžĐœŃ‚Đ”Ń€Ń„Đ”Đčса</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ПростаĐČĐșĐ° Đ·Đ° ĐžĐœŃ‚Đ”Ń€Ń„Đ”Đčса:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ПростаĐČĐșĐ° Đ·Đ° ĐžĐ·Ń…ĐŸĐŽŃŃ‰ĐžŃ ĐżĐŸŃ‚ĐŸĐș:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐœĐ° ĐžĐ·Ń…ĐŸĐŽŃŃ‰ĐžŃ ĐżĐŸŃ‚ĐŸĐș</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Đ”ŃŠĐ»Đ±ĐŸŃ‡ĐžĐœĐ° ĐČ Đ±ĐžŃ‚ĐŸĐČĐ”:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Đ Đ°Đ·ĐŒĐ”Ń€ ĐœĐ° Đ±ŃƒŃ„Đ”Ń€Đ°:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ĐŒŃ"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "ĐĐ°ĐŒĐ°Đ»ŃĐČĐ°ĐœĐ” ĐœĐ° ĐżŃ€Đ°Ń‰Đ”ĐœĐ”"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr ""
"Đ˜Đ·ĐżĐŸĐ»Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐœĐŸ Ń€Đ”ĐłŃƒĐ»ĐžŃ€Đ°ĐœĐ” ĐœĐ° сОлата ĐœĐ° Đ·ĐČуĐșĐ° (ĐœĐ” Đ” ĐżŃ€Đ”ĐżĐŸŃ€ŃŠŃ‡ĐžŃ‚Đ”Đ»ĐœĐŸ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>ĐŸĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ усОлĐČĐ°ĐœĐ”</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ВĐșлючĐČĐ°ĐœĐ” ĐœĐ° ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ усОлĐČĐ°ĐœĐ”"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "В Ń€Đ”Đ¶ĐžĐŒ â€žĐĐ»Đ±ŃƒĐŒâ€œ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "ĐŸŃ€Đ”ĐŽĐŸŃ‚ĐČратяĐČĐ°ĐœĐ” ĐœĐ° ĐżŃ€Đ°Ń‰Đ”ĐœĐ” (ĐżŃ€Đ”ĐżĐŸŃ€ŃŠŃ‡ĐžŃ‚Đ”Đ»ĐœĐŸ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐČĐ°ĐœĐ” ĐœĐ° ĐœĐžĐČата ĐœĐ° Đ·ĐČуĐșĐ°</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "УсОлĐČĐ°ĐœĐ” ĐœĐ° Đ·ĐČуĐșĐ° Đ·Đ° ĐČсочĐșĐž фаĐčĐ»ĐŸĐČĐ”:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "ЮБ"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "УсОлĐČĐ°ĐœĐ” ĐœĐ° Đ·ĐČуĐșĐ° ĐœĐ° ĐœĐ”ĐŒĐ°Ń€ĐșĐžŃ€Đ°ĐœĐžŃ‚Đ” фаĐčĐ»ĐŸĐČĐ”:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "ĐŸŃ€ĐŸĐșсО:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "ĐŸĐŸŃ€Ń‚ ĐœĐ° ĐżŃ€ĐŸĐșсО:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "ĐŸĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐŸ ĐžĐŒĐ”:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "ĐŸĐ°Ń€ĐŸĐ»Đ°:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐœĐ° ĐżŃ€ĐŸĐșсО</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ВĐșлючĐČĐ°ĐœĐ” ĐœĐ° ĐżŃ€ĐŸĐșсО"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Đ˜Đ·ĐżĐŸĐ»Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐžĐŽĐ”ĐœŃ‚ĐžŃ„ĐžŃ†ĐžŃ€Đ°ĐœĐ” с ĐżŃ€ĐŸĐșсО"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "АĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡ĐœĐŸ ĐŸĐżŃ€Đ”ĐŽĐ”Đ»ŃĐœĐ” ĐœĐ° ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșĐ° Đ·Đ°:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ĐĐ»Ń‚Đ”Ń€ĐœĐ°Ń‚ĐžĐČĐœĐ° ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșĐ°:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>ĐŸĐŸĐČĐ”ĐŽĐ”ĐœĐžĐ”</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ĐŸŃ€ĐŸĐŽŃŠĐ»Đ¶Đž ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”Ń‚ĐŸ про ŃŃ‚Đ°Ń€Ń‚ĐžŃ€Đ°ĐœĐ”"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "ĐŸŃ€ĐŸĐŽŃŠĐ»Đ¶Đ°ĐČĐ°ĐœĐ” ĐœĐ°ĐżŃ€Đ”ĐŽ, Đ°ĐșĐŸ Ń‚Đ”Đșущата ĐżĐ”ŃĐ”Đœ Đ” ĐżŃ€Đ”ĐŒĐ°Ń…ĐœĐ°Ń‚Đ°"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Đ˜Đ·Ń‡ĐžŃŃ‚ĐČĐ°ĐœĐ” ĐœĐ° спосъĐșĐ°, ĐșĐŸĐłĐ°Ń‚ĐŸ сД ĐŸŃ‚ĐČĐŸŃ€Đž ĐœĐŸĐČ Ń„Đ°ĐčĐ»"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ” ĐČъĐČ ĐČŃ€Đ”ĐŒĐ”ĐœĐ”Đœ спосъĐș"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Да ĐœĐ” сД зарДжЎат ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐœĐž Đ·Đ° ĐżĐ”ŃĐœĐžŃ‚Đ”, ĐŽĐŸĐșĐ°Ń‚ĐŸ сД ĐžĐ·ĐżŃŠĐ»ĐœŃĐČат"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>СъĐČĐŒĐ”ŃŃ‚ĐžĐŒĐŸŃŃ‚</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Đ—ĐœĐ°Đșът „\\“ ĐŽĐ° сД Ń‚ŃŠĐ»ĐșуĐČĐ° ĐșĐ°Ń‚ĐŸ раЎДлОтДл ĐœĐ° папĐșОтД ĐČ ĐżŃŠŃ‚Ń ĐŽĐŸ фаĐčла"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ĐžĐ±Đ»ĐŸĐ¶ĐșĐ° ĐœĐ° Đ°Đ»Đ±ŃƒĐŒ</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "ĐąŃŠŃ€ŃĐ”ĐœĐ” ĐœĐ° ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ, съЎържащО тДзО ĐŽŃƒĐŒĐž (Ń€Đ°Đ·ĐŽĐ”Đ»Đ”ĐœĐž със Đ·Đ°ĐżĐ”Ń‚Đ°Ń):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"ИзĐșлючĐČĐ°ĐœĐ” ĐœĐ° ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ, съЎържащО тДзО ĐŽŃƒĐŒĐž (Ń€Đ°Đ·ĐŽĐ”Đ»Đ”ĐœĐž със Đ·Đ°ĐżĐ”Ń‚Đ°Ń):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "ĐąŃŠŃ€ŃĐ”ĐœĐ” ĐœĐ° ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ, съЎържащО ĐžĐŒĐ”Ń‚ĐŸ ĐœĐ° фаĐčла"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "ĐŸŃ€ĐŸĐłŃ€Đ”ŃĐžĐČĐœĐŸ Ń‚ŃŠŃ€ŃĐ”ĐœĐ”"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "ОбхĐČат ĐœĐ° Ń‚ŃŠŃ€ŃĐ”ĐœĐ”Ń‚ĐŸ:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>ИзсĐșачаща ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐżĐŸĐŽŃĐșĐ°Đ·ĐșĐž"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "ЗабаĐČŃĐœĐ” ĐœĐ° ĐżĐŸĐŽŃĐșĐ°Đ·ĐșОтД (ЎДсДтО ĐŸŃ‚ сДĐșŃƒĐœĐŽĐ°Ń‚Đ°):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "ĐŸĐŸĐșажО ĐČŃ€Đ”ĐŒĐ”Ń‚Ń€Đ°Đ”ĐœĐ” Đ·Đ° Ń‚Đ”Đșущата ĐżĐ”ŃĐ”Đœ"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "ЗАГЛАВИЕ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ИЗПĐȘЛНИбЕЛ - ЗАГЛАВИЕ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ИЗПĐȘЛНИбЕЛ - АЛБУМ - ЗАГЛАВИЕ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ИЗПĐȘЛНИбЕЛ - АЛБУМ - ЗАПИС. ЗАГЛАВИЕ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ИЗПĐȘЛНИбЕЛ [ АЛБУМ ] - ЗАПИС. ЗАГЛАВИЕ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "АЛБУМ - ЗАГЛАВИЕ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ĐšĐ°Ń‚Đ”ĐłĐŸŃ€ĐžŃ"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "ĐŸĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐżĐ”ŃĐ”Đœ</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐœĐŸĐŒĐ”Ń€Đ° ĐœĐ° ĐżĐ”ŃĐ”ĐœŃ‚Đ°"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐœŃƒĐ»Đ° ĐČ ĐœĐ°Ń‡Đ°Đ»ĐŸŃ‚ĐŸ (02:00 ĐČĐŒĐ”ŃŃ‚ĐŸ 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "ĐŸĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ Đ·Đ° ĐœĐžĐ·ĐŸĐČоя Ń„ĐŸŃ€ĐŒĐ°Ń‚"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "ĐŸĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž ĐœĐžĐ·:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Đ€ĐŸŃ€ĐŒĐ°Ń‚ ĐœĐ° заглаĐČОД:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "ПростаĐČĐșĐ° Đ·Đ° ĐžĐ·Ń…ĐŸĐŽŃŃ‰ĐžŃ ĐżĐŸŃ‚ĐŸĐș:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ĐŸŃ€Đ”ĐœĐ°ŃŃĐœĐ”"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Đ’Ń…ĐŸĐŽ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Đ•Ń„Đ”Đșто"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Đ’ĐžĐ·ŃƒĐ°Đ»ĐžĐ·Đ°Ń†ĐžŃ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "ОбщО"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ĐŸĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»ŃĐșĐž ĐœĐžĐ·:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐœĐ° Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Audacious ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД съзЎаЎД ЎОрДĐșŃ‚ĐŸŃ€ĐžŃ (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "ĐŸĐŸĐ·ĐžŃ†ĐžŃŃ‚Đ° ĐœĐ” Đ” ĐœĐ°ĐŒĐ”Ń€Đ”ĐœĐ°."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ĐĐ” сД ĐžĐ·ĐżŃŠĐ»ĐœŃĐČĐ° ĐżĐ”ŃĐ”Đœ."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "ĐŃƒĐŽĐžĐŸ CD, запОс %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ĐœĐŸĐœĐŸ"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ĐĄŃ‚Đ”Ń€Đ”ĐŸ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -585,409 +612,420 @@ msgstr "АĐČŃ‚ĐŸŃ€Đž"
msgid "License"
msgstr "Đ›ĐžŃ†Đ”ĐœĐ·"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "ĐžŃ‚ĐœĐŸŃĐœĐŸ Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"ĐĄĐžĐłŃƒŃ€ĐœĐž лО стД, чД ОсĐșĐ°Ń‚Đ” ĐŽĐ° Đ·Đ°Ń‚ĐČĐŸŃ€ĐžŃ‚Đ” %s? АĐșĐŸ ĐłĐŸ ĐœĐ°ĐżŃ€Đ°ĐČОтД, ĐČсочĐșĐž "
-"ĐżŃ€ĐŸĐŒĐ”ĐœĐž, ĐœĐ°ĐżŃ€Đ°ĐČĐ”ĐœĐž слДЎ ĐșĐ°Ń‚ĐŸ спосъĐșĐ° Đ” бОл ĐžĐ·ĐœĐ”ŃĐ”Đœ, щД бъЎат Đ·Đ°ĐłŃƒĐ±Đ”ĐœĐž."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "ЖДлаДтД лО ĐŸĐșĐŸĐœŃ‡Đ°Ń‚Đ”Đ»ĐœĐŸ ĐŽĐ° ĐżŃ€Đ”ĐŒĐ°Ń…ĐœĐ”Ń‚Đ” „%s“?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_ĐŸŃ€Đ”ĐŒĐ°Ń…ĐČĐ°ĐœĐ”"
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ĐŸŃ€Đ”ĐŒĐ°Ń…ĐœĐž ĐŸĐ»Đ”ĐčлОст"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ЗатĐČĐ°Ń€ŃĐœĐ” ĐœĐ° спосъĐșĐ°"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_ĐĐ” потаĐč ĐżĐŸĐČДчД"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "ĐĐ” _ĐżĐŸĐșĐ°Đ·ĐČĐ°Đč Ń‚ĐŸĐČĐ° ŃŃŠĐŸĐ±Ń‰Đ”ĐœĐžĐ” ĐŸŃ‚ĐœĐŸĐČĐŸ"
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°ĐœĐ”"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°ĐœĐ” ĐœĐ° спосъĐșĐ° Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "КаĐș ОсĐșĐ°Ń‚Đ” ĐŽĐ° ĐœĐ°Ń€Đ”Ń‡Đ”Ń‚Đ” Ń‚ĐŸĐ·Đž плДĐčлОст?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_АĐșтоĐČĐžŃ€Đ°ĐœĐ”"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Єц"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Єц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Єц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Єц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Єц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 ĐșЄц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 ĐșЄц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 ĐșЄц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 ĐșЄц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 ĐșЄц"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "ĐąĐŸĐœĐșĐŸŃ€Đ”ĐșŃ‚ĐŸŃ€"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ĐŸŃ€Đ”ĐŽŃƒŃĐžĐ»ĐČатДл"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Запос"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "ĐŸŃ€ĐŸĐŽŃŠĐ»Đ¶ĐžŃ‚Đ”Đ»ĐœĐŸŃŃ‚"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Đ€ĐŸŃ€ĐŒĐ°Ń‚:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "КачДстĐČĐŸ:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Đ§Đ”ŃŃ‚ĐŸŃ‚Đ° Đ·Đ° бОт:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "ЕĐčсОЎ Джаз"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "ЕĐčсОЎ Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Đ•ĐŒĐ±ĐžŃŠĐœŃ‚"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Đ‘Đ”Đ±ĐŸĐż"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Đ‘Đ»ŃƒĐłŃ€Đ°Ń"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Đ‘Đ»ŃƒŃ"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Đ§Đ”ĐŒĐ±ŃŠŃ€ ĐœŃŽĐ·ĐžĐș"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "КласОĐșĐ°"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "ĐšŃŠĐœŃ‚Ń€Đž"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "ДДт ĐœĐ”Ń‚ŃŠĐ»"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ДосĐșĐŸ"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "ИзО Đ›ĐžŃŃ‚ŃŠĐœĐžĐœĐł"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Đ€ĐŸĐ»Đș"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Đ€ŃŠĐœĐș"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Đ“Đ°ĐœĐłŃŃ‚Đ”Ń€ŃĐșĐž Đ Đ°Đż"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Đ“ĐŸŃĐżĐ”Đ»"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Đ“Ń€ŃŠĐœŃ‡"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "ЄарЎ Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Đ„Đ”ĐČĐž ĐœĐ”Ń‚ŃŠĐ»"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ЄОп-Ń…ĐŸĐż"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "Єаус"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Джаз"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Đ”Đ¶Đ°ĐœĐłŃŠĐ»"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "ĐœĐ”Ń‚ŃŠĐ»"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "Ню ЕĐčЎж"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "Ню ĐŁĐ”ĐčĐČ"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ĐĐŸĐčс"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "ĐŸĐŸĐż"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "ĐŸŃŠĐœĐș Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Đ Đ°Đż"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "РДгД"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Đ ĐŸĐșĐ”ĐœŃ€ĐŸĐ»"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Đ ĐžŃ‚ŃŠĐŒ Đž блус"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "ĐĄĐșĐ°"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "ĐĄĐŸŃƒĐ»"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "ĐĄŃƒĐžĐœĐł"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "ĐąĐ”Ń…ĐœĐŸ"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "броп-Ń…ĐŸĐż"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ĐœŃĐŒĐ° Đ·Đ°ĐŽĐ°ĐŽĐ”Đœ</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ĐœĐ”Ń‚Đ°ĐŽĐ°ĐœĐœĐžŃ‚Đ” са ĐŸĐ±ĐœĐŸĐČĐ”ĐœĐž ŃƒŃĐżĐ”ŃˆĐœĐŸ"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "ĐĄŃŠŃ…Ń€Đ°ĐœŃĐČĐ°ĐœĐ”Ń‚ĐŸ ŃƒŃĐżĐ”ŃˆĐœĐŸ"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐŸĐ±ĐœĐŸĐČяĐČĐ°ĐœĐ” ĐœĐ° ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐœĐžŃ‚Đ”"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Đ“Ń€Đ”ŃˆĐșĐ° про ŃŃŠŃ…Ń€Đ°ĐœŃĐČĐ°ĐœĐ”Ń‚ĐŸ"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ Đ·Đ° запОса"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "ĐĐŸĐŒĐ”Ń€ ĐœĐ° запОса"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Đ€ĐŸŃ€ĐŒĐ°Ń‚:</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_ЗапазО"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">КачДстĐČĐŸ:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">БОтрДĐčт:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">ЗаглаĐČОД</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Đ˜Đ·ĐżŃŠĐ»ĐœĐžŃ‚Đ”Đ»</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ĐĐ»Đ±ŃƒĐŒ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ĐšĐŸĐŒĐ”ĐœŃ‚Đ°Ń€</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Đ–Đ°ĐœŃ€</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Đ“ĐŸĐŽĐžĐœĐ°</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ĐĐŸĐŒĐ”Ń€ ĐœĐ° запОс</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d ĐșбОт/с"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "ĐŃĐŒĐ° ĐŽĐ°ĐœĐœĐž"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "ЛопсĐČĐ° ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ Đ·Đ° %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_ĐŸŃ€Đ”ŃĐșĐŸŃ‡Đž"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ĐŸŃ€Đ”ŃĐșĐ°Ń‡Đ°ĐœĐ” ĐŽĐŸ фаĐčĐ»"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ВъĐČĐ”Đ¶ĐŽĐ°ĐœĐ” ĐœĐ° ĐČŃ€Đ”ĐŒĐ” (ĐŒĐžĐœŃƒŃ‚Đž:сДĐșŃƒĐœĐŽĐž):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Да сД ĐżŃ€Đ”Đ·Đ°ĐżĐžŃˆĐ” лО %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "ĐŸŃ€Đ”_запОсĐČĐ°ĐœĐ”"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "ĐŸĐŸŃ‚ĐČържЎаĐČĐ°ĐœĐ” ĐœĐ° прДзапОсĐČĐ°ĐœĐ”"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Đ˜Đ·ĐœĐ°ŃŃĐœĐ” ĐœĐ° спосъĐș Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Đ˜Đ·ĐœĐ°ŃŃĐœĐ”"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Đ’ĐœĐ°ŃŃĐœĐ” ĐœĐ° спосъĐș Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Да сД ĐżŃ€Đ”Đ·Đ°ĐżĐžŃˆĐ” лО %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Đ’ĐœĐ°ŃŃĐœĐ”"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "ĐœĐ”ĐœĐžĐŽĐ¶ŃŠŃ€ ĐœĐ° ĐŸĐżĐ°ŃˆĐșата"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_БДз ОзчаĐșĐČĐ°ĐœĐ”"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_ОтĐČĐŸŃ€Đž"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "ЗатĐČĐ°_Ń€ŃĐœĐ” ĐœĐ° ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń†Đ° про ĐŸŃ‚ĐČĐ°Ń€ŃĐœĐ”"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Đ”ĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ЗатĐČĐ°Ń€ŃĐœĐ” ĐœĐ° ĐŽĐžĐ°Đ»ĐŸĐłĐ°, слДЎ ĐŸŃ‚ĐČĐ°Ń€ŃĐœĐ” ĐœĐ° фаĐčĐ»"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Đ”ĐŸĐ±Đ°ĐČĐž"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ЗатĐČĐ°Ń€ŃĐœĐ” ĐœĐ° ĐŽĐžĐ°Đ»ĐŸĐłĐ° слДЎ ĐŽĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° фаĐčĐ»"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "ЗатĐČаря_ĐœĐ” ĐœĐ° ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń†Đ° про ĐŽĐŸĐ±Đ°ĐČŃĐœĐ”"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "На _ĐŸĐżĐ°ŃˆĐșĐ°"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "П_Ń€Đ”ĐŒĐ°Ń…ĐČĐ°ĐœĐ” ĐŸŃ‚ ĐŸĐżĐ°ŃˆĐșата"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ĐŸŃ€Đ”ŃĐșĐ°Ń‡Đ°ĐœĐ” ĐŽĐŸ ĐżĐ”ŃĐ”Đœ"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "ЀОлтър: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_ЀОлтър:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Đ—Đ°ĐżĐŸĐŒĐœŃĐœĐ”"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "Зат_ĐČĐ°Ń€ŃĐœĐ” про прДсĐșĐ°Ń‡Đ°ĐœĐ”"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Из_чостĐČĐ°ĐœĐ”"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ЗатĐČĐ°Ń€ŃĐœĐ” слДЎ прДсĐșĐ°Ń‡Đ°ĐœĐ”"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "ĐœĐ”ĐœĐžĐŽĐ¶ŃŠŃ€ ĐœĐ° спосъĐșĐ° Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Запосо"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°ĐœĐ”"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_ĐĐŸĐČĐ°"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°Đœ_Đ”"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Đ˜Đ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_ЗатĐČĐ°Ń€ŃĐœĐ” ĐœĐ° ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń†Đ° про ĐŸŃ‚ĐČĐ°Ń€ŃĐœĐ” ĐœĐ° спосъĐșĐ° Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ аЎрДс"
@@ -995,11 +1033,11 @@ msgstr "ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ аЎрДс"
msgid "Add URL"
msgstr "Đ”ĐŸĐ±Đ°ĐČŃĐœĐ” ĐœĐ° ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ аЎрДс"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "ВъĐČĐ”Đ¶ĐŽĐ°ĐœĐ” ĐœĐ° ĐžĐœŃ‚Đ”Ń€ĐœĐ”Ń‚ аЎрДс:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/ca.po b/po/ca.po
index d226cd9..6d4f5bf 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -3,7 +3,8 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
-# Ernest Adrogué <eadrogue@gmx.net>, 2007, 2008
+# Ernest Adrogué <eadrogue@gmx.net>, 2007-2008
+# frangor <frangor@frangor.info>, 2013
# frangor <frangor@frangor.info>, 2013
# Jordi AmenĂłs <>, 2011
# Juanma HernĂĄndez <juanmah@gmail.com>, 2012
@@ -12,9 +13,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-05-05 17:32+0000\n"
-"Last-Translator: frangor <frangor@frangor.info>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Catalan (http://www.transifex.com/projects/p/audacious/"
"language/ca/)\n"
"Language: ca\n"
@@ -23,11 +24,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Cercant "
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -37,129 +38,120 @@ msgstr[0] ""
"un:%d arxiu trobat"
msgstr[1] "%d arxius trobats"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 no vĂ lid)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nova llista de reproducciĂł"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Error quan s'importava el fitxer EQF de Winamp '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Salta enrere en la llista de reproducciĂł"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Comença a reproduir la llista actual"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Mostra la versiĂł"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Fa una pausa en la reproducciĂł"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Atura la reproducciĂł"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Fa una pausa, o bé reprÚn la reproducció"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Salta endavant en la llista de reproducciĂł"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Obre el diĂ leg Salta al fitxer"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Afegir arxius a la llista de reproducciĂł"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Afegeix els fitxers a una llista temporal"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Mostra la finestra principal"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Mode sense capçalera"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Sortir al aturar la llista de reproducciĂł"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Mostra la versiĂł"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Imprimir missatges de depuraciĂł "
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FITXER..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- reprodueix fitxers multimĂšdia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Proveu ‘%s --help’ per a mĂ©s informaciĂł.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "No es troba cĂČdec per %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s no s'ha pogut obrir."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "No es pot %s %s: extensiĂł d'arxiu no suportada."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "guarda"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "carrega"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "No es pot %s %s: extensiĂł d'arxiu no suportada."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nova llista de reproducciĂł"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Nova reproducciĂł"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -167,414 +159,446 @@ msgstr ""
"La llista de reproducciĂł no es pot ordenar perquĂš la detecciĂł de metadades "
"encara estĂ  en marxa (o s'ha desactivat )"
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Quant a %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ParĂ metres"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Àudio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Xarxa"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Llistes"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Información de la cançó"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Connectors"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "General"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efectes"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VisualitzaciĂł"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrada"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Àlbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tol"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "NĂșmero de pista"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "GĂšnere"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nom del fitxer"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "UbicaciĂł"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Any"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comentari"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "CĂłdec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Qualitat"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Cap"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Àrab"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂ ltic"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "XinĂšs"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grec"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebreu"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JaponĂšs"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "CoreĂ "
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "PolonĂšs"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Rus"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "TaiwanĂšs"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turc"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Coma flotant"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Manera Àlbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Connector de sortida"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Opcions sortida</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profunditat de bits:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Mida del buffer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Aturar salts"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Utilitzar control de volum per software (no recomanat)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>reproduir arxius sense fluctuacions de volum</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Activa el Replay Gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Manera Àlbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evitar saturaciĂł (recomanat)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustar nivells</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar tots els arxius:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar arxius sense etiquetar:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Nom del servidor intermediari:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Port del servidor intermediari:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nom d'usuari:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Contrasenya:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ConfiguraciĂł de servidors intermediaris</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Activa l'Ășs de servidor intermediari"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "AutenticaciĂł al servidor intermediari"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "DetecciĂł automĂ tica del joc de carĂ cters per a:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Jocs de carĂ cters de reserva:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportament</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ReprĂšn la reproducciĂł en engegar"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avançar quan la cançó que s'està reproduint s'elimina"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "A l'obrir arxius esborrar la llista que s'estĂ  reproduint "
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Obrir arxius en llista temporal de reproducciĂł"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "No desar metadates mentre la cançó s'està reproduint"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilitat</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpretar \\ (barra invertida) com a delimitador de directori"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>CarĂ tula d'Ă lbum</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Cerca imatges que corresponguin amb aquestes paraules (separades per comes):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Exclou imatges que corresponguin amb aquestes paraules (separades per comes):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Cerca imatges que corresponguin amb el nom de l'arxiu de la cançó"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Cerca recursivament"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Profunditat de la cerca"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>InformaciĂł emergent</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Mostra informaciĂł emergent"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Retard del menĂș emergent (desenes de segon):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Mostra escala de temps per a la cançó actual"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TÍTOL"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TÍTOL"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ÀLBUM - TÍTOL"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ÀLBUM - PISTA. TÍTOL"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ ÀLBUM ] - PISTA. TÍTOL"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ÀLBUM - TÍTOL"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Categoria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalitzat"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Visualització de les cançons</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Mostrar el numero de les cançons"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Mostrar zeros a l'esquerra (02:00 en comptes de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Mostra informaciĂł sobre el format del tĂ­tol"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Cadena personalitzada:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Format del tĂ­tol:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Connector de sortida"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrada"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efectes"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VisualitzaciĂł"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "General"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Cadena personalitzada:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "PreferĂšncies de l'Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "No s'ha pogut crear el directori (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "No es troba aquesta posiciĂł."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Aquesta cançó no es pot reproduir."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD d'audio, pista %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "EstĂšreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -592,411 +616,422 @@ msgstr "CrĂšdits"
msgid "License"
msgstr "LlicĂšncia"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Quant a l'Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Estar segur de tancar %s? qualsevol canvi que hagi fet a la llista de "
-"reproducciĂł es perdrĂ ."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Tancar llista de reproducciĂł"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_No torni a sortir aquest missatge"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Reanomena la llista de reproducciĂł"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "Opcions..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Connecta"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalitzador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamplificador"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Pista"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Durada"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Jazz Ă cid"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambiental"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de cambra"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂ ssica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Rap gangsta"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Rock dur"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Soroll"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tecno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/d</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Les meta-dades s'han actualitzat correctament"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Ha fallat l'actualitzaciĂł de les meta-dades"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaciĂł de la pista"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Qualitat:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Flux de bits:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tol</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Àlbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comentari</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">GĂšnere</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Any</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">NĂșmero de pista</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr ""
"No hi ha informació disponible per %s.⏎\n"
"\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Salta al temps"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Introdueix temps (minuts: segons):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Reescriure %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportar llista de reproducciĂł"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar llista de reproducciĂł"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Reescriure %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Gestor de cues"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Obre els fitxers"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Afegeix els fitxers"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Tanca el diĂ leg en obrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Tanca el diĂ leg en afegir"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Posa a la cua"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Treu de la _cua"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Salta a la cançó"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtre: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtre:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Recorda"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Neteja"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Tanca en saltar"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Gestor de llistes"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Elements"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Reanomena"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Tancar diĂ legs al activar llista de reproducciĂł"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Obrir URL"
@@ -1004,11 +1039,11 @@ msgstr "Obrir URL"
msgid "Add URL"
msgstr "Afegir URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Introdueix URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/cmn.po b/po/cmn.po
index f737b26..ab2e0d1 100644
--- a/po/cmn.po
+++ b/po/cmn.po
@@ -1,4 +1,4 @@
-# Mandarin translation for Audacious
+# Chinese (Mandarin) translation for Audacious
# Copyright (C) Audacious translators
# This file is distributed under the same license as the Audacious package.
#
@@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-12-19 03:50+0000\n"
-"Last-Translator: Wei-Lun Chao <bluebat@member.fsf.org>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Chinese (Mandarin) (http://www.transifex.com/projects/p/"
"audacious/language/cmn/)\n"
"Language: cmn\n"
@@ -21,550 +21,573 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "æœć°‹äž­â€Š"
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "æ‰Ÿćˆ° %d 怋æȘ”æĄˆ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (ç„Ąæ•ˆçš„ UTF-8 歗äžČ)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "æ–°æ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "ćŒŻć…„ Winamp EQF æȘ”æ™‚ç™Œç”ŸéŒŻèȘ€ă€Œ%s」"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ćˆ‡æ›è‡łæ’­æ”Ÿćˆ—èĄšçš„äžŠäž€éŠ–"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "é–‹ć§‹æ’­æ”Ÿç›źć‰çš„æ’­æ”Ÿćˆ—èĄš"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "饯ç€șç‰ˆæœŹèł‡èšŠ"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "æš«ćœæ’­æ”Ÿç›źć‰æ­Œæ›Č"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ćœæ­ąæ’­æ”Ÿç›źć‰æ­Œæ›Č"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "è‹„æ’­æ”Ÿäž­ć‰‡æš«ćœïŒŒćŠć‰‡çčŒçșŒæ’­æ”Ÿ"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ćˆ‡æ›è‡łæ’­æ”Ÿćˆ—èĄšçš„äž‹äž€éŠ–"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "饯ç€șè·łè‡łæȘ”æĄˆć°è©±èŠ–çȘ—"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "抠慄æȘ”æĄˆè‡łæ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "抠慄æȘ”æĄˆè‡łæš«ć­˜æ’­æ”Ÿćˆ—èĄš"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "饯ç€ș䞻芖çȘ—"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "éš±ćœąæšĄćŒ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "æ’­æ”Ÿćœæ­ąćŸŒé›ąé–‹"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "饯ç€șç‰ˆæœŹèł‡èšŠ"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "饯ç€șé™€éŒŻèšŠæŻ"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "æȘ”æĄˆâ€Š"
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- æ’­æ”Ÿć€šćȘ’é«”æȘ”æĄˆ"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s%s\n"
-"è«‹ć˜—è©Šç”šă€Œ%s --helpă€ć–ćŸ—æ›Žć€šèł‡èšŠă€‚\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "æ‰Ÿäžćˆ°é©ç”šæ–Œ %s çš„è§ŁçąŒć™šă€‚"
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "ç„Ąæł•é–‹ć•Ÿ %s。"
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ç„Ąæł• %s %sæœȘæ”ŻæŽçš„ć‰ŻæȘ”ćă€‚"
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "ć„Č歘"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "èŒ‰ć…„"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ç„Ąæł• %s %sæœȘæ”ŻæŽçš„ć‰ŻæȘ”ćă€‚"
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "æ–°æ’­æ”Ÿćˆ—èĄš"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "æ­Łćœšæ’­æ”Ÿ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr "曠ç‚șæ­Łćœšé€ČèĄŒè©źé‡‹èł‡æ–™çš„æŽƒæïŒŒç„Ąæł•ć°æ’­æ”Ÿćˆ—èĄšé€ČèĄŒæŽ’ćșă€‚(或者ć·Čç¶“èą«é—œé–‰)"
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "關斌 %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s èš­ćźšć€Œ"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "éŸłèšŠ"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ç¶Čè·Ż"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "æ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "歌æ›Čèł‡èšŠ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ć€–æŽ›"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "äž€èˆŹ"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "ç‰č效"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "芖èŠșç‰č效"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "èŒžć…„"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ć‚łèŒž"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "挔ć‡ș者"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ć°ˆèŒŻ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "æš™éĄŒ"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "éŸłè»Œç·šè™Ÿ"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "類枋"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "æȘ”æĄˆćçš±"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "æȘ”æĄˆè·ŻćŸ‘"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "旄期"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "ćčŽćˆ†"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ć‚™èš»"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ç·šè§ŁçąŒć™š"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "擁èłȘ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "無"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "é˜żæ‹‰äŒŻèȘž"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "æłąçŸ…çš„æ”·"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "æŒąèȘž"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ćžŒè‡˜èȘž"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ćžŒäŒŻäŸ†èȘž"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "æ—„æœŹèȘž"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "韓èȘž"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "æłąè˜­èȘž"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "俄èȘž"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "ć‚łç”±ć­—æŒąèȘž"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "ćœŸè€łć…¶èȘž"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "æ”źé»žæ•ž"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ć°ˆèŒŻæšĄćŒ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "茞ć‡șć€–æŽ›ïŒš"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>茞ć‡șèš­ćźš</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "ć–æšŁæ ŒćŒïŒš"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "ç·©èĄć€ć€§ć°ïŒš"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "æŻ«ç§’"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "è»Ÿæ€§ć‰Šćł°"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "äœżç”šè»Ÿé«”éŸłé‡æŽ§ćˆ¶ (䞍ć»șè­°é–‹ć•Ÿ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>æ’­æ”Ÿćąžç›Š</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ć•Ÿç”šæ’­æ”Ÿćąžç›Š"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ć°ˆèŒŻæšĄćŒ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "é˜Čæ­ąèšŠè™ŸèŁć‰Ș (ć»șè­°é–‹ć•Ÿ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>èȘżæ•ŽéŸłé‡</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "æ”Ÿć€§æ‰€æœ‰æȘ”æĄˆçš„éŸłé‡ïŒš"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "戆èȝ"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "æ”Ÿć€§ç„Ąæš™ç±€æȘ”æĄˆçš„éŸłé‡ïŒš"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "代理äŒșæœć™šćçš±ïŒš"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "代理äŒșæœć™šé€šèšŠćŸ ïŒš"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "代理äŒșæœć™šäœżç”šè€…ćçš±ïŒš"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "代理äŒșæœć™šćŻ†çąŒïŒš"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>代理äŒșæœć™šèš­ćźš</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ć•Ÿç”šä»Łç†äŒșæœć™š"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "需芁èȘè­‰"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "è‡Șć‹•ć”æžŹć­—ć…ƒç·šçąŒïŒš"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ć‚™ç”šć­—ć…ƒç·šçąŒïŒš"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>èĄŒç‚ș</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ć•Ÿć‹•ćŸŒçčŒçșŒäč‹ć‰çš„播攟"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "ç›źć‰çš„æ­Œæ›Čèą«ćˆȘé™€æ™‚ç§»è‡łäž‹äž€éŠ–"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "開敟æȘ”æĄˆćŸŒæž…é™€æ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ćœšæš«ć­˜æ’­æ”Ÿćˆ—èĄšäž­é–‹ć•ŸæȘ”æĄˆ"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ćœšæ­Œæ›Čæ’­æ”Ÿä»„ć‰äžèŠèŒ‰ć…„è©źé‡‹èł‡æ–™"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>盾ćźč性</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "氇 \\ (ćæ–œç·š) 芖ç‚șèł‡æ–™ć€Ÿćˆ†éš”çŹŠè™Ÿ"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ć°ˆèŒŻć°éą</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "æœć°‹çŹŠćˆé€™äș›ć–źć­—çš„ćœ–ç‰‡ (ä»„é€—è™Ÿćˆ†éš”)"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "æŽ’é™€çŹŠćˆé€™äș›ć–źć­—çš„ćœ–ç‰‡ (ä»„é€—è™Ÿćˆ†éš”)"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "æœć°‹çŹŠćˆæ­Œæ›ČæȘ”ćçš„ćœ–ç‰‡"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "éžèżŽæœć°‹"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "æœć°‹æ·±ćșŠïŒš"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>ćœˆć‡șćŒèł‡èšŠèŠ–çȘ—</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "饯ç€șćœˆć‡șćŒèł‡èšŠèŠ–çȘ—"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "ćœˆć‡ș芖çȘ—的滶éČ時間 (捁戆äč‹äž€ç§’)"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "饯ç€șç›źć‰æ­Œæ›Č的時間軞"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "æš™éĄŒ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "挔ć‡ș者 - æš™éĄŒ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "挔ć‡ș者 - ć°ˆèŒŻ - æš™éĄŒ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "挔ć‡ș者 - ć°ˆèŒŻ - éŸłè»Œ. æš™éĄŒ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "挔ć‡ș者 [ ć°ˆèŒŻ ] - éŸłè»Œ. æš™éĄŒ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ć°ˆèŒŻ - æš™éĄŒ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "盼錄"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "è‡Șèš‚"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>饯ç€ș歌æ›Č</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "饯ç€ș歌æ›Č線號"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "饯ç€șé–‹é ­çš„æ•žć­—é›¶ (䟋02:00 è€Œäžæ˜Ż 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "饯ç€șé—œæ–Œæš™éĄŒć­—äžČæ ŒćŒçš„èł‡èšŠ"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "è‡Șèš‚ć­—äžČ"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "æš™éĄŒæ ŒćŒïŒš"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "茞ć‡șć€–æŽ›ïŒš"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ć‚łèŒž"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "èŒžć…„"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "ç‰č效"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "芖èŠșç‰č效"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "äž€èˆŹ"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "è‡Șèš‚ć­—äžČ"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious ćć„œèš­ćźš"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ç„Ąæł•ć»șç«‹èł‡æ–™ć€Ÿ (%s)%s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "æ‰Ÿäžćˆ°äœć€ă€‚"
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ç„Ąæ’­æ”Ÿäž­æ­Œæ›Č。"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "éŸłæš‚ CDïŒŒéŸłè»Œ %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "於èČ道"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "立體èČ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -578,407 +601,420 @@ msgstr "é–‹ç™Œćœ˜éšŠ"
msgid "License"
msgstr "æŽˆæŹŠæąæŹŸ"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "關斌 Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr "æ‚šçąșćźšèŠé—œé–‰ %s 所有æœȘ振ć‡șçš„èł‡æ–™ć°‡æœƒéș怱。"
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "é—œé–‰æ’­æ”Ÿćˆ—èĄš"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "äžèŠć†éĄŻç€șé€™ć€‹èšŠæŻ(_D)"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "é‡æ–°ć‘œćæ’­æ”Ÿćˆ—èĄš"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "èš­ćźšâ€Š"
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "敟甹(_E)"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "等挖晹"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ć‰çœźæ”Ÿć€§"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "éŸłè»Œ"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "長ćșŠ"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "èż·ćč»çˆ”棫"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "èż·ćč»æ–滟"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "æ°›ćœéŸłæš‚"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "藍草"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "藍èȘż"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ćź€ć…§æš‚"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ć€ć…ž"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "鄉村"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "æ­»äșĄé‡‘汏"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "èżȘæ–ŻćŻ"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "èŒ•éŸłæš‚"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "æ°‘èŹ "
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "æ”Ÿćźą"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "黑ćč«èȘȘć”±"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "çŠéŸłéŸłæš‚"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "ćžƒćœŸæ–æ»Ÿ"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "çĄŹćŒæ–æ»Ÿ"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "é‡é‡‘ć±Ź"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ć˜»ć“ˆ"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "爔棫"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "ćąæž—"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "金汏"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "新䞖玀"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "新æ”Șæœź"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ć™Ș音"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "æ”èĄŒ"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "éŸć…‹æ–æ»Ÿ"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "èȘȘć”±"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "é›·éŹŒ"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "搖滟 (Rock)"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "搖滟 (Rock&Roll)"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "R&B"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "靈魂"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "搖æ“șæš‚"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "敞䜍"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "èż·ćč»èˆžæ›Č"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "æˆćŠŸćœ°æ›Žæ–°äș†è©źé‡‹èł‡æ–™"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "è©źé‡‹èł‡æ–™æ›Žæ–°ć€±æ•—"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "éŸłè»Œèł‡èšŠ"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">æ ŒćŒïŒš</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">擁èłȘ</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">äœć…ƒçŽ‡ïŒš</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">æš™éĄŒ</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">挔ć‡ș者</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ć°ˆèŒŻ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ć‚™èš»</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">類枋</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">ćčŽćˆ†</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">éŸłè»Œç·šè™Ÿ</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "ç„Ąé—œæ–Œ %s çš„èł‡èšŠă€‚\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "è·łè‡łæ™‚é–“"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "è«‹èŒžć…„æ™‚é–“ (戆:秒)"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "èŠ†ćŻ« %s"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "振ć‡șæ’­æ”Ÿćˆ—èĄš"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ćŒŻć…„æ’­æ”Ÿćˆ—èĄš"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "èŠ†ćŻ« %s"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "äœ‡ćˆ—çźĄç†"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "開敟æȘ”æĄˆ"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "抠慄æȘ”æĄˆ"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "é–‹ć•ŸćŸŒé—œé–‰ć°è©±èŠ–çȘ—"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ćŠ ć…„ćŸŒé—œé–‰ć°è©±èŠ–çȘ—"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "æŽ’ć…„äœ‡ćˆ—(_Q)"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "移ć‡șäœ‡ćˆ—(_Q)"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "è·łè‡łæ­Œæ›Č"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "éŽæżŸć™šïŒš"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "éŽæżŸć™š(_F)"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "蚘䜏"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "枅陀(_R)"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ćˆ‡æ›ćŸŒé—œé–‰"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "æ’­æ”Ÿćˆ—èĄšçźĄç†"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "敞量"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "é‡æ–°ć‘œć(_R)"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "ć•Ÿç”šæ’­æ”Ÿćˆ—èĄšćŸŒé—œé–‰ć°è©±èŠ–çȘ—(_C)"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "開敟ç¶Č杀"
@@ -986,11 +1022,11 @@ msgstr "開敟ç¶Č杀"
msgid "Add URL"
msgstr "抠慄ç¶Č杀"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "è«‹èŒžć…„ç¶Čć€ïŒš"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/cs.po b/po/cs.po
index 859520a..9ebac16 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4,17 +4,19 @@
#
# Translators:
# jui <appukonrad@gmail.com>, 2012
+# fri, 2012-2013
# Jan NĂĄrovec <finn@sendmail.cz>, 2004
-# fri <pavelfric@seznam.cz>, 2013
-# fri <pavelfric@seznam.cz>, 2012
-# Petr Písaƙ <petr.pisar@atlas.cz>, 2007, 2008, 2009, 2010, 2011, 2012
+# jui <appukonrad@gmail.com>, 2012
+# fri, 2013
+# fri, 2012
+# Petr Písaƙ <petr.pisar@atlas.cz>, 2007-2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-09-08 07:25+0000\n"
-"Last-Translator: fri <pavelfric@seznam.cz>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/audacious/language/"
"cs/)\n"
"Language: cs\n"
@@ -23,11 +25,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Hledá se
"
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -35,129 +37,120 @@ msgstr[0] "Nalezen %d soubor"
msgstr[1] "Nalezeny %d soubory"
msgstr[2] "Nalezeno %d souborĆŻ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (neplatné UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "NovĂœ seznam skladeb"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Chyba pƙi importu winampovskĂ©ho EQF souboru „%s“"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Vrátí se zpět v seznamu skladeb"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Pƙehraje skladby v aktuálním seznamu"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ZobrazĂ­ verzi"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pozastaví pƙehrávanou skladbu"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Zastaví pƙehrávanou skladbu"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pozastaví pƙi pƙehrávání; jinak spustí"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Pƙejde na dalơí skladbu"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Zobrazí dialog „Pƙejít na soubor“"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Pƙidá soubory do do seznamu skladeb"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "PƙidĂĄ soubory do dočasnĂ©ho seznamu skladeb"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ZobrazĂ­ hlavnĂ­ okno"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "BezhlavĂœ reĆŸim"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Ukončit po zastavení pƙehrávání"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ZobrazĂ­ verzi"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Vypisuje ladicĂ­ hlĂĄĆĄky"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "SOUBOR
"
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "– pƙehrávat multimediální soubory"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Pro více informací zkuste „%s --help“.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Pro %s nenalezen ĆŸĂĄdnĂ­ dekodĂ©r."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s se nepodaƙilo otevƙít."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "%2$s nelze %1$s: nepodporovaná pƙípona souboru."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "uloĆŸit"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "načíst"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "%2$s nelze %1$s: nepodporovaná pƙípona souboru."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "NovĂœ seznam skladeb"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "NynĂ­ hraje"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -165,412 +158,444 @@ msgstr ""
"Seznam skladeb nelze seƙadit, protoĆŸe hledĂĄnĂ­ metadat stĂĄle probĂ­hĂĄ (nebo je "
"vypnuto)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "O %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s NastavenĂ­"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Zvuk"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "SĂ­Ć„"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Seznam skladeb"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Informace o skladbě"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Moduly"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Obecné"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efekt"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Znázornění"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Vstup"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Pƙenos"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Umělec"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "NĂĄzev"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Číslo stopy"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "ĆœĂĄnr"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Jméno souboru"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Cesta k souboru"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Datum"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Rok"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komentáƙ"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kvalita"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "ĆœĂĄdnĂ©"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ArabĆĄtina"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltské jazyky"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Čínơtina"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Ƙečtina"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "HebrejĆĄtina"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JaponĆĄtina"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "KorejĆĄtina"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "PolĆĄtina"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "RuĆĄtina"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "TchajwanĆĄtina"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turečtina"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Plovoucí desetiná čárka"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ReĆŸim alba"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "VĂœstupnĂ­ modul:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>NastavenĂ­ vĂœstupu</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "BitovĂĄ hloubka:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Velikost vyrovnávací paměti:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "MěkĂ© oƙíznutĂ­"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Hlasitost ovládat softwarově (nedoporučuje se)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Zesílení pƙi pƙehrávání</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Zapnout zesílení pƙi pƙehrávání"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ReĆŸim alba"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Pƙedcházet oƙezu (doporučuje se)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>MĂ­ra Ășpravy</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ZesĂ­lit vĆĄechny soubory:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ZesĂ­lit soubory bez popiskĆŻ:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "JmĂ©no počítače:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Port:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Jméno:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Heslo:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>NastavenĂ­ proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "PouĆŸĂ­vat proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Autentizovat se na proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatické rozpoznåvåní kódovaní znakƯ:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ZĂĄloĆŸnĂ­ kĂłdovĂĄnĂ­ znakĆŻ:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>ChovĂĄnĂ­</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Pokračovat v pƙehrávání po spuơtění"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "PƙejĂ­t dĂĄl, kdyĆŸ současnĂĄ skladba je smazĂĄna"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Pƙi otvírání souborƯ vyprázdnit seznam skladeb"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Otevƙít soubory do dočasnĂ©ho seznamu skladeb"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Nenačítat metadata skladeb pƙed pƙehráním"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Kompatibilita</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpret \\ (zpětnĂ© lomĂ­tko) jako oddělovač sloĆŸky"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Vyhledat obrĂĄzky odpovĂ­dajĂ­cĂ­ těmto slovĆŻm (oddělenĂ© čárkou):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Vyloučit obrĂĄzky vyhovujĂ­ těmto slovĆŻm (oddělenĂ© čárkou):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Hledat obrĂĄzky odpovĂ­dajĂ­cĂ­ nĂĄzevu hudebnĂ­ho souboru"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Hledat rekurzivně"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Hloubka prohledĂĄnĂ­:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Vyskakovací okno s podrobnostmi</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Zobrazit popup informace"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Popup zpoĆŸděnĂ­ (desetiny sekundy):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Zobrazit časovĂ© měƙítko pro aktuĂĄlnĂ­ skladby"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "NÁZEV"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "UMĚLEC – NÁZEV"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "UMĚLEC – ALBUM – NÁZEV"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "UMĚLEC – ALBUM – STOPA. NÁZEV"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "UMĚLEC [ ALBUM ] – STOPA. NÁZEV"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM – NÁZEV"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategorie"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "VlastnĂ­"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>ZobrazenĂ­ skladby</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Zobrazovat čísla skladeb"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Zobrazovat ĂșvodnĂ­ nuly (02:00 mĂ­sto 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Zobrazit informace o formĂĄtu titulku"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Vlastní ƙetězec:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "FormĂĄt nĂĄzvu:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "VĂœstupnĂ­ modul:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Pƙenos"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Vstup"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efekt"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Znázornění"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Obecné"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Vlastní ƙetězec:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "NastavenĂ­ programu"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nepodaƙilo se vytvoƙit adresáƙ (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Pozice nenalezena."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ĆœĂĄdnĂĄ skladba nehraje."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Zvukové CD, stopa %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -586,409 +611,420 @@ msgstr "ZĂĄsluhy"
msgid "License"
msgstr "Licence"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "O Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Jste si jisti, ĆŸe chcete %s zavƙít? Pokud tak učinĂ­te, jakĂ©koliv změny "
-"provedené od posledního exportu budou ztraceny."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Zavƙít seznam skladeb"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Pƙíơtě jiĆŸ toto zprĂĄvu nezobrazovat"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Pƙejmenovat seznam skladeb"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "nastavení
"
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Zapnout"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ekvalizér"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Pƙedzesílení"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Stopa"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "DĂ©lka"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebob"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "KomornĂ­ hudba"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasika"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "PƙíjemnĂ© poslouchĂĄnĂ­"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "NovĂĄ vlna"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Ć um"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "R&B"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">−</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata byla Ășspěơně aktualizovĂĄna"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Aktualizace metadat selhala"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Informace o stopě"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">FormĂĄt:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kvalita:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">DatovĂœ tok:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">NĂĄzev</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Umělec</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Komentáƙ</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">ĆœĂĄnr</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Rok</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Číslo stopy</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Pro %s nejsou dostupnĂ© ĆŸĂĄdnĂ© Ășdaje.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Pƙejít na čas"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Zadejte čas (minuty: sekundy):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Pƙepsat %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportovat seznam skladeb"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importovat seznam skladeb"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Pƙepsat %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "SprĂĄvce fronty"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Otevƙít soubory"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Pƙidat soubory"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Zavƙít dialog pƙi otevƙení"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Zavƙít dialog pƙi pƙidání"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Fronta"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Ode_brat z fronty"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Pƙejít na skladbu"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtr: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtr:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Zapamatovat si"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Vyp_rĂĄzdnit"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Zavƙít pƙi skoku"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "SprĂĄvce seznamĆŻ skladeb"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "PoloĆŸky"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Pƙejmenovat"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Pƙi aktiva_ci seznamu skladeb zavƙít dialog"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Otevƙít URL"
@@ -996,11 +1032,11 @@ msgstr "Otevƙít URL"
msgid "Add URL"
msgstr "Pƙidat URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Zadejte URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/da.po b/po/da.po
index 47965b4..0a8bb0c 100644
--- a/po/da.po
+++ b/po/da.po
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
-# Joe Hansen <joedalton2@yahoo.dk>, 2013
+# Joe Hansen <joedalton2@yahoo.dk>, 2013-2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-07-28 14:41+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-05 21:44+0000\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish (http://www.transifex.com/projects/p/audacious/"
"language/da/)\n"
@@ -19,140 +19,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "SĂžger ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d fil fundet"
msgstr[1] "%d filer fundet"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(ugyldig UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Ny afspilningsliste"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Fejl under import af Winamp EQF-fil »%s«"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Fejl"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "GĂ„ baglĂŠns i afspilningsliste"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Vis hjĂŠlp for kommandolinjen"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Start nuvĂŠrende afspilningsliste"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Vis version"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "SÊt nuvÊrende sang pÄ pause"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Start afspilning"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Stop nuvĂŠrende sang"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "SÊt afspilning pÄ pause"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "SÊt pÄ pause hvis der afspilles, ellers afspilles der"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "GĂ„ fremad i afspilningslisten"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Stop afspilning"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "GĂ„ til forrige sang"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Vis dialogen for GĂ„ til fil"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "GĂ„ til nĂŠste sang"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "TilfĂžj filer til afspilningslisten"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "TilfĂžj nye filer til en midlertidig afspilningsliste"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "TilfĂžj filer til en midlertidig afspilningsliste"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Vis hovedvinduet"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Headless-tilstand"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Vis hop til sang-vinduet"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Start uden en grafisk grĂŠnseflade"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Afslut nÄr afspilning stopper"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Vis version"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Udskriv fejlsĂžgningsbeskeder"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FIL ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Ukendt indstilling: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- afspil multimediefiler"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Ukendt indstilling: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-msgstr ""
-"%s: %s\n"
-"PrÞv »%s --help« for yderligere information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr "Brug: audacious [TILVALG] ... [FIL] ...\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Ingen afkoder fundet for %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s kunne ikke Ă„bnes."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Kan ikke %s %s: filendelsen er ikke understĂžttet."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "gem"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "indlĂŠs"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Kan ikke indlĂŠse %s: filendelsen er ikke understĂžttet."
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Kan ikke %s %s: filendelsen er ikke understĂžttet."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Ny afspilningsliste"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Kan ikke gemme %s: filendelsen er ikke understĂžttet."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Spiller nu"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -160,412 +151,444 @@ msgstr ""
"Afspilningslisten kan ikke sorteres da skanning af metadataene stadig er i "
"gang (eller er blevet deaktiveret)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Om %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Om"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s-indstillinger"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Angiv"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Afbryd"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Luk"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Indstillinger"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Om"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Udvidelsesmoduler ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Fremtoning"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Lyd"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "NetvĂŠrk"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Afspilningsliste"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Sanginformation"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Udvidelsesmoduler"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Generelt"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effekt"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisering"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Lydindgang"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport:"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Kunstner"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titel"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "RĂŠkkefĂžlge for nummeret"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Genre"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Filnavn"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Filsti"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Dato"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "År"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Kommentar"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kvalitet"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ingen"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabisk"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltisk"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Kinesisk"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "GrĂŠsk"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebraisk"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japansk"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Koreansk"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polsk"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russisk"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanesisk"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Tyrkisk"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Decimaltal"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Albumtilstand"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Indstillinger for grĂŠnseflade</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Udvidelsesmodul for grĂŠnseflade:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Udvidelsesmodul for lydudgang:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Indstillinger for lydudgang</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bit-dybde"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "ButterstĂžrrelse:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "BlĂžd beskĂŠring"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Brug programmets styring af lydstyrken (anbefales ikke)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>AfspilningsforstĂŠrkning</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Aktiver forstĂŠrkning af afspilning"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Albumtilstand"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Forhindr kliklyde (anbefales)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Juster niveauer</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ForstĂŠrk alle filer:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ForstĂŠrk umĂŠrkede filer:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "ProxyvĂŠrtsnavn:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Proxyport:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Proxybrugernavn:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Proxyadgangskode:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Proxykonfiguration</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Aktiver brug af proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Brug godkendelse med proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatisk tegnkodningsdetektor for"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Reservetegnkodninger:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>OpfĂžrsel</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "FortsĂŠt afspilning ved opstart"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "GÄ videre nÄr den nuvÊrende sang slettes"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Ryd afspilningslisten nÄr der Äbnes filer"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Åbn filer i midlertidig afspilningsliste"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "IndlĂŠs ikke metadata for sange fĂžr de afspilles"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Kompatibilitet</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Fortolk \\ (baglÊns skrÄstreg) som en mappeafgrÊnser"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Omslag</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "SĂžg efter billeder der matcher disse ord (kommaadskilt):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Ekskulder billeder der matcher disse ord (kommaadskilt):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "SĂžg efter billeder der matcher filnavn for sangen"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "SĂžg rekursivt"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "SĂžgedybde:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Pop op-information</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Vis pop op-information"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Pop op-forsinkelse (tiendedele af et sekund):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Vis tidsskala for nuvĂŠrende sang"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITEL"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "KUNSTNER - TITEL"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "KUNSTNER - ALBUM - TITEL"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "KUNSTNER - ALBUM - NUMMER. TITEL"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "KUNSTNER [ ALBUM ] - NUMMER. TITEL"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITEL"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategori"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Tilpasset"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Sangvisning</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Vis sangenes numre"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Vis foranstillede nuller (02:00 i stedet for 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Vis information om formatet for titelstrengen"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Tilpasset streng:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Titelformat:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Udvidelsesmodul for lydudgang:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Lydindgang"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Effekt"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisering"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Generelt"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Tilpasset streng:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
msgstr "Indstillinger for Audacious"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Kunne ikke oprette mappe (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Position blev ikke fundet."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Ingen sang afspilles."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Lyd-cd, nummer %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -580,409 +603,420 @@ msgstr "Rulletekster"
msgid "License"
msgstr "Licens"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Om Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Er du sikker pÄ, at du Þnsker at lukke %s? Hvis det er tilfÊldet, vil alle "
-"ĂŠndringer foretaget efter eksport af afspilningslisten blive tabt."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Ønsker du permanent at fjerne »%s«?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Fjern"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Luk afspilningsliste"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Fjern afspilningsliste"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Vis ikke denne besked igen"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_SpĂžrg ikke igen"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_OmdĂžb"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "OmdĂžb afspilningsliste"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "indstillinger ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Hvad Ăžnsker du at kalde denne afspilningsliste?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Aktiver"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizer"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamp"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Nummer"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "LĂŠngde"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Format:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Kvalitet:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Bithastighed:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Kammermusik"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klassisk"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "DĂždsmetal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "BlĂžd pop"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsterrap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "HĂ„rd rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavymetal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Larm"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock og rul"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rytme og blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tekno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">-</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata opdateret"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Gemt med succes"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Opdatering af metadata mislykkedes"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Fejl under gemning"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Information om nummeret"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "RĂŠkkefĂžlge"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Gem"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kvalitet:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bithastighed:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titel</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Kunstner</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Kommentar</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Genre</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">År</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">RĂŠkkefĂžlge for nummeret</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "-"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Ingen information tilgĂŠngelig for %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Hop"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Hop til tid"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Indtast tid (minutter:sekunder):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Overskriv %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "_Overskriv"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "BekrĂŠft overskriv"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Eksporter afspilningsliste"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Eksporter"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importer afspilningsliste"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Overskriv %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importer"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "HĂ„ndtering af kĂžer"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_Fjern fra kĂž"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Åbn filer"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Åbn"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Luk _dialog ved Ă„bn"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "TilfĂžj filer"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Luk dialog ved Åbn"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_TilfĂžj"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Luk dialog ved TilfĂžj"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Luk _dialog ved tilfĂžj"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_SĂŠt i kĂž"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Fjern fra kĂž"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Hop til sang"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filter:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filter:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Husk"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_Ryd"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "_Luk ved hop"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Luk ved hop"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "HĂ„ndtering af afspilningslister"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Poster"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Ny"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
msgstr "_OmdĂžb"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Afspil"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Luk dialog ved aktivering af afspilningsliste"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Åbn adresse"
@@ -990,11 +1024,11 @@ msgstr "Åbn adresse"
msgid "Add URL"
msgstr "TilfĂžj adresse"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Indtast adresse:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/de.po b/po/de.po
index e8fea00..c3023f9 100644
--- a/po/de.po
+++ b/po/de.po
@@ -3,15 +3,18 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# Cooligan <ppt23@lkj.hopto.org>, 2012
+# mschwendt <mschwendt@fedoraproject.org>, 2012
# mschwendt <mschwendt@fedoraproject.org>, 2012
# Cooligan <ppt23@lkj.hopto.org>, 2012
# Radioactiveman <thomas-lange2@gmx.de>, 2011
+# Radioactiveman <thomas-lange2@gmx.de>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:28+0100\n"
-"PO-Revision-Date: 2013-03-26 18:31+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-14 19:43+0000\n"
"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: German (http://www.transifex.com/projects/p/audacious/"
"language/de/)\n"
@@ -21,140 +24,133 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Suche ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d Datei gefunden"
msgstr[1] "%d Dateien gefunden"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (ungĂŒltiges UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Neue Wiedergabeliste"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Fehler beim Import der Winamp-EQF-Datei \"%s\""
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Fehler"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "In der Wiedergabeliste zurĂŒckspringen"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Hilfe anzeigen"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Abspielen der aktuellen Wiedergabeliste beginnen"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Version anzeigen"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Aktuellen Titel pausieren"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Wiedergabe starten"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Aktuellen Titel stoppen"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Wiedergabe pausieren"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
-msgstr "Pausieren falls Wiedergabe aktiv, andernfalls starten"
+msgstr "Wiedergabe pausieren falls aktiv, sonst starten"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "In der Wiedergabeliste fortschreiten"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Wiedergabe stoppen"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "«Springe zu Datei»-Fenster anzeigen"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Zu nÀchstem Titel springen"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Zu vorherigen Titel springen"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Dateien zur Wiedergabeliste hinzufĂŒgen"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
msgstr "Dateien zu temporĂ€rer Wiedergabeliste hinzufĂŒgen"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Hauptfenster anzeigen"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Headless-Modus"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "»Zu Titel springen«-Fenster anzeigen"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Ohne grafische BenutzeroberflÀche starten"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Nach dem Ende der Wiedergabe beenden"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Version anzeigen"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
-msgstr "Debug-Meldungen anzeigen"
+msgstr "Debugmeldungen anzeigen"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "DATEI..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Unbekannte Option: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr " - Multimediadateien wiedergeben"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Unbekannte Option: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Versuche `%s --help' fĂŒr weitere Informationen.\n"
+"Aufruf: audacious [OPTION] ... [DATEI] ...\n"
+" \n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
-msgstr "Kein Dekodierer gefunden fĂŒr %s."
+msgstr "Kein Dekodierer gefunden fĂŒr »%s«."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
-msgstr "%s konnte nicht geöffnet werden."
+msgstr "»%s« konnte nicht geöffnet werden."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "%s von %s nicht möglich: nicht unterstĂŒtzte Dateiendung."
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Laden von »%s« nicht möglich: nicht unterstĂŒtzte Dateiendung."
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "Speichern"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "Laden"
-
-#: src/audacious/playlist-files.c:133
+#: src/audacious/playlist-files.c:185
#, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Kann %s nicht speichern: Nicht von Plugin unterstĂŒtzt."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Neue Wiedergabeliste"
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Speichern von »%s« nicht möglich: nicht unterstĂŒtzte Dateiendung."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Momentane Wiedergabe"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -162,414 +158,446 @@ msgstr ""
"Die Wiedergabeliste kann nicht sortiert werden, weil das Scannen der "
"Metadaten noch aktiv ist (oder deaktiviert wurde)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Über %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Info zu"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Einstellungen"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Setzen"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Abbrechen"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "S_chließen"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Einstellungen"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Info"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Plugins ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Aussehen"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Netzwerk"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Wiedergabeliste"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
-msgstr "Titel-Info"
+msgstr "Titelinfo"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugins"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Allgemein"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effekte"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisierung"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Eingabe"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "KĂŒnstler"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titel"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Titelnummer"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Genre"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Dateiname"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Dateipfad"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Datum"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Jahr"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Kommentar"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "QualitÀt"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Keine"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabisch"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltisch"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chinesisch"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Griechisch"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "HebrÀisch"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japanisch"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Koreanisch"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polnisch"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russisch"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanisch"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "TĂŒrkisch"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Gleitkomma"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Album-Modus"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Interface Einstellungen</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Interface-Plugin:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Ausgabe-Plugin:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
-msgstr "<b>Ausgabe-Einstellungen</b>"
+msgstr "<b>Ausgabeeinstellungen</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
-msgstr "Bit-Tiefe:"
+msgstr "Bittiefe:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "PuffergrĂ¶ĂŸe:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Softwareseitige Amplitudenbegrenzung"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Softwareseitige LautstÀrkeregelung benutzen (nicht empfohlen)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
-msgstr "<b>Wiedergabe-VerstÀrkung</b>"
+msgstr "<b>WiedergabeverstÀrkung</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
-msgstr "Wiedergabe-VerstÀrkung aktivieren"
+msgstr "WiedergabeverstÀrkung aktivieren"
+
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Albummodus"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Übersteuern verhindern (empfohlen)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Pegel anpassen</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Alle Dateien verstÀrken:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Unmarkierte Dateien verstÀrken:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Proxy-Host:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Proxy-Port:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Benutzername fĂŒr Proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Passwort fĂŒr Proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
-msgstr "<b>Proxy-Konfiguration</b>"
+msgstr "<b>Proxy Konfiguration</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Proxy aktivieren"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Benutze Authentisierung mit Proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatische Zeichensatzerkennung fĂŒr:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Alternative ZeichensÀtze:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Verhalten</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Wiedergabe beim Starten fortfĂŒhren"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Fortschreiten, falls aktueller Titel gelöscht wird"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Wiedergabeliste beim Öffnen neuer Dateien leeren"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Dateien in temporÀrer Wiedergabeliste öffnen"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Metadaten erst laden, wenn Titel gespielt wird"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>KompatibilitÀt</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpretiere \\ (Backslash) als Pfadtrennzeichen"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album-Cover</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Nach Bildern suchen, die diese Wörter enthalten (durch Kommas getrennt):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Bilder ausschließen, die diese Wörter enthalten (durch Kommas getrennt):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Nach Bildern suchen, die mit dem Dateinamen des Titels ĂŒbereinstimmen"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Rekursiv suchen"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Suchtiefe:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Popup-Informationen</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Popup-Informationen anzeigen"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "PopUp-Verzögerung (Zehntel einer Sekunde):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Fortschrittsbalken fĂŒr aktuellen Titel anzeigen"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITEL"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "KÜNSTLER - TITEL"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "KÜNSTLER - ALBUM - TITEL"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "KÜNSTLER - ALBUM - TITELNUMMER. TITEL"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "KÜNSTLER [ ALBUM ] - TITELNUMMER. TITEL"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITEL"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategorie"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
-msgstr "Eigene Zeichenkette"
+msgstr "Benutzerdefiniert"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Titelanzeige</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Zeige Titelnummern"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "FĂŒhrende Nullen anzeigen (02:00 anstatt 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Informationen ĂŒber das Format der Titelzeile anzeigen"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Eigene Zeichenkette:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Titelformat:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Ausgabe-Plugin:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Eingabe"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Effekte"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisierung"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Allgemein"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Eigene Zeichenkette:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious-Einstellungen"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Audacious Einstellungen"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
-msgstr "Konnte Verzeichnis (%s) nicht erstellen: %s\n"
-
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Position nicht gefunden."
+msgstr "Konnte Verzeichnis (»%s«) nicht erstellen: %s\n"
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Kein Titel wird wiedergegeben."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
-msgstr "Audio-CD, Titel %s"
+msgstr "Audio-CD, Titel »%s«"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -584,409 +612,420 @@ msgstr "Credits"
msgid "License"
msgstr "Lizenz"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
-msgstr "Über Audacious"
+msgstr "Info zu Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Willst du wirklich \"%s\" schließen? Alle seit der letzten Speicherung "
-"geÀnderten EintrÀge gehen dadurch verloren."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Wollen Sie wirklich »%s« dauerhaft löschen?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Löschen"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Wiedergabeliste schließen"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Wiedergabeliste löschen"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Diese Warnung nicht mehr anzeigen"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Nicht mehr fragen"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Umbenennen"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Wiedergabeliste umbenennen"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "Einstellungen ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Wie soll diese Wiedergabeliste heißen?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Aktiv"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizer"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "VorverstÀrkung"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Nummer"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Dauer"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Format:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "QualitÀt:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Bitrate:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Psychedelic Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Kammermusik"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klassisch"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-Hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
-msgstr "Rock & Roll"
+msgstr "Rock ’n’ Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm & Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-Hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/v</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadaten-Update erfolgreich"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Speichern erfolgreich"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metadaten-Update fehlgeschlagen"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Speichern fehlgeschlagen"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Titel-Information"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">QualitÀt:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrate:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titel</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">KĂŒnstler</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Kommentar</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Genre</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Jahr</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Titelnummer"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Titelnummer</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Speichern"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/V"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
-msgstr "Keine Information verfĂŒgbar fĂŒr %s.\n"
+msgstr "Keine Information verfĂŒgbar fĂŒr »%s«.\n"
+
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Springen"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Zu Zeitangabe springen"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Zeitangabe (Minuten:Sekunden):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "»%s« ĂŒberschreiben?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "Über_schreiben"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Überschreiben bestĂ€tigen"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Wiedergabeliste exportieren"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Exportieren"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Wiedergabeliste importieren"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "\"%s\" ĂŒberschreiben?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importieren"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Warteschlangen-Manager"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "Aus _Warteschlange"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Dateien öffnen"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "Ö_ffnen"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "_Dialog beim Öffnen schließen"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Dateien hinzufĂŒgen"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Dialog beim Öffnen schließen"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_HinzufĂŒgen"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Dialog beim HinzufĂŒgen schließen"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "_Dialog beim HinzufĂŒgen schließen"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "In _Warteschlange"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Aus _Warteschlange"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Zu Titel springen"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filter: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filter:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Merken"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_Leeren"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "_Nach Springen schließen"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Nach Öffnen schließen"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Wiedergabelisten-Manager"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "EintrÀge"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Neu"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
msgstr "_Umbenennen"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Wiedergabe"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Dialog beim Öffnen einer Liste _schließen"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "URL öffnen"
@@ -994,11 +1033,11 @@ msgstr "URL öffnen"
msgid "Add URL"
msgstr "URL hinzufĂŒgen"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "URL eingeben:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/el.po b/po/el.po
index 19bdb97..c59c1ef 100644
--- a/po/el.po
+++ b/po/el.po
@@ -13,9 +13,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-08-22 22:02+0000\n"
-"Last-Translator: ΓÎčÎŹÎœÎœÎ·Ï‚ Î‘ÎœÎžÏ…ÎŒÎŻÎŽÎ·Ï‚ <yannanth@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Greek (http://www.transifex.com/projects/p/audacious/language/"
"el/)\n"
"Language: el\n"
@@ -24,140 +24,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Î‘ÎœÎ±Î¶ÎźÏ„Î·ÏƒÎ· ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "ÎČρέΞηÎșΔ %d Î±ÏÏ‡Î”ÎŻÎż"
msgstr[1] "ÎČρέΞηÎșαΜ %d Î±ÏÏ‡Î”ÎŻÎ±"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (Όη έγÎșÏ…ÏÎż UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Νέα Î›ÎŻÏƒÏ„Î± Î‘ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "ÎŁÏ†ÎŹÎ»ÎŒÎ± ÎșÎ±Ï„ÎŹ ΔÎčÏƒÎ±ÎłÏ‰ÎłÎź Î±ÏÏ‡Î”ÎŻÎżÏ… EQF Ï„ÎżÏ… Winamp «%s»"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ÎœÎ”Ï„ÎŹÎČαση Ï€ÎŻÏƒÏ‰ στη Î»ÎŻÏƒÏ„Î± Ï„ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "ΈΜαρΟη Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚ της Ï„ÏÎ­Ï‡ÎżÏ…ÏƒÎ±Ï‚ Î»ÎŻÏƒÏ„Î±Ï‚"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Î•ÎŒÏ†ÎŹÎœÎčση έÎșÎŽÎżÏƒÎ·Ï‚"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Παύση Ï„ÏÎ­Ï‡ÎżÎœÏ„ÎżÏ‚ ÎșÎżÎŒÎŒÎ±Ï„ÎčÎżÏ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ÎŁÏ„Î±ÎŒÎŹÏ„Î·ÎŒÎ± Ï„ÏÎ­Ï‡ÎżÎœÏ„ÎżÏ‚ ÎșÎżÎŒÎŒÎ±Ï„ÎčÎżÏ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Παύση αΜ Ï€Î±ÎŻÎ¶Î”Îč, αλλÎčώς Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎź"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ÎœÎ”Ï„ÎŹÎČαση ÎŒÏ€ÏÎżÏƒÏ„ÎŹ στη Î»ÎŻÏƒÏ„Î± Ï„ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Î ÏÎżÎČολΟ ÎŽÎčÎ±Î»ÏŒÎłÎżÏ… ÎœÎ”Ï„ÎŹÎČασης Ï€ÏÎżÏ‚ Î‘ÏÏ‡Î”ÎŻÎż"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Î ÏÎżÏƒÎžÎźÎșη Î±ÏÏ‡Î”ÎŻÏ‰Îœ στη Î»ÎŻÏƒÏ„Î± Ï„ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Î ÏÎżÏƒÎžÎźÎșη ΜέωΜ Î±ÏÏ‡Î”ÎŻÏ‰Îœ σΔ ÎŒÎčα Ï€ÏÎżÏƒÏ‰ÏÎčÎœÎź Î»ÎŻÏƒÏ„Î± Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Î•ÎŒÏ†ÎŹÎœÎčση Ï„ÎżÏ… ÎșÏ…ÏÎŻÎżÏ…Ï‚ Ï€Î±ÏÎ±ÎžÏÏÎżÏ…"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "ΛΔÎčÏ„ÎżÏ…ÏÎłÎŻÎ± Ï‡Ï‰ÏÎŻÏ‚ ÎłÏÎ±Ï†ÎčÎșÎź Ï€ÏÎżÎČολΟ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ÎˆÎŸÎżÎŽÎżÏ‚ στη ÎŽÎčαÎșÎżÏ€Îź Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Î•ÎŒÏ†ÎŹÎœÎčση έÎșÎŽÎżÏƒÎ·Ï‚"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Î ÏÎżÎČολΟ ÎŒÎ·ÎœÏ…ÎŒÎŹÏ„Ï‰Îœ Î”ÎœÏ„ÎżÏ€ÎčÏƒÎŒÎżÏ ÏƒÏ†Î±Î»ÎŒÎŹÏ„Ï‰Îœ"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ΑΡΧΕΙΟ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎź Î±ÏÏ‡Î”ÎŻÏ‰Îœ Ï€ÎżÎ»Ï…ÎŒÎ­ÏƒÏ‰Îœ"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"ΔοÎșÎčÎŒÎŹÏƒÏ„Î” `%s --help' ÎłÎčα πΔρÎčσσότΔρΔς Ï€Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "ΔΔΜ ÎČρέΞηÎșΔ Î±Ï€ÎżÎșωΎÎčÎșÎżÏ€ÎżÎčÎ·Ï„ÎźÏ‚ ÎłÎčα %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "ΔΔΜ ÎźÏ„Î±Îœ ΎυΜατό Ï„Îż ÎŹÎœÎżÎčÎłÎŒÎ± Ï„ÎżÏ… %s."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η %s Ï„ÎżÏ… %s: Όη Ï…Ï€ÎżÏƒÏ„Î·ÏÎčÎłÎŒÎ­ÎœÎ· ΔπέÎșταση Î±ÏÏ‡Î”ÎŻÎżÏ…."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "Î±Ï€ÎżÎžÎźÎșΔυση"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "φόρτωση"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η %s Ï„ÎżÏ… %s: Όη Ï…Ï€ÎżÏƒÏ„Î·ÏÎčÎłÎŒÎ­ÎœÎ· ΔπέÎșταση Î±ÏÏ‡Î”ÎŻÎżÏ…."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Νέα Î›ÎŻÏƒÏ„Î± Î‘ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Î‘ÎœÎ±Ï€Î±ÏÎŹÎłÎ”Ï„Î±Îč τώρα"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -165,416 +156,448 @@ msgstr ""
"Η Î»ÎŻÏƒÏ„Î± Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚ ΎΔΜ ÎŒÏ€ÎżÏÎ”ÎŻ Μα ταΟÎčÎœÎżÎŒÎ·ÎžÎ”ÎŻ ΔπΔÎčÎŽÎź η ÏƒÎŹÏÏ‰ÏƒÎ· ÎłÎčα "
"ÎŒÎ”Ï„Î±ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÎ± Î”ÎŻÎœÎ±Îč αÎșόΌα σΔ ΔΟέλÎčΟη (Îź έχΔÎč Î±Ï€Î”ÎœÎ”ÏÎłÎżÏ€ÎżÎčηΞΔί)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "ÎŁÏ‡Î”Ï„ÎčÎșÎŹ ΌΔ Ï„Îż %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "ÎĄÏ…ÎžÎŒÎŻÏƒÎ”Îčς %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Î‰Ï‡ÎżÏ‚"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ΔίÎșÏ„Ï…Îż"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Î›ÎŻÏƒÏ„Î± Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Î Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚ ÎšÎżÎŒÎŒÎ±Ï„ÎčÎżÏ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ΠρόσΞΔτα"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "ΓΔΜÎčÎșÎŹ"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Εφέ"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "ΟπτÎčÎșÎżÏ€ÎżÎŻÎ·ÏƒÎ·"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Î“ÏÎ±ÎŒÎŒÎź ΕÎčÏƒÏŒÎŽÎżÏ…"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ÎœÎ”Ï„Î±Ï†ÎżÏÎŹ"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "ΚαλλÎčτέχΜης"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Î†Î»ÎŒÏ€ÎżÏ…ÎŒ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Î€ÎŻÏ„Î»ÎżÏ‚"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "ΑρÎčΞΌός ÎšÎżÎŒÎŒÎ±Ï„ÎčÎżÏ"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Î“Î­ÎœÎżÏ‚"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "ÎŒÎœÎżÎŒÎ± Î‘ÏÏ‡Î”ÎŻÎżÏ…"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Î€ÎżÏ€ÎżÎžÎ”ÏƒÎŻÎ± Î‘ÏÏ‡Î”ÎŻÎżÏ…"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Î—ÎŒÎ”ÏÎżÎŒÎ·ÎœÎŻÎ±"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "ÎˆÏ„ÎżÏ‚"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ÎŁÏ‡ÏŒÎ»ÎčÎż"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Î ÎżÎ»Ï…ÎŒÎ­ÏƒÎż"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "ΠοÎčότητα"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "ΚαΜέΜα"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ΑραÎČÎčÎșÎŹ"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "ΒαλτÎčÎșÎŹ"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "ΚÎčΜέζÎčÎșα"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ΕλληΜÎčÎșÎŹ"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ΕÎČραϊÎșÎŹ"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "ΙαπωΜÎčÎșÎŹ"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "ÎšÎżÏÎ”ÎŹÏ„ÎčÎșα"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Î ÎżÎ»Ï‰ÎœÎčÎșÎŹ"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "ÎĄÏŽÏƒÎčÎșα"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "΀αϊÎČαΜέζÎčÎșα"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Î€ÎżÏÏÎșÎčÎșα"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "ΚÎčÎœÎ·Ï„Îź Ï…Ï€ÎżÎŽÎčÎ±ÏƒÏ„ÎżÎ»Îź"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ΛΔÎčÏ„ÎżÏ…ÏÎłÎŻÎ± ÎŹÎ»ÎŒÏ€ÎżÏ…ÎŒ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Î ÏÏŒÏƒÎžÎ”Ï„Îż ÎłÏÎ±ÎŒÎŒÎźÏ‚ Î”ÎŸÏŒÎŽÎżÏ…:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ÎĄÏ…ÎžÎŒÎŻÏƒÎ”Îčς Î•ÎŸÏŒÎŽÎżÏ…</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Î’ÎŹÎžÎżÏ‚ ΌπÎčτ:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "ÎœÎ­ÎłÎ”ÎžÎżÏ‚ Ï€ÏÎżÏƒÏ‰ÏÎčÎœÎźÏ‚ ÎŒÎœÎźÎŒÎ·Ï‚:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr ""
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Î§ÏÎźÏƒÎ· λογÎčσΌÎčÎșό Î”Î»Î­ÎłÏ‡ÎżÏ… έΜτασης (ΎΔΜ συΜÎčÏƒÏ„ÎŹÏ„Î±Îč)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr ""
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ΛΔÎčÏ„ÎżÏ…ÏÎłÎŻÎ± ÎŹÎ»ÎŒÏ€ÎżÏ…ÎŒ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Î‘Ï€ÎżÏ„ÏÎżÏ€Îź Î±Ï€ÎżÎșÎżÏ€ÎźÏ‚ (συΜÎčÏƒÏ„ÎŹÏ„Î±Îč)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>ÎĄÏÎžÎŒÎčση ΕπÎčπέΎωΜ</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Î•ÎœÎŻÏƒÏ‡Ï…ÏƒÎ· όλωΜ τωΜ Î±ÏÏ‡Î”ÎŻÏ‰Îœ:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Î•ÎœÎŻÏƒÏ‡Ï…ÏƒÎ· Î±ÏÏ‡Î”ÎŻÏ‰Îœ Ï‡Ï‰ÏÎŻÏ‚ ΔτÎčÎșέτΔς:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "ΔÎčΔύΞυΜση ÎŽÎčÎ±ÎŒÎ”ÏƒÎżÎ»Î±ÎČÎ·Ï„Îź:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Θύρα ÎŽÎčÎ±ÎŒÎ”ÏƒÎżÎ»Î±ÎČÎ·Ï„Îź:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "ÎŒÎœÎżÎŒÎ± Ï‡ÏÎźÏƒÏ„Î· ÎŽÎčÎ±ÎŒÎ”ÏƒÎżÎ»Î±ÎČÎ·Ï„Îź:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "ΚωΎÎčÎșός πρόσÎČασης ÎŽÎčÎ±ÎŒÎ”ÏƒÎżÎ»Î±ÎČÎ·Ï„Îź:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ÎĄÏÎžÎŒÎčση ΔÎčÎ±ÎŒÎ”ÏƒÎżÎ»Î±ÎČÎ·Ï„Îź</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Î§ÏÎźÏƒÎ· ÎŽÎčÎ±ÎŒÎ”ÏƒÎżÎ»Î±ÎČÎ·Ï„Îź"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Î§ÏÎźÏƒÎ· πÎčÏƒÏ„ÎżÏ€ÎżÎŻÎ·ÏƒÎ·Ï‚ ΌΔ Ï„Îż ÎŽÎčÎ±ÎŒÎ”ÏƒÎżÎ»Î±ÎČÎ·Ï„Îź"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "ΑυτόΌατη Î±ÎœÎ±ÎłÎœÏŽÏÎčση ÎșωΎÎčÎșÎżÏƒÎ”Î»ÎŻÎŽÎ±Ï‚ ÎłÎčα:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ΕΜαλλαÎșτÎčÎșές ÎșωΎÎčÎșÎżÏ€ÎżÎčÎźÏƒÎ”Îčς χαραÎșÏ„ÎźÏÏ‰Îœ:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>ÎŁÏ…ÎŒÏ€Î”ÏÎčÏ†ÎżÏÎŹ</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ÎŁÏ…ÎœÎ­Ï‡Î”Îčα Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚ στηΜ ΔÎșÎșÎŻÎœÎ·ÏƒÎ·"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Î ÏÎżÏ‡ÏŽÏÎ·ÏƒÎ” όταΜ Ï„Îż τρέχωΜ Î±ÏÏ‡Î”ÎŻÎż ÎŽÎčÎ±ÎłÏÎ±Ï†Î”ÎŻ"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "ÎšÎ±ÎžÎŹÏÎčσΌα της Î»ÎŻÏƒÏ„Î±Ï‚ Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚ όταΜ Î±ÎœÎżÎŻÎłÎżÏ…Îœ Î±ÏÏ‡Î”ÎŻÎ±"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Î†ÎœÎżÎčÎłÎŒÎ± Î±ÏÏ‡Î”ÎŻÏ‰Îœ σΔ ÎŒÎčα Ï€ÏÎżÏƒÏ‰ÏÎčÎœÎź Î»ÎŻÏƒÏ„Î± Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ΜηΜ Ï†ÎżÏÏ„ÏŽÎœÎ”Îčς ÎŒÎ”Ï„Î±ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÎ± ÎłÎčα τα Ï„ÏÎ±ÎłÎżÏÎŽÎčα Ï€ÏÎżÏ„ÎżÏ Ï€Î±ÎŻÎŸÎżÏ…Îœ"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>ÎŁÏ…ÎŒÎČατότητα</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Î•ÏÎŒÎ·ÎœÎ”ÎŻÎ± \\ (αΜτÎčÏ€Î»ÎŹÎłÎčα) ως ÎŽÎčαχωρÎčÏƒÏ„Îź φαÎșέλωΜ"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b> Î†Î»ÎŒÏ€ÎżÏ…ÎŒ ΀έχΜης</ b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Î‘ÎœÎ±Î¶ÎźÏ„Î·ÏƒÎ· ÎłÎčα ΔÎčÎșόΜΔς Ï€ÎżÏ… ταÎčρÎčÎŹÎ¶ÎżÏ…Îœ ΌΔ Î±Ï…Ï„ÎŹ τα Î»ÏŒÎłÎčα (ÎŽÎčαχωρÎčσΌέΜα ΌΔ "
"ÎșόΌΌα):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Î•ÎŸÎ±ÎŻÏÎ”ÏƒÎ· τωΜ ΔÎčÎșόΜωΜ Ï€ÎżÏ… ταÎčρÎčÎŹÎ¶ÎżÏ…Îœ ΌΔ Î±Ï…Ï„ÎŹ τα Î»ÏŒÎłÎčα (ÎŽÎčαχωρÎčσΌέΜα ΌΔ ÎșόΌΌα):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr ""
"Î‘ÎœÎ±Î¶ÎźÏ„Î·ÏƒÎ· ÎłÎčα ΔÎčÎșόΜΔς Ï€ÎżÏ… ταÎčρÎčÎŹÎ¶ÎżÏ…Îœ ΌΔ Ï„Îż ÏŒÎœÎżÎŒÎ± Ï„ÎżÏ… Î±ÏÏ‡Î”ÎŻÎżÏ… Ï„ÏÎ±ÎłÎżÏ…ÎŽÎčÎżÏ"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Î‘ÎœÎ±ÎŽÏÎżÎŒÎčÎșÎź Î±ÎœÎ±Î¶ÎźÏ„Î·ÏƒÎ·"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Î’ÎŹÎžÎżÏ‚ Î±ÎœÎ±Î¶ÎźÏ„Î·ÏƒÎ·Ï‚:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>ΑΜαΎυόΌΔΜΔς Ï€Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Î•ÎŒÏ†ÎŹÎœÎčση Ï€Î»Î·ÏÎżÏ†ÎżÏÎčώΜ σΔ Î±ÎœÎ±ÎŽÏ…ÏŒÎŒÎ”ÎœÎż Ï€Î±ÏÎŹÎžÏ…ÏÎż"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "ΑΜαΎυόΌΔΜη ÎșαΞυστέρηση (ΎέÎșατα Ï„ÎżÏ… ÎŽÎ”Ï…Ï„Î”ÏÎżÎ»Î­Ï€Ï„ÎżÏ…):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Î•ÎŒÏ†ÎŹÎœÎčση Ï‡ÏÎżÎœÎżÎŽÎčÎ±ÎłÏÎŹÎŒÎŒÎ±Ï„ÎżÏ‚ ÎłÎčα Ï„Îż Ï„ÏÎ­Ï‡ÎżÎœ Ï„ÏÎ±ÎłÎżÏÎŽÎč"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "Î€Î™Î€Î›ÎŸÎŁ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ÎšÎ‘Î›Î›Î™Î€Î•Î§ÎÎ—ÎŁ - Î€Î™Î€Î›ÎŸÎŁ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ÎšÎ‘Î›Î›Î™Î€Î•Î§ÎÎ—ÎŁ - ΑΛΜΠΟ΄Μ - Î€Î™Î€Î›ÎŸÎŁ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ÎšÎ‘Î›Î›Î™Î€Î•Î§ÎÎ—ÎŁ - ΑΛΜΠΟ΄Μ - Î€Î™Î€Î›ÎŸÎŁ. Î€ÎĄÎ‘Î“ÎŸÎ„Î”Î™ÎŸÎ„"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ÎšÎ‘Î›Î›Î™Î€Î•Î§ÎÎ—ÎŁ [ ΑΛΜΠΟ΄Μ ] - Î€Î™Î€Î›ÎŸÎŁ. Î€ÎĄÎ‘Î“ÎŸÎ„Î”Î™ÎŸÎ„"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ΑΛΜΠΟ΄Μ - Î€Î™Î€Î›ÎŸÎŁ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ÎšÎ±Ï„Î·ÎłÎżÏÎŻÎ±"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Î ÏÎżÏƒÎ±ÏÎŒÎżÏƒÎŒÎ­ÎœÎż"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Î ÏÎżÎČολΟ Ï„ÏÎ±ÎłÎżÏ…ÎŽÎčÎżÏ</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Î•ÎŒÏ†ÎŹÎœÎčση αρÎčΞΌώΜ Ï„ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Î•ÎŒÏ†ÎŹÎœÎčση πρωτΔύωΜ ΌηΎΔΜÎčÎșώΜ (02:00 Î±ÎœÏ„ÎŻ 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Î•ÎŒÏ†ÎŹÎœÎčση Ï€Î»Î·ÏÎżÏ†ÎżÏÎčώΜ ÎłÎčα τη ÎŒÎżÏÏ†Îź Ï„ÎżÏ… Ï„ÎŻÏ„Î»ÎżÏ…"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Î ÏÎżÏƒÎ±ÏÎŒÎżÏƒÎŒÎ­ÎœÎż αλφαρÎčΞΌητÎčÎșό:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "ÎœÎżÏÏ†Îź Ï„ÎŻÏ„Î»ÎżÏ…:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Î ÏÏŒÏƒÎžÎ”Ï„Îż ÎłÏÎ±ÎŒÎŒÎźÏ‚ Î”ÎŸÏŒÎŽÎżÏ…:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ÎœÎ”Ï„Î±Ï†ÎżÏÎŹ"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Î“ÏÎ±ÎŒÎŒÎź ΕÎčÏƒÏŒÎŽÎżÏ…"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Εφέ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "ΟπτÎčÎșÎżÏ€ÎżÎŻÎ·ÏƒÎ·"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "ΓΔΜÎčÎșÎŹ"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Î ÏÎżÏƒÎ±ÏÎŒÎżÏƒÎŒÎ­ÎœÎż αλφαρÎčΞΌητÎčÎșό:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Î ÏÎżÏ„ÎčÎŒÎźÏƒÎ”Îčς Ï„ÎżÏ… Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η ΎηΌÎčÎżÏ…ÏÎłÎŻÎ± Ï„ÎżÏ… ÎșÎ±Ï„Î±Î»ÏŒÎłÎżÏ… (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Η Ξέση ΎΔΜ ÎČρέΞηÎșΔ."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ΚαΜέΜα Ï„ÏÎ±ÎłÎżÏÎŽÎč σΔ Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎź."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "ÎœÎżÏ…ÏƒÎčÎșό CD, ÎșÎżÎŒÎŒÎŹÏ„Îč %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ÎœÎżÎœÎżÏ†Ï‰ÎœÎčÎșό"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ÎŁÏ„Î”ÏÎ”ÎżÏ†Ï‰ÎœÎčÎșό"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -589,409 +612,420 @@ msgstr "ÎœÎœÎ”ÎŻÎ±"
msgid "License"
msgstr "ΆΎΔÎčα"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "ÎŁÏ‡Î”Ï„ÎčÎșÎŹ ΌΔ Ï„Îż Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
msgstr ""
-"Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč πως ΞέλΔτΔ Μα ÎșÎ»Î”ÎŻÏƒÎ”Ï„Î” τηΜ %s; ΑΜ τηΜ ÎșÎ»Î”ÎŻÏƒÎ”Ï„Î”, όλΔς ÎżÎč "
-"Î±Î»Î»Î±ÎłÎ­Ï‚ Ï€ÎżÏ… έγÎčΜαΜ από τηΜ Ï„Î”Î»Î”Ï…Ï„Î±ÎŻÎ± Ï†ÎżÏÎŹ Ï€ÎżÏ… Î”ÎŸÎŹÏ‡ÎžÎ·ÎșΔ η Î»ÎŻÏƒÏ„Î± Ξα Ï‡Î±ÎžÎżÏÎœ."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż Î›ÎŻÏƒÏ„Î±Ï‚ Î€ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Να ΌηΜ ΔΌφαΜÎčÏƒÏ„Î”ÎŻ ÎŸÎ±ÎœÎŹ αυτό Ï„Îż ÎŒÎźÎœÏ…ÎŒÎ±"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ÎœÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÎŻÎ± Î»ÎŻÏƒÏ„Î±Ï‚ Î±ÎœÎ±Ï€Î±ÏÎ±ÎłÏ‰ÎłÎźÏ‚"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ÏÏ…ÎžÎŒÎŻÏƒÎ”Îčς ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Î•ÎœÎ”ÏÎłÎżÏ€ÎżÎŻÎ·ÏƒÎ·"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Î™ÏƒÎżÏƒÏ„Î±ÎžÎŒÎčÏƒÏ„ÎźÏ‚"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Î ÏÎżÎ”ÎœÎŻÏƒÏ‡Ï…ÏƒÎ·"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "ÎšÎżÎŒÎŒÎŹÏ„Îč"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "ΜμÎșÎżÏ‚"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "ÎœÏ€Î»ÎżÏ…Î¶"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ΚλασÎčÎșÎź ÎœÎżÏ…ÏƒÎčÎșÎź"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "ÎšÎŹÎœÏ„ÏÎč"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ÎÏ„ÎŻÏƒÎșÎż"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "ΊολÎș"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "ΊαΜÎș"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ΧÎčπ Ï‡ÎżÏ€"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "΀ζαζ"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Μέταλ"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Î ÎżÏ€"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "ÎĄÎ±Ï€"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "ΥέγÎșΔ"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "ÎĄÎżÎș"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "ÎŁÎżÏ…ÎŻÎœÎłÎș"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "΀έÎșÎœÎż"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ΎΔΜ ÎčσχύΔÎč</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "΀α ÎŒÎ”Ï„Î±ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÎ± ΔΜηΌΔρώΞηÎșαΜ ΌΔ ΔπÎčÏ„Ï…Ï‡ÎŻÎ±"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Η ΔΜηΌέρωση τωΜ ÎŒÎ”Ï„Î±ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÏ‰Îœ απέτυχΔ"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Î Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚ ÎšÎżÎŒÎŒÎ±Ï„ÎčÎżÏ"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Î€ÏÏ€ÎżÏ‚ Î±ÏÏ‡Î”ÎŻÎżÏ…:</ span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">ΠοÎčότητα:</ span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">ÎĄÏ…ÎžÎŒÏŒÏ‚ ÎŒÎ”Ï„ÎŹÎŽÎżÏƒÎ·Ï‚:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Î€ÎŻÏ„Î»ÎżÏ‚</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ΚαλλÎčτέχΜης</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Î†Î»ÎŒÏ€ÎżÏ…ÎŒ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ÎŁÏ‡ÏŒÎ»ÎčÎż</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Î•ÎŻÎŽÎżÏ‚</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">ÎˆÏ„ÎżÏ‚</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ΑρÎčΞΌός ÎšÎżÎŒÎŒÎ±Ï„ÎčÎżÏ</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kΒ/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "ΔΔΜ Ï…Ï€ÎŹÏÏ‡ÎżÏ…Îœ Ï€Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚ ÎłÎčα Ï„Îż %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ÎœÎ”Ï„ÎŹÎČαση σΔ Î§ÏÏŒÎœÎż"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ΠληÎșÏ„ÏÎżÎ»ÎżÎłÎźÏƒÏ„Î” Ï„Îż Ï‡ÏÏŒÎœÎż (Î»Î”Ï€Ï„ÎŹ: ΎΔυτΔρόλΔπτα):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Να ÎłÎŻÎœÎ”Îč αΜτÎčÎșÎ±Ï„ÎŹÏƒÏ„Î±ÏƒÎ· Ï„ÎżÏ… %s;"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Î•ÎŸÎ±ÎłÏ‰ÎłÎź Î›ÎŻÏƒÏ„Î±Ï‚ Î€ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ΕÎčÏƒÎ±ÎłÏ‰ÎłÎź Î›ÎŻÏƒÏ„Î±Ï‚ Î€ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Να ÎłÎŻÎœÎ”Îč αΜτÎčÎșÎ±Ï„ÎŹÏƒÏ„Î±ÏƒÎ· Ï„ÎżÏ… %s;"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "ΔÎčαχΔÎčρÎčÏƒÏ„ÎźÏ‚ ÎŸÏ…ÏÎŹÏ‚ Î‘ÎœÎ±ÎŒÎżÎœÎźÏ‚"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Î†ÎœÎżÎčÎłÎŒÎ± Î‘ÏÏ‡Î”ÎŻÏ‰Îœ"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Î ÏÎżÏƒÎžÎźÎșη Î‘ÏÏ‡Î”ÎŻÏ‰Îœ"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż Ï€Î±ÏÎ±ÎžÏÏÎżÏ… ÎŽÎčÎ±Î»ÏŒÎłÎżÏ… ÎșÎ±Ï„ÎŹ Ï„Îż ÎŹÎœÎżÎčÎłÎŒÎ±"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż Ï„ÎżÏ… ÎŽÎčÎ±Î»ÏŒÎłÎżÏ… ÎșÎ±Ï„ÎŹ τηΜ Ï€ÏÎżÏƒÎžÎźÎșη"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_ÎŁÏ„Î·Îœ ÎŸÏ…ÏÎŹ"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Αφ_Î±ÎŻÏÎ”ÏƒÎ· από ÎŸÏ…ÏÎŹ"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ÎœÎ”Ï„ÎŹÎČαση ÏƒÏ„Îż Î€ÏÎ±ÎłÎżÏÎŽÎč"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "ÎŠÎŻÎ»Ï„ÏÎż: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_ΊÎčÎ»Ï„ÏÎŹÏÎčσΌα:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Î‘Ï€ÎżÎŒÎœÎ·ÎŒÏŒÎœÎ”Ï…ÏƒÎ·"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "ΕÎșÎșαΞΏ_ρÎčση"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż σΔ ÎœÎ”Ï„ÎŹÎČαση"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "ΔÎčÎ±Ï‡Î”ÎŻÏÎčση Î›ÎŻÏƒÏ„Î±Ï‚ Î€ÏÎ±ÎłÎżÏ…ÎŽÎčώΜ"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "ÎšÎ±Ï„Î±Ï‡Ï‰ÏÎźÏƒÎ”Îčς"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_ÎœÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÎŻÎ±"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż ÎŽÎčÎ±Î»ÏŒÎłÎżÏ… στηΜ Î”ÎœÎ”ÏÎłÎżÏ€ÎżÎŻÎ·ÏƒÎ· της Î»ÎŻÏƒÏ„Î±Ï‚"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Î†ÎœÎżÎčÎłÎŒÎ± ÎŽÎčΔύΞυΜσης URL"
@@ -999,11 +1033,11 @@ msgstr "Î†ÎœÎżÎčÎłÎŒÎ± ÎŽÎčΔύΞυΜσης URL"
msgid "Add URL"
msgstr "Î ÏÎżÏƒÎžÎźÎșη ÎŽÎčΔύΞυΜσης URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "ΕÎčÏƒÎ±ÎłÏ‰ÎłÎź URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/en_GB.po b/po/en_GB.po
index 33b7211..68b7687 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-07-02 20:35+0000\n"
-"Last-Translator: Andi Chandler <andi@gowling.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
"audacious/language/en_GB/)\n"
"Language: en_GB\n"
@@ -19,140 +19,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Searching ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d file found"
msgstr[1] "%d files found"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (invalid UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "New Playlist"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Error importing Winamp EQF file '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Skip backwards in playlist"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Start playing current playlist"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Show version"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pause current song"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Stop current song"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pause if playing, play otherwise"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Skip forward in playlist"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Display Jump to File dialogue"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Add files to the playlist"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Add new files to a temporary playlist"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Display the main window"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Quit on playback stop"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Show version"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Print debugging messages"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FILE..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- play multimedia files"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "No decoder found for %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s could not be opened."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Cannot %s %s: unsupported file extension."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "save"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "load"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Cannot %s %s: unsupported file extension."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "New Playlist"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Now Playing"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -160,412 +151,444 @@ msgstr ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "About %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Settings"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Network"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Playlist"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Song Info"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plug-ins"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "General"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effect"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisation"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Input"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artist"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Title"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Tracknumber"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Genre"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Filename"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Filepath"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Date"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Year"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comment"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Quality"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "None"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabic"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltic"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chinese"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Greek"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebrew"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japanese"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korean"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polish"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russian"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanese"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turkish"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Floating point"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Album mode"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Output plug-in:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Output Settings</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bit depth:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Buffer size:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Soft clipping"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Use software volume control (not recommended)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Enable Replay Gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Album mode"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Prevent clipping (recommended)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Adjust Levels</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplify all files:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplify untagged files:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Proxy hostname:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Proxy port:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Proxy username:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Proxy password:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Proxy Configuration</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Enable proxy usage"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Use authentication with proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Auto character encoding detector for:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Fallback character encodings:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Behaviour</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continue playback on start-up"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Advance when the current song is deleted"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Clear the playlist when opening files"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Open files in a temporary playlist"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Do not load metadata for songs until played"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibility</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpret \\ (backward slash) as a folder delimiter"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album Art</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Search for images matching these words (comma-separated):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Exclude images matching these words (comma-separated):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Search for images matching song file name"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Search recursively"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Search depth:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Popup Information</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Show pop-up information"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Pop-up delay (tenths of a second):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Show time scale for current song"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITLE"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTIST - TITLE"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTIST - ALBUM - TITLE"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTIST - ALBUM - TRACK. TITLE"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTIST [ ALBUM ] - TRACK. TITLE"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITLE"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Category"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Custom"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Song Display</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Show song numbers"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Show leading zeroes (02:00 instead of 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Show information about titlestring format"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Custom string:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Title format:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Output plug-in:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Input"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Effect"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisation"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "General"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Custom string:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious Preferences"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Could not create directory (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Position not found."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "No song playing."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, track %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -580,409 +603,420 @@ msgstr "Credits"
msgid "License"
msgstr "Licence"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "About Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Close Playlist"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Do not show this message again"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Rename Playlist"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "settings ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Enable"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equaliser"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamp"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Track"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Length"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classical"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata updated successfully"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metadata updating failed"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Track Information"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Quality:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrate:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Title</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artist</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comment</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Genre</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Year</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Track Number</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "No info available for %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Jump to Time"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Enter time (minutes:seconds):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Overwrite %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Export Playlist"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Import Playlist"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Overwrite %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Queue Manager"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Open Files"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Add Files"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Close dialogue on Open"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Close dialogue on Add"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Queue"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Un_queue"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Jump to Song"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filter: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filter:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Remember"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Clea_r"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Close on Jump"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Playlist Manager"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entries"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Rename"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Close dialogue on activating playlist"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Open URL"
@@ -990,11 +1024,11 @@ msgstr "Open URL"
msgid "Add URL"
msgstr "Add URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Enter URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/eo.po b/po/eo.po
index 2c58cf9..f32202c 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -5,12 +5,13 @@
# Translators:
# fefcas <fefcas@gmail.com>, 2013
# fefcas <fefcas@gmail.com>, 2013
+# fefcas <fefcas@gmail.com>, 2013-2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-04 11:18+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 13:35+0000\n"
"Last-Translator: fefcas <fefcas@gmail.com>\n"
"Language-Team: Esperanto (http://www.transifex.com/projects/p/audacious/"
"language/eo/)\n"
@@ -20,553 +21,578 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
-msgstr "Serchado ..."
+msgstr "Serĉado ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d dosiero trovita"
msgstr[1] "%d dosieroj trovitaj"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(nevalida UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nova Ludlisto"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Eraro dum importado de dosiero Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Eraro"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Retroiri en ludlisto"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Montri komand-linian helpon"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Komenci ludi la aktualan ludliston"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Montrigi version"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pauzi la aktualan muzikon"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Komenci ludadon"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Halti la aktualan muzikon"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "PaĆ­zi ludadon"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
-msgstr "Pauzi se estas ludata, ludi alie"
+msgstr "PaĆ­zi se oni ludas, ludi alie"
+
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Halti ludadon"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Antauiri en ludlisto"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Salti al antaĆ­a muziko"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Montrigi dialogon Salti al Dosiero"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Salti al sekva muziko"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Aldoni dosierojn al la ludlisto"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Aldoni novajn dosierojn al la provizora ludlisto"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Aldoni dosierojn al provizora ludlisto"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
-msgstr "Montrigi la chefan fenestron"
+msgstr "Montrigi la ĉefan fenestron"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Senkapa reghimo"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Montri la fenestron salt-al-muziko"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Komenci sen grafik-interfaco"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Eliri post fini la ludadon"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Montrigi version"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
-msgstr "Printi rafinigajn mesaghojn"
+msgstr "Printi rafinigajn mesaĝojn"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "DOSIERO..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Nekonata modifilo: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- ludi plurmediajn dosierojn"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Nekonata modifilo: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Provu `%s --help' por pli da informo.\n"
+"Uzmaniero: audacious [MODIFILO] ... [DOSIERO] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Neniu dekodilo trovita por %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s ne povis esti malfermata."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Ne eblas %s %s: nesubtenata dosier-sufikso."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "konservi"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Ne eblas Ɲargi je %s: nesubtenata dosier-sufikso."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "shargi"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Ne eblas %s %s: nesubtenata dosier-sufikso."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nova Ludlisto"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Ne eblas konservi %s: nesubtenata dosier-sufikso."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Nune Ludanta"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr ""
-"La ludlisto ne povas esti ordigata char skanado de metadatumaro ankorau "
-"plenumighas (au ghi estis malebligata)."
-
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Pri %s"
+"La ludlisto ne povas esti ordigata ĉar skanado de metadatumaro ankoraƭ "
+"plenumiĝas (aƭ ĝi estis malebligata)."
+
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Pri"
+
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Agordoj"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Difini"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Rezigni"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Fermi"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Agordoj"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Pri"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_KromaĔoj ..."
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Agordoj"
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Aspekto"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Sono"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Reto"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Ludlisto"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Muzik-informo"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
-msgstr "Kromajhoj"
+msgstr "KromaĔoj"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Ĝenerale"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efekto"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Rigardo"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Enigo"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transporto"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artisto"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Albumo"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titolo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Bendnumero"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
-msgstr "Ghenro"
+msgstr "Ĝenro"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Dosiernomo"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Dosiervojo"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Dato"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
-msgstr "Yaro"
+msgstr "Jaro"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komento"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodeko"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kvalito"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Neniu"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Araba"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Balta"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
-msgstr "China"
+msgstr "Ĉina"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Greka"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebrea"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japana"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korea"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Pola"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Rusa"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Tajvana"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turka"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Glitkoma"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Albuma reghimo"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Interfac-agordoj</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Interfac-kromaĔo:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Eliga kromaĔo:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Eliraj Agordoj</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bit-profundo:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Bufro-grando:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Milda saturo"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
-msgstr "Uzi virtualan lautec-regilon (ne rekomendinde)"
+msgstr "Uzi virtualan laĆ­tec-regilon (ne rekomendinde)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
-msgstr "<b>Alghustigi Amplifon</b>"
+msgstr "<b>Alĝustigi Amplifon</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
-msgstr "Ebligi Alghustigon de Amplifo"
+msgstr "Ebligi Alĝustigon de Amplifo"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Albuma reĝimo"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Eviti saturadon (rekomendinde)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Agordi Nivelojn</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
-msgstr "Amplifi chiujn dosierojn:"
+msgstr "Amplifi ĉiujn dosierojn:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplifi ne-etikeditajn dosierojn"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Prokura servil-nomo:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Prokura pordo:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Prokura uzant-nomo:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Prokura pasvorto:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Prokura Agordado</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Ebligi uzadon de prokurilo"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
-msgstr "Uzi autentikadon per prokurilo"
+msgstr "Uzi aĆ­tentikadon per prokurilo"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
-msgstr "Automata detektilo de signo-kodaro por:"
+msgstr "AĆ­tomata detektilo de signo-kodaro por:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Alternativaj signo-kodaro:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Konduto</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
-msgstr "Daurigi ludadon che komencigho"
+msgstr "Daƭrigi ludadon ĉe komenciĝo"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
-msgstr "Antauiri kiam la aktuala muziko estas forvishata"
+msgstr "Antaƭiri kiam la aktuala muziko estas forviƝata"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Malplenigi la ludliston dum malfermo de dosieroj"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Malfermi dosierojn en provizora ludlisto"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
-msgstr "Ne shargi je metadatumaro por muzikoj ghis kiam ludate"
+msgstr "Ne Ɲargi je metadatumaro por muzikoj ĝis kiam ludate"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Kongrueco</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpreti \\ (retroklinon) kiel apartigilo de dosierujoj"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album-bildo</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
-msgstr "Serchi bildojn kongruajn al tiuj chi vortoj (kom-apartite):"
+msgstr "Serĉi bildojn kongruajn al tiuj ĉi vortoj (kom-apartigitaj):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
-msgstr "Forjheti bildojn kongruajn al tiuj chi vortoj (kom-apartite):"
+msgstr "ForÄ”eti bildojn kongruajn al tiuj ĉi vortoj (kom-apartigitaj):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
-msgstr "Serchi bildojn kongruajn al la dosier-nomo de la muziko"
+msgstr "Serĉi bildojn kongruajn al la dosier-nomo de la muziko"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
-msgstr "Serchi rikure"
+msgstr "Serĉi rikure"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
-msgstr "Serch-profundo:"
+msgstr "Serĉ-profundo:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
-msgstr "<b>Shprucajha Informo</b>"
+msgstr "<b>ƜprucaÄ”a Informo</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
-msgstr "Montri shpruc-informon"
+msgstr "Montri Ɲpruc-informon"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
-msgstr "Shpruca prokrasto (dekonoj da sekundoj):"
+msgstr "Ɯpruca prokrasto (dekonoj da sekundoj):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
-msgstr "Montri tempo-skalo por la aktuala muziko"
+msgstr "Montri tempo-skalon por la aktuala muziko"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITOLO"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTO - TITOLO"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTO - ALBUMO - TITOLO"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTIST - ALBUMO - TRAKO. TITOLO"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTIST [ALBUMO] - TRAKO. TITOLO"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUMO - TITOLO"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategorio"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personigite"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Muzik-Montrilo</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Montri muzik-numerojn"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
-msgstr "Montri antau-nuloj (02:00 anstatau 2:00)"
-
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Montri informon pri la titol-formo"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Personigita formo:"
+msgstr "Montri antaĆ­-nuloj (02:00 anstatau 2:00)"
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Titol-formo:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Eliga kromajho:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transporto"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Enigo"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efekto"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Rigardo"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Ghenerale"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Personigita formo:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferoj de Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Agordaro de Audacious"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Ne eblis krei dosierujon (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "La pozicio ne estis trovata."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Neniu muziko estas ludata."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Muzika KD, trako %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Unukanale"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Dukanale"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -581,409 +607,420 @@ msgstr "Agnoskoj"
msgid "License"
msgstr "Permeso"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Pri Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Chu vi certas pri fermi %s? Se jes, iu ajn modifoj faritaj ekde kiam la "
-"ludlisto estis eksportata estos perditaj."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Ĉu vi volas definitive forigi \"%s\"?"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Fermi Ludliston"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Forigi"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Ne montri tiun chi mesaghon refoje"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Forigi ludliston"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Ne demandi refoje"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Renomigi"
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Renomigi Ludliston"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "agordoj ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Kiel vi deziras nomigi tiun ĉi ludliston?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Ebligi"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Egaligilo"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
-msgstr "Antauamplifilo"
+msgstr "AntaĆ­amplifilo"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Trako"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Longo"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Formo:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Kvalito:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Bit-rapido:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
-msgstr "Acida Jhazo"
+msgstr "Acida ÄŽazo"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acida Roko"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Etosa"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bibopo"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Bluso"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
-msgstr "Chambra Muziko"
+msgstr "Ĉambra Muziko"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasika"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Kontreo"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Mortmetalo"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Diskoo"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
-msgstr "Facil-auskultebla"
+msgstr "Facil-aĆ­skultebla"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
-msgstr "Folk"
+msgstr "Folko"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funko"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Repo"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospelo"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
-msgstr "Grunge"
+msgstr "Grunĝo"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Peza Roko"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Peza Metalo"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
-msgstr "Hip-hop"
+msgstr "Hip-hopo"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
-msgstr "Hauzo"
+msgstr "HaĆ­zo"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
-msgstr "Jhazo"
+msgstr "ÄŽazo"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metalo"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "Novepoka"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
-msgstr "New Wave"
+msgstr "Nova Ondo"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Brua Muziko"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop-muziko"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punko"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Repo"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Regeo"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Roko"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rokenrolo"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Ritmenbluso"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Skao"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Svingo"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tekno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
-msgstr "Trip-hop"
-
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
+msgstr "Trip-hopo"
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadatumaro estis sukcese ghisdatigata"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "La konservo sukcesis"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Ghisdatigo de metadatumaro fiaskis"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Eraro dum konservo"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Bend-Informaro"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Trak-numero"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formo:</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Konservi"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kvalito:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrapido:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titolo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artisto</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Albumo</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Komento</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Ghenro</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Jaro</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Bend-numero</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/A"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Neniu informo disponeblas por %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Salti"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Salti al la Tempo"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Enigu tempon (minutoj:sekundoj):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Ĉu anstataƭigi %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "_AnstataĆ­igi"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Konfirmi anstataĆ­igon"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Eksporti Ludliston"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Eksporti"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importi Ludliston"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Chu anstatauigi %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importi"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Administrilo de Atendovico"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_Devicigi"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Malfermi Dosierojn"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Malfermi"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Fermi _dialogon post malfermi"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Aldoni Dosierojn"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Fermi dialogon post Malfermi"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Aldoni"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Fermi dialogon post Aldoni"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Fermi _dialogon post aldoni"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "En_Vicigi"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "El_vicigi"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Salti al Muziko"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
-msgstr "Filtro:"
+msgstr "Filtrilo:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
-msgstr "_Filtro:"
+msgstr "_Filtrilo:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Memorigi"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "F_ermi post salti"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Mal_plenigi"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Fermi post Salti"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Administrilo de Ludlisto"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Datum-enigoj"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Renomigi"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Nova"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "Ren_omigi"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Ludi"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Fermi dialogon post aktivi ludliston"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Malfermi URL"
@@ -991,14 +1028,14 @@ msgstr "Malfermi URL"
msgid "Add URL"
msgstr "Aldoni URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Enigu URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
msgstr ""
"\n"
-"(Kromaj mesaghoj estis kashataj.)"
+"(Kromaj mesaĝoj estis kaƝataj.)"
diff --git a/po/es.po b/po/es.po
index f283ec5..ff37f62 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4,8 +4,10 @@
#
# Translators:
# Adolfo Jayme Barrientos <fitoschido@ubuntu.com>, 2013
+# Adolfo Jayme Barrientos <fitoschido@ubuntu.com>, 2013
# AdriĂĄn Ramirez Escalante <buried.prophet@gmail.com>, 2012
# Cosme DomĂ­nguez DĂ­az <cosme.ddiaz@gmail.com>, 2010
+# enjolras <yo@miguelrevilla.com>, 2012
# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004
# Gustavo D. Vranjes <gvranjes@nerdshack.com>, 2006
# Jeki Sinneo Leinos <jeki72@gmail.com>, 2008
@@ -13,18 +15,19 @@
# Jorge Andrés <winninglero@gmail.com>, 2010
# Juan Manuel HernĂĄndez, 2012
# LucĂ­a Balsa <lucia.balsa.prados@gmail.com>, 2012
-# Marco Antonio Frias ButrĂłn <marcoantoniofrias@gmail.com>, 2012
+# Marco Antonio Frias ButrĂłn <inactive+smaug@transifex.com>, 2012
# Marcos <djoser.horus@gmail.com>, 2013
# xukosky <xukosky@yahoo.es>, 2011
# xukosky <xukosky@yahoo.es>, 2011
+# xukosky <xukosky@yahoo.es>, 2011
# enjolras <yo@miguelrevilla.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-06-17 06:56+0000\n"
-"Last-Translator: Adolfo Jayme Barrientos <fitoschido@ubuntu.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/audacious/"
"language/es/)\n"
"Language: es\n"
@@ -33,140 +36,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Buscando
"
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "Se encontrĂł %d archivo"
msgstr[1] "Se encontraron %d archivos"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 no vĂĄlido)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Lista de reproducciĂłn nueva"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Error al importar el archivo EQF de Winamp «%s»"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Saltar hacia atrĂĄs en la lista de reproducciĂłn"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Empezar la reproducciĂłn en la lista de reproducciĂłn actual"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Mostrar la versiĂłn"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pausar la canciĂłn actual"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Detener la canciĂłn actual"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pausar si se reproduce, o reproducir en caso contrario"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Saltar hacia adelante en la lista de reproducciĂłn"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Mostrar diĂĄlogo de salto al archivo"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Añadir archivos a la lista de reproducción"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Añadir nuevos archivos a una lista de reproducción temporal"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Mostrar la ventana principal"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Modo sin cabecera"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Salir al terminar la reproducciĂłn"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Mostrar la versiĂłn"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Imprimir mensajes de depuraciĂłn"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ARCHIVO..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- reproducir archivos multimedia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Ejecute «%s --help» para mås información.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "No se encontrĂł decodificador para %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s no se pudo abrir."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "No se puede %s %s: la extensiĂłn del archivo no es vĂĄlida."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "guardar"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "cargar"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "No se puede %s %s: la extensiĂłn del archivo no es vĂĄlida."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Lista de reproducciĂłn nueva"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Ahora en reproducciĂłn"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -174,415 +168,447 @@ msgstr ""
"La lista de reproducciĂłn no se puede ordenar porque la bĂșsqueda de metadatos "
"estĂĄ en progreso (o ha sido deshabilitada)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Acerca de %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "ConfiguraciĂłn de %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Sonido"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Red"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Lista de reproducciĂłn"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "InformaciĂłn de la canciĂłn"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Complementos"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "General"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efecto"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VisualizaciĂłn"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrada"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transporte"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Álbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tulo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "N.Âș de pista"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "GĂ©nero"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nombre de archivo"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Ruta del archivo"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Fecha"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Año"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comentario"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "CĂłdec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Calidad"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ninguno"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Árabe"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂĄltico"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chino"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Griego"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebreo"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japonés"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coreano"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polaco"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Ruso"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanés"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turco"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Coma flotante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Modo de ĂĄlbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Complemento de salida:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Ajustes de salida</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profundidad de bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Tamaño del bĂșfer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Detener saltos"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Usar el control de volumen por software (no recomendado)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Normalizar volumen</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Activar la normalizaciĂłn de volumen"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Modo de ĂĄlbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evitar cortes (recomendado)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustar niveles</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar todos los archivos:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar archivos sin etiqueta:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Servidor proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Puerto del proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nombre de usuario del proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Contraseña del proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ConfiguraciĂłn del proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Activar uso del proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Usar autenticaciĂłn con el proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Detector de codificaciĂłn de caracteres automĂĄtico para: "
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "CodificaciĂłn de caracteres alternativa:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamiento</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continuar la reproducciĂłn al iniciar"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avanzar cuando se borra la canciĂłn actual"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Limpiar la lista de reproducciĂłn al abrir archivos"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Abrir archivos en una lista de reproducciĂłn temporal"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "No cargar la informaciĂłn de metadatos hasta reproducir"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilidad</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpretar \\ (barra invertida) como separador de carpetas"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>CarĂĄtula de ĂĄlbum</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Buscar imĂĄgenes que correspondan con estas palabras (separadas por comas):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Excluir imĂĄgenes que correspondan con estas palabras (separadas por comas):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr ""
"Buscar imĂĄgenes que correspondan con el nombre de archivo de la canciĂłn"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Buscar recursivamente"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Profundidad de la bĂșsqueda:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>InformaciĂłn emergente</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Mostrar informaciĂłn emergente"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Retraso del menĂș emergente (dĂ©cimas de segundo):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Mostrar escala de tiempo para la canciĂłn actual"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TÍTULO"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TÍTULO"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ÁLBUM - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ ÁLBUM ] - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "CategorĂ­a"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizada"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>VisualizaciĂłn de las canciones</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Mostrar nĂșmeros de las canciones"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Mostrar ceros a la izquierda (02:00 en lugar de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Mostrar informaciĂłn acerca del formato del tĂ­tulo"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Cadena personalizada:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formato del tĂ­tulo:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Complemento de salida:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transporte"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrada"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efecto"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VisualizaciĂłn"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "General"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Cadena personalizada:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferencias de Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "No se pudo crear el directorio (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "PosiciĂłn no encontrada."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "No se reproduce ninguna canciĂłn."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD de mĂșsica, pista %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estéreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -597,409 +623,420 @@ msgstr "Créditos:"
msgid "License"
msgstr "Licencia"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Acerca de Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"ÂżEstĂĄ seguro de que quiere cerrar %s? Si lo hace, se perderĂĄ cualquier "
-"cambio realizado desde que se exportĂł la lista de reproducciĂłn."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Cerrar lista de reproducciĂłn"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_No mostrar este mensaje de nuevo"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Renombrar la lista de reproducciĂłn"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "configuración
"
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Activar"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ecualizador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "PreamplificaciĂłn"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Pista"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "DuraciĂłn"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Jazz ĂĄcido"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Rock ĂĄcido"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambiental"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de cĂĄmara"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂĄsica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Escucha fĂĄcil"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folclore"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Ruido"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Rock punk"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tecno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/d</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Se actualizaron los metadatos correctamente"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "FallĂł la actualizaciĂłn de metadatos"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaciĂłn de la pista"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formato:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Calidad:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Tasa de bits:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tulo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Álbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comentario</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">GĂ©nero</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Año</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">N.Âș de pista</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "No hay informaciĂłn disponible para %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Saltar al tiempo"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Introducir tiempo (minutos: segundos):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ÂżSobrescribir %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportar lista de reproducciĂłn"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar lista de reproducciĂłn"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ÂżSobrescribir %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Gestor de cola"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Abrir archivos"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Añadir archivos"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Cerrar diĂĄlogo al abrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Cerrar diålogo al añadir"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "A_ñadir a la cola"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Quitar de la cola"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Saltar a una canciĂłn"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtro: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtro:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Recordar"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Limpia_r"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Cerrar al saltar"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Gestor de la lista de reproducciĂłn"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entradas"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Renombrar"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Cerrar diĂĄlogo al activar la lista de reproducciĂłn"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Abrir URL"
@@ -1007,11 +1044,11 @@ msgstr "Abrir URL"
msgid "Add URL"
msgstr "Añadir URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Introducir URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/es_AR.po b/po/es_AR.po
index d4006c2..f5bc210 100644
--- a/po/es_AR.po
+++ b/po/es_AR.po
@@ -11,13 +11,14 @@
# Jordi AmenĂłs <>, 2011
# Jorge Andrés <winninglero@gmail.com>, 2010
# xukosky <xukosky@yahoo.es>, 2011
+# xukosky <xukosky@yahoo.es>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-03-26 23:21+0000\n"
-"Last-Translator: AdriĂĄn Ramirez Escalante <buried.prophet@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
"audacious/language/es_AR/)\n"
"Language: es_AR\n"
@@ -26,140 +27,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Buscando ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d archivo encontrado"
msgstr[1] "%d archivos encontrados"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 invĂĄlido)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nueva lista de reproducciĂłn"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Error importando archivo Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Ir hacia atrĂĄs en la lista de reproducciĂłn"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Reproducir la lista de reproducciĂłn actual"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Mostrar versiĂłn"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pausar la canciĂłn actual"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Parar la canciĂłn actual"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pausar si se estĂĄ reproduciendo, o reproducir"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Ir hacia adelante en la lista de reproducciĂłn"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Mostrar diĂĄlogo de ir al archivo"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Añadir archivos a la lista de reproducción"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Agregar nuevos archivos a una lista de reproducciĂłn temporal"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Mostrar la ventana principal"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Modo sin sentido"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Salir al detener la reproducciĂłn."
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Mostrar versiĂłn"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Imprimir mensajes de depuraciĂłn"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ARCHIVO..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- reproducir archivos multimedia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"ProbĂĄ `%s --help' para mĂĄs informaciĂłn.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "No se encontrĂł decodificador para %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s no puede ser abierto."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "No se puede %s %s: la extensiĂłn del archivo no es vĂĄlida."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "guardar"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "cargar"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "No se puede %s %s: la extensiĂłn del archivo no es vĂĄlida."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nueva lista de reproducciĂłn"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "ReproducciĂłn actual"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -167,416 +159,448 @@ msgstr ""
"La lista de reproducciĂłn no se puede ordenar porque la bĂșsqueda de metadatos "
"estĂĄ en progreso (o ha sido deshabilitada)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Acerca de %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ConfiguraciĂłn"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Red"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Lista de reproducciĂłn"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "InformaciĂłn de la canciĂłn"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Complementos"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "General"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efecto"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VisualizaciĂłn"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrada"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transporte"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Álbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tulo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "NĂșmero de pista"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "GĂ©nero"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nombre de archivo"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Ruta hasta el archivo"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Fecha"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Año"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comentario"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec (formato)"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Calidad"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ninguno"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ArĂĄbico"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂĄltico"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chino"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Griego"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebreo"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japonés"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coreano"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polaco"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Ruso"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanés"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turco"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Coma flotante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Modo de ĂĄlbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Complemento de salida:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Ajustes de salida</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profundidad de bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Tamaño del bĂșfer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Detener saltos"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Usar control de volumen por software (no recomendado)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Normalizar volumen</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Activar la normalizaciĂłn de volumen"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Modo de ĂĄlbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evitar cortes (recomendado)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustar niveles</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar todos los archivos:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar archivos sin etiqueta:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Servidor proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Puerto del proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nombre de usuario del proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Contraseña del proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ConfiguraciĂłn del Proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Activar uso del proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Usar autenticaciĂłn con el proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Detector de codificaciĂłn de caracteres automĂĄtico para: "
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "CodificaciĂłn de caracteres alternativa:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamiento</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continuar la reproducciĂłn al iniciar"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avanzar cuando se borra la canciĂłn actual"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Limpiar la lista de reproducciĂłn al abrir archivos"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Abrir archivos en una lista de reproducciĂłn temporal"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "No cargar la informaciĂłn de metadatos hasta reproducir"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilidad</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Intérprete \\ (barra invertida) como un delimitador de carpeta"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Arte de tapa</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Buscar imĂĄgenes correspondientes a estas palabras clave (separadas por "
"comas):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Excluir imĂĄgenes correspondientes a estas palabras clave (separadas por "
"comas):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Buscar imĂĄgeness coincidiendo con nombres de canciones "
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Buscar recursivamente"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "BĂșsqueda profunda"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>InformaciĂłn emergente</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Mostrar informaciĂłn emergente"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Retardo en mensajes emergentes (décimas de segundo):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Mostrar lĂ­nea de tiempo para la canciĂłn actual"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TÍTULO"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TÍTULO"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ÁLBUM - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ ÁLBUM ] - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "CategorĂ­a"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizada"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>VisualizaciĂłn de las canciones</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Mostrar nĂșmeros de las canciones"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Mostrar ceros a la izquierda (02:00 en lugar de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Mostrar informaciĂłn acerca del formato del tĂ­tulo"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Cadena personalizada:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formato del tĂ­tulo:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Complemento de salida:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transporte"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrada"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efecto"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VisualizaciĂłn"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "General"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Cadena personalizada:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferencias de Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "No se pudo crear el directorio (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "PosiciĂłn no encontrada."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "No se reproduce ninguna canciĂłn."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD de audio, pista %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estéreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -591,409 +615,420 @@ msgstr "Créditos:"
msgid "License"
msgstr "Licencia"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Acerca de Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"¿Estas seguro que querés cerrar %s? Si lo haces, se perderå cualquier "
-"cambio realizado desde que fue exportada la lista de reproducciĂłn."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Cerrar lista de reproducciĂłn"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_No mostrar este mensaje otra vez"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Renombrar la lista de reproducciĂłn"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ajustes ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Activar"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ecualizador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "PreamplificaciĂłn"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Pista"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "DuraciĂłn"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Jazz ĂĄcido"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Rock ĂĄcido"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambiental"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de cĂĄmara"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂĄsica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folclore"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Rock Punk"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata actualizada sin problemas"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "FallĂł la actualizaciĂłn de metadatos"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaciĂłn de pista"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formato:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Calidad:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrate:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tulo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Álbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comentario</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">GĂ©nero</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Año</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Numero de pista</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "No hay informaciĂłn disponible para %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Ir a tiempo"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Ingresar tiempo (minutos:segundos):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ÂżSobrescribir %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportar lista de reproducciĂłn"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar lista de reproducciĂłn"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ÂżSobrescribir %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Gestor de cola de reproducciĂłn"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Abrir archivos"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Añadir archivos..."
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Cerrar diĂĄlogo al abrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Cerrar diålogo al añadir"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Cola"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Remover de la cola"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Ir a una canciĂłn"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtro: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtro:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Recordar"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Limpia_r"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Cerrar al saltar"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Administrador de la lista de reproducciĂłn"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entradas"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Renombrar"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Cerrar diĂĄlogo al activar la lista de reproducciĂłn"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Abrir URL"
@@ -1001,11 +1036,11 @@ msgstr "Abrir URL"
msgid "Add URL"
msgstr "Añadir URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Ingresar URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/es_MX.po b/po/es_MX.po
index 65b5e68..1f70d85 100644
--- a/po/es_MX.po
+++ b/po/es_MX.po
@@ -3,14 +3,14 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
-# Jorge A. GarcĂ­a Sosa <jagsmd@gmail.com>, 2012-2013
+# Jorge A. GarcĂ­a Sosa <jagsmd@gmail.com>, 2012-2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-11-20 09:33+0000\n"
-"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-06 22:26+0000\n"
+"Last-Translator: Jorge A. GarcĂ­a Sosa <jagsmd@gmail.com>\n"
"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/"
"audacious/language/es_MX/)\n"
"Language: es_MX\n"
@@ -19,140 +19,133 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Buscando..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d archivo encontrado"
msgstr[1] "%d archivos encontrados"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 no vĂĄlido)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nueva Lista de reproducciĂłn"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Error al importar archivo EQF de Winamp '%s' "
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Error"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Saltar hacia atrĂĄs en la lista de reproducciĂłn"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Mostrar ayuda de lĂ­nea de comando"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Comenzar a reproducir la lista actual"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Mostrar versiĂłn"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pausar pista actual"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Iniciar reproducciĂłn"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Detener pista actual"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Pausa reproducciĂłn"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pausar si estĂĄ reproduciendo; de lo contrario, reproducir"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Saltar hacia adelante en la lista de reproducciĂłn"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Detener reproducciĂłn"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Saltar a la pista previa"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Mostrar dialogo Saltar al Archivo"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Saltar a la siguiente pista"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Agregar archivos a la lista de reproducciĂłn"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Agregar nuevos archivos a una lista de reproducciĂłn temporal"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Agregar archivos a la lista de reproducciĂłn temporal"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Mostrar la ventana principal"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Modo Headless"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Mostrar la ventana saltar-a-la-pista"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Iniciar sin una interfaz grĂĄfica"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Quitar al detener reproducciĂłn"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Mostrar versiĂłn"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Imprimir mensajes debugging"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ARCHIVO..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "OpciĂłn desconocida: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr " - Reproducir archivos multimedia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "OpciĂłn desconocida: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Intenta `%s --ayuda' para mayor informaciĂłn.\n"
+"Uso: audacious [OPCIÓN] ... [ARCHIVO] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "No se encontrĂł un descodificador para %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s no pudo ser abierto."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "No se puede %s %s: extensiĂłn de archivo no soportada."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "guardar"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "cargar"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "No se puede cargar %s: extensiĂłn de archivo no soportada."
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "No se puede %s %s: extensiĂłn de archivo no soportada."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nueva Lista de reproducciĂłn"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "No se puede guardar %s: extensiĂłn de archivo no soportada."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Reproduciendo"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -160,412 +153,444 @@ msgstr ""
"La lista de reproducciĂłn no puede ser ordenada porque la exploraciĂłn de "
"metadatos estĂĄ en progreso (o ha sido deshabilitada)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Acerca de %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Acerca"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "Configuraciones %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Configuraciones"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Ajuste"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Cancelar"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Cerrar"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Ajustes"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Acerca"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Plugins ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Apariencia"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Red"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Lista de ReproducciĂłn"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "InformaciĂłn de Pista"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugins"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "General"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efecto"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VisualizaciĂłn"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrada"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transporte"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Álbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tulo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "NĂșmero de pista"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "GĂ©nero"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nombre de archivo"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Ruta de archivo"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Fecha"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Año"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comentario"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Calidad"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ninguno"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Árabe"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂĄltico"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chino"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Griego"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebreo"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japonés"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coreano"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polaco"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Ruso"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanés"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turco"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Punto flotante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Modo de Álbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Ajustes de Interfaz</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Plugin de interfaz:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Plugin de Salida:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Ajustes de Salida</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profundidad de bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Tamaño del Buffer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Clipping suave"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Usar control de volumen por software (no recomendado)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Habilitar Replay Gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Modo de Álbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evitar distorsiones clip (recomendado)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustar Niveles</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar todos los archivos:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar archivos sin etiquetas:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Nombre del host proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Puerto proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "nombre de usuario proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "contraseña proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ConfiguraciĂłn del Proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Habilitar uso del proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Usar autenticaciĂłn con el proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Detector automĂĄtico de codificaciĂłn de caracteres para:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "CodificaciĂłn de caracteres alternativa:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamiento</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continuar reproducciĂłn al iniciar"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avanzar cuando la pista actual sea borrada"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Limpiar la lista de reproducciĂłn al abrir archivos"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Abrir archivos en una lista de reproducciĂłn temporal"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "No cargar metadatos de pistas hasta su reproducciĂłn"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilidad</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpretar \\ (diagonal invertida) como un delimitador de carpetas"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Portada de Álbum</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Buscar imĂĄgenes con Ă©stas palabras (separadas por comas):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Excluir imĂĄgenes con Ă©stas palabras (separadas por comas):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Buscar imĂĄgenes con el nombre del archivo"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Buscar recursĂ­vamente"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Profundidad de bĂșsqueda:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>InformaciĂłn Emergente</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Mostrar informaciĂłn emergente"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Retraso de emergente (décimas de segundo):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Mostrar escala de tiempo para la pista actual"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TÍTULO"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TÍTULO"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ÁLBUM - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ÁLBUM] - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "CategorĂ­a"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizar"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>VisualizaciĂłn de Pista</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Mostrar nĂșmeros de pista"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Mostrar ceros a la izquierda (02:00 en vez de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Mostrar informaciĂłn sobre la cadena del formato de tĂ­tulo"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Cadena personalizada:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formato de TĂ­tulo"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Plugin de Salida:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transporte"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrada"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efecto"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VisualizaciĂłn"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "General"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Cadena personalizada:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferencias de Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Ajustes de Audacious"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "No se pudo crear el directorio (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "PosiciĂłn no encontrada."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Ninguna pista se estĂĄ reproduciendo."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD de Audio, pista %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Monoaural"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estéreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -580,409 +605,420 @@ msgstr "Créditos"
msgid "License"
msgstr "Licencia"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Acerca de Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"ÂżEstĂĄs seguro que quieres cerrar %s? Si lo haces, cualquier cambio hecho "
-"desde que la lista de reproducciĂłn fue exportada se perderĂĄ."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "ÂżQuieres remover permanentemente \"%s\"?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Remover"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Cerrar Lista de ReproducciĂłn"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Remover Lista de ReproducciĂłn"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_No mostrar este mensaje otra vez"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_No preguntar otra vez"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Renombrar"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Renombrar la Lista de ReproducciĂłn"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ajustes ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "ÂżTe gustarĂ­a llamar esta lista de reproducciĂłn?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Habilitar"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ecualizador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamplificador"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Pista"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "DuraciĂłn"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Formato:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Calidad:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Tasa de bits:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de CĂĄmara"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂĄsica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/d</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadatos actualizados existĂłsamente"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Guardar exitĂłsamente"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "FallĂł actualizaciĂłn de metadatos"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Error al guardar"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaciĂłn de pistas"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "NĂșmero de Pista"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formato:</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Guardar"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Calidad:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Tasa de bits:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tulo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Álbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comentario</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">GĂ©nero</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Año</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">NĂșmero de Pista</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/D"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "No hay informaciĂłn disponible para %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Saltar"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Saltar al Tiempo"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Ingresa el tiempo (minutos:segundos):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ÂżSobreescribir %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "S_obreescribir"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Confirmar Sobreescritura"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportar Lista de ReproducciĂłn"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Exportar"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar Lista de ReproducciĂłn"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ÂżSobreescribir %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importar"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Administrador de colas"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_Quitar de la fila"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Abrir Archivos"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Abrir"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Cerrar _dialogo al abrir"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Agregar Archivos"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Cerrar dialogo al Abrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Agregar"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Cerrar dialogo al Agregar"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Cerrar _dialogo al agregar"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "A la _Cola"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Quitar de la _cola"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Saltar a la Pista"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtro: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtro:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Recordar"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "Ce_rrar al saltar"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Limpia_r"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Cerrar al Saltar"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Administrador de Listas de ReproducciĂłn"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entradas"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Renombrar"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Nuevo"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "Ren_ombrar"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Reproducir"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Cerrar dialogo al activar Lista de ReproducciĂłn"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Abrir URL"
@@ -990,11 +1026,11 @@ msgstr "Abrir URL"
msgid "Add URL"
msgstr "Agregar URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Ingresa URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/et.po b/po/et.po
index 69facb0..aa4f0fb 100644
--- a/po/et.po
+++ b/po/et.po
@@ -6,13 +6,14 @@
# Ivar Smolin <okul at linux ee>, 2007
# Ivar Smolin <okul@linux.ee>, 2012-2013
# John Lindgren <john.lindgren@aol.com>, 2012
+# John Lindgren <john.lindgren@aol.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-16 06:33+0000\n"
-"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Estonian (http://www.transifex.com/projects/p/audacious/"
"language/et/)\n"
"Language: et\n"
@@ -21,140 +22,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Otsimine..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "leiti %d fail"
msgstr[1] "leiti %d faili"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (vigane UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Uus esitusnimekiri"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Viga Winampi EQF-faili '%s' importimisel"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Esitusnimekirjas eelmisele loole hĂŒppamine"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Praeguse esitusnimekirja esitamise alustamine"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Versiooni nÀitamine"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Praeguse loo pausimine"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Praeguse loo seiskamine"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Esitamise korral pausimine, pausi korral esitamine"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Esitusnimekirjas jĂ€rgmisele loole hĂŒppamine"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Failile hĂŒppamise dialoogi kuvamine"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Failide lisamine esitusnimekirja"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Uute failide lisamine ajutisse esitusnimekirja"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Peaakna kuvamine"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Kasutajaliideseta reĆŸiim"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Programmi sulgemine esituse lÔppedes"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Versiooni nÀitamine"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Silumisteadete vÀljastamine"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FAIL..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- multimeediafailide esitamine"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"TĂ€iendava teabe saamiseks proovi `%s --help'.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Failile %s ei leitud dekoodrit."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "Faili %s pole vÔimalik avada."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Faili %2$s %1$s pole vÔimalik: faili laiend pole toetatud"
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "salvestamine"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "laadimine"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Faili %2$s %1$s pole vÔimalik: faili laiend pole toetatud"
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Uus esitusnimekiri"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Praegu esitamisel"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -162,414 +154,446 @@ msgstr ""
"Esitusnimekirja sortimine pole vÔimalik, kuna metaandmete laadimine on "
"pooleli (vÔi keelatud)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s ‒ plugina andmed"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ‒ plugina sĂ€tted"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "VÔrk"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Esitusnimekiri"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Loo andmed"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Pluginad"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Üldine"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efekt"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualiseerimine"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Sisend"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Esitaja"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Pealkiri"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Loo number"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Ćœanr"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Failinimi"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Faili rada"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "KuupÀev"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Aasta"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Kommentaar"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Koodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kvaliteet"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Puudub"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Araabia"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Balti"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Hiina"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Kreeka"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Heebrea"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Jaapani"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korea"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Poola"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Vene"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taivani"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "TĂŒrgi"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr ""
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Albumi kaupa"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "VĂ€ljundplugin:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>VÀljundi sÀtted</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "BitisĂŒgavus:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Puhvri suurus:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Pehme kÀrpimine"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Tarkvaraline valjuse juhtimine (pole soovitatav)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Helitugevuse korrektsioon</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Helitugevuse korrektsioon on lubatud"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Albumi kaupa"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Hoidutakse kÀrpimisest (soovitatav)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Valjuse kohendamine</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "KÔikide failide vÔimendamine:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Sildistamata failide vÔimendamine:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Proksi hostinimi:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Proksi port:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Proksi kasutajanimi:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Proksi parool:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Proksi sÀtted</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Proksi kasutamine on lubatud"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Proksi kasutatab autentimist"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automaatne kooditabeli tuvastaja:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Kooditabelite tagavara:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>KĂ€itumine</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "KÀivitamisel jÀtkatakse esitamist"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Esitatava loo kustutamisel hakatakse jÀrgmist lugu esitama"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Failide avamisel tĂŒhjendatakse esitusnimekiri"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Failid avatakse ajutises esitusnimekirjas"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Loo metaandmeid enne esitamist ei laadita"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Ühilduvus</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "MÀrki \\ (kurakaldkriips) kÀsitletakse kataloogide eraldajana"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Albumite kujundused</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Otsitakse nende sÔnadega kattuvaid pilte (komaga eraldatud nimekiri):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Nende nende sÔnadega kattuvad pildid vÀlistatakse (komaga eraldatud "
"nimekiri):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Otsitakse loo failinimega kattuvaid pilte"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Otsing toimub sĂŒgavuti"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Otsingu sĂŒgavus:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Loo andmete hĂŒpikaken</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Loo andmeid nĂ€idatakse hĂŒpikaknas"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "LahtihĂŒppamise viivitus (sekundikĂŒmnendikes):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Esitamisel oleva loo kohta nÀidatakse ajaskaalat"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "PEALKIRI"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ESITAJA - PEALKIRI"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ESITAJA - ALBUM - PEALKIRI"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ESITAJA - ALBUM - RADA. PEALKIRI"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ESITAJA [ALBUM] - RADA. PEALKIRI"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - PEALKIRI"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategooria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Kohandatud"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Loo kuvamine</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "NĂ€idatakse lugude numbreid"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Alguses nÀidatakse nulle (2:00 asemel nÀidatakse 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Pealkirjastringi vormingu kohta andmete nÀitamine"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Kohandatud string:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Pealkirja vorming:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "VĂ€ljundplugin:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Sisend"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efekt"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualiseerimine"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Üldine"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Kohandatud string:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audaciouse eelistused"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Kataloogi pole vÔimalik luua (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Asukohta ei leitud."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Hetkel ei esitata ĂŒhtegi lugu."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio-CD, lugu %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -584,409 +608,420 @@ msgstr "Autorid"
msgid "License"
msgstr "Litsents"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Audacious'est lÀhemalt"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Kas soovid sulgeda esitusnimekirja \"%s\"? KÔik pÀrast nimekirja viimast "
-"eksporti tehtud muutused lÀhevad kaotsi."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Esitusnimekirja sulgemine"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "Seda teadet rohkem ei _nÀidata"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Esitusnimekirja nime muutmine"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "sÀtted..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Lubatud"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ekvalaiser"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Eelmoonutus"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Rada"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Pikkus"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Bluus"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Kammermuusika"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klassikaline"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Kantri"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Ajaviitemuusika"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Raske rokk"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "DĆŸĂ€ss"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "MĂŒra"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punkrokk"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "RĂ€pp"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Rege"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rokk"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock & Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "RĂŒtmibluus"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Sving"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tehno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">puudub</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metaandmed edukalt uuendatud"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metaandmete uuendamine nurjus"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Loo andmed"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Vorming:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kvaliteet:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitikiirus:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Pealkiri</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Esitaja</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Kommentaar</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Ćœanr</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Aasta</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Loo number</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Faili %s kohta puuduvad andmed.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Ajahetkele hĂŒppamine"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Sisesta aeg (minutid:sekundid):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Kas kirjutada fail %s ĂŒle?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Esitusnimekirja eksportimine"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Esitusnimekirja importimine"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Kas kirjutada fail %s ĂŒle?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "EsitusjÀrjekorra haldamine"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Failide avamine"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Failide lisamine"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Dialoog suletakse pÀrast faili avamist"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Dialoog suletakse pÀrast faili lisamist"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "Pane _jÀrjekorda"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Eemalda _jÀrjekorrast"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Loo vahetamine"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filter: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filter:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "JĂ€tetakse meelde"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_Puhasta"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "PĂ€rast loo vahetust suletakse aken"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Esitusnimekirjade haldur"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Kirjeid"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Muuda nime"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Esitusnimekirja _aktiveerimisel dialoog suletakse"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "URL-i avamine"
@@ -994,11 +1029,11 @@ msgstr "URL-i avamine"
msgid "Add URL"
msgstr "URL-i lisamine"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Sisesta URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/eu.po b/po/eu.po
index dd8e0bd..7c9d382 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -4,16 +4,19 @@
#
# Translators:
# asier <asier.fernandez.iribar@gmail.com>, 2013
+# asier <asier.fernandez.iribar@gmail.com>, 2013
+# obibon <ibonatan@gmail.com>, 2012
+# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2008-2009
# obibon <ibonatan@gmail.com>, 2012
-# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2008, 2009
+# Osoitz <oelkoro@gmail.com>, 2012
# Osoitz <oelkoro@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-06-03 12:42+0000\n"
-"Last-Translator: asier <asier.fernandez.iribar@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Basque (http://www.transifex.com/projects/p/audacious/"
"language/eu/)\n"
"Language: eu\n"
@@ -22,140 +25,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Bilatzen"
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d fitxategia ez da aurkitu"
msgstr[1] "%d fitxategiak ez dira aurkitu"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 baliogabea)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Erreprodukzio-zerrenda berria"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Errorea '%s' Winamp EQF fitxategia inportatzean"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Erreprodukzio-zerrendan atzerantz egiten du"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Uneko zerrenda erreproduzitzen hasten da"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Erakutsi bertsioa"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Uneko kanta pausarazten du"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Uneko kanta geldiarazten du"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Erreproduzitzen ari bada pausarazi, bestela erreproduzitu"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Erreprodukzio-zerrendan aurrerantz egiten du"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Bistaratu 'Saltatu fitxategira' elkarrizketa-koadroa"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Gehitu fitxategiak erreprodukzio-zerrendara"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Gehitu fitxategi berriak aldi baterako erreprodukzio-zerrendari"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Bistaratu nagusia leihoa"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Headless modua"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Irten erreprodukzioa amaitzean"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Erakutsi bertsioa"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Idatzi desarauzte mezuak"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FITXATEGIA..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- erreproduzitu multimedia fitxategiak"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Exekutatu '%s --help' informazio gehiagorako.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Ez dago %s-rako dekodifikatzailerik."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s ezin izan da ireki"
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Ezin da %s %s: Onartu gabeko fitxategi luzapena."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "Gorde"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "Kargatu"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Ezin da %s %s: Onartu gabeko fitxategi luzapena."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Erreprodukzio-zerrenda berria"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Orain erreproduzitzen"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -163,413 +157,445 @@ msgstr ""
"Erreprodukzio-zerrenda hau ezin da ordenatu metadatuen azterketa oraindik "
"bukatu ez duelako (edo desgaitu delako)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s(r)i buruz"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s(r)en ezarpenak"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audioa"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Sarea"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Erreprodukzio-zerrenda"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Kantu informazioa"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Pluginak"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Orokorra"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efektuak"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Bistaratzea"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Sarrera"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transportea"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Diskoa"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titulua"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Pista-zenbakia"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Generoa"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Fitxategi-izena"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Fitxategiaren bide-izena"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Urtea"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Iruzkina"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodeka"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kalitatea"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Bat ere ez"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabiarra"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltikoa"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Txinatarra"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grekoa"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebrearra"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japoniarra"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korearra"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Poloniera"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Errusiarra"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanera"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turkiarra"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Koma mugikorra"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Disko modua"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Irteera plugin-a:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Irteera ezarpenak</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bit sakonera:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Bufferraren tamaina:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Muxarrakin xuabea"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Softwarearen bolumen kontrola erabili (ez gomendagarria)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Gaitu irabazpena"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Disko modua"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Ekidin muxarrakina (gomendatua)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Mailak doitu</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Anplifikatu fitxategi guztiak:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Anplifikatu etiketa gabeko fitxategiak:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Proxy-aren ostalari-izena:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Proxy-aren ataka:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Proxy-aren erabiltzaile-izena:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Proxy-aren pasahitza:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Proxy-aren konfigurazioa</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Gaitu proxy-a erabiltzea"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Erabili autentifikazioa proxy-arekin"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Karaktere-kodeketaren detekzio automatikoa:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Karaktere-kodeketa:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Portaera</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Jarraitu erreprodukzioa abiaraztean"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Aurreratu uneko abestia ezabatzen denean"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Garbitu erreprodukzio-zerrenda fitxategiak irekitzerakoan"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Gehitu fitxategi berriak aldi baterako erreprodukzio-zerrendari"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Ez kargatu kantuen metadatuak jo arte"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Bateragarritasuna</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
"\\ (aderantzizkatutako diagonala) karpeta mugatzaile bezala interpretatu"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Disko Azala</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Bilatu hitz hauekin bat datozen irudiak (koma bidez banatu):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Ezikusi hitz hauekin bat datozen irudiak (koma bidez banatu):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Bilatu kantuaren fitxategi izenarekin bat datozen irudiak"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Bilatu errekurtsiboki"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Bilaketa sakonera:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Laster-leihoa</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Bistaratu popup informazioa"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Popup atzeratzea (segundu hamarrenak)"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Bistaratu oraingo kantuaren denbora eskala"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITULUA"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TITULUA"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - DISKOA - TITULUA"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - DISKOA - PISTA. TITULUA"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA - [DISKOA] - PISTA. TITULUA"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUMA - TITULUA"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategoria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Pertsonalizatua"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Kanten ikuspegia</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Abesti zenbakiak erakutsi"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Erakutzi zeroak aurretik (02:00 eta ez 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Erakutsi titulu-formatuari buruzko informazioa"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Kate pertsonalizatua:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Tituluaren formatua:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Irteera plugin-a:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transportea"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Sarrera"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efektuak"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Bistaratzea"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Orokorra"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Kate pertsonalizatua:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious-en hobespenak"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Ezin izan da %s direktorioa sortu: %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Posizioa ez da aurkitu."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Ez da kanturik jotzen ari."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CDa, %s pista"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -584,409 +610,420 @@ msgstr "Kredituak"
msgid "License"
msgstr "Lizentzia"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Audacious-i buruz"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"%s itxi nahi duzulaz ziur zaude? Ixten baduzu, erreprodukzio-zerrenda itxi "
-"zenetik egindako aldaketak galduko dira."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Erreprodukzio-zerrenda itxi"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "Ez erakutsi mezu hau aurrerantzean"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Erreprodukzio-zerrenda berrizendatu"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ezarpenak..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "Gaitu"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Erakutsi ekualizadorea"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Aurreanplifikazioa"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Pista"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Iraupena"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Jazz azidoa"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Giroko musika"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues-a"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Ganbera-musika"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasikoa"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Entzuteko erraza"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folka"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk-a"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel-a"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge-a"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Rock gogorra"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal-a"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-Hop-a"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazza"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle-a"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metala"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Zarata"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop-a"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock-a"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap-a"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rocka"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock & Roll-a"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul-a"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing-a"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Teknoa"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-Hop-a"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">e/e</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadatuak ongi eguneratu dira"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Huts egin du metadatuak eguneratzean"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Pistaren informazioa"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formatua:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kalitatea:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bit-tasa:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titulua</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Diskoa</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Iruzkina</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Generoa</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Urtea</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Pista-zenbakia</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Ez dago %s(r)en informazio eskurragarririk.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Saltatu denborara"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Sartu denbora (minutuak:segunduak):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "%s gainidatzi?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Erreprodukzio-zerrenda esportatu"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Erreprodukzio-zerrenda inportatu"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "%s gainidatzi?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Ilara kudeatzailea"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Ireki fitxategiak"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Gehitu fitxategiak"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Itxi elkarrizketa-koadroa fitxategia ireki ondoren"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Itxi elkarrizketa-koadroa fitxategia gehitu ondoren"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Ilara"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Kendu ilara"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Abesti honetara saltatu"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Iragazkia: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Iragazkia:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Gogoratu"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Ga_rbitu"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Itxi saltatzean"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Erreprodukzio-zerrendaren kudeatzailea"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Sarrerak"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Izena aldatu"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Itxi leihoa erreprodukzio-zerrenda aktibatzean"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Ireki URL"
@@ -994,11 +1031,11 @@ msgstr "Ireki URL"
msgid "Add URL"
msgstr "Gehitu URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Sartu URLa:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/fa_IR.po b/po/fa_IR.po
index 7da78dc..7771532 100644
--- a/po/fa_IR.po
+++ b/po/fa_IR.po
@@ -5,15 +5,18 @@
# Translators:
# John Lindgren <john.lindgren@aol.com>, 2012
# mbg1991 <mbg1991@gmail.com>, 2012
+# mbg1991 <mbg1991@gmail.com>, 2012
+# misledlove <misled.love@yahoo.com>, 2013
# misledlove <misled.love@yahoo.com>, 2013
# Saeed Derakhshan <saeed.love@gmail.com>, 2012
+# vandu <vandusoft@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-05-17 21:38+0000\n"
-"Last-Translator: misledlove <misled.love@yahoo.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/audacious/"
"language/fa_IR/)\n"
"Language: fa_IR\n"
@@ -22,984 +25,1023 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "ۯ۱ Ű­Ű§Ù„ ŰŹŰłŰȘŰŹÙˆ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
-msgstr[0] "یک %d ÙŰ§ÛŒÙ„ ÙŸÛŒŰŻŰ§ ŰŽŰŻ"
+msgstr[0] "‎%d ÙŰ§ÛŒÙ„ ÙŸÛŒŰŻŰ§ ŰŽŰŻ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(UTF-8 ۧێŰȘŰšŰ§Ù‡)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ ŰŹŰŻÛŒŰŻ"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "۟۷ۧ ŰŻŰČ ÙˆŰ§Ű±ŰŻ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ ۧŰČ ÙˆÛŒÙ†Ű§Ù…ÙŸ '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "۟۷ۧ"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ÙŸŰ±ŰŽ ŰšÙ‡ ŰčÙ‚Űš ۯ۱ Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Ù†Ù…Ű§ÛŒŰŽ Ű±Ű§Ù‡Ù†Ù…Ű§ÛŒ ۟۷ ÙŰ±Ù…Ű§Ù†"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "ÙŸŰźŰŽ ŰąÙ‡Ù†ÚŻ Ù‡Ű§ÛŒ Ù…ÙˆŰŹÙˆŰŻ ۯ۱ Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§ÛŒ فŰčلی"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Ù†Ù…Ű§ÛŒŰŽ Ù†ŰłŰźÙ‡"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Ù†ÚŻÙ‡ŰŻŰ§ŰŽŰȘن ŰąÙ‡Ù†ÚŻ فŰčلی"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "ŰŽŰ±ÙˆŰč ÙŸŰźŰŽ"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Ù‚Ű·Űč Ú©Ű±ŰŻÙ† ŰąÙ‡Ù†ÚŻ فŰčلی"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "مŰȘوقف Ú©Ű±ŰŻÙ† ÙŸŰźŰŽ"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
-msgstr "Ù†ÚŻÙ‡ŰŻŰ§ŰŽŰȘ ŰąÙ‡Ù†ÚŻ ۯ۱ Ű­Ű§Ù„ Ű§ŰŹŰ±Ű§ŰŒ ۯ۱ ŰșÛŒŰ± Ű§ÛŒÙ† Ű”ÙˆŰ±ŰȘ Ű§ŰŹŰ±Ű§ÛŒ ŰąÙ†"
+msgstr "ۧگ۱ ÙŰ§ÛŒÙ„ ۯ۱ Ű­Ű§Ù„ ÙŸŰźŰŽ ۧ۳ŰȘ ŰąÙ†Ű±Ű§ مŰȘÙˆÙ‚ÙŰŒ ۯ۱ ŰșÛŒŰ± Ű§ÛŒÙ†â€ŒŰ”ÙˆŰ±ŰȘ ŰąÙ†Ű±Ű§ ÙŸŰźŰŽ کن"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ÙŸŰ±ŰŽ ŰšÙ‡ ŰŹÙ„Ùˆ ۯ۱ Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ÙŸŰ§ÛŒŰ§Ù† ŰŻŰ§ŰŻÙ† ŰšÙ‡ ÙŸŰźŰŽ"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Ù†Ù…Ű§ÛŒŰŽ ÙŸÙ†ŰŹŰ±Ù‡ ÙŸŰ±ŰŽ ŰšÙ‡ ÙŰ§ÛŒÙ„"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Ű±ÙŰȘن ŰšÙ‡ ŰąÙ‡Ù†ÚŻ Ù‚ŰšÙ„ÛŒ"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Ű±ÙŰȘن ŰšÙ‡ ŰąÙ‡Ù†ÚŻ ŰšŰčŰŻÛŒ"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
-msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ ŰšÙ‡ Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ"
+msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ ŰšÙ‡ Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† یک ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ ŰšÙ‡ Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ موقŰȘ"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ ŰšÙ‡ Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ موقŰȘی"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
-msgstr "Ù†Ù…Ű§ÛŒŰŽ Ű”ÙŰ­Ù‡ Ű§Ű”Ù„ÛŒ"
+msgstr "Ù†Ù…Ű§ÛŒŰŽ ÙŸÙ†ŰŹŰ±Ù‡ Ű§Ű”Ù„ÛŒ"
+
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "ÙŸÙ†ŰŹŰ±Ù‡ ÙŸŰ±ŰŽ ŰšÙ‡ ŰąÙ‡Ù†ÚŻ ۱ۧ Ù†ŰŽŰ§Ù† ŰšŰŻÙ‡"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Ű­Ű§Ù„ŰȘ ŰšÛŒ ۳۱"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "ŰŽŰ±ÙˆŰč ŰšŰ±Ù†Ű§Ù…Ù‡ ŰšŰŻÙˆÙ† ۱ۧۚ۷ ÚŻŰ±Ű§ÙÛŒÚ©ÛŒ"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ŰźŰ±ÙˆŰŹ ۯ۱ Ù‡Ù†ÚŻŰ§Ù… ŰȘوقف ÙŸŰźŰŽ"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Ù†Ù…Ű§ÛŒŰŽ Ù†ŰłŰźÙ‡"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
-msgstr "ÙŸŰ±ÛŒÙ†ŰȘ ÙŸÛŒŰșŰ§Ù… Ű±ÙŰč Ű§ŰŽÚ©Ű§Ù„"
+msgstr "Ú†Ű§ÙŸ ÙŸÛŒŰ§Ù…â€ŒÙ‡Ű§ÛŒ Ű§ŰŽÚ©Ű§Ù„â€ŒŰČŰŻŰ§ÛŒÛŒ"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ÙŰ§ÛŒÙ„..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ù†Ű§Ù…Űčلوم: ‎%s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- Ű§ŰŹŰ±Ű§ÛŒ ÙŰ§ÛŒÙ„ Ù‡Ű§ÛŒ Ú†Ù†ŰŻŰ±ŰłŰ§Ù†Ù‡ Ű§ÛŒ"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ù†Ű§Ù…Űčلوم: ‎-%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"ŰšŰ±Ű§ÛŒ Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰšÛŒŰŽŰȘ۱'%s --help' ۱ۧ Ű§Ù…ŰȘŰ­Ű§Ù† Ú©Ù†ÛŒŰŻ.\n"
+"Ù†Ű­ÙˆÙ‡ ۧ۳ŰȘÙŰ§ŰŻÙ‡: ‎audacious [OPTION] ... [FILE]‎\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
-msgstr "ŰšÛŒ ÙŸŰ±ÙˆŰ§"
+msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
-msgstr "ŰšŰ±Ű§ÛŒ %s ŰŻÛŒÚ©ŰŻŰ± ÙŸÛŒŰŻŰ§ Ù†ŰŽŰŻ."
+msgstr "ŰšŰ±Ű§ÛŒ ‎%s ŰŻÛŒÚ©ŰŻŰ±ÛŒ ÙŸÛŒŰŻŰ§ Ù†ŰŽŰŻ."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
-msgstr "%s نمی ŰȘÙˆŰ§Ù†ŰŻ ۚۧŰČ ŰŽÙˆŰŻ."
+msgstr "‎%s نمی ŰȘÙˆŰ§Ù†ŰŻ ۚۧŰČ ŰŽÙˆŰŻ."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Ù†Ù…ÛŒŰŽÙˆŰŻ %s %s: ÙŰ±Ù…ŰȘ ÙŰ§ÛŒÙ„ ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ Ù†Ù…ÛŒŰŽÙˆŰŻ."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "Ű°ŰźÛŒŰ±Ù‡ Ú©Ű±ŰŻÙ†"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "نمی‌ŰȘÙˆŰ§Ù† ‎%s ۱ۧ ŰšŰ§Ű±ÚŻŰ°Ű§Ű±ÛŒ ک۱ۯ: ÙŸŰłÙˆÙ†ŰŻ ÙŰ§ÛŒÙ„ Ù†Ű§ŰŽÙ†Ű§ŰźŰȘه ۧ۳ŰȘ."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ۚۧ۱گŰČŰ§Ű±ÛŒ Ú©Ű±ŰŻÙ†"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Ù†Ù…ÛŒŰŽÙˆŰŻ %s %s: ÙŰ±Ù…ŰȘ ÙŰ§ÛŒÙ„ ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ Ù†Ù…ÛŒŰŽÙˆŰŻ."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ ŰŹŰŻÛŒŰŻ"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "نمی‌ŰȘÙˆŰ§Ù† ‎%s ۱ۧ Ű°ŰźÛŒŰ±Ù‡ ک۱ۯ: ÙŸŰłÙˆÙ†ŰŻ ÙŰ§ÛŒÙ„ Ù†Ű§ŰŽÙ†Ű§ŰźŰȘه ۧ۳ŰȘ."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
-msgstr "ۯ۱ Ű­Ű§Ù„ ۧۏ۱ۧ"
+msgstr "ۯ۱ Ű­Ű§Ù„ ÙŸŰźŰŽ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr ""
-"Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§ نمی ŰȘÙˆŰ§Ù†ŰŻ Ù…Ű±ŰȘŰš ŰŽÙˆŰŻ چون ÙŸÙˆÛŒŰŽ Ű§ŰšŰ±ŰŻŰ§ŰŻÙ‡ Ù‡Ù…Ú†Ù†Ű§Ù† ۯ۱ Ű­Ű§Ù„ Ű§Ù†ŰŹŰ§Ù… ۧ۳ŰȘ (ÛŒŰ§ "
+"Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ نمی‌ŰȘÙˆŰ§Ù†ŰŻ Ù…Ű±ŰȘŰš ŰŽÙˆŰŻ چون ŰŹŰłŰȘŰŹÙˆÛŒ مŰȘŰ§ŰŻŰ§ŰŻÙ‡â€ŒÙ‡Ű§ Ù‡Ù…Ú†Ù†Ű§Ù† ۯ۱ Ű­Ű§Ù„ Ű§Ù†ŰŹŰ§Ù… ۧ۳ŰȘ (ÛŒŰ§ "
"ŰșÛŒŰ± فŰčŰ§Ù„ ŰŽŰŻÙ‡ ۧ۳ŰȘ)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "ŰŻŰ±ŰšŰ§Ű±Ù‡ %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_ۧŰčÙ…Ű§Ù„ Ú©Ű±ŰŻÙ†"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Ű§Ù†Ű”Ű±Ű§Ù"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_ۚ۳ŰȘن"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_ŰŻŰ±ŰšŰ§Ű±Ù‡"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Ű§ÙŰČÙˆÙ†Ù‡â€ŒÙ‡Ű§ ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "ŰŽÚ©Ù„ ŰžŰ§Ù‡Ű±ÛŒ ŰšŰ±Ù†Ű§Ù…Ù‡"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
-msgstr "ÙŰ§ÛŒÙ„ Ű”ÙˆŰȘی"
+msgstr "۔ۯۧ"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ŰŽŰšÚ©Ù‡"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
-msgstr "Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ"
+msgstr "Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰąÙ‡Ù†ÚŻ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
-msgstr "Ű§ÙŰČونه Ù‡Ű§"
+msgstr "Ű§ÙŰČÙˆÙ†Ù‡â€ŒÙ‡Ű§"
+
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Űčمومی"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Ű§ÙÚ©ŰȘ"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "ŰŹÙ„ÙˆÙ‡â€ŒÙ‡Ű§ÛŒ ŰȘŰ”ÙˆÛŒŰ±ÛŒ"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ÙˆŰ±ÙˆŰŻÛŒ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Ű§Ù†ŰȘÙ‚Ű§Ù„"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
-msgstr "ŰźÙˆŰ§Ù†Ù†ŰŻÙ‡"
+msgstr "Ù‡Ù†Ű±Ù…Ù†ŰŻ"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ŰąÙ„ŰšÙˆÙ…"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "ŰčÙ†ÙˆŰ§Ù†"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "ŰŽÙ…Ű§Ű±Ù‡ ŰąÙ‡Ù†ÚŻ"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "۳ۚک"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Ù†Ű§Ù… ÙŰ§ÛŒÙ„"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "۹ۯ۱۳ ÙŰ§ÛŒÙ„"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
-msgstr "ŰȘŰ§Ű±ÛŒŰź"
+msgstr "ŰȘŰ§Ű±ÛŒŰź Ű§Ù†ŰȘێۧ۱"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
-msgstr "ŰłŰ§Ù„"
+msgstr "ŰłŰ§Ù„ Ű§Ù†ŰȘێۧ۱"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
-msgstr "Ù†ŰžŰ±"
+msgstr "ŰȘÙˆŰ¶ÛŒŰ­Ű§ŰȘ"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Ú©ŰŻÚ©"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "کیفیŰȘ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ù‡ÛŒÚ†Ú©ŰŻŰ§Ù…"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ŰčŰ±ŰšÛŒ"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "ŰšŰ§Ù„ŰȘیک"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "چینی"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ÛŒÙˆÙ†Ű§Ù†ÛŒ"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ŰčŰšŰ±ÛŒ"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Ú˜Ű§ÙŸÙ†ÛŒ"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
-msgstr "Ú©Ű±Ù‡ Ű§ÛŒ"
+msgstr "Ú©Ű±Ù‡â€ŒŰ§ÛŒ"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Ù„Ù‡ŰłŰȘŰ§Ù†ÛŒ"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
-msgstr "Ű±ÙˆŰłÛŒÙ‡ Ű§ÛŒ"
+msgstr "Ű±ÙˆŰłÛŒ"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "ŰȘŰ§ÛŒÙˆŰ§Ù†ÛŒ"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
-msgstr "ŰȘŰ±Ú©ÛŒÙ‡ Ű§ÛŒ"
+msgstr "ŰȘŰ±Ú©ÛŒ"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "ممیŰČ ŰŽÙ†Ű§ÙˆŰ±"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Ű­Ű§Ù„ŰȘ ŰąÙ„ŰšÙˆÙ…"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ۱ۧۚ۷</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Ű§ÙŰČونه ۱ۧۚ۷:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Ű§ÙŰČونه ŰźŰ±ÙˆŰŹÛŒ:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰźŰ±ÙˆŰŹÛŒ</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
-msgstr "Űčمق ŰšÛŒŰȘ"
+msgstr "Űčمق ŰšÛŒŰȘ:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
-msgstr "ŰłŰ§ÛŒŰČ ŰšŰ§ÙŰ±"
+msgstr "Ű§Ù†ŰŻŰ§ŰČه ŰšŰ§ÙŰ±:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "میلی Ű«Ű§Ù†ÛŒÙ‡"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "کلیٟ ŰŻŰ§ŰŻÙ† Ù†Ű±Ù… ۔ۯۧ"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
-msgstr "ۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ű”ŰŻŰ§ÛŒ Ù†Ű±Ù… Ű§ÙŰČۧ۱ (ŰȘÙˆŰ”ÛŒÙ‡ Ù†Ù…ÛŒŰŽÙˆŰŻ)"
+msgstr "ۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ Ú©Ù†ŰȘŰ±Ù„ Ű”ŰŻŰ§ÛŒ Ù†Ű±Ù…â€ŒŰ§ÙŰČŰ§Ű±ÛŒ (ŰȘÙˆŰ”ÛŒÙ‡ Ù†Ù…ÛŒŰŽÙˆŰŻ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
-msgstr "<b>Ű§ÙŰČŰ§ÛŒŰŽ Ű”ŰŻŰ§ÛŒ ۚۧŰČÙŸŰźŰŽ</b>"
+msgstr "<b>ŰȘقویŰȘ ۔ۯۧ</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
-msgstr "فŰčŰ§Ù„ Ú©Ű±ŰŻÙ† ۚ۱گێŰȘ Ù‚ŰŻŰ±ŰȘÙ…Ù†ŰŻ"
+msgstr "فŰčŰ§Ù„ Ú©Ű±ŰŻÙ† ŰȘقویŰȘ ۔ۯۧ"
+
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ŰšÙ‡ ۧŰČŰ§ÛŒ ŰąÙ„ŰšÙˆÙ…"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "ŰŹÙ„ÙˆÚŻÛŒŰ±ÛŒ ۧŰČ Ú©Ù„ÛŒÙŸ Ú©Ű±ŰŻÙ† ۔ۯۧ (ÙŸÛŒŰŽÙ†Ù‡Ű§ŰŻ می ŰŽÙˆŰŻ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
-msgstr "<b>ŰȘÙ†ŰžÛŒÙ… ۳۷ۭ</b>"
+msgstr "<b>ŰȘÙ†ŰžÛŒÙ… Ű§Ù†ŰŻŰ§ŰČه</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
-msgstr "ŰȘقویŰȘ Ű”ŰŻŰ§ÛŒ ŰȘÙ…Ű§Ù… ÙŰ§ÛŒÙ„ Ù‡Ű§:"
+msgstr "ŰȘقویŰȘ Ű”ŰŻŰ§ÛŒ ŰȘÙ…Ű§Ù… ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "ŰŻŰłÛŒŰšÙ„"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
-msgstr "ŰȘقویŰȘ Ű”ŰŻŰ§ÛŒ ÙŰ§ÛŒÙ„ Ù‡Ű§ÛŒ ۚ۱چ۳ۚ Ù†ŰźÙˆŰ±ŰŻÙ‡:"
+msgstr "ŰȘقویŰȘ Ű”ŰŻŰ§ÛŒ ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ÛŒ ۚ۱چ۳ۚ Ù†ŰźÙˆŰ±ŰŻÙ‡:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
-msgstr "Ù†Ű§Ù… Ù‡Ű§ŰłŰȘ ÙŸŰ±Ű§Ú©ŰłÛŒ"
+msgstr "Ù†Ű§Ù… Ù‡Ű§ŰłŰȘ ÙŸŰ±Ű§Ú©ŰłÛŒ:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
-msgstr "ÙŸŰ±ŰȘ ÙŸŰ±Ű§Ú©ŰłÛŒ"
+msgstr "ŰŽÙ…Ű§Ű±Ù‡ ÙŸÙˆŰ±ŰȘ ÙŸŰ±Ű§Ú©ŰłÛŒ:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
-msgstr "Ù†Ű§Ù… Ú©Ű§Ű±ŰšŰ±ÛŒ ÙŸŰ±Ű§Ú©ŰłÛŒ"
+msgstr "Ù†Ű§Ù… Ú©Ű§Ű±ŰšŰ±ÛŒ ÙŸŰ±Ű§Ú©ŰłÛŒ:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
-msgstr "Ű±Ù…ŰČ ŰčŰšÙˆŰ± ÙŸŰ±Ű§Ú©ŰłÛŒ"
+msgstr "کلمه ŰčŰšÙˆŰ± ÙŸŰ±Ű§Ú©ŰłÛŒ:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
-msgstr "<b>ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ÙŸŰ±ÙˆÚ©ŰłÛŒ</b>"
+msgstr "<b>ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ÙŸŰ±Ű§Ú©ŰłÛŒ</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "فŰčŰ§Ù„ Ú©Ű±ŰŻÙ† ۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ ÙŸŰ±Ű§Ú©ŰłÛŒ"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "ۧ۳ŰȘÙŰ§ŰŻÙ‡ ۧŰČ ŰȘŰ§ÛŒÛŒŰŻ ۧŰčŰȘۚۧ۱ ۚۧ ÙŸŰ±ÙˆÚ©ŰłÛŒ"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
-msgstr "ŰȘŰŽŰźÛŒŰ” ŰŻÙ‡Ù†ŰŻÙ‡ ی Ű±Ù…ŰČ ÚŻŰČۧ۱ کۧ۱ۧکŰȘ۱ ۧŰȘÙˆÙ…Ű§ŰȘیک ŰšŰ±Ű§ÛŒ:"
+msgstr "ŰȘŰŽŰźÛŒŰ” ŰźÙˆŰŻÚ©Ű§Ű± Ű§Ù†Ú©ŰŻÛŒÙ†ÚŻ کۧ۱ۧکŰȘŰ±Ù‡Ű§ ŰšŰ±Ű§ÛŒ:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
-msgstr "Ű±Ù…ŰČÚŻŰČŰ§Ű±ÛŒ کۧ۱ۧکŰȘ۱ Ù…ŰŹŰŻŰŻ:"
+msgstr "Ű§Ù†Ú©ŰŻÛŒÙ†ÚŻ کۧ۱ۧکŰȘŰ±Ù‡Ű§ ۯ۱ Ű”ÙˆŰ±ŰȘ ÙˆŰŹÙˆŰŻ Ű§ŰŽÚ©Ű§Ù„:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
-msgstr "<b>Ű±ÙŰȘۧ۱</b>"
+msgstr "<b>ÙˆŰ¶ŰčیŰȘ</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
-msgstr "Ű§ŰŻŰ§Ù…Ù‡ Ű§ŰŹŰ±Ű§ÛŒ ÙŰ§ÛŒÙ„ Ù‡Ű§ ۯ۱ Ù‡Ù†ÚŻŰ§Ù… ŰŽŰ±ÙˆŰč"
+msgstr "Ű§ŰŻŰ§Ù…Ù‡ Ű§ŰŹŰ±Ű§ÛŒ ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ Ù‡Ù†ÚŻŰ§Ù… ŰŽŰ±ÙˆŰč ŰšŰ±Ù†Ű§Ù…Ù‡"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
-msgstr "ŰČÙ…Ű§Ù†ÛŒ که ŰąÙ‡Ù†ÚŻ فŰčلی ÙŸŰ§Ú© ŰŽŰŻ Ű§ŰŻŰ§Ù…Ù‡ ŰšŰŻÙ‡"
+msgstr "Ù‡Ù†ÚŻŰ§Ù…ÛŒ که ÙŰ§ÛŒÙ„ ۯ۱ Ű­Ű§Ù„ ÙŸŰźŰŽ ÙŸŰ§Ú© ŰŽŰŻ ÙŰ§ÛŒÙ„ ŰšŰčŰŻÛŒ ۱ۧ ÙŸŰźŰŽ کن"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
-msgstr "ÙŸŰ§Ú© Ú©Ű±ŰŻÙ† Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§ ۯ۱ ŰČÙ…Ű§Ù… ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ Ù‡Ű§"
+msgstr "ÙŸŰ§Ú© Ú©Ű±ŰŻÙ† Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ Ù‡Ù†ÚŻŰ§Ù… ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
-msgstr "ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ Ù‡Ű§ ۯ۱ یک Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§ÛŒ موقŰȘی"
+msgstr "ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ ۯ۱ Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ موقŰȘی"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
-msgstr "ŰȘۧ ŰČÙ…Ű§Ù†ÛŒ که ŰąÙ‡Ù†ÚŻ Ù‡Ű§ ÙŸŰźŰŽ Ù†ŰŽŰŻÙ‡ Ű§Ù†ŰŻ Ű§ŰšŰ±ŰŻŰ§ŰŻÙ‡ ی ŰąÙ† Ù‡Ű§ ۱ۧ ۚۧ۱گŰČŰ§Ű±ÛŒ نکن"
+msgstr "ŰȘۧ ŰČÙ…Ű§Ù†ÛŒ که ŰąÙ‡Ù†ÚŻâ€ŒÙ‡Ű§ ÙŸŰźŰŽ Ù†ŰŽŰŻÙ‡â€ŒŰ§Ù†ŰŻ مŰȘŰ§ŰŻŰ§ŰŻÙ‡ ŰąÙ†Ù‡Ű§ ۱ۧ ŰšŰ§Ű±ÚŻŰ°Ű§Ű±ÛŒ نکن"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>۳ۧŰČÚŻŰ§Ű±ÛŒ</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
-msgstr "\\ (backward slash) ۱ۧ ŰšÙ‡ ŰčÙ†ÙˆŰ§Ù† ۏۯۧ Ú©Ù†Ù†ŰŻÙ‡ ÙÙˆÙ„ŰŻŰ± ŰȘÙŰłÛŒŰ± کن"
+msgstr "\\ (backward slash) ۱ۧ ŰšÙ‡ ŰčÙ†ÙˆŰ§Ù† ŰŹŰŻŰ§Ú©Ù†Ù†ŰŻÙ‡ ÙŸÙˆŰŽÙ‡â€ŒÙ‡Ű§ ŰȘÙŰłÛŒŰ± کن"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ŰȘŰ”ÙˆÛŒŰ± ŰąÙ„ŰšÙˆÙ…</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
-"ŰŹŰłŰȘ و ŰŹÙˆ ŰšŰ±Ű§ÛŒ ŰčÚ©Űł Ù‡Ű§ÛŒÛŒ که Ù…Ù†Ű·ŰšÙ‚ ۚۧ Ű§ÛŒÙ† Ú©Ù„Ù…Ű§ŰȘ می ŰšŰ§ŰŽÙ†ŰŻ ( ۚۧ Ú©Ű§Ù…Ű§ ۏۯۧ می ŰŽÙˆÙ†ŰŻ):"
+"ŰŹŰłŰȘŰŹÙˆ ŰšŰ±Ű§ÛŒ ŰȘŰ”Ű§ÙˆÛŒŰ±ÛŒ که ۚۧ Ű§ÛŒÙ† Ú©Ù„Ù…Ű§ŰȘ Ù…Ű·Ű§ŰšÙ‚ŰȘ ۯۧێŰȘه ŰšŰ§ŰŽÙ†ŰŻ (Ú©Ù„Ù…Ű§ŰȘ ۱ۧ ۚۧ Ú©Ű§Ù…Ű§ ۧŰČ "
+"هم ۏۯۧ Ú©Ù†ÛŒŰŻ):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
-msgstr "۟ۧ۱ۏ Ú©Ű±ŰŻÙ† ŰčÚ©Űł Ù‡Ű§ÛŒÛŒ که ۚۧ Ű§ÛŒÙ† Ú©Ù„Ù…Ű§ŰȘ Ù…Ù†Ű·ŰšÙ‚ Ű§Ù†ŰŻ (ۚۧ Ú©Ű§Ù…Ű§ ۏۯۧ می ŰŽÙˆÙ†ŰŻ):"
+msgstr ""
+"ŰŻŰ±Ù†ŰžŰ± Ù†ÚŻŰ±ÙŰȘن ŰȘŰ”Ű§ÙˆÛŒŰ±ÛŒ که ۚۧ Ű§ÛŒÙ† Ú©Ù„Ù…Ű§ŰȘ Ù…Ű·Ű§ŰšÙ‚ŰȘ ۯۧێŰȘه ŰšŰ§ŰŽÙ†ŰŻ (Ú©Ù„Ù…Ű§ŰȘ ۱ۧ ۚۧ Ú©Ű§Ù…Ű§ ۧŰČ "
+"هم ۏۯۧ Ú©Ù†ÛŒŰŻ):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
-msgstr "ŰŹŰłŰȘ و ŰŹÙˆ ŰšŰ±Ű§ÛŒ ŰčÚ©Űł Ù‡Ű§ÛŒÛŒ که ۚۧ Ù†Ű§Ù… ÙŰ§ÛŒÙ„ ŰąÙ‡Ù†ÚŻ Ù…Ù†Ű·ŰšÙ‚ Ű§Ù†ŰŻ"
+msgstr "ŰŹŰłŰȘŰŹÙˆ ŰšŰ±Ű§ÛŒ ŰȘŰ”Ű§ÙˆÛŒŰ±ÛŒ که ۚۧ Ù†Ű§Ù… ŰąÙ‡Ù†ÚŻ Ù…Ű·Ű§ŰšÙ‚ŰȘ ۯۧێŰȘه ŰšŰ§ŰŽÙ†ŰŻ"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
-msgstr "ŰŹŰłŰȘ و ŰŹÙˆÛŒ ۚۧŰČÚŻŰŽŰȘی"
+msgstr "ŰŹŰłŰȘŰŹÙˆÛŒ ۚۧŰČÚŻŰŽŰȘی"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
-msgstr "Űčمق ŰŹŰłŰȘ و ŰŹÙˆ:"
+msgstr "Űčمق ŰŹŰłŰȘŰŹÙˆ:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
-msgstr "<b>Ù†Ù…Ű§ÛŒŰŽ Ű§Ű·Ù„Ű§ŰčۧŰȘ</b>"
+msgstr "<b>Ű§Ű·Ù„Ű§ŰčۧŰȘ ÙŸÙ†ŰŹŰ±Ù‡ ۚۧŰČŰŽÙˆ</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
-msgstr "Ù†Ù…Ű§ÛŒŰŽ ÙŸÙ†ŰŹŰ±Ù‡ Ű§Ű·Ù„Ű§ŰčۧŰȘ"
+msgstr "Ù†Ù…Ű§ÛŒŰŽ ÙŸÙ†ŰŹŰ±Ù‡ ۚۧŰČŰŽÙˆÛŒ Ű§Ű·Ù„Ű§ŰčۧŰȘ"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
-msgstr "ŰȘŰ§ŰźÛŒŰ± ÙŸÙ†ŰŹŰ±Ù‡ (یک ŰŻÙ‡Ù… Ű«Ű§Ù†ÛŒÙ‡):"
+msgstr "ŰȘŰ§ŰźÛŒŰ± ÙŸÙ†ŰŹŰ±Ù‡ ۚۧŰČŰŽÙˆ (ۚ۱ۧ۳ۧ۳ ŰŻÙ‡Ù… Ű«Ű§Ù†ÛŒÙ‡):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
-msgstr "Ù†Ù…Ű§ÛŒŰŽ Ù…Ù‚ÛŒŰ§Űł ŰČÙ…Ű§Ù† ŰšŰ±Ű§ÛŒ Ű§ÛŒÙ† ŰąÙ‡Ù†ÚŻ"
+msgstr "Ù†Ù…Ű§ÛŒŰŽ Ù…Ù‚ÛŒŰ§Űł ŰČÙ…Ű§Ù† ŰšŰ±Ű§ÛŒ ŰąÙ‡Ù†ÚŻ ŰŹŰ§Ű±ÛŒ"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "ŰčÙ†ÙˆŰ§Ù†"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
-msgstr "ŰźÙˆŰ§Ù†Ù†ŰŻÙ‡ - ŰčÙ†ÙˆŰ§Ù†"
+msgstr "Ù‡Ù†Ű±Ù…Ù†ŰŻ - ŰčÙ†ÙˆŰ§Ù†"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
-msgstr "ŰźÙˆŰ§Ù†Ù†ŰŻÙ‡ - ŰąÙ„ŰšÙˆÙ… - ŰčÙ†ÙˆŰ§Ù†"
+msgstr "Ù‡Ù†Ű±Ù…Ù†ŰŻ - ŰąÙ„ŰšÙˆÙ… - ŰčÙ†ÙˆŰ§Ù†"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
-msgstr "ŰźÙˆŰ§Ù†Ù†ŰŻÙ‡ - ŰąÙ„ŰšÙˆÙ… - ŰȘ۱ک.ŰčÙ†ÙˆŰ§Ù†"
+msgstr "Ù‡Ù†Ű±Ù…Ù†ŰŻ - ŰąÙ„ŰšÙˆÙ… - ŰŽÙ…Ű§Ű±Ù‡ ŰąÙ‡Ù†ÚŻ. ŰčÙ†ÙˆŰ§Ù†"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
-msgstr "ŰźÙˆŰ§Ù†Ù†ŰŻÙ‡[ŰąÙ„ŰšÙˆÙ…]-ŰȘ۱ک.ŰčÙ†ÙˆŰ§Ù†"
+msgstr "Ù‡Ù†Ű±Ù…Ù†ŰŻ [ ŰąÙ„ŰšÙˆÙ… ] - ŰŽÙ…Ű§Ű±Ù‡ ŰąÙ‡Ù†ÚŻ. ŰčÙ†ÙˆŰ§Ù†"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ŰąÙ„ŰšÙˆÙ… - ŰčÙ†ÙˆŰ§Ù†"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
-msgstr "Ù…ÙˆŰ¶ÙˆŰč"
+msgstr "ŰŻŰłŰȘÙ‡â€ŒŰšÙ†ŰŻÛŒ"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
-msgstr "ŰŽŰźŰ”ÛŒ ۳ۧŰČی"
+msgstr "ŰŽŰźŰ”ÛŒ"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Ù†Ù…Ű§ÛŒŰŽ ŰąÙ‡Ù†ÚŻ</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
-msgstr "Ù†Ù…Ű§ÛŒŰŽ ŰŽÙ…Ű§Ű±Ù‡ ŰąÙ‡Ù†ÚŻ"
+msgstr "Ù†Ù…Ű§ÛŒŰŽ ŰŽÙ…Ű§Ű±Ù‡ ŰąÙ‡Ù†ÚŻâ€ŒÙ‡Ű§"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Ű”ÙŰ±Ù‡Ű§ÛŒ ÙŸÛŒŰŽÛŒÙ† ۱ۧ Ù†Ù…Ű§ÛŒŰŽ ŰšŰŻÙ‡ (02:00 ŰšÙ‡ ŰŹŰ§ÛŒ 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Ű§Ű·Ù„Ű§ŰčۧŰȘ ۯ۱ Ù…ÙˆŰ±ŰŻ ÙŰ±Ù…ŰȘ ۱ێŰȘه Ù†Ű§Ù… ۱ۧ Ù†ŰŽŰ§Ù† ŰšŰŻÙ‡"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "۱ێŰȘه ŰŻÙ„ŰźÙˆÙ‡:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
-msgstr "ÙŰ±Ù…ŰȘŰšÙ†ŰŻÛŒ ŰčÙ†ÙˆŰ§Ù†:"
-
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Ű§ÙŰČونه ŰźŰ±ÙˆŰŹÛŒ"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ۏۧ ŰšÙ‡ ۏۧ Ú©Ù†Ù†ŰŻÙ‡"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ÙˆŰ±ÙˆŰŻÛŒ"
+msgstr "ÙŰ±Ù…ŰȘ ŰčÙ†ÙˆŰ§Ù†:"
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Ű§ÙÚ©ŰȘ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "ŰȘŰ”ÙˆÛŒŰ± ۳ۧŰČی"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Űčمومی"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "۱ێŰȘه ŰŽŰźŰ”ÛŒ:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Audacious"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
-msgstr "ŰŻŰ§ÛŒŰ±Ú©ŰȘÙˆŰ±ÛŒ (%s) ۱ۧ نمی ŰȘÙˆŰ§Ù† Ű§ÛŒŰŹŰ§ŰŻ ک۱ۯ : %s\n"
+msgstr "ÙŸÙˆŰŽÙ‡ (‎%s) ۱ۧ نمی‌ŰȘÙˆŰ§Ù† Ű§ÛŒŰŹŰ§ŰŻ ک۱ۯ: ‎%s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "موقŰčیŰȘ ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "هیچ ŰąÙ‡Ù†ÚŻÛŒ ۯ۱ Ű­Ű§Ù„ ۧۏ۱ۧ Ù†ÛŒŰłŰȘ"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
-msgstr "ŰłÛŒ ŰŻÛŒ Ű”ÙˆŰȘÛŒŰŒâ€ŒŰąÙ‡Ù†ÚŻ %s"
+msgstr "ŰłÛŒâ€ŒŰŻÛŒ Ű”ÙˆŰȘÛŒŰŒâ€Œ ŰąÙ‡Ù†ÚŻ ‎%s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
-msgstr "مونو"
+msgstr "ŰȘÚ©â€ŒÚ©Ű§Ù†Ű§Ù„Ù‡"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
-msgstr "ۧ۳ŰȘŰ±ÛŒÙˆ"
+msgstr "ŰŻÙˆÚ©Ű§Ù†Ű§Ù„Ù‡"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
-msgstr[0] "%d Ú©Ű§Ù†Ű§Ù„ Ù‡Ű§"
+msgstr[0] "‎%d Ú©Ű§Ù†Ű§Ù„"
#: src/libaudgui/about.c:37
msgid "Credits"
-msgstr "ŰȘÙˆÙ„ÛŒŰŻ Ú©Ù†Ù†ŰŻÚŻŰ§Ù†"
+msgstr "ŰȘÙˆÙ„ÛŒŰŻÚ©Ù†Ù†ŰŻÚŻŰ§Ù†"
#: src/libaudgui/about.c:37
msgid "License"
-msgstr "ÚŻÙˆŰ§Ù‡ÛŒ Ù†Ű§Ù…Ù‡"
+msgstr "Ù„Ű§ÛŒŰłÙ†Űł"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
-msgstr "ŰŻŰ±Ù…ÙˆŰ±ŰŻ Ù†Ű±Ù… Ű§ÙŰČۧ۱"
+msgstr "ŰŻŰ±ŰšŰ§Ű±Ù‡ Audaciuos"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Ù…Ű·Ù…ŰŠÙ† Ù‡ŰłŰȘÛŒŰŻ Ù…ÛŒŰźÙˆŰ§Ù‡ÛŒŰŻ ÙŰ§ÛŒÙ„ %s ۱ۧ ŰšŰšÙ†ŰŻÛŒŰŻŰŸ Ű§ÚŻÙ‡ Ű§ÛŒÙ† ÙŰ§ÛŒÙ„ ۱ۧ ŰšŰšÙ†ŰŻÛŒŰŻ ŰȘÙ…Ű§Ù…ÛŒ "
-"ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘی که ŰšŰčŰŻ ۧŰČ ÙˆŰ§Ű±ŰŻ Ú©Ű±ŰŻÙ† Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ű§Ù†ŰŹŰ§Ù… ŰŻŰ§ŰŻÙ‡ Ű§ÛŒŰŻ ۧŰČ ŰšÛŒÙ† ŰźÙˆŰ§Ù‡ŰŻ Ű±ÙŰȘ."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "ŰąÛŒŰ§ Ù…ÛŒâ€ŒŰźÙˆŰ§Ù‡ÛŒŰŻ \"‎%s\" ۱ۧ ŰšŰ±Ű§ÛŒ Ù‡Ù…ÛŒŰŽÙ‡ Ű­Ű°Ù Ú©Ù†ÛŒŰŻŰŸ"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Ű­Ű°Ù"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ۚ۳ŰȘن Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Ű­Ű°Ù Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "Ù€Ű§ÛŒÙ† ÙŸÛŒŰșŰ§Ù… ۱ۧ ŰŻÙˆŰšŰ§Ű±Ù‡ Ù†Ù…Ű§ÛŒŰŽ Ù†ŰŻÙ‡"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_ŰŻÙˆŰšŰ§Ű±Ù‡ Ù†ÙŸŰ±Űł"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
-msgstr "ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ"
+msgstr "ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "چه Ù†Ű§Ù…ÛŒ ۱ۧ ŰšŰ±Ű§ÛŒ Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ ŰŹŰ§Ű±ÛŒ Ű§Ù†ŰȘ۟ۧۚ Ù…ÛŒâ€ŒÚ©Ù†ÛŒŰŻŰŸ"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "ـفŰčŰ§Ù„ Ú©Ű±ŰŻÙ†"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
-msgstr "31 Hz"
+msgstr "31 Ù‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
-msgstr "63 Hz"
+msgstr "63‌ Ù‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
-msgstr "125 Hz"
+msgstr "125 Ù‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
-msgstr "250 Hz"
+msgstr "250 Ù‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
-msgstr "500 Hz"
+msgstr "500 Ù‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
-msgstr "1 kHz"
+msgstr "1 Ú©ÛŒÙ„ÙˆÙ‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
-msgstr "2 kHz"
+msgstr "2 Ú©ÛŒÙ„ÙˆÙ‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
-msgstr "2 kHz"
+msgstr "4 Ú©ÛŒÙ„ÙˆÙ‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
-msgstr "8 kHz"
+msgstr "8 Ú©ÛŒÙ„ÙˆÙ‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
-msgstr "8 kHz"
+msgstr "16 Ú©ÛŒÙ„ÙˆÙ‡Ű±ŰȘŰČ"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ű§Ú©ÙˆÙ„Ű§ÛŒŰČ۱"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
-msgstr "ÙŸÛŒŰŽ ŰȘقویŰȘ Ú©Ù†Ù†ŰŻÙ‡"
+msgstr "ÙŸÛŒŰŽâ€ŒŰȘقویŰȘâ€ŒÚ©Ù†Ù†ŰŻÙ‡"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "ŰąÙ‡Ù†ÚŻ"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Ù…ŰŻŰȘ ŰČÙ…Ű§Ù†"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "ÙŰ±Ù…ŰȘ:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "کیفیŰȘ:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Ù†Ű±Űź ŰšÛŒŰȘ:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Ű§ŰłÛŒŰŻ ۏۧŰČ"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Ű§ŰłÛŒŰŻ ۱ۧک"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ű§Ù…ŰšÛŒÙ†ŰȘ"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "ŰšÛŒŰšŰ§ÙŸ"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "ŰšÙ„ÙˆÚŻŰ±Űł"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "ŰšÙ„ÙˆŰČ"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Ù…ÙˆŰłÛŒÙ‚ÛŒ ŰźÙˆŰ§Űš"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
-msgstr "Ú©Ù„Ű§ŰłÛŒÚ©ÛŒ"
+msgstr "Ú©Ù„Ű§ŰłÛŒÚ©"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Ú©Ű§Ù†ŰȘŰ±ÛŒ"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "ŰŻŰȘ مŰȘŰ§Ù„"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ŰŻÛŒŰłÚ©Ùˆ"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Ù…ÙˆŰłÛŒÙ‚ÛŒ ŰąŰ±Ű§Ù…"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
-msgstr "فولک ÛŒŰ§ Ù…Ű­Ù„ÛŒ"
+msgstr "فولک"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "ÙŰ§Ù†Ú©"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Ű±ÙŸ ÚŻŰ§Ù†ÚŻŰłŰȘŰ±ÛŒ"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "ÚŻŰ§ŰłÙŸÙ„"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "ÚŻŰ±Ű§Ù†ŰŹ"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Ù‡Ű§Ű±ŰŻ ۱ۧک"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "هوی مŰȘŰ§Ù„"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "هیٟ-Ù‡Ű§ÙŸ"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "Ù‡Ű§ÙˆŰł"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "ۏۧŰČ"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "ŰŹÙ†ÚŻÙ„"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "مŰȘŰ§Ù„"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "Űč۔۱ ŰŹŰŻÛŒŰŻ"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "Ù…ÙˆŰŹ ŰŹŰŻÛŒŰŻ"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "نویŰČ"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "ÙŸŰ§ÙŸ"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "ÙŸŰ§Ù†Ú© ۱ۧک"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Ű±ÙŸ"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
-msgstr "Ű±ÛŒÚŻÛŒ"
+msgstr "Ű±ÚŻÙ‡"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "۱ۧک"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "۱ۧک Ű§Ù†ŰŻ Ű±ÙˆÙ„"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Ű±ÛŒŰȘم Ű§Ù†ŰŻ ŰšÙ„ÙˆŰČ"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
-msgstr "Ska"
+msgstr "ۧ۳کۧ"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "ŰłÙˆÙ„"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "ŰłÙˆÛŒÙ†ÚŻ"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "ŰȘکنو"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "ŰȘŰ±ÛŒÙŸ-Ù‡Ű§ÙŸ"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ۯ۱ ŰŻŰłŰȘ۱۳ Ù†Ù…ÛŒŰšŰ§ŰŽŰŻ</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Ű§ŰšŰ±ŰŻŰ§ŰŻÙ‡ ۚۧ موفقیŰȘ ŰšÙ‡ Ű±ÙˆŰČ Ű±ŰłŰ§Ù†ÛŒ ŰŽŰŻ"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ŰčŰŻÙ… موفقیŰȘ ŰšÙ‡ Ű±ÙˆŰČ Ű±ŰłŰ§Ù†ÛŒ Ű§ŰšŰ±ŰŻŰ§ŰŻÙ‡"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Ű§Ű·Ù„Ű§ŰčۧŰȘ ŰąÙ‡Ù†ÚŻ"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Ű°ŰźÛŒŰ±Ù‡ ۚۧ موفقیŰȘ"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">نوŰč ÙŰ§ÛŒÙ„:</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "۟۷ۧ ۯ۱ Ű°ŰźÛŒŰ±Ù‡â€ŒŰłŰ§ŰČی"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">کیفیŰȘ:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "Ù†Ű±Űź ŰšÛŒŰȘ"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">ŰčÙ†ÙˆŰ§Ù†</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ŰźÙˆŰ§Ù†Ù†ŰŻÙ‡</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ŰąÙ„ŰšÙˆÙ…</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Ù†ŰžŰ±Ű§ŰȘ</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">۳ۚک</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">ŰłŰ§Ù„</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "ŰŽÙ…Ű§Ű±Ù‡ ŰąÙ‡Ù†ÚŻ"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ŰŽÙ…Ű§Ű±Ù‡ ŰąÙ‡Ù†ÚŻ</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Ű°ŰźÛŒŰ±Ù‡"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
-msgstr "%dÚ©ÛŒÙ„ÙˆŰšÛŒŰȘ ۚ۱ Ű«Ű§Ù†ÛŒÙ‡"
+msgstr "‎%d Ú©ÛŒÙ„ÙˆŰšÛŒŰȘ/Ű«Ű§Ù†ÛŒÙ‡"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "Ù†Ű§Ù…Űčلوم"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
-msgstr "Ű§Ű·Ù„Ű§ŰčۧŰȘی ŰšŰ±Ű§ÛŒ %s ۯ۱ ŰŻŰłŰȘ۱۳ Ù†ÛŒŰłŰȘ.\n"
+msgstr "Ű§Ű·Ù„Ű§ŰčۧŰȘی ŰšŰ±Ű§ÛŒ ‎%s ۯ۱ ŰŻŰłŰȘ۱۳ Ù†ÛŒŰłŰȘ.\n"
+
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_ÙŸŰ±ŰŽ"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ÙŸŰ±ŰŽ ŰšÙ‡ ŰČÙ…Ű§Ù†"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ŰČÙ…Ű§Ù† ۱ۧ ÙˆŰ§Ű±ŰŻ Ú©Ù†ÛŒŰŻ (ŰŻÙ‚ÛŒÙ‚Ù‡:Ű«Ű§Ù†ÛŒÙ‡):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ۚۧŰČ Ù†ÙˆÛŒŰłÛŒ ۚ۱ Ű±ÙˆÛŒ ‎%s Ű§Ù†ŰŹŰ§Ù… ŰŽÙˆŰŻŰŸ"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "ŰȘŰ§ÛŒÛŒŰŻ ۚۧŰČÙ†ÙˆÛŒŰłÛŒ"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
-msgstr "ŰźŰ±ÙˆŰŹÛŒ ÚŻŰ±ÙŰȘن ۧŰČ Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§"
+msgstr "ŰźŰ±ÙˆŰŹÛŒ ÚŻŰ±ÙŰȘن ۧŰČ Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ"
+
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
-msgstr "ÙˆŰ§Ű±ŰŻ Ú©Ű±ŰŻÙ† Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§"
+msgstr "ÙˆŰ§Ű±ŰŻ Ú©Ű±ŰŻÙ† Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ۚۧŰČ Ù†ÙˆÛŒŰłÛŒ ۚ۱ Ű±ÙˆÛŒ %s Ű§Ù†ŰŹŰ§Ù… ŰŽÙˆŰŻŰŸ"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Ù…ŰŻÛŒŰ± Ű”Ù"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_۟ۧ۱ۏ Ú©Ű±ŰŻÙ† ۧŰČ Ű”Ù"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
-msgstr "ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ Ù‡Ű§"
+msgstr "ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§"
+
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_ۚۧŰČ Ú©Ű±ŰŻÙ†"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "ۚ۳ŰȘن _ÙŸÙ†ŰŹŰ±Ù‡ ÙŸÛŒŰșŰ§Ù… ŰšŰčŰŻ ۧŰČ ŰšŰ§ŰČ Ú©Ű±ŰŻÙ†"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
-msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ Ù‡Ű§"
+msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ۚ۳ŰȘن ÙŸÙ†ŰŹŰ±Ù‡ ۯ۱ Ù‡Ù†ÚŻŰ§Ù† ۚۧŰČ Ú©Ű±ŰŻÙ†"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ†"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ۚ۳ŰȘن ÙŸÙ†ŰŹŰ±Ù‡ ۯ۱ Ù‡Ù†ÚŻŰ§Ù† Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ†"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "ۚ۳ŰȘن _ÙŸÙ†ŰŹŰ±Ù‡ ÙŸÛŒŰșŰ§Ù… ŰšŰčŰŻ ۧŰČ Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ†"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Ű”Ù"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "۟ۧ۱ۏ Ú©Ű±ŰŻÙ† ۧŰČ_Ű”Ù"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ÙŸŰ±ŰŽ ŰšÙ‡ ŰąÙ‡Ù†ÚŻ"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "فیلŰȘ۱:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "ـفیلŰȘ۱:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "ŰšÙ‡ ÛŒŰ§ŰŻ ۯۧێŰȘه ۚۧێ"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "ÙŸŰ§Ú© Ù€Ú©Ű±ŰŻÙ†"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "Űš_ŰłŰȘن Ù‡Ù†ÚŻŰ§Ù… ÙŸŰ±ŰŽ"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ۚ۳ŰȘن ۯ۱ Ù‡Ù†ÚŻŰ§Ù… ÙŸŰ±ŰŽ"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
-msgstr "Ù…ŰŻÛŒŰ±ÛŒŰȘ Ù„ÛŒŰłŰȘ Ű§Ù‡Ù†ÚŻ"
+msgstr "Ù…ŰŻÛŒŰ±ÛŒŰȘ Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
-msgstr "Ù†ÙˆŰŽŰȘه Ù‡Ű§"
+msgstr "ŰŻŰ§ŰŻÙ‡â€ŒÙ‡Ű§"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "ـŰȘŰșÛŒÛŒŰ±Ù†Ű§Ù…"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_ŰŹŰŻÛŒŰŻ"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "ŰȘŰșÛŒÛŒŰ±_Ù†Ű§Ù…"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_ÙŸŰźŰŽ"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
-msgstr "_ÙŸÙ†ŰŹŰ±Ù‡ ÙŸÛŒŰșŰ§Ù… ۱ۧ ۯ۱ Ù‡Ù†ÚŻŰ§Ù… فŰčŰ§Ù„ ŰŽŰŻÙ† Ù„ÛŒŰłŰȘ ŰąÙ‡Ù†ÚŻ Ù‡Ű§ ŰšŰšÙ†ŰŻ"
+msgstr "_ÙŸÙ†ŰŹŰ±Ù‡ ÙŸÛŒŰșŰ§Ù… ۱ۧ ۯ۱ Ù‡Ù†ÚŻŰ§Ù… فŰčŰ§Ù„ ŰŽŰŻÙ† Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ ŰšŰšÙ†ŰŻ"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
-msgstr "ۚۧŰČÚ©Ű±ŰŻÙ† یک ۹ۯ۱۳ ۧŰČ ÙˆŰš"
+msgstr "ۚۧŰČÚ©Ű±ŰŻÙ† ۹ۯ۱۳ Ű§ÛŒÙ†ŰȘŰ±Ù†ŰȘی"
#: src/libaudgui/url-opener.c:55
msgid "Add URL"
-msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† یک ۹ۯ۱۳ ۧŰČ ÙˆŰš"
+msgstr "Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ† ۹ۯ۱۳ Ű§ÛŒÙ†ŰȘŰ±Ù†ŰȘی"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
-msgstr "۹ۯ۱۳ ÙˆŰšŰłŰ§ÛŒŰȘ ۱ۧ ÙˆŰ§Ű±ŰŻ Ú©Ù†ÛŒŰŻ:"
+msgstr "۹ۯ۱۳ Ű§ÛŒÙ†ŰȘŰ±Ù†ŰȘی ۱ۧ ÙˆŰ§Ű±ŰŻ Ú©Ù†ÛŒŰŻ:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
msgstr ""
"\n"
-"(ÙŸÛŒŰ§Ù… Ù‡Ű§ÛŒ ŰšÛŒŰŽŰȘ۱ Ù…ŰźÙÛŒ ŰŽŰŻÙ‡ Ű§Ù†ŰŻ.)"
+"(ÙŸÛŒŰ§Ù…â€ŒÙ‡Ű§ÛŒ ŰšÛŒŰŽŰȘ۱ Ù…ŰźÙÛŒ ŰŽŰŻÙ‡â€ŒŰ§Ù†ŰŻ.)"
diff --git a/po/fi.po b/po/fi.po
index d4e53f4..6051336 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -14,9 +14,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-12-04 14:33+0000\n"
-"Last-Translator: Jaergenoth <jstuomisto@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Finnish (http://www.transifex.com/projects/p/audacious/"
"language/fi/)\n"
"Language: fi\n"
@@ -25,140 +25,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "EtsitÀÀn..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d tiedosto löytyi"
msgstr[1] "%d tiedostoa löytyi"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (virheellinen UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Uusi soittolista"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Virhe tuotaessa Winampin EQF -tiedostoa '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Siirry taaksepÀin soittolistalla"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Aloita nykyisen soittolistan toistaminen"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "NÀytÀ versio"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "KeskeytÀ nykyinen kappale"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "PysÀytÀ nykyinen kappale"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "KeskeytÀ jos kappale soi, muutoin jatka soittamista"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Siirry eteenpÀin soittolistalla"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "NÀytÀ HyppÀÀ tiedostoon -valintaikkuna"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "LisÀÀ tiedostoja soittolistaan"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "LisÀÀ uusia tiedostoja vÀliaikaiseen soittolistaan"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "NÀytÀ pÀÀikkuna"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "PÀÀtteetön tila"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Sulje kun toisto pysÀytetÀÀn"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "NÀytÀ versio"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "NÀytÀ virheenjÀljitysviestit"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "TIEDOSTO..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- toista multimediatiedostoja"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Kokeile `%s --help' saadaksesi lisÀtietoja.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Dekooderia ei löytynyt tiedostomuodolle %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "Ei voida avata %s."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Ei voida %s %s: tiedostotyyppiÀ ei tueta."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "tallenna"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "lataa"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Ei voida %s %s: tiedostotyyppiÀ ei tueta."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Uusi soittolista"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Soi nyt"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -166,412 +157,444 @@ msgstr ""
"Soittolistaa ei voida lajitella, koska metatietojen pÀivitys on vielÀ kesken "
"(tai se on poistettu kÀytöstÀ)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Tietoja liitÀnnÀisestÀ %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "LiitÀnnÀisen %s asetukset"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Ă„Ă€ni"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Verkko"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Soittolista"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Kappaleen tiedot"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "LiitÀnnÀiset"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Yleiset"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Tehosteet"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisoinnit"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ÄÀnilÀhteet"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Siirtokanavat"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "EsittÀjÀ"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Albumi"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Nimi"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Kappalenumero"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Tyylilaji"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Tiedostonimi"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Tiedostopolku"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "PÀivÀys"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Vuosi"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Kommentti"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Koodekki"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Laatu"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ei mikÀÀn"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabia"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Balttia"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Kiina"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Kreikka"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Heprea"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japani"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korea"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Puola"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "VenÀjÀ"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwan"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turkki"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Liukuluku"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Albumitila"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Ulostulon lisÀosa:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Ulostulon asetukset</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bittisyvyys:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Puskurin koko:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "PehmeÀ leikkaantuminen"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "KÀytÀ ohjelmallista ÀÀnensÀÀtöÀ (ei suositeltu)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "KÀytÀ Replay Gainia"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Albumitila"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "EstÀ leikkaantuminen (suositeltu)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>SÀÀdÀ tasoja</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Vahvista kaikki tiedostot:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Vahvista luokittelemattomat tiedostot:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "VĂ€lityspalvelimen osoite:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "VĂ€lityspalvelimen portti:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "VÀlityspalvelimen kÀyttÀjÀtunnus:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "VĂ€lityspalvelimen salasana:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>VĂ€lityspalvelimen asetukset</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "KÀytÀ vÀlityspalvelinta"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "KÀytÀ tunnistautumista vÀlityspalvelimen kanssa"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automaattinen merkistökoodauksen tunnistus:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Toissijaiset merkistökoodaukset:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>KÀytös</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Jatka soittoa kÀynnistettÀessÀ"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Jatka, kun nykyinen kappale on poistettu"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "TyhjennÀ soittolista avattaessa tiedostoja"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Avaa tiedostot vÀliaikaisessa soittolistassa"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ÄlĂ€ lataa metatietoja kun kappaletta soitetaan"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Yhteensopivuus</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Tulkitse \\ (kenoviiva) kansioerottimeksi"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Levynkansi</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Etsi kuvia joissa esiintyy sanat (erota pilkulla):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "HylkÀÀ kuvat joissa esiintyy sanat (erota pilkulla):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Etsi kuvia jotka tÀsmÀÀvÀt kappaleen tiedostonimeen"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Etsi rekursiivisesti"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "EtsintÀsyvyys:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Ponnahdusikkuna</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "NÀytÀ ponnahdusikkuna"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Ponnahdusikkunan viive (kymmenesosasekunti):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "NÀytÀ soivan kappaleen aikapalkki"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "NIMI"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTI - NIMI"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTI - ALBUMI - NIMI"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTI - ALBUMI - KAPPALENUMERO. NIMI"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTI [ ALBUMI ] - KAPPALENUMERO. NIMI"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUMI - NIMI"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Luokka"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Mukautettu..."
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Kappaleen nÀyttö</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "NÀytÀ kappalenumerot"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "NÀytÀ edeltÀvÀt nollat (2:00:n sijasta 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "NÀytÀ tietoja kappaleiden nimiketekstin muodosta"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Muu merkkijono:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Nimikkeen muoto:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Ulostulon lisÀosa:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Siirtokanavat"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ÄÀnilÀhteet"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Tehosteet"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisoinnit"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Yleiset"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Muu merkkijono:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audaciouksen asetukset"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Hakemiston (%s) luominen epÀonnistui: %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Sijaintia ei löytynyt."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "MitÀÀn kappaletta ei soiteta."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Ă„Ă€ni-CD, raita %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -586,409 +609,420 @@ msgstr "TekijÀt"
msgid "License"
msgstr "Lisenssi"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Tietoja Audaciouksesta"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
msgstr ""
-"Suljetaanko soittolista %s? Kaikki tehdyt muutokset soittolistan "
-"viimeisimmÀn tallennuksen jÀlkeen menetetÀÀn."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Sulje soittolista"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_ÄlĂ€ nĂ€ytĂ€ tĂ€tĂ€ viestiĂ€ enÀÀ"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "NimeÀ soittolista uudelleen"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "asetukset ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_KÀytÀ"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Taajuuskorjain"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Esivahvistus"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Raita"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Kesto"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Kamarimusiikki"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klassinen"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Kantri"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Kevyt kuunneltava"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta-rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metalli"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock 'n' roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "R'n'B"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tekno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ei saatavilla</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metatiedot pÀivitetty onnistuneesti"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metatietojen pÀivitys epÀonnistui"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Kappaleen tiedot"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Muoto:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Laatu:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bittinopeus:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Nimi</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artisti</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Levy</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Kommentti</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Tyylilaji</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Vuosi</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Kappaleen numero</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Tietoja ei ole saatavilla aiheesta %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "HyppÀÀ aikaan"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "SyötÀ aika (minuutit:sekunnit):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Ylikirjoita %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Vie soittolista"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Tuo soittolista"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Ylikirjoita %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Jonomanageri"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Avaa tiedostoja"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "LisÀÀ tiedostoja"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Sulje ikkuna, kun tiedostot avattu"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Sulje ikkuna, kun tiedostot lisÀtty"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_LisÀÀ jonoon"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Poista jonosta"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "HyppÀÀ kappaleeseen"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Suodatin: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Suodatin:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Muista"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_TyhjennÀ"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Sulje ikkuna hypÀtessÀ"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Soittolistojen hallinta"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "NimikkeitÀ"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_NimeÀ uudelleen"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Sulje ikkuna, kun soittolista on aktivoidaan"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Avaa URL-osoite"
@@ -996,11 +1030,11 @@ msgstr "Avaa URL-osoite"
msgid "Add URL"
msgstr "LisÀÀ URL-osoite"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Linkki:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/fr.po b/po/fr.po
index 0bab436..004430d 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -4,17 +4,17 @@
#
# Translators:
# Alain-Olivier Breysse, 2012-2013
-# Oxayotl <jagw40k@free.fr>, 2013
+# Oxayotl <jagw40k@free.fr>, 2013-2014
# Oxayotl <jagw40k@free.fr>, 2011-2012
# Oxayotl <jagw40k@free.fr>, 2011
# Oxayotl <jagw40k@free.fr>, 2013
-# Alain-Olivier Breysse, 2013
+# Alain-Olivier Breysse, 2013-2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-12-19 21:35+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 12:52+0000\n"
"Last-Translator: Alain-Olivier Breysse\n"
"Language-Team: French (http://www.transifex.com/projects/p/audacious/"
"language/fr/)\n"
@@ -24,140 +24,134 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
-msgstr "Recherche en cours..."
+msgstr "Recherche ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d fichier trouvé"
msgstr[1] "%d fichiers trouvés"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 invalide)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nouvelle liste de lecture"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Erreur lors de l'importation du fichier Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Erreur"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Recule dans la liste de lecture"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Afficher l'aide de la ligne de commande"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Joue la liste de lecture active"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Afficher la version"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Mets en pause le morceau en cours"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Commencer la lecture"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ArrĂȘte le morceau en cours"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Mettre en pause"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
-msgstr "Mets en pause, sinon commencer la lecture"
+msgstr "Mettre en pause, sinon lire"
+
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ArrĂȘter la lecture"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Avance dans la liste de lecture"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Passer au morceau précédent "
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Affiche la fenĂȘtre 'Aller au fichier...'"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Passer au morceau suivant"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
-msgstr "Ajoute des fichiers Ă  la liste de lecture"
+msgstr "Ajouter des fichiers Ă  la liste de lecture"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Ajoute de nouveaux fichiers Ă  une liste de lecture provisoire"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Ajouter des fichiers Ă  une liste de lecture temporaire"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
-msgstr "Affiche la fenĂȘtre principale"
+msgstr "Afficher la fenĂȘtre principale"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Mode sans affichage"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Afficher la fenĂȘtre « Sauter au morceau »"
-#: src/audacious/main.c:243
-msgid "Quit on playback stop"
-msgstr "Quitte Ă  la fin de la lecture"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "DĂ©marrer sans interface graphique"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Affiche la version"
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr "Quitter Ă  la fin de la lecture"
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
-msgstr "Affiche les messages de débogage"
+msgstr "Afficher les messages de débogage"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FICHIER..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Option inconnue : %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- lis les fichiers multimédia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Option inconnue : -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Essaie '%s --help' pour davantage d'informations.\n"
+"Utilisation : audacious [OPTION] ... [FICHIER] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Aucun décodeur trouvé pour %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s n'a pas pu ĂȘtre ouvert."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Impossible de %s %s : extension non prise en charge."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "sauvegarde"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "charge"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Impossible de %s %s : extension non prise en charge."
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Impossible de charger %s : extension de fichier non prise en charge."
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nouvelle liste de lecture"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
+"Impossible d'enregistrer %s : extension de fichier non prise en charge."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Lecture en cours"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -165,413 +159,445 @@ msgstr ""
"La liste de lecture ne peut pas ĂȘtre triĂ©e car le balayage des mĂ©tadonnĂ©es "
"est en cours (ou a été désactivé)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "À propos de %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "À propos de"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "ParamĂštres de %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "ParamĂštres"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_DĂ©finir"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Annuler"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Fermer"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_ParamĂštres"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "À p_ropos de"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Greffons..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Apparence"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "RĂ©seau"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Liste de lecture"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
-msgstr "Informations sur les morceaux"
+msgstr "Infos sur le morceau"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Greffons"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Général"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effets audio"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisation"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrée"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "AccĂšs aux fichiers"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artiste"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titre"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Numéro de la piste"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Genre"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nom du fichier"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Chemin du fichier"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Date"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Année"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Commentaire"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Qualité"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Aucune langue"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabe"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Balte"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chinois"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grec"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "HĂ©breu"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japonais"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coréen"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polonais"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russe"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "TaĂŻwanais"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turc"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Virgule flottante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "En mode album"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ParamĂštres de l'interface</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Greffon d'interface :"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Module de sortie"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ParamĂštres de sortie</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profondeur du flux :"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Taille du tampon :"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "ÉcrĂȘtage logiciel"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
-msgstr "Utilise un contrÎle logiciel du volume (non recommandé)"
+msgstr "Utiliser un contrÎle logiciel du volume (non recommandé)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
-msgstr "Active « ReplayGain »"
+msgstr "Activer « ReplayGain »"
+
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Mode album"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
-msgstr "Évite l'Ă©crĂȘtage (recommandĂ©)"
+msgstr "Éviter l'Ă©crĂȘtage (recommandĂ©)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustement des niveaux</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
-msgstr "Amplifie tous les fichiers :"
+msgstr "Amplifier tous les fichiers :"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
-msgstr "Amplifie les fichiers sans balise :"
+msgstr "Amplifier les fichiers sans balise :"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
-msgstr "Nom du serveur mandataire hĂŽte :"
+msgstr "Nom d'hĂŽte du mandataire :"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
-msgstr "Port du serveur mandataire :"
+msgstr "Port du mandataire :"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
-msgstr "Nom d'utilisateur pour le serveur mandataire :"
+msgstr "Nom d'utilisateur pour le mandataire :"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
-msgstr "Mot de passe pour le serveur mandataire :"
+msgstr "Mot de passe pour le mandataire :"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Configuration du serveur mandataire</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
-msgstr "Active l'utilisation du serveur mandataire"
+msgstr "Activer l'utilisation du mandataire"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
-msgstr "Le serveur mandataire demande une authentification"
+msgstr "Le mandataire demande une authentification"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "DĂ©tection automatique de l'encodage pour :"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Encodages des caractĂšres de reprise :"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportement</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
-msgstr "Reprends la lecture au démarrage"
+msgstr "Reprendre la lecture au démarrage"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
-msgstr "Passe à la piste suivante si la piste courante est supprimée"
+msgstr "Passer à la piste suivante si la piste courante est supprimée"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
-msgstr "Vide la liste de lecture lors de l'ouverture de nouveaux fichiers"
+msgstr "Vider la liste de lecture lors de l'ouverture de nouveaux fichiers"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
-msgstr "Ouvre les nouveaux fichiers dans une liste de lecture provisoire"
+msgstr "Ouvrir les nouveaux fichiers dans une liste de lecture provisoire"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
-msgstr "Ne charge les métadonnées qu'à la lecture"
+msgstr "Ne charger les métadonnées qu'à la lecture"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilité</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
-msgstr "InterprÚte le \\ (barre oblique inverse) comme délimiteur de dossier"
+msgstr "Interpréter le \\ (barre oblique inverse) comme délimiteur de dossier"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
-msgstr "<b>Pochette de l'album</b>"
+msgstr "<b>Illustration de l'album</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
-"Recherche des images correspondant à ces mots (séparés par des virgules) :"
+"Rechercher des images correspondant à ces mots (séparés par des virgules) :"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
-msgstr "Exclus les images contenant ces mots (séparés par des virgules) : "
+msgstr "Exclure les images contenant ces mots (séparés par des virgules) : "
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
-msgstr "Recherche des images correspondant au nom au morceau"
+msgstr "Rechercher des images correspondant au nom au morceau"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Recherche récursive"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Profondeur de la recherche"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>FenĂȘtre d'information contextuelle</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Affiche la fenĂȘtre d'information contextuelle"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "DĂ©lai d'apparition de la fenĂȘtre contextuelle (en 1/10 de seconde) :"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Affiche l'Ă©chelle de temps pour le morceau actuel"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITRE"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTE - TITRE"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTE - ALBUM - TITRE"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTE - ALBUM - PISTE. TITRE"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTE [ ALBUM ] - PISTE. TITRE"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITRE"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Catégorie"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personnalisé"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Affichage du morceau</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
-msgstr "Affiche la position des titres"
+msgstr "Afficher le numéro du morceau"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
-msgstr "Affiche un zéro au début (02:00 au lieu de 2:00)"
-
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Affiche des informations sur le format du titre."
+msgstr "Afficher un zéro au début (02:00 au lieu de 2:00)"
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Format personnalisé :"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Format du titre :"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Module de sortie"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "AccĂšs aux fichiers"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrée"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Effets audio"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisation"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Général"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Format personnalisé :"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Préférences d'Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "ParamĂȘtres d'Audacious"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
-msgstr "Je n'ai pas pu créer le répertoire suivant (%s): %s\n"
-
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Position introuvable."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Aucun titre en cours de lecture."
+msgstr "Impossible de créer le répertoire suivant (%s): %s\n"
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD audio, piste %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stéréo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -586,424 +612,435 @@ msgstr "Crédits"
msgid "License"
msgstr "Licence"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "À propos d'Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Es-tu certain de vouloir fermer %s ? Si tel est le cas, toute modification "
-"apportée à la liste depuis l'exportation sera perdue."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Voulez-vous enlever « %s » de façon permanente ?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "En_lever"
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Enlever la liste de lecture"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Ferme la liste de lecture"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Ne plus demander"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_N'affiche plus ce message"
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Renommer"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
-msgstr "Renomme la liste de lecture"
+msgstr "Renommer la liste de lecture"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ParamĂštres ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Comment voulez-vous appeler cette liste de lecture ?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Activer"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Égaliseur"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
-msgstr "Préamp."
+msgstr "Préampli"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Piste"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Durée"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Format :"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Qualité :"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "DĂ©bit binaire :"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Musique de chambre"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classique"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
-msgstr "Death Metal"
+msgstr "Death métal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
-msgstr "Easy Listening"
+msgstr "Easy listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
-msgstr "Gangsta Rap"
+msgstr "Gangsta rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
-msgstr "Heavy Metal"
+msgstr "Heavy métal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-Hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
-msgstr "Metal"
+msgstr "MĂ©tal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
-msgstr "New Age"
+msgstr "Nouvel Ăąge"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
-msgstr "New Wave"
+msgstr "New wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
-msgstr "Noise"
+msgstr "Bruit"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
-msgstr "Rock and Roll"
+msgstr "Rock and roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
-msgstr "Rhythm and Blues"
+msgstr "Rhythm and blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-Hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">non disponible</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Mise à jour des métadonnées réussie"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Échec lors de la mise Ă  jour des mĂ©tadonnĂ©es"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Informations sur le morceau"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format :</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Qualité :</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">DĂ©bit binaire :</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titre</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Enregistrement réussi"
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artiste</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Erreur d'enregistrement"
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Numéro de piste"
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Commentaire</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Enregistrer"
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Genre</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Année</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Numéro de piste</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/D"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Aucune information disponible pour %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "Sa_ut"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
-msgstr "Saute vers la position"
+msgstr "Sauter vers la position"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
-msgstr "Saisis un temps (minutes:secondes) :"
+msgstr "Saisir un temps (minutes:secondes) :"
+
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Écraser %s ?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "É_craser"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Confirmer l'Ă©crasement"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
-msgstr "Exporte la liste de lecture"
+msgstr "Exporter la liste de lecture"
+
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Exporter"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
-msgstr "Importe la piste de lecture"
+msgstr "Importer la piste de lecture"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Écrase %s ?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importer"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Gestionnaire de file d'attente"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "Enlever de la _file d'attente"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
-msgstr "Ouvre des fichiers"
+msgstr "Ouvrir des fichiers"
+
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Ouvrir"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Fermer la _fenĂȘtre de dialogue Ă  l'ouverture"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
-msgstr "Ajoute des fichiers"
+msgstr "Ajouter des fichiers"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Ferme la fenĂȘtre aprĂšs l'ouverture de fichiers"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Ajouter"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Ferme la fenĂȘtre aprĂšs l'ajout de fichiers"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Fermer la fenĂȘ_tre de dialogue lors de l'ajout"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
-msgstr "_Mets dans la file"
+msgstr "_Mettre dans la file"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
-msgstr "_Retire de la file"
+msgstr "_Retirer de la file"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
-msgstr "Saute vers le morceau"
+msgstr "Sauter au morceau"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtre :"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtre :"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Enregistre"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Effac_e"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "Fe_rmer lors du saut"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Ferme aprĂšs le saut"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
-msgstr "Gestionnaire de liste de lecture"
+msgstr "Gestionnaire de listes de lecture"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entrées"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Renomme"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Nouveau"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "Reno_mmer"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Lire"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
-msgstr "_Ferme la fenĂȘtre aprĂšs l'activation de la liste de lecture"
+msgstr "_Fermer la fenĂȘtre aprĂšs l'activation de la liste de lecture"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
-msgstr "Ouvre l'URL"
+msgstr "Ouvrir l'URL"
#: src/libaudgui/url-opener.c:55
msgid "Add URL"
-msgstr "Ajoute l'URL"
+msgstr "Ajouter l'URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
-msgstr "Saisis l'URL :"
+msgstr "Saisir l'URL :"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
msgstr ""
"\n"
-"(Les messages supplémentaires ont été cachés.)"
+"(Les messages à venir ont été cachés.)"
diff --git a/po/gl.po b/po/gl.po
index ceb2bd2..b167892 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -3,16 +3,17 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# antiparvos <marcoslansgarza@gmail.com>, 2014
# antiparvos <marcoslansgarza@gmail.com>, 2013
# mbouzada <mbouzada@gmail.com>, 2013
# mbouzada <mbouzada@gmail.com>, 2012
-# mbouzada <mbouzada@gmail.com>, 2012
+# mbouzada <mbouzada@gmail.com>, 2012,2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-04-20 14:20+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-12 06:56+0000\n"
"Last-Translator: mbouzada <mbouzada@gmail.com>\n"
"Language-Team: Galician (http://www.transifex.com/projects/p/audacious/"
"language/gl/)\n"
@@ -22,140 +23,133 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Buscando..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d ficheiro atopado"
msgstr[1] "%d ficheiros atopados"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 incorrecto)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nova lista de reproduciĂłn"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Produciuse un erro ao importar o ficheiro EQF de Winamp «%s»"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Erro"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Ir cara atrĂĄs na lista de reproduciĂłn"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Amosar a axuda da liña de ordes"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Iniciar a reproduciĂłn da actual lista de reproduciĂłn"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Amosa a versiĂłn"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Deter a canciĂłn actual"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Iniciar a reproduciĂłn"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Parar a canciĂłn actual"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Deter a reproduciĂłn"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pausa cando reproduce, reproducir noutro caso"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Ir cara adiante na lista de reproduciĂłn"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Parar a reproduciĂłn"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Amosar o diĂĄlogo de salto de ficheiro"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Ir ĂĄ canciĂłn anterior"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Ir ĂĄ seguinte canciĂłn"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Engadir ficheiros ĂĄ lista de reproduciĂłn"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
msgstr "Engadir os ficheiros a unha lista temporal de reproduciĂłn"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Amosar a xanela principal."
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Modo remoto"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Amosar a xanela de salto ĂĄ canciĂłn"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Iniciar sen interface grĂĄfica"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "SaĂ­r ao parar a reproduciĂłn"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Amosa a versiĂłn"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Mostrar mensaxes de depuraciĂłn"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FICHEIRO..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Opción descoñecida: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- reproducir ficheiros multimedia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Opción descoñecida: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Tente «%s --help» pra obter måis información.\n"
+"Uso: audacious [OPCIÓN] ... [FICHEIRO] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Non se atopou un descodificador para %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "Non foi posĂ­bel abrir %s"
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Non Ă© posĂ­bel %s %s: extensiĂłn de ficheiro non admitida."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "gardar"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Non Ă© posĂ­bel cargar %s: extensiĂłn de ficheiro non admitida."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "cargar"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Non Ă© posĂ­bel %s %s: extensiĂłn de ficheiro non admitida."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nova lista de reproduciĂłn"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Non Ă© posĂ­bel gardar %s: extensiĂłn de ficheiro non admitida."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Estase a reproducir"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -163,416 +157,448 @@ msgstr ""
"A lista de reproduciĂłn non pode ordenarse xa que a detecciĂłn de metadatos "
"aĂ­nda estĂĄ en proceso (ou foi desactivada)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Sobre %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Sobre"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "Configuración de «%s»"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Axustes"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Estabelecer"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Pechar"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Axustes"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Sobre"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Engadidos ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Aparencia"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Son"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Rede"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Lista de reproduciĂłn"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "InformaciĂłn da canciĂłn"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Engadidos"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Xeral"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efecto"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VisualizaciĂłn"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrada"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transporte"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Interprete"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Álbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tulo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "NĂșmero de pista"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "XĂ©nero"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nome de ficheiro"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Ruta ao ficheiro"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Ano"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comentario"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "CĂłdec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Calidade"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "NingĂșn"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Árabe"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂĄltico"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chinés"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grego"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebreo"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Xaponés"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coreano"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polaco"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Ruso"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanés"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turco"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Coma flotante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Modo do ĂĄlbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Axustes da interface</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Engadido da interface:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Engadido de saĂ­da:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ConfiguraciĂłn da saĂ­da</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profundidade de bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Tamaño do bĂșfer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Recorte suave de picos"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Utilizar o software de control de volume (non recomendado)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>NormalizaciĂłn do volume</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Activar a normalizaciĂłn do volume"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Modo do ĂĄlbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evitar a saturaciĂłn (recomendado)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Axustes dos niveis</b> "
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar todos os ficheiros:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar os ficheiros sen etiqueta:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Nome do servidor proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Porto do proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nome de usuario no proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Contrasinal no proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ConfiguraciĂłn do proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Activar o uso de proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Usar autenticaciĂłn co proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Detector de codificaciĂłn de caracteres automĂĄtico para: "
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "CodificaciĂłn de caracteres alternativa:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamento</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continuar coa reproduciĂłn ao iniciar"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avanzar cando se elimina a canciĂłn actual"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Limpar a lista de reproduciĂłn a abrir ficheiros"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Abrir os ficheiros nunha lista temporal de reproduciĂłn"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Non cargar a informaciĂłn de metadatos ata reproducir"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilidade</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
"Interpretar o caracter «\\» (barra invertida) como indicador dun nivel na "
"ĂĄrbore de ficheiros"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Portada</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Buscar imaxes que correspondan con estas palabras (separadas por comas):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Excluir imaxes que correspondan con estas palabras (separadas por comas):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Buscar imaxes que correspondan co nome de ficheiro da canciĂłn"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Buscar recursivamente"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Profundidade da busca"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Mensaxe emerxente de informaciĂłn</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Amosar a mensaxe emerxente de informaciĂłn"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Atraso da mensaxe emerxente (décimas de segundo):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Amosar a escala de tempo da canciĂłn actual"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TÍTULO"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TÍTULO"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ÁLBUM - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ ÁLBUM ] - PISTA. TÍTULO"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "CategorĂ­a:"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizada"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Visor de canciĂłns</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Amosar os nĂșmeros das canciĂłns"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Amosar ceros ĂĄ esquerda (02:00 no canto de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Amosar informaciĂłn sobre o formato do tĂ­tulo"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Cadea personalizada"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formato do tĂ­tulo:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Engadido de saĂ­da:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transporte"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrada"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efecto"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VisualizaciĂłn"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Xeral"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Cadea personalizada"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferencias do Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Axustes do Audacious"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Non foi posĂ­bel crear o directorio (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Non se atopou a posiciĂłn."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Non se estĂĄ a reproducir ningunha canciĂłn."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD de son. pista %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estéreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -587,409 +613,420 @@ msgstr "Créditos"
msgid "License"
msgstr "Licenza"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Sobre Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Esta seguro de querer pechar %s? De facelo, perderase calquera cambio "
-"realizado desde que foi exportada a lista de reproduciĂłn."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Confirma que quere retirar permanentemente «%s»?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Retirar"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Pechar a lista de reproduciĂłn"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Retirar a lista de reproduciĂłn"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Non amosar esta mensaxe outra vez"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "Non preguntar _de novo"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Renomear"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Renomear a lista de reproduciĂłn"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ConfiguraciĂłns..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Como desexa chamarlle a esta lista?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Activar"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ecualizador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamplificador"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Pista"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "DuraciĂłn"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Formato:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Calidade:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Taxa de bits:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambiental"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de cĂĄmara"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂĄsica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Escoita doada"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folc"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Rock duro"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-Hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "RuĂ­do"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock & Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm & Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-Hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/d</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadatos actualizados correctamente"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Produciuse un fallo ao actualizar os metadatos"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Gardouse correctamente"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaciĂłn da pisya"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Produciuse un erro ao gardar"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formato:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Calidade:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Taxa de bits:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tulo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Interprete</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Álbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comentario</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Xenero</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Ano</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "NĂșmero de pista"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">NĂșmero de pista</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Gardar"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/D"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Non hai información dispoñíbel para %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Ir a"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Saltar no tempo"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Introducir o tempo (minutos:segundos):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Sobrescribir %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "_Sobrescribir"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Confirmar sobrescritura"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportar lista de reproduciĂłn"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Exportar"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar lista de reproduciĂłn"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Sobrescribir %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importar"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Xestor da cola"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_Retirar da cola"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Abrir ficheiros"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Abrir"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Pechar o _diĂĄlogo ao abrir"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Engadir ficheiros"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Pechar o diĂĄlogo ao abrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Engadir"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Pechar o diĂĄlogo ao engadir"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Pechar o _diĂĄlogo ao engadir"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Cola"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Retirar da _cola"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Saltar ĂĄ canciĂłn"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtro: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtro:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Lembrar"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "_Pechar ao saltar"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Limpa_r"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Pechar ao saltar"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Xestor da lista de reproduciĂłn:"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entradas"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Renomear"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Novo"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "Re_nomear"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "Re_producir"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Pechar o diĂĄlogo ao activar la lista de reproduciĂłn"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Abrir un URL"
@@ -997,11 +1034,11 @@ msgstr "Abrir un URL"
msgid "Add URL"
msgstr "Engadir un URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Introduza o URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 0000000..3432a39
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,1035 @@
+# Hebrew translation for Audacious
+# Copyright (C) Audacious translators
+# This file is distributed under the same license as the Audacious package.
+#
+# Translators:
+# GenghisKhan <genghiskhan@gmx.ca>, 2012
+# GenghisKhan <genghiskhan@gmx.ca>, 2012
+# GenghisKhan <genghiskhan@gmx.ca>, 2012
+msgid ""
+msgstr ""
+"Project-Id-Version: Audacious\n"
+"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-11 17:07+0000\n"
+"Last-Translator: GenghisKhan <genghiskhan@gmx.ca>\n"
+"Language-Team: Hebrew (http://www.transifex.com/projects/p/audacious/"
+"language/he/)\n"
+"Language: he\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/audacious/adder.c:76
+msgid "Searching ..."
+msgstr "Ś›ŚąŚȘ ŚžŚ—Ś€Ś© ..."
+
+#: src/audacious/adder.c:104
+#, c-format
+msgid "%d file found"
+msgid_plural "%d files found"
+msgstr[0] "Ś ŚžŚŠŚ Ś§Ś•Ś‘Ś„ %d"
+msgstr[1] "Ś ŚžŚŠŚŚ• %d Ś§Ś‘ŚŠŚ™Ś"
+
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś” Ś—Ś“Ś©Ś”"
+
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Ś©Ś’Ś™ŚŚ”"
+
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
+
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Ś”ŚŠŚ’ Ś’Ś™ŚšŚĄŚ”"
+
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
+
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
+
+#: src/audacious/main.c:74
+msgid "Pause if playing, play otherwise"
+msgstr ""
+
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
+msgid "Add files to the playlist"
+msgstr "Ś”Ś•ŚĄŚŁ Ś§Ś‘ŚŠŚ™Ś ŚŚœ ŚšŚ©Ś™ŚžŚȘ Ś”Ś Ś’Ś™Ś Ś”"
+
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
+
+#: src/audacious/main.c:80
+msgid "Display the main window"
+msgstr "Ś”ŚŠŚ’ ŚŚȘ Ś”Ś—ŚœŚ•ŚŸ Ś”ŚšŚŚ©Ś™"
+
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr ""
+
+#: src/audacious/main.c:84
+msgid "Print debugging messages"
+msgstr ""
+
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
+
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
+
+#: src/audacious/main.c:314
+#, c-format
+msgid ""
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr ""
+
+#: src/audacious/main.c:601
+msgid "Audacious"
+msgstr "Audacious"
+
+#: src/audacious/playback.c:354
+#, c-format
+msgid "No decoder found for %s."
+msgstr ""
+
+#: src/audacious/playback.c:387
+#, c-format
+msgid "%s could not be opened."
+msgstr ""
+
+#: src/audacious/playlist-files.c:95
+#, c-format
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
+
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
+
+#: src/audacious/playlist-new.c:98
+msgid "Now Playing"
+msgstr ""
+
+#: src/audacious/playlist-new.c:1656
+msgid ""
+"The playlist cannot be sorted because metadata scanning is still in progress "
+"(or has been disabled)."
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "ŚŚ•Ś“Ś•ŚȘ"
+
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Ś”Ś’Ś“ŚšŚ•ŚȘ"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Ś§Ś‘Śą"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Ś‘Ś™Ś˜Ś•Śœ"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_ŚĄŚ’Ś•Śš"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Ś”Ś’Ś“ŚšŚ•ŚȘ"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_ŚŚ•Ś“Ś•ŚȘ"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_ŚȘŚ•ŚĄŚ€Ś•ŚȘ ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "ŚžŚšŚŚ”"
+
+#: src/audacious/ui_preferences.c:83
+msgid "Audio"
+msgstr "Ś©ŚžŚą"
+
+#: src/audacious/ui_preferences.c:84
+msgid "Network"
+msgstr "ŚšŚ©ŚȘ ŚąŚ‘Ś•Ś“Ś”"
+
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
+msgid "Playlist"
+msgstr "ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś”"
+
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
+msgid "Song Info"
+msgstr "ŚžŚ™Ś“Śą Ś©Ś™Śš"
+
+#: src/audacious/ui_preferences.c:87
+msgid "Plugins"
+msgstr "ŚȘŚ•ŚĄŚ€Ś™Ś"
+
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Ś›ŚœŚœŚ™"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "ŚŚ€Ś§Ś˜"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Ś•Ś™Ś–Ś•ŚŚœŚ™Ś–ŚŠŚ™Ś”"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Ś§ŚœŚ˜"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
+msgid "Artist"
+msgstr "ŚŚžŚŸ"
+
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
+msgid "Album"
+msgstr "ŚŚœŚ‘Ś•Ś"
+
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
+msgid "Title"
+msgstr "Ś›Ś•ŚȘŚšŚȘ"
+
+#: src/audacious/ui_preferences.c:103
+msgid "Tracknumber"
+msgstr "ŚžŚĄŚ€Śš ŚšŚŠŚ•ŚąŚ”"
+
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
+msgid "Genre"
+msgstr "ŚĄŚ’Ś Ś•ŚŸ"
+
+#: src/audacious/ui_preferences.c:105
+msgid "Filename"
+msgstr "Ś©Ś Ś§Ś•Ś‘Ś„"
+
+#: src/audacious/ui_preferences.c:106
+msgid "Filepath"
+msgstr "Ś ŚȘŚ™Ś‘ Ś§Ś•Ś‘Ś„"
+
+#: src/audacious/ui_preferences.c:107
+msgid "Date"
+msgstr "ŚȘŚŚšŚ™Śš"
+
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
+msgid "Year"
+msgstr "Ś©Ś Ś”"
+
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
+msgid "Comment"
+msgstr "Ś”ŚąŚšŚ”"
+
+#: src/audacious/ui_preferences.c:110
+msgid "Codec"
+msgstr "Ś§Ś•Ś“Ś§"
+
+#: src/audacious/ui_preferences.c:111
+msgid "Quality"
+msgstr "ŚŚ™Ś›Ś•ŚȘ"
+
+#: src/audacious/ui_preferences.c:116
+msgid "None"
+msgstr "ŚœŚœŚ"
+
+#: src/audacious/ui_preferences.c:117
+msgid "Arabic"
+msgstr "ŚąŚšŚ‘Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:118
+msgid "Baltic"
+msgstr "Ś‘ŚœŚ˜Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:119
+msgid "Chinese"
+msgstr "ŚĄŚ™Ś Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:120
+msgid "Greek"
+msgstr "Ś™Ś•Ś•Ś Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:121
+msgid "Hebrew"
+msgstr "ŚąŚ‘ŚšŚ™ŚȘ"
+
+#: src/audacious/ui_preferences.c:122
+msgid "Japanese"
+msgstr "Ś™Ś€Ś Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:123
+msgid "Korean"
+msgstr "Ś§Ś•ŚšŚ™ŚŚ Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:124
+msgid "Polish"
+msgstr "Ś€Ś•ŚœŚ Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:125
+msgid "Russian"
+msgstr "ŚšŚ•ŚĄŚ™ŚȘ"
+
+#: src/audacious/ui_preferences.c:126
+msgid "Taiwanese"
+msgstr "Ś˜ŚŚ™Ś•ŚŚ Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:127
+msgid "Turkish"
+msgstr "Ś˜Ś•ŚšŚ§Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:135
+msgid "Floating point"
+msgstr "Ś Ś§Ś•Ś“Ś” ŚŠŚ€Ś”"
+
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Ś”Ś’Ś“ŚšŚ•ŚȘ ŚžŚžŚ©Ś§</b>"
+
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ŚȘŚ•ŚĄŚ€ŚȘ ŚžŚžŚ©Ś§:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ŚȘŚ•ŚĄŚ€ŚȘ Ś€ŚœŚ˜:"
+
+#: src/audacious/ui_preferences.c:172
+msgid "<b>Output Settings</b>"
+msgstr "<b>Ś”Ś’Ś“ŚšŚ•ŚȘ Ś€ŚœŚ˜</b>"
+
+#: src/audacious/ui_preferences.c:175
+msgid "Bit depth:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:178
+msgid "Buffer size:"
+msgstr "Ś’Ś•Ś“Śœ ŚŚ’Ś™ŚšŚ”:"
+
+#: src/audacious/ui_preferences.c:180
+msgid "ms"
+msgstr "ŚŚœŚ€Ś™ŚȘÖŸŚ”Ś©Ś Ś™Ś™Ś”"
+
+#: src/audacious/ui_preferences.c:181
+msgid "Soft clipping"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:183
+msgid "Use software volume control (not recommended)"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:185
+msgid "<b>Replay Gain</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:186
+msgid "Enable Replay Gain"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ŚžŚŠŚ‘ ŚŚœŚ‘Ś•Ś"
+
+#: src/audacious/ui_preferences.c:190
+msgid "Prevent clipping (recommended)"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:192
+msgid "<b>Adjust Levels</b>"
+msgstr "<b>Ś”ŚȘŚŚ ŚšŚžŚ•ŚȘ</b>"
+
+#: src/audacious/ui_preferences.c:193
+msgid "Amplify all files:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
+msgid "dB"
+msgstr "Ś“ŚŠŚ™Ś‘Śœ"
+
+#: src/audacious/ui_preferences.c:196
+msgid "Amplify untagged files:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:201
+msgid "Proxy hostname:"
+msgstr "ŚžŚŚšŚ— Proxy:"
+
+#: src/audacious/ui_preferences.c:202
+msgid "Proxy port:"
+msgstr "Ś€Ś•ŚšŚ˜ Proxy:"
+
+#: src/audacious/ui_preferences.c:205
+msgid "Proxy username:"
+msgstr "Ś©Ś ŚžŚ©ŚȘŚžŚ© Proxy:"
+
+#: src/audacious/ui_preferences.c:206
+msgid "Proxy password:"
+msgstr "ŚĄŚ™ŚĄŚžŚȘ Proxy:"
+
+#: src/audacious/ui_preferences.c:210
+msgid "<b>Proxy Configuration</b>"
+msgstr "<b>ŚȘŚŠŚ•ŚšŚȘ ŚžŚȘŚ•Ś•Śš</b>"
+
+#: src/audacious/ui_preferences.c:211
+msgid "Enable proxy usage"
+msgstr "ŚŚ€Ś©Śš Ś Ś™ŚŠŚ•Śœ Proxy"
+
+#: src/audacious/ui_preferences.c:214
+msgid "Use authentication with proxy"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:221
+msgid "Auto character encoding detector for:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:225
+msgid "Fallback character encodings:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:229
+msgid "<b>Behavior</b>"
+msgstr "<b>Ś”ŚȘŚ Ś”Ś’Ś•ŚȘ</b>"
+
+#: src/audacious/ui_preferences.c:230
+msgid "Continue playback on startup"
+msgstr "Ś”ŚžŚ©Śš Ś Ś™Ś’Ś•ŚŸ Ś‘ŚąŚȘ Ś”Ś€ŚąŚœŚ”"
+
+#: src/audacious/ui_preferences.c:232
+msgid "Advance when the current song is deleted"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:234
+msgid "Clear the playlist when opening files"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:236
+msgid "Open files in a temporary playlist"
+msgstr "Ś€ŚȘŚ— Ś§Ś‘ŚŠŚ™Ś Ś‘ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś” Ś–ŚžŚ Ś™ŚȘ"
+
+#: src/audacious/ui_preferences.c:238
+msgid "Do not load metadata for songs until played"
+msgstr "ŚŚœ ŚȘŚ˜ŚąŚ™ŚŸ metadata ŚąŚ‘Ś•Śš Ś©Ś™ŚšŚ™Ś ŚąŚ“ Ś©Ś™Ś Ś•Ś’Ś Ś•"
+
+#: src/audacious/ui_preferences.c:241
+msgid "<b>Compatibility</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:242
+msgid "Interpret \\ (backward slash) as a folder delimiter"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:247
+msgid "<b>Album Art</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:248
+msgid "Search for images matching these words (comma-separated):"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:250
+msgid "Exclude images matching these words (comma-separated):"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:252
+msgid "Search for images matching song file name"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:254
+msgid "Search recursively"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:256
+msgid "Search depth:"
+msgstr "ŚąŚ•ŚžŚ§ Ś—Ś™Ś€Ś•Ś©:"
+
+#: src/audacious/ui_preferences.c:259
+msgid "<b>Popup Information</b>"
+msgstr "<b>ŚžŚ™Ś“Śą ŚȘŚ™Ś‘Ś” Ś§Ś•Ś€ŚŠŚȘ</b>"
+
+#: src/audacious/ui_preferences.c:260
+msgid "Show popup information"
+msgstr "Ś”ŚŠŚ’ ŚžŚ™Ś“Śą ŚȘŚ™Ś‘Ś” ŚžŚ•Ś§Ś€ŚŠŚȘ"
+
+#: src/audacious/ui_preferences.c:262
+msgid "Popup delay (tenths of a second):"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:265
+msgid "Show time scale for current song"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:280
+msgid "TITLE"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:281
+msgid "ARTIST - TITLE"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:282
+msgid "ARTIST - ALBUM - TITLE"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:283
+msgid "ARTIST - ALBUM - TRACK. TITLE"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:284
+msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:285
+msgid "ALBUM - TITLE"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:375
+msgid "Category"
+msgstr "Ś§Ś˜Ś’Ś•ŚšŚ™Ś”"
+
+#: src/audacious/ui_preferences.c:457
+msgid "Custom"
+msgstr "ŚžŚ•ŚȘŚŚ"
+
+#: src/audacious/ui_preferences.c:481
+msgid "<b>Song Display</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:490
+msgid "Show song numbers"
+msgstr "Ś”ŚŠŚ’ ŚžŚĄŚ€ŚšŚ™ Ś©Ś™ŚšŚ™Ś"
+
+#: src/audacious/ui_preferences.c:501
+msgid "Show leading zeroes (02:00 instead of 2:00)"
+msgstr "Ś”ŚŠŚ’ ŚŚ€ŚĄŚ™Ś ŚžŚ•Ś‘Ś™ŚœŚ™Ś (02:00 Ś‘ŚžŚ§Ś•Ś 2:00)"
+
+#: src/audacious/ui_preferences.c:515
+msgid "Title format:"
+msgstr "Ś€Ś•ŚšŚžŚ˜ Ś›Ś•ŚȘŚšŚȘ:"
+
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ŚžŚ—ŚšŚ•Ś–ŚȘ ŚžŚ•ŚȘŚŚžŚȘ:"
+
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Ś”Ś’Ś“ŚšŚ•ŚȘ Audacious"
+
+#: src/audacious/util.c:112
+#, c-format
+msgid "Could not create directory (%s): %s\n"
+msgstr "ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ™ŚŠŚ•Śš ŚžŚ“Ś•Śš ‏(%s): ‫%s\n"
+
+#: src/libaudcore/audstrings.c:385
+#, c-format
+msgid "Audio CD, track %s"
+msgstr ""
+
+#: src/libaudcore/tuple.c:442
+msgid "Mono"
+msgstr "Ś—Ś“ÖŸŚąŚšŚ•ŚŠŚ™"
+
+#: src/libaudcore/tuple.c:444
+msgid "Stereo"
+msgstr "Ś“Ś•ÖŸŚąŚšŚ•ŚŠŚ™"
+
+#: src/libaudcore/tuple.c:446
+#, c-format
+msgid "%d channel"
+msgid_plural "%d channels"
+msgstr[0] "ŚąŚšŚ•Ś„ %d"
+msgstr[1] "%d ŚąŚšŚ•ŚŠŚ™Ś"
+
+#: src/libaudgui/about.c:37
+msgid "Credits"
+msgstr "ŚȘŚ•Ś“Ś•ŚȘ"
+
+#: src/libaudgui/about.c:37
+msgid "License"
+msgstr "ŚšŚ©Ś™Ś•ŚŸ"
+
+#: src/libaudgui/about.c:69
+msgid "About Audacious"
+msgstr "ŚŚ•Ś“Ś•ŚȘ Audacious"
+
+#: src/libaudgui/confirm.c:51
+#, c-format
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Ś”ŚĄŚš"
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Ś”ŚĄŚš ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś”"
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_ŚŚœ ŚȘŚ©ŚŚœ Ś©Ś•Ś‘"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Ś©Ś Ś” Ś©Ś"
+
+#: src/libaudgui/confirm.c:93
+msgid "Rename Playlist"
+msgstr "Ś©Ś Ś” Ś©Ś ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś”"
+
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
+
+#: src/libaudgui/equalizer.c:44
+msgid "_Enable"
+msgstr "_ŚŚ€Ś©Śš"
+
+#: src/libaudgui/equalizer.c:119
+msgid "31 Hz"
+msgstr "31 Hz"
+
+#: src/libaudgui/equalizer.c:119
+msgid "63 Hz"
+msgstr "63 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "125 Hz"
+msgstr "125 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "250 Hz"
+msgstr "250 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "500 Hz"
+msgstr "500 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "1 kHz"
+msgstr "1 kHz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "2 kHz"
+msgstr "2 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "4 kHz"
+msgstr "4 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "8 kHz"
+msgstr "8 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "16 kHz"
+msgstr "16 kHz"
+
+#: src/libaudgui/equalizer.c:124
+msgid "Equalizer"
+msgstr "ŚžŚ©Ś•Ś•Ś”"
+
+#: src/libaudgui/equalizer.c:138
+msgid "Preamp"
+msgstr "ŚžŚ’Ś‘Śš Ś§Ś“Ś"
+
+#: src/libaudgui/infopopup.c:155
+msgid "Track"
+msgstr "ŚšŚŠŚ•ŚąŚ”"
+
+#: src/libaudgui/infopopup.c:156
+msgid "Length"
+msgstr "ŚŚ•ŚšŚš"
+
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Ś€Ś•ŚšŚžŚ˜:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "ŚŚ™Ś›Ś•ŚȘ:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Ś©Ś™ŚąŚ•Śš ŚĄŚ‘Ś™Ś•ŚȘ:"
+
+#: src/libaudgui/infowin.c:76
+msgid "Acid Jazz"
+msgstr ""
+
+#: src/libaudgui/infowin.c:77
+msgid "Acid Rock"
+msgstr ""
+
+#: src/libaudgui/infowin.c:78
+msgid "Ambient"
+msgstr ""
+
+#: src/libaudgui/infowin.c:79
+msgid "Bebop"
+msgstr "Ś‘Ś™Ś‘Ś•Ś€"
+
+#: src/libaudgui/infowin.c:80
+msgid "Bluegrass"
+msgstr ""
+
+#: src/libaudgui/infowin.c:81
+msgid "Blues"
+msgstr "Ś‘ŚœŚ•Ś–"
+
+#: src/libaudgui/infowin.c:82
+msgid "Chamber Music"
+msgstr "ŚžŚ•Ś–Ś™Ś§Ś” Ś§ŚŚžŚšŚ™ŚȘ"
+
+#: src/libaudgui/infowin.c:83
+msgid "Classical"
+msgstr "Ś§ŚœŚŚĄŚ™"
+
+#: src/libaudgui/infowin.c:84
+msgid "Country"
+msgstr "Ś§ŚŚ Ś˜ŚšŚ™"
+
+#: src/libaudgui/infowin.c:85
+msgid "Death Metal"
+msgstr "Ś“ŚȘŚł ŚžŚ˜ŚŚœ"
+
+#: src/libaudgui/infowin.c:86
+msgid "Disco"
+msgstr "Ś“Ś™ŚĄŚ§Ś•"
+
+#: src/libaudgui/infowin.c:87
+msgid "Easy Listening"
+msgstr ""
+
+#: src/libaudgui/infowin.c:88
+msgid "Folk"
+msgstr ""
+
+#: src/libaudgui/infowin.c:89
+msgid "Funk"
+msgstr "Ś€ŚŚ Ś§"
+
+#: src/libaudgui/infowin.c:90
+msgid "Gangsta Rap"
+msgstr "Ś’Ś Ś’ŚĄŚ˜Śš ŚšŚŚ€"
+
+#: src/libaudgui/infowin.c:91
+msgid "Gospel"
+msgstr "Ś’Ś•ŚĄŚ€Śœ"
+
+#: src/libaudgui/infowin.c:92
+msgid "Grunge"
+msgstr "Ś’ŚšŚŚ Ś’Śł"
+
+#: src/libaudgui/infowin.c:93
+msgid "Hard Rock"
+msgstr "ŚšŚ•Ś§ Ś›Ś‘Ś“"
+
+#: src/libaudgui/infowin.c:94
+msgid "Heavy Metal"
+msgstr "Ś”Ś‘Ś™ ŚžŚ˜ŚŚœ"
+
+#: src/libaudgui/infowin.c:95
+msgid "Hip-hop"
+msgstr "Ś”Ś™Ś€-Ś”Ś•Ś€"
+
+#: src/libaudgui/infowin.c:96
+msgid "House"
+msgstr "Ś”ŚŚ•ŚĄ"
+
+#: src/libaudgui/infowin.c:97
+msgid "Jazz"
+msgstr "Ś’ŚłŚ–"
+
+#: src/libaudgui/infowin.c:98
+msgid "Jungle"
+msgstr "Ś’ŚłŚ•Ś Ś’Śœ"
+
+#: src/libaudgui/infowin.c:99
+msgid "Metal"
+msgstr "ŚžŚ˜ŚŚœ"
+
+#: src/libaudgui/infowin.c:100
+msgid "New Age"
+msgstr "Ś Ś™Ś• ŚŚ™Ś™Ś’Śł"
+
+#: src/libaudgui/infowin.c:101
+msgid "New Wave"
+msgstr "Ś’Śœ Ś—Ś“Ś©"
+
+#: src/libaudgui/infowin.c:102
+msgid "Noise"
+msgstr "ŚšŚąŚ©"
+
+#: src/libaudgui/infowin.c:103
+msgid "Pop"
+msgstr "Ś€Ś•Ś€"
+
+#: src/libaudgui/infowin.c:104
+msgid "Punk Rock"
+msgstr "Ś€ŚąŚ Ś§ ŚšŚ•Ś§"
+
+#: src/libaudgui/infowin.c:105
+msgid "Rap"
+msgstr "ŚšŚŚ€"
+
+#: src/libaudgui/infowin.c:106
+msgid "Reggae"
+msgstr "ŚšŚ’Ś™Ś™"
+
+#: src/libaudgui/infowin.c:107
+msgid "Rock"
+msgstr "ŚšŚ•Ś§"
+
+#: src/libaudgui/infowin.c:108
+msgid "Rock and Roll"
+msgstr "ŚšŚ•Ś§ ŚŚ Ś“ ŚšŚ•Śœ"
+
+#: src/libaudgui/infowin.c:109
+msgid "Rhythm and Blues"
+msgstr ""
+
+#: src/libaudgui/infowin.c:110
+msgid "Ska"
+msgstr "ŚĄŚ§Ś”"
+
+#: src/libaudgui/infowin.c:111
+msgid "Soul"
+msgstr "Ś Ś©ŚžŚ”"
+
+#: src/libaudgui/infowin.c:112
+msgid "Swing"
+msgstr "ŚĄŚ•Ś•Ś™Ś Ś’"
+
+#: src/libaudgui/infowin.c:113
+msgid "Techno"
+msgstr "Ś˜Ś›Ś Ś•"
+
+#: src/libaudgui/infowin.c:114
+msgid "Trip-hop"
+msgstr ""
+
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
+
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Ś©ŚžŚ•Śš Ś©Ś’Ś™ŚŚ”"
+
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "ŚžŚĄŚ€Śš ŚšŚŠŚ•ŚąŚ”"
+
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Ś©ŚžŚ•Śš"
+
+#: src/libaudgui/infowin.c:418
+#, c-format
+msgid "%d kb/s"
+msgstr "%d Ś§ŚŽŚ‘/Ś©"
+
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
+#, c-format
+msgid "No info available for %s.\n"
+msgstr "ŚŚ™ŚŸ ŚžŚ™Ś“Śą Ś–ŚžŚ™ŚŸ ŚąŚ‘Ś•Śš %s.\n"
+
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Ś§Ś€Ś•Ś„"
+
+#: src/libaudgui/jump-to-time.c:52
+msgid "Jump to Time"
+msgstr "Ś§Ś€Ś•Ś„ ŚŚœ Ś–ŚžŚŸ"
+
+#: src/libaudgui/jump-to-time.c:52
+msgid "Enter time (minutes:seconds):"
+msgstr "Ś”Ś–Ś ŚȘ Ś–ŚžŚŸ (Ś“Ś§Ś•ŚȘ:Ś©Ś Ś™Ś•ŚȘ):"
+
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ŚœŚ›ŚȘŚ•Ś‘ ŚąŚœ %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "_Ś©Ś›ŚȘŚ‘"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Ś•Ś“Ś Ś›ŚȘŚ™Ś‘Ś” ŚąŚœ Ś’Ś‘Ś™ Ś§Ś•Ś‘Ś„ Ś§Ś™Ś™Ś"
+
+#: src/libaudgui/playlists.c:121
+msgid "Export Playlist"
+msgstr "Ś™ŚŠŚ ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś”"
+
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "Ś™_ŚŠŚ"
+
+#: src/libaudgui/playlists.c:128
+msgid "Import Playlist"
+msgstr "Ś™Ś‘Ś ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś”"
+
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "Ś™_Ś‘Ś"
+
+#: src/libaudgui/queue-manager.c:172
+msgid "Queue Manager"
+msgstr "Ś Ś™Ś”Ś•Śœ ŚȘŚ•Śš"
+
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
+msgid "Open Files"
+msgstr "Ś€ŚȘŚ— Ś§Ś‘ŚŠŚ™Ś"
+
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Ś€ŚȘŚ—"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
+msgid "Add Files"
+msgstr "Ś”Ś•ŚĄŚŁ Ś§Ś‘ŚŠŚ™Ś"
+
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Ś”Ś•ŚĄŚŁ"
+
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
+
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
+msgid "_Queue"
+msgstr "_ŚȘŚ•Śš"
+
+#: src/libaudgui/ui_jumptotrack.c:107
+msgid "Un_queue"
+msgstr ""
+
+#: src/libaudgui/ui_jumptotrack.c:245
+msgid "Jump to Song"
+msgstr "Ś§Ś€Ś™ŚŠŚ” ŚŚœ Ś©Ś™Śš"
+
+#: src/libaudgui/ui_jumptotrack.c:270
+msgid "Filter: "
+msgstr "ŚžŚĄŚ ŚŸ: "
+
+#: src/libaudgui/ui_jumptotrack.c:271
+msgid "_Filter:"
+msgstr "Śž_ŚĄŚ ŚŸ:"
+
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:223
+msgid "Playlist Manager"
+msgstr "ŚžŚ Ś”Śœ ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś”"
+
+#: src/libaudgui/ui_playlist_manager.c:236
+msgid "Entries"
+msgstr "ŚšŚ©Ś•ŚžŚ•ŚȘ"
+
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Ś—Ś“Ś©"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "Ś©Ś Ś” _Ś©Ś"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Ś Ś’ŚŸ"
+
+#: src/libaudgui/ui_playlist_manager.c:269
+msgid "_Close dialog on activating playlist"
+msgstr ""
+
+#: src/libaudgui/url-opener.c:49
+msgid "Open URL"
+msgstr "Ś€ŚȘŚ— URL"
+
+#: src/libaudgui/url-opener.c:55
+msgid "Add URL"
+msgstr "Ś”Ś•ŚĄŚŁ URL"
+
+#: src/libaudgui/url-opener.c:74
+msgid "Enter URL:"
+msgstr "Ś”Ś–ŚŸ URL:"
+
+#: src/libaudgui/util.c:148
+msgid ""
+"\n"
+"(Further messages have been hidden.)"
+msgstr ""
diff --git a/po/hu.po b/po/hu.po
index 79b7aca..d35f13b 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -6,14 +6,15 @@
# szaboferee <szaboferee@gmail.com>, 2013
# Laszlo Dvornik <dvornik@gnome.hu>, 2006
# PĂ©ter Polonkai <polesz@nedudu.hu>, 2010
-# PĂ©ter Polonkai <polesz@nedudu.hu>, 2011-2012
+# PĂ©ter Polonkai <polesz@nedudu.hu>, 2010-2012
+# szaboferee <szaboferee@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-08-26 11:58+0000\n"
-"Last-Translator: szaboferee <szaboferee@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:51+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Hungarian (http://www.transifex.com/projects/p/audacious/"
"language/hu/)\n"
"Language: hu\n"
@@ -22,140 +23,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Keresés ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d fĂĄjl talĂĄlhatĂł"
msgstr[1] "%d fĂĄjl talĂĄlhatĂł"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (érvénytelen UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Új lejátszólista"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Hiba a Winamp EQF fĂĄjl '%s' importĂĄlĂĄsakor"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Visszalépés a lejåtszóliståban"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Jelenlegi lejåtszólista lejåtszåsånak elkezdése"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "VerziĂł mutatĂĄsa"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Jelenlegi szĂĄm szĂŒneteltetĂ©se"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Jelenlegi szĂĄm leĂĄllĂ­tĂĄsa"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "LejĂĄtszĂĄs esetĂ©n szĂŒneteltetĂ©s, kĂŒlönben lejĂĄtszĂĄs"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ElƑrelĂ©pĂ©s a lejĂĄtszĂłlistĂĄban"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Ugrås fåjlra pårbeszédablak megjelenítése"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "FĂĄjlok hozzĂĄadĂĄsa a lejĂĄtszĂł listĂĄhoz"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Új fájlok hozzáadása az ideiglenes lejátszólistához"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "FƑablak megjelenĂ­tĂ©se"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Headless mĂłd"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Kilépés a lejåtszås megållåsakor."
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "VerziĂł mutatĂĄsa"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "HibakeresƑ ĂŒzenetek kiĂ­rĂĄsa"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FĂĄjl..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- multimédia fåjlok lejåtszåsa"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Próbåja a `%s --help' tovåbbi informåciókért.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "DekĂłder nem talĂĄlhatĂł ehhez %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s-t nem lehet megnyitni."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Nem lehetséges %s %s: nem tåmogatott fåjl kiterjesztés."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "mentés"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "betöltés'"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Nem lehetséges %s %s: nem tåmogatott fåjl kiterjesztés."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Új lejátszólista"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Most jĂĄtszott"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -163,414 +155,446 @@ msgstr ""
"A lejåtszåsi liståt nem lehet rendezni, mert a metaadatok keresése még "
"folyamatban van (vagy le van tiltva)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s névjegy"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s beĂĄllĂ­tĂĄsok"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Hang"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "HĂĄlĂłzat"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "LejĂĄtszĂłlista"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Dal informĂĄciĂł"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "BƑvĂ­tmĂ©nyek"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Általånos"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effekt"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Megjelenítés"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Bemenet"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Átvitel"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "ElƑadó"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "CĂ­m"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "SzĂĄm sorszĂĄma"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "MƱfaj"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Fåjlnév"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "FĂĄjlĂștvonal"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "DĂĄtum"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Év"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Megjegyzés"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "MinƑsĂ©g"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Nincs"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arab"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Balti"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "KĂ­nai"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Görög"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "HĂ©ber"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JapĂĄn"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Koreai"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Lengyel"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Orosz"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Tajvani"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Török"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "LebegƑpontos"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Album mĂłd"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Kimeneti bƑvĂ­tmĂ©ny:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Kimeneti beĂĄllĂ­tĂĄsok</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bit mélység:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Pufferméret:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Szoftveres vĂĄgĂĄs"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Szoftveres hangerƑ-szabályozás használata (nem ajánlott)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "LejĂĄtszĂĄsi erƑsĂ­tĂ©s engedĂ©lyezĂ©se"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Album mĂłd"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "VĂĄgĂĄs megakadĂĄlyozĂĄsa (ajĂĄnlott)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Szintek ĂĄllĂ­tĂĄsa</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplify all files:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Címkézetlen fåjlok kiegészítése:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Proxy gépnév:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Proxy port:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Proxy felhasznålónév:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Proxy jelszĂł:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Proxy beĂĄllĂ­tĂĄsa</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ProxyhasznĂĄlat bekapcsolĂĄsa"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Hitelesítés hasznålata proxyval"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatikus karakterkódolås felismerés ennél:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Tartalék karakterkódolåsok:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Viselkedés</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "LejĂĄtszĂĄs folytatĂĄsa indulĂĄskor"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "AjĂĄnlott amikor a jelenlegi zeneszĂĄm törlĂ©sre kerĂŒl"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Lejåtszólista törlése fåjlok megnyitåsakor"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "FĂĄjlok megnyitĂĄsa az ideiglenes lejĂĄtszĂłlistĂĄban"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Ne töltse be a metaadatokat amíg jåtssza a dalt"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>KompatibilitĂĄs</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "\\ (visszaper jel) értelmezése mint mappa hatåroló"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album borĂ­tĂł</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"KeresĂ©s a kĂ©pek között a szavaknak megfelelƑen (vesszƑvel elvĂĄlasztva):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"KĂ©pek kizĂĄrĂĄsa a keresĂ©si szavaknak megfelelƑen (vesszƑvel elvĂĄlasztva):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "A dal fĂĄjlnevĂ©vel megegyezƑ kĂ©pek keresĂ©se"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Keresés rekurzívan"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Keresési mélység:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>FelbukkanĂł informĂĄciĂł</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "FelbukkanĂł informĂĄciĂłs ablak mutatĂĄsa"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Felbukkanó ablak késleltetése (tized måsodperc):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Aktuális dal idƑsávjának mutatása"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "CÍM"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ELƐADÓ - CÍM"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ELƐADÓ - ALBUM - CÍM"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ELƐADÓ - ALBUM - SÁV. CÍM"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ELƐADÓ [ ALBUM] - SÁV. CÍM"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - CÍM"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "KategĂłria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Egyéni"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Szåm megjelenítése</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "A dalok szĂĄmĂĄnak mutatĂĄsa"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "VezetƑ nullák mutatása (2:00 helyett 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Informåció megjelenítése a cím-karakterlånc formåtumåról"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Egyéni karakterlånc:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "CĂ­mformĂĄtum:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Kimeneti bƑvĂ­tmĂ©ny:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Átvitel"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Bemenet"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Effekt"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Megjelenítés"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Általånos"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Egyéni karakterlånc:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious beĂĄllĂ­tĂĄsai"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nem lehet létrehozni a könyvtårat (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "PozĂ­ciĂł nem talĂĄlhatĂł."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Nincs lejĂĄtszott dal."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, sĂĄv %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "MonĂł"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "SztereĂł"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -585,409 +609,420 @@ msgstr "Köszönet"
msgid "License"
msgstr "Licenc"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Audacious névjegye"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"ValĂłban be akarja zĂĄrni ezt a fĂĄjlt %s? Ha igen, akkor bĂĄrmilyen vĂĄltozĂĄs "
-"történt a lejåtszólistån az el fog veszni."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "LejĂĄtszĂłlista bezĂĄrĂĄsa"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Ne mutassa többé ezt a figyelmeztetést"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Lejåtszólista åtnevezése"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "beĂĄllĂ­tĂĄsok ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Engedélyezve"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizer"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamp"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "SĂĄv"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Hossz"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasszikus"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "DiszkĂł"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gengszter Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Kemény Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "Új Hullám"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Szving"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metaadat frissítés sikeres"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metaadat frissítés sikertelen"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "SzĂĄminformĂĄciĂł"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">FormĂĄtum:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">MinƑsĂ©g:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">BitrĂĄta:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">CĂ­m</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ElƑadó</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Megjegyzés</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">MƱfaj</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Év</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">SzĂĄm sorszĂĄma</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Nincs ehhez informĂĄciĂł %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Ugrás idƑpontra"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "IdƑ megadása (perc:másodperc):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "FelĂŒlĂ­rja %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "LejĂĄtszĂłlista exportĂĄlĂĄsa"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "LejĂĄtszĂłlista importĂĄlĂĄsa"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "FelĂŒlĂ­rja %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "VĂĄrakozĂĄsi sor menedzser"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "FĂĄjlok megnyitĂĄsa"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "FĂĄjlok hozzĂĄadĂĄsa"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Pårbeszédablak bezåråsa megnyitås utån"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Pårbeszédablak bezåråsa hozzåadås utån"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Sorba ĂĄllĂ­tĂĄs"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Kiszedés a sorból"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "UgrĂĄs a szĂĄmra"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "SzƱrƑ: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_SzƱrƑ: "
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Megjegyzés"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Tö_rlés"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "BezĂĄrĂĄs ugrĂĄs utĂĄn"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Lejátszólista kezelƑ"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Elemek"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "Át_nevezés"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Pårbeszédablak bezåråsa a lejåtszólista aktívålåsa utån"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "URL megnyitĂĄsa"
@@ -995,11 +1030,11 @@ msgstr "URL megnyitĂĄsa"
msgid "Add URL"
msgstr "URL hozzĂĄadĂĄsa"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "URL megadĂĄsa:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/id_ID.po b/po/id_ID.po
index 797b77a..3780f82 100644
--- a/po/id_ID.po
+++ b/po/id_ID.po
@@ -3,26 +3,33 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# Rahman Yusri Aftian <aftian@yahoo.com>, 2012,2014
# Rahman Yusri Aftian <aftian@yahoo.com>, 2012
-# Rahman Yusri Aftian <aftian@yahoo.com>, 2012
+# Andika Triwidada <andika@gmail.com>, 2012
# Andika Triwidada <andika@gmail.com>, 2012
# Ardjuna <Asyura.x@gmail.com>, 2013
# Arif Syamsudin <buitenzorg812@gmail.com>, 2012
+# <bu0ncu3@yahoo.com>, 2012,2014
+# Arif Syamsudin <buitenzorg812@gmail.com>, 2012
# <invaleed@gmail.com>, 2012
-# Mohamad Hasan Al Banna <se7entime@gmail.com>, 2012
+# ivanzulfikar <ivan.zulf.ikar@gmail.com>, 2014
+# ivanzulfikar <ivan.zulf.ikar@gmail.com>, 2014
+# Mohamad Hasan Al Banna, 2012
+# Mohamad Hasan Al Banna, 2012
# Rahman Aftian <>, 2012
# Rahman Yusri Aftian <aftian@yahoo.com>, 2012
# <sakrasemangat@gmail.com>, 2012
# <samsul@kplibanyumas.org>, 2012
-# Mohamad Hasan Al Banna <se7entime@gmail.com>, 2012
-# <yoza1404@gmail.com>, 2012
+# Mohamad Hasan Al Banna, 2012
+# yoza1404 <yoza1404@gmail.com>, 2012
+# yoza1404 <yoza1404@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-03-24 07:29+0000\n"
-"Last-Translator: Ardjuna <Asyura.x@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-09 08:45+0000\n"
+"Last-Translator: Rahman Yusri Aftian <aftian@yahoo.com>\n"
"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/"
"audacious/language/id_ID/)\n"
"Language: id_ID\n"
@@ -31,139 +38,130 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Mencari ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d berkas ditemukan"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(UTF-8 tidak valid )"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Daftar Main Baru"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Galat mengimpor berkas Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Galat"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Lewatkan mundur pada daftar lagu"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Mainkan daftar lagu terkini"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Tampilkan versi"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Jeda lagu terkini"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Hentikan lagu terkini"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Jeda lagu saat dimainkan, putar lagu jika sedang jeda"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Lewatkan maju dalam daftar lagu"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Tampilkan dialog Lompat ke Berkas"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Tambah berkas ke dalam daftar lagu"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Tambah berkas baru ke dalam daftar lagu sementara"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Tampilkan jendela utama"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Moda <i>headless</i>"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Keluar setelah berhenti memutar"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Tampilkan versi"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Cetak pesan debug"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "BERKAS..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- putar berkas multimedia "
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Coba `%s --help' untuk informasi lebih lanjut.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Tidak ada dekoder untuk %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s tidak dapat dibuka."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Tidak dapat %s %s: ekstensi berkas tidak didukung."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "simpan"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ambil"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Tidak dapat %s %s: ekstensi berkas tidak didukung."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Daftar Main Baru"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Sedang Diputar"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -171,415 +169,447 @@ msgstr ""
"Daftar lagu tidak dapat diurutkan karena pemindaian metadata dinonaktifkan "
"atau sedang berjalan."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Tentang %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Tentang"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Pengaturan"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Pengaturan"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "Tent_ang"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Suara"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Jaringan"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Daftar Lagu"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Info Lagu"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Pengaya"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Umum"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efek"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisasi"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Masukan"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transpor"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artis"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Judul"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Nomor Track"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Aliran"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nama Berkas"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Lokasi Berkas"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Tanggal"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Tahun"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komentar"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kualitas"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Kosong"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arab"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltic"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Cina"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Yunani"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Ibrani"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Jepang"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korea"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polandia"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Rusia"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwan"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turki"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Titik mengambang"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Moda album"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Pengaya keluaran:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Setelan Keluaran</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Kedalaman bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Ukuran penyangga:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Kliping lunak"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Gunakan pengatur volume (tidak direkomendasikan)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b><i>Replay Gain</i></b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Aktifkan <i>Replay Gain</i>"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Moda album"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Cegah pemangkasan (direkomendasikan)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Sesuaikan Level</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Kuatkan semua berkas:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Kuatkan berkas yang tak ditandai:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Nama host proksi:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Porta proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nama pengguna proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Sandi proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>KOnfigurasi Proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Gunakan proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Gunakan otentikasi pada proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Deteksi enkoder karakter otomatis untuk:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Enkoder karakter standar:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Perilaku</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Lanjut putar saat memulai aplikasi"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Jika lagu terkini terhapus, lanjut putar lagu lain"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Bersihkan daftar lagu ketika membuka berkas"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Buka berkas pada daftar lagu sementara"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Jangan muat metadata hingga lagu diputar"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Kecocokan</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Tafsirkan \\ (garis miring terbalik) sebagai pembatas folder"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Gambar Sampul</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Cari gambar yang sesuai dengan kata tersebut (pisahkan dengan tanda koma):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Mengecualikan gambar yang sesuai dengan kata tersebut (pisahkan dengan tanda "
"koma):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Cari gambar yang sesuai dengan nama berkas"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Cari secara rekursif"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Kedalaman pencarian:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Informasi Jendela Popup</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Munculkan halaman informasi popup"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Tunda popup (persepuluh detik):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Tampilkan skala waktu untuk lagu saat ini"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "JUDUL"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTIS - JUDUL"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTIS - ALBUM - JUDUL"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTIS - ALBUM - TREK. JUDUL"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARIS [ALBUM] - TREK. JUDUL"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - JUDUL"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategori"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Pilihan"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Tampilan Lagu</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Tampilkan no. urut daftar lagu"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Tampilkan nol di depan (02:00 bukan 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Tampilkan informasi tentang format <i>titlestring</i>"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Rangkaian kata gubahan:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Format judul:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Pengaya keluaran:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transpor"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Masukan"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efek"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisasi"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Umum"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Rangkaian kata gubahan:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Prefensi Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Tidak dapat membuat folder (%s): %s⏎\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Posisi tidak ditemukan."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Tidak ada lagu yang sedang diputar."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD Audio, trek %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -593,409 +623,420 @@ msgstr "Kredit"
msgid "License"
msgstr "Lisensi"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Tentang Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
msgstr ""
-"Anda yakin ingin menutup %s? Jika Anda melakukannya, setiap perubahan yang "
-"dibuat sejak daftar lagu diekspor akan hilang."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Tutup Playlist"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Jangan tampilkan pesan ini lagi"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "Gant_i Nama"
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Ganti Nama Daftar Lagu"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "pengaturan ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Gunakan"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ekualiser"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamp"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Trek"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Panjang"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasik"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Mudah Didengarkan"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Bising"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock & Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm & Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Berhasil memperbaharui metadata"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Gagal memperbaharui metadata"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Informasi Track"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kualitas:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrate:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Judul</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artis</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Komentar</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Aliran</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Tahun</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Nomor Track</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d Kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Tidak ada info yang tersedia untuk %s.⏎\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Loncat ke Waktu"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Masukkan waktu (menit:detik):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Menimpa %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Ekspor Daftar Main"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Impor Daftar Main"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Menimpa %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Manajer Antrian"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Buka Berkas"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Tambah Berkas"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Tutup jendela setelah buka berkas"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Tutup jendela setelah menambah berkas"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "Masuk _Antrian"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Keluar Antria_n"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Loncat ke Lagu"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filter:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filter:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Mengingat"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Be_rsihkan"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Tutup jendela setelah lompatan"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Manajer Daftar Main"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Masukan"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "Gant_i Nama"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Tutup jendela s_etelah mengaktifkan daftar main"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Buka URL"
@@ -1003,11 +1044,11 @@ msgstr "Buka URL"
msgid "Add URL"
msgstr "Tambah URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Masukkan URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/it.po b/po/it.po
index 9582d71..b2e36d6 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,17 +7,21 @@
# Diego 'Flameeyes' PettenĂČ <flameeyes@gentoo.org>, 2006
# Diego 'Flameeyes' PettenĂČ <flameeyes@gmail.com>, 2007
# Federico.Torsello <federico421@hotmail.it>, 2013
+# Federico.Torsello <federico421@hotmail.it>, 2013
# Gaetano Ingrasciotta <gaetanoingrasciotta@gmail.com>, 2012
# Gaetano Ingrasciotta <gaetanoingrasciotta@gmail.com>, 2012
# Giuseppe D. B. <giuped@gmail.com>, 2012
# Jacopo Lorenzetti <jacopol@cyan.xubiq.com>, 2011, 2012
+# Jacopo Lorenzetti <jacopol@cyan.xubiq.com>, 2011-2012
+# Nicola Manini <nicola.manini@fisica.unimi.it>, 2014
+# Nicola Manini <nicola.manini@fisica.unimi.it>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-07-22 18:46+0000\n"
-"Last-Translator: Federico.Torsello <federico421@hotmail.it>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-08 15:45+0000\n"
+"Last-Translator: Nicola Manini <nicola.manini@fisica.unimi.it>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/audacious/"
"language/it/)\n"
"Language: it\n"
@@ -26,140 +30,135 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Ricerca in corso
"
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "Trovato %d file"
msgstr[1] "Trovati %d file"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 non valido)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nuova playlist"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Errore durante l'importazione del file EQF di Winamp '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Errore"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Salta indietro nella playlist"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Mostra l'help in linea"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Avvia la riproduzione della playlist corrente"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Mostra versione"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Interrompi il brano corrente"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Inizia la riproduzione"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Ferma il brano corrente"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Pausa la riproduzione"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Interrompi se in riproduzione, altrimenti riproduci"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Salta avanti nella playlist"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Termina la riproduzione"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Visualizza la finestra di dialogo Salta al file"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Salta al brano precedente"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Salta al brano successivo"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Aggiunge file alla playlist"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Aggiunge nuovi file a una playlist temporanea"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Aggiungi files a playlist temporanea"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Visualizza la finestra principale"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "ModalitĂ  headless"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Mostra la finestra di salto-a-brano"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Parti senza interfaccia grafica"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Esci quando la riproduzione Ăš stoppata"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Mostra versione"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Visualizza messaggi di debug"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FILE
"
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
+"Opzione sconosciuta: %s\n"
+"\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- riproduci file multimediali"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Opzione sconosciuta: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Per maggiori informazioni prova `%s --help'.\n"
+"Uso: audacious [OPZIONE] ... [FILE] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Nessun decoder trovato per %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s non puĂČ essere aperto."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Impossibile %s %s: estensione file non supportata."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "salva"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "carica"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Impossibile %s %s: estensione file non supportata."
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Non riesco a caricare %s: estensione non supportata."
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nuova playlist"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Non riesco a salvare %s: estensione non supportata."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "In riproduzione"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -167,413 +166,445 @@ msgstr ""
"La playlist non puĂČ essere riordinata poichĂ© la scansione dei metadati Ăš "
"ancora in corso (o Ăš stata disabilitata)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Riguardo %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Informazioni"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Impostazioni"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Setta"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Annulla"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Chiudi"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Impostazioni"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "Informazioni"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Plugins ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Aspetto"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Rete"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Playlist"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Info Brano"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugin"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Generici"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effetto"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualizzazione"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Ingresso"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Trasporto"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titolo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Numero traccia"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Genere"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nome del file"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Percorso del file"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Anno"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Commento"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "QualitĂ "
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Nessuna"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Araba"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltica"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Cinese"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Greca"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Ebraica"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Giapponese"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coreana"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polacca"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russa"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanese"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turca"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Virgola mobile"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ModalitĂ  album"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Impostazioni dell'interfaccia</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Plugins dell'interfaccia"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Plugin di uscita:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Impostazioni di uscita</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "ProfonditĂ  di bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Dimensione del buffer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Clipping leggero"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Utilizza controllo volume software (non raccomandato)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "Replay Gain"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Abilita Replay Gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ModalitĂ  album"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evita il clipping (raccomandato)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Regola i livelli</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplifica tutti i file:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplifica i file senza tag:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Host del proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Porta del proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Utente proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Password proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Configurazione proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Abilita utilizzo del proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Usa autenticazione con il proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Individuazione automatica della codifica dei caratteri per:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Codifiche di riserva dei caratteri:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamento</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continua la riproduzione all'avvio"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avanza quando il brano corrente viene eliminato"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Cancella la playlist quando si aprono i file"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Apri i file in una playlist temporanea"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Non caricare i metadati dei brani finché non vengono riprodotti"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>CompatibilitĂ </b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpreta\\ (backslash) come un delimitatore di cartella"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "Cover Album"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Ricerca elementi contenenti le parole :"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Escludi elementi corrispondenti alle seguenti parole (separati da virgola):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Ricerca elementi corrispondenti al nome del brano"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Cerca ricorsivamente"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Ricerca avanzata:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Informazioni popup</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Mostra Finestra informazioni"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Ritardo popup (decimi di secondo):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Mostra scala di tempo per il brano corrente"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITOLO"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TITOLO"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ALBUM - TITOLO"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ALBUM - TRACCIA. TITOLO"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ALBUM] - TRACCIA. TITOLO"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITOLO"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Categoria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizzato"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Visualizzazione del brano</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Mostra numeri dei brani"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Mostra zeri iniziali (02:00 invece di 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Mostra informazioni sul formato della stringa del titolo"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Stringa personalizzata:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formato titolo:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Plugin di uscita:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Trasporto"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Ingresso"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Effetto"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualizzazione"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Generici"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Stringa personalizzata:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferenze di Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Impostazioni di audacious"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Impossibile creare la directory (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Posizione non trovata."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Nessun brano in riproduzione."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD Audio, traccia %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -588,409 +619,420 @@ msgstr "Crediti"
msgid "License"
msgstr "Licenza"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Informazioni su Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Sei sicuro di voler chiudere %s? Se lo fai, qualunque modifica apportata "
-"dopo l'esportazione della playlist andrĂ  persa."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Vuoi cancellare permanentemente \"%s\"?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Cancella"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Chiudi playlist"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Cancella la playlist"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Non mostrare piĂč questo messaggio"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Non chiedere piĂč"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Rinomina"
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Rinomina playlist"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "impostazioni
"
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Che nome dai a quest playlist?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Abilita"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizzatore"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamplificazione"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Traccia"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Lunghezza"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Formato:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "QualitĂ :"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Bitrate:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Musica da camera"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/d</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Salvataggio completato"
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadati aggiornati con successo"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Errore di salvataggio"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Errore nell'aggiornamento dei metadati"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Numero di brano"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Informazioni traccia"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Salva"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formato:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">QualitĂ :</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrate:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titolo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Commento</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Genere</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Anno</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Numero di traccia</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/D"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Nessuna informazione disponibile per %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "Salta"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Salta alla posizione"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Inserisci tempo (minuti:secondi):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Sovrascrivere %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "Sovrascrivi"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Confermi di voler sovrascrivere"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Esporta playlist"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "Esporta"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importa playlist"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Sovrascrivere %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "Importa"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Gestione coda"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "Togli dalla coda"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Apri file"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Apri"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Chiudi il _dialogo all'apertura"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Aggiungi file"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Chiudi finestra quando Apri"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "Aggiungi"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Chiudi finestra quando Aggiungi"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Chiudi il _dialogo dopo l'aggiunta"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Coda"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Rimuovi dalla _coda"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Vai al brano"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtro: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
-msgstr "_Filtro:"
-
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Ricorda"
+msgstr "_Filtra:"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Cancella"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "Chiudi saltando"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Chiudi quando salti"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Gestione playlist"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Elementi"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Nuovo"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
msgstr "_Rinomina"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "Riproduci"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Chiudi finestra quando attivi la playlist"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Apri URL"
@@ -998,11 +1040,11 @@ msgstr "Apri URL"
msgid "Add URL"
msgstr "Aggiungi URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Inserisci URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/ja.po b/po/ja.po
index 9513297..9294b97 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -4,16 +4,19 @@
#
# Translators:
# natird <dritan86@gmail.com>, 2012
-# èȘ­ăżć°‚(ć…ˆèĄŒé‡ç”Łćž‹) <hallconnen2+transifex@gmail.com>, 2013
+# uǝsıɯoʎ(èȘ­ăżć°‚) <hallconnen2+transifex@gmail.com>, 2013
# Nastuko Toda <m2330880989@shibuya-center.com>, 2012
-# Shuuji Takahashi <shuuji3@gmail.com>, 2012-2013
+# Nastuko Toda <m2330880989@shibuya-center.com>, 2012
+# natird <dritan86@gmail.com>, 2012
+# Shuuji TAKAHASHI <shuuji3@gmail.com>, 2012-2014
+# uǝsıɯoʎ(èȘ­ăżć°‚) <hallconnen2+transifex@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-03-07 05:02+0000\n"
-"Last-Translator: èȘ­ăżć°‚(ć…ˆèĄŒé‡ç”Łćž‹) <hallconnen2+transifex@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Japanese (http://www.transifex.com/projects/p/audacious/"
"language/ja/)\n"
"Language: ja\n"
@@ -22,139 +25,132 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "æ€œçŽąäž­..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d ć€‹ăźăƒ•ă‚Ąă‚€ăƒ«ăŒèŠ‹ă€ă‹ă‚ŠăŸă—ăŸ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (äžæ­ŁăȘ UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "æ–°èŠăƒ—ăƒŹă‚€ăƒȘă‚čト"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Winamp EQF ăƒ•ă‚Ąă‚€ăƒ« '%s' ăźă‚€ăƒłăƒăƒŒăƒˆă‚šăƒ©ăƒŒ"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "ă‚šăƒ©ăƒŒ"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆăźäž€ă€ć‰ăźæ›Čă«ă‚žăƒŁăƒłăƒ—ă™ă‚‹"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "ă‚łăƒžăƒłăƒ‰ăƒ©ă‚€ăƒłăźăƒ˜ăƒ«ăƒ—ă‚’èĄšç€ș"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "çŸćœšăźăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă§æŒ”ć„ă‚’é–‹ć§‹ă™ă‚‹"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ăƒăƒŒă‚žăƒ§ăƒłă‚’èĄšç€șする"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "çŸćœšăźæ›Čă‚’äž€æ™‚ćœæ­ąă™ă‚‹"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "憍生"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "çŸćœšăźæ›Čă‚’ćœæ­ąă™ă‚‹"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "äž€æ™‚ćœæ­ą"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "æŒ”ć„ă—ăŠă„ăŸă‚‰äž€æ™‚ćœæ­ąă—, ăă‚Œä»„ć€–ăŻæŒ”ć„ă™ă‚‹"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆăźäž€ă€æŹĄăźæ›Čă«ă‚žăƒŁăƒłăƒ—ă™ă‚‹"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ćœæ­ą"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ăƒ•ă‚Ąă‚€ăƒ«ăƒ€ă‚€ă‚ąăƒ­ă‚°ăžăźă‚žăƒŁăƒłăƒ—ă‚’èĄšç€ș"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "才ぼæ›Čにă‚čキップ"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "æŹĄăźæ›Čにă‚čキップ"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă«ăƒ•ă‚Ąă‚€ăƒ«ă‚’èżœćŠ "
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "æ–°ă—ă„ăƒ•ă‚Ąă‚€ăƒ«ă‚’äž€æ™‚ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă«èżœćŠ ă™ă‚‹"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "äž€æ™‚ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă«ăƒ•ă‚Ąă‚€ăƒ«ă‚’èżœćŠ "
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ăƒĄă‚€ăƒłă‚Šă‚Łăƒłăƒ‰ă‚Šă‚’èĄšç€șする"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "ヘッドレă‚čăƒąăƒŒăƒ‰"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "ă‚°ăƒ©ăƒ•ă‚Łă‚«ăƒ«ă‚€ăƒłă‚żăƒŒăƒ•ă‚§ăƒŒă‚čăȘしで開構"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "憍生漌äș†æ™‚に甂äș†ă™ă‚‹"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ăƒăƒŒă‚žăƒ§ăƒłă‚’èĄšç€șする"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "ăƒ‡ăƒăƒƒă‚°ăƒĄăƒƒă‚»ăƒŒă‚žă‚’èĄšç€șする"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ăƒ•ă‚Ąă‚€ăƒ«..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "䞍明ăȘă‚Șăƒ—ă‚·ăƒ§ăƒłă§ă™: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- ăƒžăƒ«ăƒăƒĄăƒ‡ă‚Łă‚ąăƒ•ă‚Ąă‚€ăƒ«ă‚’ć†ç”Ÿă™ă‚‹"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "䞍明ăȘă‚Șăƒ—ă‚·ăƒ§ăƒłă§ă™: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"è©łă—ăăŻ `%s --help' ă‚’ćźŸèĄŒă—ăŠäž‹ă•ă„.\n"
+"äœżă„æ–č: audacious [ă‚Șăƒ—ă‚·ăƒ§ăƒł] ... [ăƒ•ă‚Ąă‚€ăƒ«] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "%s ăźăŸă‚ăźăƒ‡ă‚łăƒŒăƒ€ăŒă‚ă‚ŠăŸă›ă‚“ă€‚"
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s ă‚’é–‹ă‘ăŸă›ă‚“ă§ă—ăŸă€‚"
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "%s %s ă§ăăŸă›ă‚“: ăƒ•ă‚Ąă‚€ăƒ«ăźæ‹ĄćŒ”ć­ă«ćŻŸćżœă—ăŠă„ăŸă›ă‚“ă€‚"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "%s ă‚’ăƒ­ăƒŒăƒ‰ă§ăăŸă›ă‚“ă€‚ăƒ•ă‚Ąă‚€ăƒ«ăźæ‹ĄćŒ”ć­ăŒćŻŸćżœă—ăŠă„ăŸă›ă‚“ă€‚"
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "保歘"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "èȘ­ăżèŸŒăż"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "%s %s ă§ăăŸă›ă‚“: ăƒ•ă‚Ąă‚€ăƒ«ăźæ‹ĄćŒ”ć­ă«ćŻŸćżœă—ăŠă„ăŸă›ă‚“ă€‚"
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "æ–°èŠăƒ—ăƒŹă‚€ăƒȘă‚čト"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "%s ă‚’äżć­˜ă§ăăŸă›ă‚“ă€‚æœȘćŻŸćżœăźæ‹ĄćŒ”ć­ă§ă™ă€‚"
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "憍生侭"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -162,413 +158,445 @@ msgstr ""
"ăƒĄă‚żăƒ‡ăƒŒă‚żăźă‚čキャンがé€ČèĄŒäž­ă€ăŸăŸăŻç„ĄćŠčにăȘăŁăŠă„ă‚‹ăŸă‚ă€ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă‚’ă‚œăƒŒ"
"ăƒˆă§ăăŸă›ă‚“ă€‚"
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s に぀いお"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ăźèš­ćźš"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "ă‚­ăƒŁăƒłă‚»ăƒ« (_C)"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "èš­ćźš (_S)"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "Audacious に぀いお (_A)"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "ăƒ—ăƒ©ă‚°ă‚€ăƒł (_P)"
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "ă‚ȘăƒŒăƒ‡ă‚Łă‚Ș"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ăƒăƒƒăƒˆăƒŻăƒŒă‚Ż"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čト"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "æ›Čăźæƒ…ć ±"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ăƒ—ăƒ©ă‚°ă‚€ăƒł"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "äž€èˆŹ"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "スフェクト"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "èŠ–èŠšćŒ–"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ă‚€ăƒłăƒ—ăƒƒăƒˆ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "トランă‚čăƒăƒŒăƒˆ"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "ă‚ąăƒŒăƒ†ă‚Łă‚čト"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ă‚ąăƒ«ăƒăƒ ć"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "ă‚żă‚€ăƒˆăƒ«"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "ăƒˆăƒ©ăƒƒă‚Żç•Șć·"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "ă‚žăƒŁăƒłăƒ«"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "ăƒ•ă‚Ąă‚€ăƒ«ć"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "パă‚č損"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "旄付"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "ćˆ¶äœœćčŽ"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "コメント"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ă‚łăƒŒăƒ‡ăƒƒă‚Ż"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "音èłȘ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "ăȘし"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ă‚ąăƒ©ăƒ“ă‚ąèȘž"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "ăƒăƒ«ăƒˆè«žèȘž"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "ç°Ąäœ“äž­ć›œèȘž"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ゼăƒȘă‚·ă‚ąèȘž"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ăƒ˜ăƒ–ăƒ©ă‚€èȘž"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "æ—„æœŹèȘž"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "æœéźźèȘž"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "ăƒăƒŒăƒ©ăƒłăƒ‰èȘž"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "ăƒ­ă‚·ă‚ąèȘž"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "çčäœ“äž­ć›œèȘž"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "ăƒˆăƒ«ă‚łèȘž"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "æ”źć‹•ć°æ•°ç‚č"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ă‚ąăƒ«ăƒăƒ ăƒąăƒŒăƒ‰"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ă‚€ăƒłă‚żăƒŒăƒ•ă‚§ă‚€ă‚čăźèš­ćźš</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ă‚€ăƒłă‚żăƒŒăƒ•ă‚§ă‚€ă‚čăƒ—ăƒ©ă‚°ă‚€ăƒł: "
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ć‡șćŠ›ăƒ—ăƒ©ă‚°ă‚€ăƒł:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ć‡șćŠ›ăźèš­ćźš</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "ăƒ“ăƒƒăƒˆæ·±ćșŠ:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "ăƒăƒƒăƒ•ă‚Ąă‚”ă‚€ă‚ș:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "ă‚œăƒ•ăƒˆă‚ŻăƒȘッピング"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "ă‚œăƒ•ăƒˆă‚Šă‚§ă‚ąăźéŸłé‡ă‚łăƒłăƒˆăƒ­ăƒŒăƒ«ă‚’äœżă† (éžæŽšć„š)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>ăƒȘăƒ—ăƒŹă‚€ă‚Čă‚€ăƒł</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ăƒȘăƒ—ăƒŹă‚€ă‚Čă‚€ăƒłă‚’æœ‰ćŠčにする"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ă‚ąăƒ«ăƒăƒ ăƒąăƒŒăƒ‰"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "クăƒȘッピングをé˜Čぐ (éžæŽšć„š)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>音量ぼèȘżæ•Ž</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "すăčăŠăźăƒ•ă‚Ąă‚€ăƒ«ă‚’ćą—ćč…する:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ă‚żă‚°ă„ă‘ă•ă‚ŒăŠă„ăȘă„ăƒ•ă‚Ąă‚€ăƒ«ă‚’ćą—ćč…する"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "ăƒ—ăƒ­ă‚­ă‚·ăźăƒ›ă‚čト損:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "ăƒ—ăƒ­ă‚­ă‚·ăźăƒăƒŒăƒˆ:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "ăƒ—ăƒ­ă‚­ă‚·ăźăƒŠăƒŒă‚¶ć:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "ăƒ—ăƒ­ă‚­ă‚·ăźăƒ‘ă‚čăƒŻăƒŒăƒ‰:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ăƒ—ăƒ­ă‚­ă‚·èš­ćźš</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ăƒ—ăƒ­ă‚­ă‚·ăźäœżç”šă‚’æœ‰ćŠčにする"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "ăƒ—ăƒ­ă‚­ă‚·ăźèȘèšŒă‚’èĄŒă†"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "è‡Șć‹•ă‚­ăƒŁăƒ©ă‚Żă‚żă‚šăƒłă‚łăƒŒăƒ‡ă‚Łăƒłă‚°æ€œć‡ș:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ä»Łæ›żă‚­ăƒŁăƒ©ă‚Żă‚żă‚šăƒłă‚łăƒŒăƒ‡ă‚Łăƒłă‚°:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>ć‹•äœœ</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "è”·ć‹•æ™‚ă«ć‰ć›žć†ç”Ÿă—ăŠă„ăŸæ›Čを憍生する"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "çŸćœšăźæ›ČăŒć‰Šé™€ă•ă‚ŒăŸæ™‚ă«æŹĄăźæ›Čを憍生する"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "ăƒ•ă‚Ąă‚€ăƒ«ă‚’é–‹ăæ™‚ă«ăƒ—ăƒŹă‚€ăƒȘă‚čトをクăƒȘケする"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ăƒ•ă‚Ąă‚€ăƒ«ă‚’äž€æ™‚ăƒ—ăƒŹă‚€ăƒȘă‚čトで開く"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ć†ç”ŸăŒç”‚ă‚ă‚‹ăŸă§æ›ČăźăƒĄă‚żăƒ‡ăƒŒă‚żă‚’èȘ­ăżèŸŒăŸăȘい"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>äș’換性</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
"\\ (バックă‚čăƒ©ăƒƒă‚·ăƒ„) ă‚’ăƒ•ă‚©ăƒ«ăƒ€ăƒŒăźăƒ‡ăƒȘăƒŸă‚żïŒˆćŒșćˆ‡ă‚Šæ–‡ć­—ïŒ‰ăšă—ăŠè§Łé‡ˆă™ă‚‹"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ă‚ąăƒ«ăƒăƒ ă‚ąăƒŒăƒˆ</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "æŹĄăźć˜èȘžă«ăƒžăƒƒăƒă™ă‚‹ç”»ćƒă‚’æ€œçŽąă™ă‚‹ (コンマでćŒș戇る):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "æŹĄăźć˜èȘžă«ăƒžăƒƒăƒă™ă‚‹ç”»ćƒă‚’陀怖する (コンマでćŒș戇る):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "æ›Čăźăƒ•ă‚Ąă‚€ăƒ«ćă«ăƒžăƒƒăƒă™ă‚‹ç”»ćƒă‚’æ€œçŽąă™ă‚‹"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "ć†ćž°çš„ă«æ€œçŽąă™ă‚‹"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "æ€œçŽąăźæ·±ă•:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>ăƒăƒƒăƒ—ă‚ąăƒƒăƒ—æƒ…ć ±</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "ăƒăƒƒăƒ—ă‚ąăƒƒăƒ—æƒ…ć ±ă‚’èĄšç€șする"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "ポップケップぼ遅れ (10ç§’ć˜äœ):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "çŸćœšăźæ›Čăźă‚żă‚€ăƒ ă‚čă‚±ăƒŒăƒ«ă‚’èĄšç€șする"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "ă‚żă‚€ăƒˆăƒ«"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ă‚ąăƒŒăƒ†ă‚Łă‚čト - ă‚żă‚€ăƒˆăƒ«"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ă‚ąăƒŒăƒ†ă‚Łă‚čト - ă‚ąăƒ«ăƒăƒ  - ă‚żă‚€ăƒˆăƒ«"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ă‚ąăƒŒăƒ†ă‚Łă‚čト - ă‚ąăƒ«ăƒăƒ  - ăƒˆăƒ©ăƒƒă‚Ż. ă‚żă‚€ăƒˆăƒ«"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ă‚ąăƒŒăƒ†ă‚Łă‚čト [ ă‚ąăƒ«ăƒăƒ  ] - ăƒˆăƒ©ăƒƒă‚Ż. ă‚żă‚€ăƒˆăƒ«"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ă‚ąăƒ«ăƒăƒ  - ă‚żă‚€ăƒˆăƒ«"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ă‚«ăƒ†ă‚ŽăƒȘ"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "ă‚«ă‚čタム"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>æ›ČăźèĄšç€ș</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "æ›Čç•Șć·ăźèĄšç€ș"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ć…ˆé ­ăźă‚Œăƒ­ă‚’èĄšç€șする (2:00 -> 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "ă‚żă‚€ăƒˆăƒ«ă«äœżç”šă§ăă‚‹æ›žćŒă‚’èĄšç€șă—ăŸă™"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "ă‚«ă‚čă‚żăƒ æ–‡ć­—ćˆ—:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "ă‚żă‚€ăƒˆăƒ«ăźæ›žćŒ:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "ć‡șćŠ›ăƒ—ăƒ©ă‚°ă‚€ăƒł:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "トランă‚čăƒăƒŒăƒˆ"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ă‚€ăƒłăƒ—ăƒƒăƒˆ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "スフェクト"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "èŠ–èŠšćŒ–"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "äž€èˆŹ"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ă‚«ă‚čă‚żăƒ æ–‡ć­—ćˆ—:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
msgstr "Audacious ăźèš­ćźš"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ディレクトăƒȘ (%s) ă‚’äœœæˆă§ăăŸă›ă‚“ă§ă—ăŸ: %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "ć Žæ‰€ăŒèŠ‹ă€ă‹ă‚ŠăŸă›ă‚“ă§ă—ăŸă€‚"
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "憍生侭ぼæ›ČăŻă‚ă‚ŠăŸă›ă‚“ă€‚"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "ă‚ȘăƒŒăƒ‡ă‚Łă‚Ș CDă€ăƒˆăƒ©ăƒƒă‚Ż %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ăƒąăƒŽăƒ©ăƒ«"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ă‚čテレă‚Ș"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -582,407 +610,420 @@ msgstr "クレゾット"
msgid "License"
msgstr "ăƒ©ă‚€ă‚»ăƒłă‚č"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Audacious に぀いお"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr "æœŹćœ“ă« %s ă‚’é–‰ă˜ăŸă™ă‹ïŒŸ ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă«ćŠ ăˆă‚‰ă‚ŒăŸć€‰æ›ŽăŻć€±ă‚ă‚ŒăŸă™ă€‚"
+msgid "Do you want to permanently remove “%s”?"
+msgstr "\"%s\" ă‚’ćźŒć…šă«ć‰Šé™€ă—ăŸă™ă‹ïŒŸ"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čトを閉じる"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă‚’ć‰Šé™€"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "ă“ăźăƒĄăƒƒă‚»ăƒŒă‚žă‚’äșŒćșŠăšèĄšç€șしăȘい(_D)"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "ć†ăłèĄšç€șしăȘい (_D)"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čトをăƒȘăƒăƒŒăƒ "
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "èš­ćźš"
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆăźćć‰ă‚’ć…„ćŠ›ă—ăŠäž‹ă•ă„ă€‚"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "有ćŠč(_E)"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "ă‚€ă‚łăƒ©ă‚€ă‚¶"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "プăƒȘケンプ"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "ăƒˆăƒ©ăƒƒă‚Ż"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "長さ"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "ćœąćŒ:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "音èłȘ:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "ăƒ“ăƒƒăƒˆăƒŹăƒŒăƒˆ:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "ă‚ąă‚·ăƒƒăƒ‰ă‚žăƒŁă‚ș"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "ă‚ąă‚·ăƒƒăƒ‰ăƒ»ăƒ­ăƒƒă‚Ż"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "ケンビスント"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "ビバップ"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "ăƒ–ăƒ«ăƒŒă‚°ăƒ©ă‚č"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "ăƒ–ăƒ«ăƒŒă‚č"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ăƒăƒŁăƒłăƒăƒŒăƒŸăƒ„ăƒŒă‚žăƒƒă‚Ż"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ă‚Żăƒ©ă‚·ă‚«ăƒ«"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "ă‚«ăƒłăƒˆăƒȘăƒŒ"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "デă‚čăƒĄă‚żăƒ«"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ディă‚čコ"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "ă‚€ăƒŒă‚žăƒŒăƒȘă‚čニング"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "ăƒ•ă‚©ăƒŒă‚Ż"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "ăƒ•ă‚Ąăƒłă‚­ăƒŒ"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "ゼャングă‚čă‚żăƒ©ăƒƒăƒ—"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "ギă‚čăƒšăƒ«"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "ă‚°ăƒ©ăƒłă‚ž"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "ăƒăƒŒăƒ‰ăƒ­ăƒƒă‚Ż"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "ăƒ˜ăƒŽă‚ŁăƒĄă‚żăƒ«"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ヒップホップ"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "ハォă‚č"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "ゾャă‚ș"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "ă‚žăƒŁăƒłă‚°ăƒ«"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "ăƒĄă‚żăƒ«"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "ăƒ‹ăƒ„ăƒŒă‚šă‚€ă‚ž"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "ăƒ‹ăƒ„ăƒŒă‚Šă‚§ăƒŒăƒ–"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ăƒŽă‚€ă‚ș"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "ポップ"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "パンクロック"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "ăƒ©ăƒƒăƒ—"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "ハă‚Čェ"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "ロック"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "ăƒ­ăƒƒă‚Żăƒłăƒ­ăƒŒăƒ«"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "R&B"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "ă‚čă‚«"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "ă‚œă‚Šăƒ«"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "ă‚čォィング"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "テクノ"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "トăƒȘăƒƒăƒ—ăƒ»ăƒ›ăƒƒăƒ—"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ăƒĄă‚żăƒ‡ăƒŒă‚żăŻæ­Łćžžă«æ›Žæ–°ă•ă‚ŒăŸă—ăŸ"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ăƒĄă‚żăƒ‡ăƒŒă‚żăźæ›Žæ–°ă«ć€±æ•—ă—ăŸă—ăŸ"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "ăƒˆăƒ©ăƒƒă‚Żæƒ…ć ±"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "保歘が漌äș†ă—ăŸă—ăŸ"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">ăƒ•ă‚©ăƒŒăƒžăƒƒăƒˆ:</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "äżć­˜ă«ć€±æ•—ă—ăŸă—ăŸ"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">擁èłȘ:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">ăƒ“ăƒƒăƒˆăƒŹăƒŒăƒˆ:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">ă‚żă‚€ăƒˆăƒ«</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ă‚ąăƒŒăƒ†ă‚Łă‚čト</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ă‚ąăƒ«ăƒăƒ </span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">コメント</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">ă‚žăƒŁăƒłăƒ«</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">ćčŽ</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "ăƒˆăƒ©ăƒƒă‚Żç•Șć·"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ăƒˆăƒ©ăƒƒă‚Żç•Șć·</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "保歘 (_S)"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/A"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "%s ăźæƒ…ć ±ăŒć–ćŸ—ă§ăăŸă›ă‚“ă€‚\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "ゾャンプ (_J)"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "æŒ‡ćźšă—ăŸæ™‚é–“ăžă‚žăƒŁăƒłăƒ—"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "æ™‚é–“ă‚’ć…„ćŠ›ă—ăŠăă ă•ă„ (戆:秒):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "%s ă‚’äžŠæ›žăă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "äžŠæ›žăă™ă‚‹"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čトをć‡ș抛"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čトをèȘ­ăżèŸŒăż"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "%s ă‚’äžŠæ›žăă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "ă‚­ăƒ„ăƒŒăƒžăƒăƒŒă‚žăƒŁ"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "ă‚­ăƒ„ăƒŒă‹ă‚‰ăŻăšă™ (_U)"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "ăƒ•ă‚Ąă‚€ăƒ«ă‚’é–‹ă"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "開く (_O)"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "é–‹ă„ăŸă‚‰ăƒ€ă‚€ă‚ąăƒ­ă‚°ă‚’é–‰ă˜ă‚‹ (_D)"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "ăƒ•ă‚Ąă‚€ăƒ«ăźèżœćŠ "
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "é–‹ă„ăŸă‚‰ăƒ€ă‚€ă‚ąăƒ­ă‚°ă‚’é–‰ă˜ă‚‹"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "èżœćŠ  (_A)"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "èżœćŠ ă—ăŸă‚‰ăƒ€ă‚€ă‚ąăƒ­ă‚°ă‚’é–‰ă˜ă‚‹"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "èżœćŠ ă—ăŸă‚‰ăƒ€ă‚€ă‚ąăƒ­ă‚°ă‚’é–‰ă˜ă‚‹ (_D)"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "ă‚­ăƒ„ăƒŒă«èżœćŠ (_Q)"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "ă‚­ăƒ„ăƒŒă‹ă‚‰ć€–ă™(_U)"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "æŒ‡ćźšă—ăŸæ›Čă«ă‚žăƒŁăƒłăƒ—"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "ăƒ•ă‚Łăƒ«ă‚ż:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "ăƒ•ă‚Łăƒ«ă‚ż(_F):"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "èš˜æ†¶ă™ă‚‹"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "クăƒȘケ(_R)"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ă‚žăƒŁăƒłăƒ—ă—ăŸă‚‰ăƒ€ă‚€ă‚ąăƒ­ă‚°ă‚’é–‰ă˜ă‚‹"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "ă‚žăƒŁăƒłăƒ—ă—ăŸă‚‰ăƒ€ă‚€ă‚ąăƒ­ă‚°ă‚’é–‰ă˜ă‚‹ (_L)"
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆăƒžăƒăƒŒă‚žăƒŁ"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "スントăƒȘ"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "ăƒȘăƒăƒŒăƒ (_R)"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "æ–°ă—ă„ăƒ—ăƒŹă‚€ăƒȘă‚čト(_N)"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "ćć‰ăźć€‰æ›Ž(_A)"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "憍生 (_P)"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "ăƒ—ăƒŹă‚€ăƒȘă‚čăƒˆă‚’ă‚ąă‚Żăƒ†ă‚Łăƒ–ă«ă—ăŸă‚‰ăƒ•ă‚Ąă‚€ă‚ąăƒ­ă‚°ă‚’é–‰ă˜ă‚‹(_C)"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "URL を開く"
@@ -990,11 +1031,11 @@ msgstr "URL を開く"
msgid "Add URL"
msgstr "URL ă‚’èżœćŠ "
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "URL を慄抛:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/ko.po b/po/ko.po
index cafe613..9eaff5f 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -5,11 +5,12 @@
# Translators:
# ChoSeongWoo <syn333@gmail.com>, 2008
# ChoSeongWoo <syn333@gmail.com>, 2008
-# Darkcircle <darkcircle.0426@gmail.com>, 2012
+# Darkcircle <darkcircle.0426@gmail.com>, 2012-2014
# natird <dritan86@gmail.com>, 2012
# Jaegeum Choe <baedaron@hananet.net>, 2001
# Man-Yong Lee <yong@linuxkorea.co.kr>, 2000
# natird <dritan86@gmail.com>, 2012
+# natird <dritan86@gmail.com>, 2012
# Sang-Jin Hwang <accel@accellinux.org>, 1999
# Darkcircle <darkcircle.0426@gmail.com>, 2012
# Darkcircle <darkcircle.0426@gmail.com>, 2012-2013
@@ -17,9 +18,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-09-30 14:53+0000\n"
-"Last-Translator: Darkcircle <darkcircle.0426@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-03-15 22:38+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Korean (http://www.transifex.com/projects/p/audacious/"
"language/ko/)\n"
"Language: ko\n"
@@ -28,552 +29,579 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "êČ€ìƒ‰ 쀑 ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
-msgstr[0] "%d 개의 파음 발êČŹ"
+msgstr[0] "파음 %d개넌 찟았슔니닀"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (유횚하지 않은 UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "새 ìžŹìƒ ëȘ©ëĄ"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "'%s' Winamp EQF 파음을 ê°€ì žì˜Ź 때 였넘 발생"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "였넘"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ìžŹìƒ ëȘ©ëĄ ë’€ëĄœ 걎너뛰Ʞ"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "ëȘ…ë č행 도움말 표시"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "í˜„ìžŹ ìžŹìƒ ëȘ©ëĄ ìžŹìƒ"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ëČ„ì „ ëłŽêž°"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "í˜„ìžŹ 녾래 음시 정지"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "ìžŹìƒ 시작"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "í˜„ìžŹ 녾래 멈춀 "
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "ìžŹìƒ 음시 정지"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "ìžŹìƒ 쀑읎멎 음시 정지, ê·ž 왞에는 ìžŹìƒ"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ìžŹìƒ ëȘ©ëĄ ì•žìœŒëĄœ 걎너뛰Ʞ"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ìžŹìƒ 정지"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "읎전 êłĄìœŒëĄœ 걎너뛰Ʞ"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "íŒŒìŒëĄœ 읎동하Ʞ 대화 상자 표시"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "닀음 êłĄìœŒëĄœ 걎너뛰Ʞ"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "ìžŹìƒ ëȘ©ëĄì— 파음 추가"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "새 파음을 임시 ìžŹìƒ ëȘ©ëĄì— 추가"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "임시 ìžŹìƒ ëȘ©ëĄì— 파음 추가"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "êž°ëłž ì°œ 표시"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "í—€ë“œëŠŹìŠ€ ëȘšë“œ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "êłĄìœŒëĄœ 걎너뛰Ʞ ì°œ 표시"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "귞래픜 읞터페읎슀넌 ì œì™ží•˜êł  시작"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ìžŹìƒì„ 끝나멎 ìą…ëŁŒ"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ëČ„ì „ ëłŽêž°"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "디ëȄêč… ë©”ì‹œì§€ 출렄"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "파음..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "알 수 없는 옔션: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr " - ë©€í‹°ëŻžë””ì–Ž 파음 ìžŹìƒ"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "알 수 없는 옔션: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"'%s --help'ë„Œ 싀행하멎 더 많은 ì •ëłŽë„Œ ëłŒ 수 있슔니닀.\n"
+"ì‚Źìš©ëȕ: audacious <옔션> ... <파음> ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "였데읎셔슀 "
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "%s의 디윔더가 없슔니닀."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s을(ë„Œ) ì—Ž 수 없슔니닀."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "%s을(ë„Œ) ìžŹìƒí•  수 없슔니닀. %s 파음 형식을 지원하지 않슔니닀."
+msgid "Cannot load %s: unsupported file extension."
+msgstr "ë¶ˆëŸŹì˜Ź 수 없는 %s 입니닀: 파음 확임자넌 지원하지 않슔니닀."
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "저임"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ë¶ˆëŸŹì˜€êž°"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "%s을(ë„Œ) ìžŹìƒí•  수 없슔니닀. %s 파음 형식을 지원하지 않슔니닀."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "새 ìžŹìƒ ëȘ©ëĄ"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "저임할 수 없는 %s 입니닀: 파음 확임자넌 지원하지 않슔니닀."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "ìžŹìƒ 쀑"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr ""
-"메타데읎터 êČ€ìƒ‰ìŽ 진행 쀑(또는 ëč„활성화 됚)읎Ʞ ë•ŒëŹžì— ìžŹìƒ ëȘ©ëĄì„ ì •ë Źí•  "
-"수 없슔니닀."
-
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s ì •ëłŽ"
+"메타데읎터 êČ€ìƒ‰ì€‘(또는 ëč„활성화 됚)읎Ʞ ë•ŒëŹžì— ìžŹìƒ ëȘ©ëĄì„ ì •ë Źí•  수 없슔니"
+"ë‹€."
+
+#: src/audacious/plugin-preferences.c:55
+#, fuzzy
+msgid "About"
+msgstr "ì •ëłŽ"
+
+#: src/audacious/plugin-preferences.c:94
+#, fuzzy
+msgid "Settings"
+msgstr "섀정"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "섀정(_S)"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "췚소(_C)"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "ë‹«êž°(_C)"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "섀정(_S)"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "ì •ëłŽ(_A)"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "í”ŒëŸŹê·žìž(_P)..."
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s 섀정"
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "ëȘšì–‘새"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "였디였"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ë„€íŠžì›ŒíŹ"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ìžŹìƒ ëȘ©ëĄ"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "êłĄ ì •ëłŽ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "í”ŒëŸŹê·žìž"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "음반"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "íššêłŒ"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "시각 íššêłŒ"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ìž…ë „"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ì „ì†Ą"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "음악가"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "음반"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "제ëȘ©"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "튾랙 ëȈ혞"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "ìž„ë„Ž"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "파음 읎늄"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "파음 êČœëĄœ"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "날짜"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "연도"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ìŁŒì„"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "윔덱"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "음질"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "없음"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "아띌ëč„ì•„ì–Ž"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "발튾 핮 ì–žì–Ž"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "쀑ꔭ얎"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ê·žëŠŹìŠ€ì–Ž"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ížˆëžŒëŠŹì–Ž"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "ìŒëłžì–Ž"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "한ꔭ얎"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "폎란드얎"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "ëŸŹì‹œì•„ì–Ž"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "타읎완얎"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "터킀얎"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "부동 소숫점"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "음반 ëȘšë“œ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>읞터페읎슀 섀정</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "읞터페읎슀 í”ŒëŸŹê·žìž:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "출렄 í”ŒëŸŹê·žìž:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>출렄 섀정</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "ëč„튞 êčŠìŽ:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "ëČ„íŒ íŹêž°:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "ë¶€ë“œëŸŹìšŽ 큮멬핑"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
-msgstr "í”„ëĄœê·žëžš 음량 ìĄ°ì ˆêž° ì‚Źìš©í•˜êž°(추ìČœí•˜ì§€ 않음)"
+msgstr "í”„ëĄœê·žëžš 음량 ìĄ°ì ˆêž° ì‚Źìš©(추ìČœí•˜ì§€ 않음)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>ëŠŹí”Œë ˆìŽ êČŒìž</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ëŠŹí”Œë ˆìŽ êČŒìž 활성화"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "음반 ëȘšë“œ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "큮멬핑 방지(추ìȜ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>레ëČš ìĄ°ì •</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ëȘšë“  파음 ì†ŒëŠŹ 슝폭:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "태귞가 붙지 않은 파음 슝폭:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "í”„ëĄì‹œ 혞슀튞 읎늄:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "í”„ëĄì‹œ 포튾:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "í”„ëĄì‹œ ì‚Źìš©ìž 읎늄:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "í”„ëĄì‹œ 암혞:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>í”„ëĄì‹œ 섀정</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "í”„ëĄì‹œ ì‚Źìš©"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "í”„ëĄì‹œì—ì„œ 읞슝 ì‚Źìš©"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "ëŹžìž 읞윔딩 자동 감지Ʞ:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "대ìȮ할 ëŹžìž 읞윔딩:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>동작</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "시작할 때 읎얎서 ìžŹìƒ"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "í˜„ìžŹ êłĄìŽ 삭제되멎 닀음 êłĄìœŒëĄœ 진행"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "파음을 ì—Ž 때 ìžŹìƒ ëȘ©ëĄ 지우Ʞ"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "임시 ìžŹìƒ ëȘ©ëĄì—ì„œ 파음 ì—Žêž°"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ìžŹìƒí•  때 êłĄ 메타데읎터넌 ë¶ˆëŸŹì˜€êž°"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>혞환성</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "\\ (ì—­ìŠŹëž˜ì‹œ)ë„Œ 폮더 ê”Źë¶„ìžëĄœ 핎석"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>음반 표지</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "읎 닚얎에 음ìč˜í•˜ëŠ” 귞늌 êČ€ìƒ‰(ìœ€ë§ˆëĄœ ê”Źë¶„):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "읎 닚얎에 음ìč˜í•˜ëŠ” 귞늌 제왞(ìœ€ë§ˆëĄœ ê”Źë¶„):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "êłĄ 파음 읎늄에 음ìč˜í•˜ëŠ” 귞늌 êČ€ìƒ‰"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "ìžŹê·€ êČ€ìƒ‰"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "êČ€ìƒ‰ êčŠìŽ:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>팝업 ì •ëłŽ</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
-msgstr "풍선 도움말 ì •ëłŽ ëłŽìŽêž°"
+msgstr "풍선 도움말 ì •ëłŽ 표시"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "풍선 도움말 지연시간(10쎈 닚위):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
-msgstr "í˜„ìžŹ êłĄì˜ 시간 Ꞟ읎 ëłŽìŽêž°"
+msgstr "í˜„ìžŹ êłĄì˜ 시간 Ꞟ읎 표시"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "제ëȘ©"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "음악가 - 제ëȘ©"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "음악가 - 음반 - 제ëȘ©"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "음악가 - 음반 - 튾랙. 제ëȘ©"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "음악가 [ 음반 ] - 튾랙. 제ëȘ©"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "음반 - 제ëȘ©"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "부돞"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "ì‚Źìš©ìž 정의"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>녾래 표시</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
-msgstr "êłĄ ëȈ혞 ëłŽìŽêž°"
+msgstr "êłĄ ëȈ혞 표시"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
-msgstr "ìžëŠŹìˆ˜ 맞추Ʞ 영(0) ëłŽìŽêž°(2:00대신 02:00ìœŒëĄœ)"
-
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "제ëȘ© 표시 형식에 대한 ì •ëłŽ ëłŽêž°"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "ì‚Źìš©ìž 정의:"
+msgstr "ìžëŠŹìˆ˜ 맞추Ʞ 영(0) 표시(2:00대신 02:00ìœŒëĄœ)"
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "제ëȘ© 형식:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "출렄 í”ŒëŸŹê·žìž:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ì „ì†Ą"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ìž…ë „"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "íššêłŒ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "시각 íššêłŒ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "음반"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ì‚Źìš©ìž 정의:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "였데읎셔슀 환êČœ 섀정"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "였데읎셔슀 섀정"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "(%s) ë””ë ‰í„°ëŠŹë„Œ 만듀 수 없음: %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "위ìč˜ë„Œ 찟을 수 없슔니닀."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ìžŹìƒì€‘ìž êłĄìŽ 없슔니닀."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "음악 CD, %s 튾랙"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ëȘšë…ž"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "슀테레였"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -581,414 +609,426 @@ msgstr[0] "채널 %d개"
#: src/libaudgui/about.c:37
msgid "Credits"
-msgstr "êł”í—Œ"
+msgstr "ì• ìšìŁŒì‹  분"
#: src/libaudgui/about.c:37
msgid "License"
msgstr "띌읎선슀"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "였데읎셔슀 ì •ëłŽ"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"ì •ë§ëĄœ %s을(ë„Œ) 닫윌시êČ ìŠ”ë‹ˆêčŒ? ìžŹìƒ ëȘ©ëĄì„ 가젞옚 후 바뀐 낎용을 잃êČŒë©ë‹ˆë‹€."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "“%s”을(ë„Œ) 완전히 제거하시êČ ìŠ”ë‹ˆêčŒ?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "제거(_R)"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ìžŹìƒ ëȘ©ëĄ ë‹«êž°"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ìžŹìƒ ëȘ©ëĄ 제거"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "읎 메시지 닀시 ëłŽìŽêž° ì•Šêž°(_D)"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "닀시 ëŹ»ì§€ 않음(_D)"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ìžŹìƒ ëȘ©ëĄ 읎늄 바꟞Ʞ"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "섀정..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "읎 ìžŹìƒ ëȘ©ëĄì„ 혞출하Ʞ 위핎 ëŹŽì–Œ 하시êČ ìŠ”ë‹ˆêčŒ?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "활성화(_E)"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "읎퀄띌읎저"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "í”„ëŠŹì•°í”„"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "튾랙"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Ꞟ읎"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "형식:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "품질:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "ëč„튞 ì „ì†Ąìœš:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "애읎시드 ìžŹìŠˆ"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "애읎시드 띜"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "앰ëč„얞튞"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "ëč„ë°„"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "ëž”ëŁšêž€ëž˜ìŠ€"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "ëž”ëŁšìŠ€"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ìł„ëȄ ëź€ì§"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "큎래식"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "ì»šíŠžëŠŹ"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "데슀 메탈"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "디슀윔"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "읎지 ëŠŹìŠ€ë‹"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "포크"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "펑크"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "갱슀터 랩"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "가슀펠"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "귞런지"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "하드 띜"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "í—€ëč„메탈"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "힙합"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "하우슀"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "ìžŹìŠˆ"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "정Ꞁ"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "메닏"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "뉮 에읎지"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "뉮 웚읎람"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "녞읎슈"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "팝"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "펑크 띜"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "랩"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "레êȌ"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "띜"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "띜 ì•€ 륀"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "멬듬 ì•€ ëž”ëŁšìŠ€"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "슀ìčŽ"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "소욞"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "슀윙"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "테크녾"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "튾멬팝"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">없음</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "메타데읎터넌 ì„±êł”ì ìœŒëĄœ 업데읎튞 했슔니닀"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "메타데읎터 업데읎튞에 싀팚했슔니닀"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "튾랙 ì •ëłŽ"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">형식:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">음질:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">ëč„íŠžì „ì†Ąìœš:</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "ì„±êł”ì ìœŒëĄœ 저임"
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">제ëȘ©</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "저임 였넘"
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">음악가</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">음반</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ìŁŒì„</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">ìž„ë„Ž</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">연도</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "튾랙 ëȈ혞"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">튾랙 ëȈ혞</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "저임(_S)"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "없음"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "%s에 대한 ì •ëłŽë„Œ ëłŒ 수 없슔니닀.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "걎너뛰Ʞ(_J)"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "시간 읎동"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "시간 ìž…ë „(분:쎈):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "%s을(ë„Œ) ëźì–Žì“°ì‹œêČ ìŠ”ë‹ˆêčŒ?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "ëźì–Žì“°êž° 확읞"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "ìžŹìƒ ëȘ©ëĄ ë‚ŽëłŽë‚Žêž°"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ìžŹìƒ ëȘ©ëĄ 가젞였Ʞ"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "%s을(ë„Œ) ëźì–Žì“°ì‹œêČ ìŠ”ë‹ˆêčŒ?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "대ꞰëȘ©ëĄ êŽ€ëŠŹìž"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "큐에서 ëčŒë‚Žêž°(_U)"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "파음 ì—Žêž°"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "ì—Žêž°(_O)"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "ì—Ž 때 대화상자 ë‹«êž°(_D)"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "파음 추가"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "선택핎서 ì—Žë©Ž 대화상자 ë‹«êž°"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "추가(_A)"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "추가하멎 대화상자 ë‹«êž°"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "추가할 때 대화상자 ë‹«êž°(_D)"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "대Ʞ엎(_Q)"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "대Ʞ엎 í•Žì œ(_Q)"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "êłĄ 걎너뛰Ʞ"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "필터: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "필터(_F):"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "êž°ì–”"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "걎너뛞 때 ë‹«êž°(_L)"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "지우Ʞ(_R)"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "읎동하멎 ë‹«êž°"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "ìžŹìƒ ëȘ©ëĄ êŽ€ëŠŹìž"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "항ëȘ©"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "읎늄 바꟞Ʞ(_R)"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "ìƒˆëĄœ 만듀Ʞ(_N)"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "읎늄 바꟞Ʞ(_A)"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "ìžŹìƒ(_P)"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "ìžŹìƒ ëȘ©ëĄ 활성화시 대화상자 ë‹«êž°(_C)"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "URL ì—Žêž°"
@@ -996,14 +1036,17 @@ msgstr "URL ì—Žêž°"
msgid "Add URL"
msgstr "URL 추가"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "URL ìž…ë „:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
msgstr ""
"\n"
"(읎하 메시지는 숚êČšì ž 있슔니닀.)"
+
+#~ msgid "_Remember"
+#~ msgstr "êž°ì–”(_R)"
diff --git a/po/ky.po b/po/ky.po
index d79b8aa..fe6ef76 100644
--- a/po/ky.po
+++ b/po/ky.po
@@ -5,15 +5,16 @@
# Translators:
# <chingis091@lavabit.com>, 2012
# chingis <translatorky@lavabit.com>, 2013
-# chingis <translatorky@lavabit.com>, 2013
-# chingis <translatorky@lavabit.com>, 2012-2013
+# chingis, 2013
+# chingis, 2013
+# chingis, 2012-2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-04-23 14:45+0000\n"
-"Last-Translator: chingis <translatorky@lavabit.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Kirgyz (http://www.transifex.com/projects/p/audacious/"
"language/ky/)\n"
"Language: ky\n"
@@ -22,548 +23,573 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Đ˜Đ·ĐŽĐ”Đ»ÒŻÒŻĐŽÓ© ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d фаĐčĐ» табылЎы"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (туура ŃĐŒĐ”Ń UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Đ–Đ°ÒŁŃ‹ ĐŸĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐž"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "КДзДĐșтДгО ĐŸĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐžĐœ ĐŸĐčĐœĐŸŃ‚ŃƒĐż Đ±Đ°ŃˆŃ‚ĐŸĐŸ"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Đ’Đ”Ń€ŃĐžŃĐœŃ‹ ĐșÓ©Ń€ŃÓ©Ń‚ÒŻÒŻ"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "КДзДĐșтДгО ырЮы бОр азга Ń‚ĐŸĐșŃ‚ĐŸŃ‚ŃƒŃƒ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "КДзДĐșтДгО ырЮы Ń‚ĐŸĐșŃ‚ĐŸŃ‚ŃƒŃƒ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr ""
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "ОĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐžĐœĐ” фаĐčлЎарЎы ĐșĐŸŃˆŃƒŃƒ"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "БашĐșы Ń‚Đ”Ń€Đ”Đ·Đ”ĐœĐž ĐșÓ©Ń€ŃÓ©Ń‚ÒŻÒŻ"
-#: src/audacious/main.c:242
-msgid "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
msgstr ""
-#: src/audacious/main.c:243
-msgid "Quit on playback stop"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
msgstr ""
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Đ’Đ”Ń€ŃĐžŃĐœŃ‹ ĐșÓ©Ń€ŃÓ©Ń‚ÒŻÒŻ"
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr ""
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr ""
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ЀАЙЛ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- ĐŒŃƒĐ»ŃŒŃ‚ĐžĐŒĐ”ĐŽĐžĐ°Đ»Ń‹Đș фаĐčлЎарЎы ĐŸĐčĐœĐŸŃ‚ŃƒŃƒ"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr ""
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr ""
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
+msgid "Cannot load %s: unsupported file extension."
msgstr ""
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "саĐșŃ‚ĐŸĐŸ"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "Đ¶ÒŻĐșŃ‚Ó©Ó©"
-
-#: src/audacious/playlist-files.c:133
+#: src/audacious/playlist-files.c:185
#, c-format
-msgid "Cannot save %s: plugin does not support saving."
+msgid "Cannot save %s: unsupported file extension."
msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Đ–Đ°ÒŁŃ‹ ĐŸĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐž"
-
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Азыр ĐŸĐčĐœĐŸŃ‚ŃƒĐ»ŃƒĐż жатат"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr ""
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s Đ¶Ó©ĐœÒŻĐœĐŽÓ©"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Ń‹Ń€Đ°ŃŃ‚ĐŸĐŸĐ»ĐŸŃ€Ńƒ"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "ÒźĐœ"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ĐąĐ°Ń€ĐŒĐ°Đș"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ОĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐž"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Đ«Ń€ Đ¶Ó©ĐœÒŻĐœĐŽÓ© ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ĐŸĐ»Đ°ĐłĐžĐœĐŽĐ”Ń€"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Жалпы"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Đ­Ń„Ń„Đ”ĐșттДр"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Đ’ĐžĐ·ŃƒĐ°Đ»ĐŽĐ°ŃˆŃ‚Ń‹Ń€ŃƒŃƒ"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Корош"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ĐąŃ€Đ°ĐœŃĐżĐŸŃ€Ń‚"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "АтĐșаруучусу"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ĐĐ»ŃŒĐ±ĐŸĐŒŃƒ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Аты"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Đ–ĐŸĐ»Ń‡ĐŸĐœŃƒĐœ ĐœĐŸĐŒĐ”Ń€Đž"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Đ–Đ°ĐœŃ€"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "ЀаĐčĐ» аты"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "ЀаĐčлга Đ¶ĐŸĐ»"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Дата"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Đ–Ń‹Đ»"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ĐšĐŸĐŒĐŒĐ”ĐœŃ‚Đ°Ń€ĐžĐč"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ĐšĐŸĐŽĐ”Đș"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Сапат"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Đ–ĐŸĐș"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Араб"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "БалтОĐșĐ°"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "КытаĐč"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ГрДĐș"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ИĐČрот"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Đ–Đ°ĐżĐŸĐœ"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "ĐšĐŸŃ€Đ”Đč"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "ĐŸĐŸĐ»ŃĐș"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Орус"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "йаĐčĐČĐ°ĐœŃŒ"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "ĐąÒŻŃ€Đș"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "ĐžĐŸĐŒĐ° чДĐșот"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ĐĐ»ŃŒĐ±ĐŸĐŒ Ń€Đ”Đ¶ĐžĐŒĐž"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Чыгыш ĐżĐ»Đ°ĐłĐžĐœĐž:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Đ§Ń‹ĐłŃ‹ŃˆŃ‚Ń‹Đœ Ń‹Ń€Đ°ŃŃ‚ĐŸĐŸĐ»ĐŸŃ€Ńƒ</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Đ‘ĐžŃ‚Ń‚ĐžĐœ Ń‚Đ”Ń€Đ”ÒŁĐŽĐžĐłĐž:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Đ‘ŃƒŃ„Đ”Ń€ĐŽĐžĐœ Ó©Đ»Ń‡Ó©ĐŒÒŻ:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ĐŒŃ"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Đ–ŃƒĐŒŃˆĐ°Đș ĐșĐ”ŃÒŻÒŻ"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr ""
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr ""
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ĐĐ»ŃŒĐ±ĐŸĐŒ Ń€Đ”Đ¶ĐžĐŒĐž"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr ""
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Đ”Đ”ÒŁĐłŃŃĐ»ĐŽĐ”Ń€ĐŽĐž Đ¶Ó©ĐœĐłÓ© салуу</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr ""
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "ЮБ"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr ""
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "ХДрĐČДр:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "ĐŸĐŸŃ€Ń‚:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "ĐšĐŸĐ»ĐŽĐŸĐœŃƒŃƒŃ‡Ńƒ аты:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Хырсөз:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ĐŸŃ€ĐŸĐșŃĐžĐœĐž Ń‹Ń€Đ°ŃŃ‚ĐŸĐŸ</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ĐŸŃ€ĐŸĐșŃĐžĐœĐž ĐșĐŸĐ»ĐŽĐŸĐœŃƒŃƒ"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr ""
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr ""
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr ""
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>АраĐșДт</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Đ–ÒŻŃ€ĐłÒŻĐ·ĐłÓ©ĐœĐŽÓ© ĐŸĐčĐœĐŸŃ‚ŃƒŃƒĐœŃƒ ŃƒĐ»Đ°ĐœŃ‚Đ° Đ±Đ”Ń€ÒŻÒŻ"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr ""
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "ЀаĐčлЎарЎы ачĐșĐ°ĐœĐŽĐ° ĐŸĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐžĐœ Ń‚Đ°Đ·Đ°Đ»ĐŸĐŸ"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr ""
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr ""
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>БатышĐșычтыĐș</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ĐĐ»ŃŒĐ±ĐŸĐŒ тышы</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr ""
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Đ Đ”ĐșурсоĐČĐŽĐžĐș ОзЎөө"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "ИзЎөө Ń‚Đ”Ń€Đ”ÒŁĐŽĐžĐłĐž:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>КалĐșып чыгуучу ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "КалĐșŃ‹ĐŒĐ° ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‚Ń‹ ĐșÓ©Ń€ŃÓ©Ń‚ÒŻÒŻ"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr ""
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr ""
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "АйЫ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "АбКАРУУЧУСУ - АйЫ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "АбКАРУУЧУСУ - АЛЬБОМУ - АйЫ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "АбКАРУУЧУСУ - АЛЬБОМУ - ЖОЛЧОСУ, АйЫ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "АбКАРУУЧУСУ [ АЛЬБОМУ ] - ЖОЛЧОСУ, АйЫ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "АЛЬБОМУ - АйЫ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ĐšĐ°Ń‚Đ”ĐłĐŸŃ€ĐžŃ"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Ӛз Ń‹Ń€Đ°ŃŃ‚ĐŸĐŸĐ»ĐŸŃ€"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>ЫрЎы ĐșÓ©Ń€ŃÓ©Ń‚ÒŻÒŻ</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Đ«Ń€ ĐœĐŸĐŒĐ”Ń€ĐžĐœ ĐșÓ©Ń€ŃÓ©Ń‚ÒŻÒŻ"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr ""
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr ""
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Ӛз Ń„ĐŸŃ€ĐŒĐ°Ń‚:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "ĐŃ‚Đ°Đ»Ń‹ŃˆŃ‚Ń‹Đœ Ń„ĐŸŃ€ĐŒĐ°Ń‚Ń‹:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Чыгыш ĐżĐ»Đ°ĐłĐžĐœĐž:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ĐąŃ€Đ°ĐœŃĐżĐŸŃ€Ń‚"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Корош"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Đ­Ń„Ń„Đ”ĐșттДр"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Đ’ĐžĐ·ŃƒĐ°Đ»ĐŽĐ°ŃˆŃ‚Ń‹Ń€ŃƒŃƒ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Жалпы"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Ӛз Ń„ĐŸŃ€ĐŒĐ°Ń‚:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious'Ń‚ŃƒĐœ Ń‹Ń€Đ°ŃŃ‚ĐŸĐŸĐ»ĐŸŃ€Ńƒ"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ĐšĐ°Ń‚Đ°Đ»ĐŸĐłĐŽŃƒ Đ¶Đ°Ń€Đ°Ń‚ŃƒŃƒĐłĐ° ĐŒÒŻĐŒĐșÒŻĐœ ŃĐŒĐ”Ń (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "ĐžŃ€ŃƒĐœŃƒ Ń‚Đ°Đ±Ń‹Đ»ĐłĐ°Đœ Đ¶ĐŸĐș."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ЭчтДĐșĐ” ĐŸĐčĐœĐŸĐ»ĐłĐŸĐœ Đ¶ĐŸĐș."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "ĐŃƒĐŽĐžĐŸ CD, Đ¶ĐŸĐ»Ń‡ĐŸ %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ĐœĐŸĐœĐŸ"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ĐĄŃ‚Đ”Ń€Đ”ĐŸ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -577,407 +603,420 @@ msgstr "АĐČŃ‚ĐŸŃ€Đ»ĐŸŃ€"
msgid "License"
msgstr "Đ›ĐžŃ†Đ”ĐœĐ·ĐžŃ"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Audacious Đ¶Ó©ĐœÒŻĐœĐŽÓ©"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
msgstr ""
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ĐąĐžĐ·ĐŒĐ”ĐœĐž жабуу"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Đ‘ŃƒĐ» Đ±ĐžĐ»ĐŽĐžŃ€ĐŒĐ”ĐœĐž ĐșĐ°ĐčŃ‚Đ°ĐŽĐ°Đœ Đșөрсөтпөө"
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ОĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐžĐœĐžĐœ Đ°Ń‚Ń‹Đœ Ó©Đ·ĐłÓ©Ń€Ń‚ÒŻÒŻ"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "Ń‹Ń€Đ°ŃŃ‚ĐŸĐŸĐ»ĐŸŃ€ ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_ĐšÒŻĐčĐłÒŻĐ·ÒŻÒŻ"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Гц"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 ĐșГц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 ĐșГц"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Đ­ĐșĐČалаĐčзДр"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ĐšÒŻŃ‡Ó©Ń‚ÒŻÒŻ"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Đ–ĐŸĐ»Ń‡ĐŸ"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "ĐŁĐ·ŃƒĐœĐŽŃƒĐș"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Đ­ĐčсОЎ-Ўжаз"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Đ­ĐčсОЎ-Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Đ­ĐŒĐ±ĐžĐ”ĐœŃ‚"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Đ‘ĐžĐ±ĐŸĐż"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Блюграсс"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Блюз"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ĐšĐ°ĐŒĐ”Ń€Đ°Đ»Ń‹Đș ĐŒŃƒĐ·Ń‹ĐșĐ°"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "КлассОĐșалыĐș"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "ĐšĐ°ĐœŃ‚Ń€Đž"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Дэт-ĐŒĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ДосĐșĐŸ"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Đ–Đ”ÒŁĐžĐ» ĐŒŃƒĐ·Ń‹ĐșĐ°"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "ЭлЎОĐș"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Đ€Đ°ĐœĐș"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Đ“Đ°ĐœĐłŃŃ‚Đ°-рэп"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Đ“ĐŸŃĐżĐ”Đ»"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Đ“Ń€Đ°ĐœĐ¶"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "ЄарЎ-Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Đ„Đ”ĐČĐž-ĐŒĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ЄОп-Ń…ĐŸĐż"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "Єаус"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Джаз"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Đ”Đ¶Đ°ĐœĐłĐ»"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "ĐœĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "Нью-эĐčЎж"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "Đ–Đ°ÒŁŃ‹ Ń‚ĐŸĐ»ĐșŃƒĐœ"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ĐĐŸĐčĐ·"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "ĐŸĐŸĐż"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "ĐŸĐ°ĐœĐș-Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Рэп"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "РДггО"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Đ ĐŸĐș-Đœ-Ń€ĐŸĐ»Đ»"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Đ ĐžŃ‚ĐŒ-Đœ-блюз"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "ĐĄĐșĐ°"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "ĐĄĐŸŃƒĐ»"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "ĐĄĐČĐžĐœĐł"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "ĐąĐ”Ń…ĐœĐŸ"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "броп-Ń…ĐŸĐż"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ĐșĐŸĐ» жДтĐșОс</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ĐœĐ”Ń‚Đ°ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‚Đ°Ń€ ĐžĐčгОлОĐșŃ‚ÒŻÒŻ Ń‚ÒŻŃ€ĐŽÓ© Đ¶Đ°ÒŁŃ‹Ń€Ń‚Ń‹Đ»ĐŽŃ‹"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ĐœĐ”Ń‚Đ°ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚Ń‚Ń‹ Đ¶Đ°ÒŁŃ‹Ń€Ń‚ŃƒŃƒ ĐŸÒŁŃƒĐœĐ°Đœ чыĐșĐșĐ°Đœ Đ¶ĐŸĐș"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Đ–ĐŸĐ»Ń‡ĐŸ Đ¶Ó©ĐœÒŻĐœĐŽÓ© ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Đ€ĐŸŃ€ĐŒĐ°Ń‚:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Сапат:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">БОтрДĐčт:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Аты</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">АтĐșаруучусу</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ĐĐ»ŃŒĐ±ĐŸĐŒ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ĐšĐŸĐŒĐŒĐ”ĐœŃ‚Đ°Ń€ĐžĐčлДр</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Đ–Đ°ĐœŃ€</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Đ–Ń‹Đ»</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Đ–ĐŸĐ»Ń‡ĐŸĐœŃƒĐœ ĐœĐŸĐŒĐ”Ń€Đž</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d ĐșбОт/с"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "%s ÒŻŃ‡ÒŻĐœ ĐŒĐ°Đ°Đ»Ń‹ĐŒĐ°Ń‚ Đ¶ĐŸĐș.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "УбаĐșытĐșĐ° Ó©Ń‚ÒŻÒŻ"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "УбаĐșытты ĐșĐžŃ€ĐłĐžĐ·ĐžÒŁĐžĐ· (ĐŒÒŻĐœÓ©Ń‚:сДĐșŃƒĐœĐŽĐ°):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "%s ĐșĐ°ĐčŃ‚Đ°ĐŽĐ°Đœ Đ¶Đ°Đ·ĐŽŃ‹Ń€ŃƒŃƒ?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "ОĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐžĐœ эĐșŃĐżĐŸŃ€Ń‚Ń‚ĐŸĐŸ"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ОĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐžĐœ ĐžĐŒĐżĐŸŃ€Ń‚Ń‚ĐŸĐŸ"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "%s ĐșĐ°ĐčŃ‚Đ°ĐŽĐ°Đœ Đ¶Đ°Đ·ĐŽŃ‹Ń€ŃƒŃƒ?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "КДзДĐș башĐșаруусу"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "ЀаĐčлЎарЎы ачуу"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "ЀаĐčлЎарЎы ĐșĐŸŃˆŃƒŃƒ"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ЀаĐčлЎарЎы ачĐșĐ°ĐœĐŽĐ°Đœ ĐșĐžĐčĐžĐœ ĐŽĐžĐ°Đ»ĐŸĐłĐŽŃƒ жабуу"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ĐšĐŸŃˆĐșĐŸĐœĐŽĐŸĐœ ĐșĐžĐčĐžĐœ ĐŽĐžĐ°Đ»ĐŸĐłĐŽŃƒ жабуу"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "КДзДĐșĐșĐ” _ĐșĐŸŃŽŃƒ"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "КДзДĐșŃ‚Đ”Đœ _алуу"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Ырга Ó©Ń‚ÒŻÒŻ"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Đ€ĐžĐ»ŃŒŃ‚Ń€: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Đ€ĐžĐ»ŃŒŃ‚Ń€:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "ЭсĐșĐ” саĐșŃ‚ĐŸĐŸ"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_ĐąĐ°Đ·Đ°Đ»ĐŸĐŸ"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ӹтĐșÓ©ĐœĐŽÓ©Đœ ĐșĐžĐčĐžĐœ жабуу"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "ОĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”Đ»Đ”Ń€ĐžĐœ башĐșаруу"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Đ–Đ°Đ·ŃƒŃƒĐ»Đ°Ń€"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_ĐŃ‚Ń‹Đœ Ó©Đ·ĐłÓ©Ń€Ń‚ÒŻÒŻ"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "ОĐčĐœĐŸŃ‚ŃƒŃƒ Ń‚ĐžĐ·ĐŒĐ”ŃĐžĐœ Đ°ĐșтоĐČацоя ĐșŃ‹Đ»ĐłĐ°ĐœĐŽĐ° ĐŽĐžĐ°Đ»ĐŸĐłĐŽŃƒ _жабуу"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "URL ачуу"
@@ -985,11 +1024,11 @@ msgstr "URL ачуу"
msgid "Add URL"
msgstr "URL ĐșĐŸŃˆŃƒŃƒ"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "URL ĐșĐžŃ€ĐłĐžĐ·ĐžÒŁĐžĐ·:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/lt.po b/po/lt.po
index ae7c53b..9c51026 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -4,18 +4,18 @@
#
# Translators:
# <>, 2012
-# Algimantas Margevičius <gymka@archlinux.lt>, 2012-2013
+# Algimantas Margevičius <gymka@archlinux.lt>, 2011-2014
# Algimantas Margevičius <gymka@archlinux.lt>, 2011, 2012
-# Algimantas Margevičius <margevicius.algimantas@gmail.com>, 2011, 2012
+# Algimantas Margevičius <margevicius.algimantas@gmail.com>, 2011-2012
# Algimantas Margevičius <gymka@archlinux.lt>, 2011
# Rimas Kudelis <rq@akl.lt>, 2004
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-04 08:30+0000\n"
-"Last-Translator: Algimantas Margevičius <gymka@archlinux.lt>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Lithuanian (http://www.transifex.com/projects/p/audacious/"
"language/lt/)\n"
"Language: lt\n"
@@ -25,11 +25,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "IeĆĄkoma ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -37,129 +37,122 @@ msgstr[0] "%d failas rastas"
msgstr[1] "%d failai rasti"
msgstr[2] "%d failĆł rasti"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (netinkamas UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Naujas grojaraĆĄtis"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Klaida įkeliant Winamp EQF failą „%s“"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Klaida"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "GrojaraĆĄtyje eiti atgal"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Rodyti komandinės eilutės pagalbą"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Pradėti groti dabartiniÌš grojaraštiÌš"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Rodyti versiją"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pristabdyti grojamą dainą"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Pradėti atkĆ«rimą"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Sustabdyti grojamą dainą"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Pristabdyti atkĆ«rimą"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pristabdyti, jei grojama, kitu atveju groti"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "GrojaraĆĄtyje eiti pirmyn"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Sustabdyti atkĆ«rimą"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Ankstesnė daina"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Rodyti ơokti į bylą langą"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Kita daina"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Pridėti failus į grojaraơtį"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Pridėti naujus failus į laikiną grojaraơtį"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Pridėti failus į laikiną grojaraơtį"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Parodyti pagrindinį langą"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Begalvis reĆŸimas"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Rodyti perėjimo prie dainos langą"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Paleisti be grafinės sąsajos"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "SustabdĆŸius atkĆ«rimą baigti"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Rodyti versiją"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Rodyti derinimo praneĆĄimus"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FAILAS..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "NeĆŸinomas parametras: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- groti daugialypės terpės failus"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "NeĆŸinomas parametras: %c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Bandykite „%s --help“ iơsamesniai informacijai.\n"
+"Naudojimas: [PARAMETRAS]... [FAILAS]...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Failui %s dekoderis nerastas."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "Atverti %s nepavyko."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Neįmanoma %s %s: nepalaikomas failo plėtinys."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "iĆĄsaugoti"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ÄŻkelti"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Nepavyko įkelti %s: nepalaikomas failo plėtinys."
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Neįmanoma %s %s: nepalaikomas failo plėtinys."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Naujas grojaraĆĄtis"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Nepavyko iơsaugoti %s: nepalaikomas failo plėtinys."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Dabar grojama"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -167,413 +160,445 @@ msgstr ""
"Vis dar vyksta(arba iơjungta) meta duomenƳ skaitymas, todėl neįmanoma "
"surikiuoti grojaraơčio."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Apie %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s nustatymai"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Nustatyti"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Atsisakyti"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_UĆŸverti"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Nustatymai"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Apie"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Äźskiepiai..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "IĆĄvaizda"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Garsas"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Tinklas"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "GrojaraĆĄtis"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Dainos informacija"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Äźskiepiai"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Pagrindiniai"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efektai"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Vizualizacija"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Äźvestis"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transportas"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Atlikėjas"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Albumas"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Pavadinimas"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Takelio numeris"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Ćœanras"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Failo vardas"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Failo kelias"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Metai"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komentaras"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodekas"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kokybė"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Joks"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ArabĆł"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltijos"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "KinĆł"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "GraikĆł"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "HebrajĆł"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JaponĆł"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "KorėjiečiƳ"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "LenkĆł"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "RusĆł"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "TaivaniečiƳ"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "TurkĆł"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Slankiojantis taĆĄkas"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Albumo reĆŸimas"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Sąsajos nustatymai</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Sąsajos įskiepis:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "IĆĄvesties ÄŻskiepis:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>IĆĄvesties nustatymai</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Nominalus bitĆł sekos greitis:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Buferio dydis (kb):"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Lengvas apkrapymas"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Naudoti programinį garso valdymą (nerekomenduojama)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Garso lygio sulyginimas</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ļjungt garso lygio sulyginimą"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Albumo reĆŸimas"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "UĆŸdrausti apkarpymą (rekomenduojama)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Nustatyti lygius</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Pagarsinti visus failus:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Pagarsinti failus be ĆŸymiĆł:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Tarpinis serveris:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Tarpinio serverio prievadas:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Tarpinio serverio naudotojas:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Tarpinio serverio slaptaĆŸodis:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Tarpinio serverio nustatymai</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Leisti naudoti tarpinÄŻ serverÄŻ"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Su tarpiniu serveriu naudoti tapatybės nustatymą"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatinis koduotės nustatymas:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Atsarginis kodavimas:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Elgsena</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "PaleidĆŸiant tęsti atkĆ«rimą"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Kai pasirinkta daina iĆĄtrinama, ĆŸengti ÄŻ priekÄŻ"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Kai atveriamas failas, iĆĄvalyti grojaraĆĄtÄŻ"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Atverti failus laikiname grojaraĆĄtyje"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Kol negrojama, dainom neÄŻkrauti meta duomenĆł"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Suderinamumas</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Laikyti \\ (ÄŻĆŸambinÄŻ kairÄŻjÄŻ brĆ«kĆĄnÄŻ) aplanko skirtuku"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Albumo apivadalinimas</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"IeĆĄkoti paveikslėliĆł kurie atitinka ĆĄiuos ĆŸodĆŸius (atskirti kableliais):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "IĆĄskirti ĆŸodĆŸius atitinkančius ĆĄiuos ĆŸodĆŸius (atskirti kableliais):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Ieơkoti paveikslėliƳ atitinkančiƳ dainos failo vardą"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "IeĆĄkoti rekursyviai"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "PaieĆĄkos gylis:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Iơơokančio lango informacija</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Rodyti iơơokantį informacijos langą"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "IĆĄĆĄokančio lango rodymo trukmė(deĆĄimtimis sekundĆŸiĆł):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Rodyti grojančios dainos laiko juostą"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "PAVADINIMAS"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ATLIKĖJAS - PAVADINIMAS"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ATLIKĖJAS - ALBUMAS - PAVADINIMAS"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ATLIKĖJAS - ALBUMAS - TAKELIS. PAVADINIMAS"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ATLIKĖJAS [ ALBUMAS ] - TAKELIS. PAVADINIMAS"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUMAS - PAVADINIMAS"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategorija"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Pasirinktinė"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>KĆ«rinio pavadinimo vaizdavimas</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Rodyti dainos numerÄŻ"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Rodyti nulius priekyje (02:00 vietoj 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Parodyti informaciją apie pavadinimo formatą"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Pasirinktinė eilutė:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Pavadinimo formatas:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "IĆĄvesties ÄŻskiepis:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transportas"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Äźvestis"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efektai"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Vizualizacija"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Pagrindiniai"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Pasirinktinė eilutė:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
msgstr "Audacious nustatymai"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nepavyko sukurti aplanko (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Pozicija nerasta."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Negroja jokia daina."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, takelis %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -589,409 +614,420 @@ msgstr "Padėkos"
msgid "License"
msgstr "Licencija"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Apie Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Ar tu tikrai nori uĆŸdaryti %s? Jei taip, visi pakeitimai padaryti po "
-"grojaraơčio eksportavimo bus prarasti."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Ar tikrai norite visam laikui paơalinti „%s“?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_PaĆĄalinti"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "UĆŸverti grojaraĆĄtÄŻ"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "PaĆĄalinti grojaraĆĄtÄŻ"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Daugiau neberodyti ĆĄio praneĆĄimo"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Daugiau nebeklausti"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Pervadinti"
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Pervadinti grojaraĆĄtÄŻ"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "nustatymai ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Kaip pavadinsite ĆĄÄŻ grojaraĆĄtÄŻ?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Äźjungtas"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ekvalaizeris"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamp"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Takelis"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Trukmė"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Formatas:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Kokybė:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "BitĆł daĆŸnis:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebob"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classical"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-Hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-Hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Sėkmingai iơsaugota"
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Meta duomenys atnaujinti sėkmingai"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "ÄźraĆĄymo klaida"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Meta duomenĆł atnaujinti nepavyko"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Dainos numeris"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Takelio informacija"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_ÄźraĆĄyti"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formatas:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kokybė:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitai per sekundę:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Pavadinimas</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Atlikėjas</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Albumas</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Komentaras</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Ćœanras</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Metai</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Takelio numeris</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/A"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Nėra informacijos apie %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Ć okti "
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Ơokti į laiką"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ļveskite laiką (minutės:sekundės):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "PerraĆĄyti %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "P_erraĆĄyti"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Patvirtinkite perraơymą"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Eksportuoti grojaraĆĄtÄŻ"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Eksportuoti"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Äźkrauti grojaraĆĄtÄŻ"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "PerraĆĄyti %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importuoti"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Eilės redaktorius"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_Iơ eilės"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Atverti failus"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Atverti"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Atvėrus, uĆŸverti _dialogą"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Pridėti failus"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Atvėrus, uĆŸverti dialogą"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Pridėti"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Pridėjus, uĆŸverti dialogą"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Pridėjus, uĆŸverti _dialogą"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_ļ eilę"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Iơ _eilės"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Perơokti į dainą"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtruoti:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtruoti:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Prisiminti"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "IĆĄvalyt_i"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "UĆŸverti perĆĄokus"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "UĆŸverti perĆĄokant"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Grojaraơčio redaktorius"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Elementai"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Naujas"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
msgstr "_Pervadinti"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Atkurti"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Äźjungiant grojaraĆĄtÄŻ, uĆŸverti dialogą"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Atverti URL"
@@ -999,11 +1035,11 @@ msgstr "Atverti URL"
msgid "Add URL"
msgstr "Pridėti URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Äźveskite URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/lv.po b/po/lv.po
index c07eca0..8f6f23f 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -3,14 +3,15 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# hairy_latvian <einars8@gmail.com>, 2014
# hairy_latvian <einars8@gmail.com>, 2009, 2011, 2012
# hairy_latvian <einars8@gmail.com>, 2009,2011-2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-04-28 18:37+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 16:38+0000\n"
"Last-Translator: hairy_latvian <einars8@gmail.com>\n"
"Language-Team: Latvian (http://www.transifex.com/projects/p/audacious/"
"language/lv/)\n"
@@ -21,11 +22,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Meklē ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -33,129 +34,120 @@ msgstr[0] "Atrasts %d fails"
msgstr[1] "Atrasti %d faili"
msgstr[2] "Atrasti %d faili"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (nederīgs UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Jauns repertuārs"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "KÄŒĆ«da importējot Winamp EQF failu '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "KÄŒĆ«da"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Repertuārā izlaist atpakaČgaitā"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Parādīt komandrindas palīdzību"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Sākt atskaƆot paơreizējo repertuāru"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Parādīt versiju"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Nopauzēt paơreizējo dziesmu"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Sākt atskaƆoơanu"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Apturēt paơreizējo dziesmu"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Pauzēt atskaƆoơanu"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Nopauzēt, ja paơlaik atskaƆo, citādi atskaƆot"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Repertuārā izlaist uz priekƥu"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Apturēt atskaƆoơanu"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Pāriet uz iepriekơējo dziesmu"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Parādīt 'Pāriet uz failu' dialogu"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Pāriet uz nākamo dziesmu"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Pievieno failus repertuāram"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
msgstr "Pievienot jaunus failus pagaidu repertuāram"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Rādīt galveno logu"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Bezgalvas reĆŸÄ«ms"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Rādīt logu 'pāriet uz dziesmu'"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Palaist bez grafiskās saskarnes"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Iziet, kad beidzas atskaƆoơana"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Parādīt versiju"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Drukāt atkÄŒĆ«doĆĄanas ziƆojumus"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FAILS..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Nezināma opcija: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- atskaƆot multivides failus"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Nezināma opcija: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-msgstr ""
-"%s: %s\n"
-"Mēģiniet `%s --help', lai iegĆ«tu vairāk informācijas.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr "LietoĆĄana: audacious [OPCIJA] ... [FAILS] ...\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Netika atrasts dekodētājs priekơ %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "Neizdevās atvērt %s."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Neizdevās %s %s: neatbalstīts faila paplaƥinājums."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "saglabāt"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ielādēt"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Neizdevās ielādēt %s: neatbalstÄ«ts faila paplaĆĄinājums."
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Neizdevās %s %s: neatbalstīts faila paplaƥinājums."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Jauns repertuārs"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Neizdevās saglabāt %s: neatbalstīts faila paplaƥinājums."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Paơreiz atskaƆo"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -163,412 +155,444 @@ msgstr ""
"Repertuārs nevar tikt sakārtots, jo joprojām noris metadatu skenēơana (vai "
"arī tā ir atslēgta)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Par %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Par"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s iestatījumi"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Iestatījumi"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "Ie_statīt"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "At_celt"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Aizvērt"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "I_estatījumi"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Par"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "S_praudƆi ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Izskats"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "SkaƆa"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "TÄ«kls"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Repertuārs"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Dziesmas info"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "SpraudƆi"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Vispārīgi"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efekti"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Vizualizēơana"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Ievade"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transports"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Izpildītājs"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Albums"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Nosaukums"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "CeliƆa numurs"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Ćœanrs"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Faila nosaukums"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Faila ceÄŒĆĄ"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Datums"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Gads"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komentārs"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodeks"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kvalitāte"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Neviens"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arābu"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltu"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Ķīnieƥu"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "GrieÄ·u"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Ebreju"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JapāƆu"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "KorejieĆĄu"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "PoÄŒu"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Krievu"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taivānu"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turku"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Peldoƥā punkta"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Albuma reĆŸÄ«ms"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Saskarnes iestatījumi</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Saskarnes spraudnis:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Izvades spraudnis:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Izvades iestatījumi</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bitu dziÄŒums:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Bufera izmērs:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "'Mīkstā' apgrieƥana"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Lietot programmatĆ«ras skaÄŒuma kontroli (nav ieteicams)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Normalizēơana</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Ieslēgt normalizēơanu"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Albuma reĆŸÄ«ms"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Novērst apgrieơanu (ieteicams)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Regulēt lÄ«meƆus</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Pastiprināt visus failus:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Pastiprināt netagotos failus:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Starpniekservera nosaukums:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Starpniekservera ports:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Starpniekservera lietotājvārds:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Starpniekservera parole:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Starpniekservera konfigurācija</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Ieslēgt starpniekservera izmantoơanu"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Savienojoties ar starpniekserveri, izmantot autentificēơanos"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automātiska rakstzÄ«mju kodējuma noteikĆĄana priekĆĄ:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "AtkāpĆĄanās rakstzÄ«mju kodējumi:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Izturēơanās</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Turpināt atskaƆoơanu pēc programmas palaiơanas"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Iet uz priekơu, ja paơreizējā dziesma tiek dzēsta"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Atverot failus, notīrīt repertuāru"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Atvērt failus pagaidu repertuārā"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Neielādēt metadatus, lÄ«dz dziesma tiek atskaƆota"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Savietojamība</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpretēt \\ (otrādo slīpsvītru) kā mapju atdalītāju"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Albuma vāks</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Meklēt attēlus, kuri atbilst ĆĄiem vārdiem (atdalÄ«tiem ar komatu):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "NeiekÄŒaut attēlus, kuri atbilst ĆĄiem vārdiem (atdalÄ«tiem ar komatu):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Meklēt attēlus, kas atbilst dziesmas faila nosaukumam"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Meklēt rekursīvi"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Meklēơanas dziÄŒums:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Izlecoƥā informācija</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Rādīt izlecoƥo informāciju"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Izlecoƥā loga aizture (sekundes desmitdaÄŒas):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "RādÄ«t laika mērogu paĆĄreizējai dziesmai"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "NOSAUKUMS"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "IZPILDÄȘTĀJS - NOSAUKUMS"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "IZPILDÄȘTĀJS - ALBUMS - NOSAUKUMS"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "IZPILDÄȘTĀJS - ALBUMS - CELIƅƠ. NOSAUKUMS"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "IZPILDÄȘTĀJS [ ALBUMS ] - CELIƅƠ. NOSAUKUMS"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUMS - NOSAUKUMS"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategorija"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Pielāgots"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Dziesmu attēlojums</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Rādīt dziesmu numurus"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Rādīt ievadoƥās nulles (02:00 nevis 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Rādīt informāciju par nosaukuma formātu"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Pielāgota virkne:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Nosaukuma formāts:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Izvades spraudnis:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transports"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Ievade"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efekti"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Vizualizēơana"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Vispārīgi"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Pielāgota virkne:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
msgstr "Audacious iestatījumi"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Neizdevās izveidot mapi (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Pozīcija nav atrasta."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Netiek atskaƆota neviena dziesma."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, %s. celiƆơ"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -584,409 +608,420 @@ msgstr "Izstrādātāji"
msgid "License"
msgstr "Licence"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Par Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Vai tieƥām vēlaties aizvērt %s? Ja to izdarÄ«siet, visas izmaiƆas, kas "
-"veiktas kopơ repertuāra eksportēơanas, tiks zaudētas."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Vai vēlaties uz visiem laikiem izƆemt \"%s\"?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_IzƆemt"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Aizvērt repertuāru"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "IzƆemt repertuāru"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Vairs nerādÄ«t ĆĄo ziƆojumu"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Nejautāt vēlreiz"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "Pā_rdēvēt"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Pārdēvēt repertuāru"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "iestatījumi ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Kā jĆ«s vēlētos nosaukt ĆĄo repertuāru?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Ieslēgts"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizer"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Priekƥpastiprinājums"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "CeliƆơ"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Ilgums"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Formāts:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Kvalitāte:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Bitātrums:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blƫzs"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasiskā mƫzika"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Kantrī"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "DĆŸezs"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pops"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Pankroks"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Reps"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Regejs"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Roks"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tehno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/p</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadati veiksmīgi atjaunināti"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metadatu atjaunināƥana neizdevās"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Saglabāƥana veiksmīga"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "CeliƆa informācija"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Saglabāƥanas kÄŒĆ«da"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formāts:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kvalitāte:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitātrums:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Nosaukums</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Izpildītājs</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Albums</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Komentārs</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Ćœanrs</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Gads</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "CeliƆa numurs"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">CeliƆa numurs</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Saglabāt"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "N/P"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Informācija priekƥ %s nav pieejama.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "Pār_iet"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Pāriet uz laiku"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Ievadiet laiku (minƫtes:sekundes)"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Pārrakstīt %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "Pārra_kstīt"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Apstiprināt pārrakstīƥanu"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Eksportēt repertuāru"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Eksportēt"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importēt repertuāru"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Pārrakstīt %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importēt"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Rindas pārvaldnieks"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_IzƆemt no rindas"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Atvērt failus"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Atvērt"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Atverot aizvērt _dialoglogu"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Pievienot failus"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Aizvērt dialogu atverot"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "Pi_evienot"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Aizvērt dialogu pievienojot"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Pievienojot aizvērt _dialoglogu"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "Ierindot"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Atrindot"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Pāriet uz dziesmu"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtrs: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtrs:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Atcerēties"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "A_izvērt pārejot"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Notī_rīt"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Aizvērt pārejot"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Repertuāru pārvaldnieks"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Ieraksti"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "Pā_rdēvēt"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Jauns"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "Pār_dēvēt"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "Ats_kaƆot"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Aizvērt dialoglogu, aktivizējot repertuāru"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Atvērt URL"
@@ -994,11 +1029,11 @@ msgstr "Atvērt URL"
msgid "Add URL"
msgstr "Pievienot URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Ievadiet URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/ml_IN.po b/po/ml_IN.po
index bf4fbe2..4e6e0eb 100644
--- a/po/ml_IN.po
+++ b/po/ml_IN.po
@@ -1,4 +1,4 @@
-# Malayalam translation for Audacious
+# Malayalam (India) translation for Audacious
# Copyright (C) Audacious translators
# This file is distributed under the same license as the Audacious package.
#
@@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-12-29 07:35+0000\n"
-"Last-Translator: navaneeths52 <navaneeths52@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Malayalam (India) (http://www.transifex.com/projects/p/"
"audacious/language/ml_IN/)\n"
"Language: ml_IN\n"
@@ -21,140 +21,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "àŽ€àŽżàŽ°àŽŻà”àŽšà”àŽšà” ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d àŽ«àŽŻàŽČà”â€ àŽ•àŽŁà”àŽŸà”†àŽ€à”àŽ€àŽż"
msgstr[1] "%d àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽ•àŽŁà”àŽŸà”†àŽ€à”àŽ€àŽż"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (àŽ…àŽžàŽŸàŽ§à”àŽ”àŽŸàŽŻ UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "àŽȘà”àŽ€àŽżàŽŻ àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à”"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "àŽ”àŽżàŽšàŽŸàŽźà”àŽȘà” EQF àŽ«àŽŻàŽČà”â€ '%s' àŽ‡àŽ±àŽ•à”àŽ•à”àŽźàŽ€àŽż àŽšà”†àŽŻà”àŽŻà”àŽšà”àŽšàŽ€àŽżàŽČà”â€ àŽȘàŽżàŽ¶àŽ•à”"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±àŽżàŽČà”â€ àŽȘàŽżàŽšà”àŽšà”‹àŽŸà”àŽŸà” àŽšàŽŸàŽŸà”àŽ•"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "àŽšàŽżàŽČàŽ”àŽżàŽČà”àŽłà”àŽł àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽȘàŽŸàŽŸàŽŸàŽšà”â€ àŽ€à”àŽŸàŽ™à”àŽ™à”àŽ•"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "àŽȘàŽ€àŽżàŽȘà”àŽȘà” àŽ•àŽŸàŽŁàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "àŽˆ àŽȘàŽŸàŽŸà”àŽŸà” àŽȘà”‹àŽžà” àŽšà”†àŽŻà”àŽŻà”àŽ•"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "àŽˆ àŽȘàŽŸàŽŸà”àŽŸà” àŽšàŽżàŽ°à”â€àŽ€à”àŽ€à”àŽ•"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "àŽȘàŽŸàŽŸà”àŽ•àŽŻàŽŸàŽŁà”†àŽ™à”àŽ•àŽżàŽČà”â€ àŽȘà”‹àŽžà” àŽšà”†àŽŻà”àŽŻà”àŽ•, àŽ…àŽČà”àŽČà”†àŽ™à”àŽ•àŽżàŽČà”â€ àŽȘàŽŸàŽŸà”àŽ•"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±àŽżàŽČà”â€ àŽźà”àŽšà”àŽšà”‹àŽŸà”àŽŸà” àŽšàŽŸàŽŸà”àŽ•"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "â€˜àŽœàŽźà”àŽȘà” àŽ±à”àŽ±à” àŽ«àŽŻàŽČà”â€â€™ àŽœàŽŸàŽČàŽ•àŽ‚ àŽȘà”àŽ°àŽŠàŽ°à”â€àŽ¶àŽżàŽȘà”àŽȘàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±àŽżàŽČà”‡àŽŻà”àŽ•à”àŽ•à” àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽšà”‡àŽ°à”â€àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "àŽ’àŽ°à” àŽ€àŽŸàŽ€à”àŽ•àŽŸàŽČàŽżàŽ•àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±àŽżàŽČà”‡àŽŻà”àŽ•à”àŽ•à” àŽȘà”àŽ€àŽżàŽŻ àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽšà”‡àŽ°à”â€àŽ•à”àŽ•à”àŽ•"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "àŽźà”àŽ–à”àŽŻàŽœàŽŸàŽČàŽ•àŽ‚ àŽȘà”àŽ°àŽŠàŽ°à”â€àŽ¶àŽżàŽȘà”àŽȘàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "àŽčà”†àŽĄà”â€ŒàŽČà”†àŽžà” àŽźà”‹àŽĄà”"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "àŽȘàŽŸàŽŸà”àŽŸà”àŽšàŽżàŽšà”àŽšàŽŸàŽČà”â€ àŽȘà”àŽ±àŽ€à”àŽ€à”àŽ•àŽŸàŽ•à”àŽ•à”àŽ•"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "àŽȘàŽ€àŽżàŽȘà”àŽȘà” àŽ•àŽŸàŽŁàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "àŽĄà”€àŽŹàŽ—à”àŽ—àŽżàŽ™à” àŽžàŽšà”àŽŠà”‡àŽ¶àŽ™à”àŽ™àŽłà”â€ àŽȘà”àŽ°àŽŠàŽ°à”â€àŽ¶àŽżàŽȘà”àŽȘàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "àŽ«àŽŻàŽČà”â€..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- àŽźàŽłà”â€àŽŸà”àŽŸàŽżàŽźà”€àŽĄàŽżàŽŻàŽŸ àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽȘàŽŸàŽŸà”àŽ•"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"àŽ•à”‚àŽŸà”àŽ€àŽČà”â€ àŽ”àŽżàŽ”àŽ°àŽ™à”àŽ™àŽłà”â€àŽ•à”àŽ•àŽŸàŽŻàŽż `%s --help' àŽšà”‹àŽ•à”àŽ•à”àŽ•.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "àŽ’àŽĄàŽŸàŽ·à”àŽŻàŽžà”"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "%s-àŽšà” àŽĄà”€àŽ•à”‹àŽĄàŽ±à”ŠàŽšà”àŽšà”àŽ‚ àŽ•àŽŁà”àŽŸà”àŽ•àŽżàŽŸà”àŽŸàŽżàŽŻàŽżàŽČà”àŽČ."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s - àŽ€à”àŽ±àŽ•à”àŽ•àŽŸàŽšàŽŸàŽŻàŽżàŽČà”àŽČ."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "%s %s àŽžàŽŸàŽŠà”àŽ§à”àŽŻàŽźàŽŸàŽŻàŽżàŽČà”àŽČ: àŽȘàŽżàŽšà”àŽ€à”àŽŁàŽŻàŽżàŽČà”àŽČàŽŸàŽ€à”àŽ€ àŽ«àŽŻàŽČà”â€ àŽŽàŽ•à”àŽžà”àŽ±à”àŽ±àŽšà”â€àŽ·àŽšà”â€"
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "àŽžà”‡àŽ”à”"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "àŽČà”‹àŽĄà”"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "%s %s àŽžàŽŸàŽŠà”àŽ§à”àŽŻàŽźàŽŸàŽŻàŽżàŽČà”àŽČ: àŽȘàŽżàŽšà”àŽ€à”àŽŁàŽŻàŽżàŽČà”àŽČàŽŸàŽ€à”àŽ€ àŽ«àŽŻàŽČà”â€ àŽŽàŽ•à”àŽžà”àŽ±à”àŽ±àŽšà”â€àŽ·àŽšà”â€"
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "àŽȘà”àŽ€àŽżàŽŻ àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à”"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "àŽ‡àŽȘà”àŽȘà”‹àŽłà”â€ àŽȘàŽŸàŽŸà”àŽšà”àŽšàŽ€à”"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -162,412 +153,444 @@ msgstr ""
"àŽźà”†àŽ±à”àŽ±àŽŸàŽĄàŽŸàŽ±à”àŽ±àŽŸ àŽžà”àŽ•àŽŸàŽšàŽżàŽ™à” àŽ•àŽŽàŽżàŽžà”àŽžàŽżàŽŸà”àŽŸàŽżàŽČà”àŽČàŽŸàŽ€à”àŽ€àŽ€àŽżàŽšàŽŸàŽČà”â€ àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽžà”‹àŽ°à”â€àŽŸà”àŽŸà” àŽšà”†àŽŻà”àŽŻàŽŸàŽšàŽŸàŽ”àŽżàŽČà”àŽČ (àŽ…àŽČà”àŽČà”†àŽ™à”àŽ•àŽżàŽČà”â€ "
"àŽ…àŽžàŽŸàŽŠà”àŽ§à”àŽŻàŽźàŽŸàŽ•à”àŽ•àŽżàŽ”àŽšà”àŽšàŽ€àŽżàŽšàŽŸàŽČà”â€)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s-àŽšà”†àŽȘà”àŽȘàŽ±à”àŽ±àŽż"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ™à”àŽ™àŽłà”â€"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "àŽ“àŽĄàŽżàŽŻà”‹"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "àŽšà”†àŽ±à”àŽ±à”â€ŒàŽ”àŽ°à”â€àŽ•à”àŽ•à”"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à”"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "àŽžà”‹àŽ™à” àŽ‡àŽšà”â€àŽ«à”‹"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "àŽȘà”àŽČàŽ—à”àŽ—àŽżàŽšà”àŽšà”àŽ•àŽłà”â€"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "àŽȘà”ŠàŽ€à”àŽ”àŽŸàŽŻ"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "àŽȘà”àŽ°àŽ­àŽŸàŽ”àŽ‚"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "àŽŠà”ƒàŽ¶à”àŽŻàŽ”àŽ€à”àŽ•àŽ°àŽŁàŽ‚"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "àŽ‡àŽšà”â€àŽȘà”àŽŸà”àŽŸà”"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "àŽ•àŽŸàŽ€à”àŽ€à”àŽ•"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "àŽ†àŽ°à”â€àŽŸà”àŽŸàŽżàŽžà”àŽ±à”àŽ±à”"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "àŽ†àŽČà”â€àŽŹàŽ‚"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "àŽŸà”ˆàŽ±à”àŽ±àŽżàŽČà”â€"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "àŽŸà”àŽ°àŽŸàŽ•à”àŽ•à” àŽšàŽźà”àŽȘàŽ°à”â€"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "àŽ€àŽ°àŽ‚"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "àŽ«àŽŻàŽČà”â€àŽšà”†àŽŻàŽżàŽ‚"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "àŽ«àŽŻàŽČà”â€àŽȘàŽŸàŽ€à”àŽ€à”"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "àŽ€à”€àŽŻàŽ€àŽż"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "àŽ”àŽ°à”â€àŽ·àŽ‚"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "àŽ…àŽ­àŽżàŽȘà”àŽ°àŽŸàŽŻàŽ‚"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "àŽ•à”‹àŽĄà”†àŽ•à”"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "àŽ—à”àŽŁàŽźà”‡àŽšà”àŽź"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "àŽ¶à”‚àŽšà”àŽŻàŽ‚"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "àŽ…àŽ±àŽŹàŽżàŽ•à”"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "àŽŹàŽŸàŽłà”â€àŽŸà”àŽŸàŽżàŽ•à”"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "àŽšà”ˆàŽšà”€àŽžà”"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "àŽ—à”àŽ°à”€àŽ•à”àŽ•à”"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "àŽčà”€àŽŹà”àŽ°à”‚"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "àŽœàŽŸàŽȘà”àŽȘàŽšà”€àŽžà”"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "àŽ•à”ŠàŽ±àŽżàŽŻàŽšà”â€"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "àŽȘà”‹àŽłàŽżàŽ·à”"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "àŽ±àŽ·à”àŽŻàŽšà”â€"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "àŽ€àŽŸàŽŻà”â€ŒàŽ”àŽŸàŽšà”€àŽžà”"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "àŽŸàŽ°à”â€àŽ•à”àŽ•àŽżàŽ·à”"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "àŽ«à”àŽČà”‹àŽŸà”àŽŸàŽżàŽ™à” àŽȘà”‹àŽŻàŽżàŽšà”àŽ±à”"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "àŽ†àŽČà”â€àŽŹàŽ‚ àŽźà”‹àŽĄà”"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "àŽ”àŽŸà”àŽȘà”àŽŸà”àŽŸà” àŽȘà”àŽČàŽ—à”àŽ—àŽżàŽšà”â€"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>àŽ”àŽŸà”àŽȘà”àŽŸà”àŽŸà” àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ™à”àŽ™àŽłà”â€</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "àŽŹàŽżàŽ±à”àŽ±à” àŽĄà”†àŽȘà”àŽ€à”"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "àŽŹàŽ«àŽ°à”â€ àŽžà”ˆàŽžà”"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "àŽžà”‹àŽ«à”àŽ±à”àŽ±à” àŽ•à”àŽČàŽżàŽȘà”àŽȘàŽżàŽ™à”"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "àŽžà”‹àŽ«à”àŽ±à”àŽ±à”â€ŒàŽ”à”†àŽŻàŽ°à”â€ àŽ¶àŽŹà”àŽŠàŽšàŽżàŽŻàŽšà”àŽ€à”àŽ°àŽŁà”‹àŽȘàŽŸàŽ§àŽż àŽ‰àŽȘàŽŻà”‹àŽ—àŽżàŽŻà”àŽ•à”àŽ•à”àŽ• (àŽ¶à”àŽȘàŽŸàŽ°à”â€àŽ¶ àŽšà”†àŽŻà”àŽŻàŽȘà”àŽȘà”†àŽŸà”àŽŸàŽżàŽŸà”àŽŸàŽżàŽČà”àŽČ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>àŽ±à”€àŽȘà”àŽČà”‡ àŽ—à”†àŽŻà”àŽšà”â€</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "àŽ±à”€àŽȘà”àŽČà”‡ àŽ—à”†àŽŻà”àŽšà”â€ àŽžàŽŸàŽŠà”àŽ§à”àŽŻàŽźàŽŸàŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "àŽ†àŽČà”â€àŽŹàŽ‚ àŽźà”‹àŽĄà”"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "àŽ•à”àŽČàŽżàŽȘà”àŽȘàŽżàŽ™à” àŽ€àŽŸàŽŻà”àŽ• (àŽ¶à”àŽȘàŽŸàŽ°à”â€àŽ¶ àŽšà”†àŽŻà”àŽŻàŽȘà”àŽȘà”†àŽŸà”àŽŸàŽ€à”)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>àŽČà”†àŽ”àŽČà”àŽ•àŽłà”â€ àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽżàŽŻà”àŽ•à”àŽ•à”àŽ•</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "àŽŽàŽČà”àŽČàŽŸ àŽ«àŽŻàŽČà”àŽ•àŽłà”àŽ‚ àŽ†àŽ‚àŽȘà”àŽČàŽżàŽ«à”ˆ àŽšà”†àŽŻà”àŽŻà”àŽ•"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "àŽ…àŽŁà”â€àŽŸàŽŸàŽ—à”àŽĄà” àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽ†àŽ‚àŽȘà”àŽČàŽżàŽ«à”ˆ àŽšà”†àŽŻà”àŽŻà”àŽ•:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "àŽȘà”àŽ°à”‹àŽ•à”àŽžàŽż àŽčà”‹àŽžà”àŽ±à”àŽ±à”àŽšà”†àŽŻàŽżàŽ‚:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "àŽȘà”àŽ°à”‹àŽ•à”àŽžàŽż àŽȘà”‹àŽ°à”â€àŽŸà”àŽŸà”"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "àŽȘà”àŽ°à”‹àŽ•à”àŽžàŽż àŽ‰àŽȘàŽŻà”‹àŽ•à”àŽ€à”ƒàŽšàŽŸàŽźàŽ‚"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "àŽȘà”àŽ°à”‹àŽ•à”àŽžàŽż àŽ…àŽŸàŽŻàŽŸàŽłàŽ”àŽŸàŽ•à”àŽŻàŽ‚"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>àŽȘà”àŽ°à”‹àŽ•à”àŽžàŽż àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ‚</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "àŽȘà”àŽ°à”‹àŽ•à”àŽžàŽż àŽ‰àŽȘàŽŻà”‹àŽ—àŽ‚ àŽžàŽŸàŽŠà”àŽ§à”àŽŻàŽźàŽŸàŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "àŽȘà”àŽ°à”‹àŽ•à”àŽžàŽż àŽ‰àŽȘàŽŻà”‹àŽ—àŽżàŽšà”àŽšà”àŽ•à”ŠàŽŁà”àŽŸà”àŽłà”àŽł àŽ“àŽ€àŽšà”àŽ±àŽżàŽ•à”àŽ•à”‡àŽ·àŽšà”â€ àŽžàŽŸàŽŠà”àŽ§à”àŽŻàŽźàŽŸàŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "àŽ‡àŽ€àŽżàŽšàŽŸàŽŻàŽż àŽ“àŽŸà”àŽŸà”‹ àŽ•à”àŽŻàŽŸàŽ°àŽ•à”àŽ±à”àŽ±àŽ°à”â€ àŽŽàŽšà”â€àŽ•à”‹àŽĄàŽżàŽ™à” àŽĄàŽżàŽ±à”àŽ±àŽ•à”àŽ±à”àŽ±àŽ°à”â€:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "àŽ«àŽŸàŽłà”â€àŽŹàŽŸàŽ•à”àŽ•à” àŽ•à”àŽŻàŽŸàŽ°àŽ•à”àŽ±à”àŽ±àŽ°à”â€ àŽŽàŽšà”â€àŽ•à”‹àŽĄàŽżàŽ™à”àŽ™à”àŽ•àŽłà”â€:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>àŽžà”àŽ”àŽ­àŽŸàŽ”àŽ‚</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "àŽȘà”àŽ°àŽŸàŽ°àŽ‚àŽ­àŽžàŽźàŽŻàŽ€à”àŽ€à” àŽȘàŽŸàŽŸàŽČà”â€ àŽ€à”àŽŸàŽ°à”àŽ•"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "àŽˆ àŽȘàŽŸàŽŸà”àŽŸà” àŽĄàŽżàŽČà”€àŽ±à”àŽ±àŽŸàŽŻàŽŸàŽČà”â€ àŽźà”àŽšà”àŽšà”‹àŽŸà”àŽŸà”àŽšà”€àŽ™à”àŽ™à”àŽ•"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽ€à”àŽ±àŽ•à”àŽ•à”àŽźà”àŽȘà”‹àŽłà”â€ àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽ”à”†àŽŸàŽżàŽȘà”àŽȘàŽŸàŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽ’àŽ°à” àŽ€àŽŸàŽ€à”àŽ•àŽŸàŽČàŽżàŽ•àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±àŽżàŽČà”â€ àŽ€à”àŽ±àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "àŽȘàŽŸàŽŸà”àŽŸà”àŽ•àŽłà”â€ àŽȘàŽŸàŽŸà”àŽšà”àŽšàŽ€à”àŽ”àŽ°à”† àŽźà”†àŽ±à”àŽ±àŽŸàŽĄàŽŸàŽ±à”àŽ± àŽČà”‹àŽĄà” àŽšà”†àŽŻà”àŽŻà”‡àŽŁà”àŽŸ"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>àŽ…àŽšà”àŽŻà”‹àŽ—à”àŽŻàŽ€</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "\\ (backward slash) -àŽšà”† àŽ’àŽ°à” àŽ«à”‹àŽłà”â€àŽĄàŽ°à”â€ àŽĄà”€àŽČàŽżàŽźàŽżàŽ±à”àŽ±àŽ°à”â€ àŽ†àŽŻàŽż àŽ”à”àŽŻàŽŸàŽ–à”àŽŻàŽŸàŽšàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>àŽ†àŽČà”â€àŽŹàŽ‚ àŽ†àŽ°à”â€àŽŸà”àŽŸà”</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "àŽˆ àŽ”àŽŸàŽ•à”àŽ•à”àŽ•àŽłà”â€àŽ•à”àŽ•à” àŽŻà”‹àŽœàŽżàŽšà”àŽš àŽšàŽżàŽ€à”àŽ°àŽ™à”àŽ™àŽłà”â€àŽ•à”àŽ•àŽŸàŽŻàŽż àŽ€àŽżàŽ°àŽŻà”àŽ• (àŽ•à”‹àŽźàŽŻàŽŸàŽČà”â€ àŽ”à”‡àŽ°à”â€àŽ€àŽżàŽ°àŽżàŽŻà”àŽ•à”àŽ•àŽȘà”àŽȘà”†àŽŸà”àŽŸàŽ€à”)"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "àŽˆ àŽ”àŽŸàŽ•à”àŽ•à”àŽ•àŽłà”â€àŽ•à”àŽ•à” àŽŻà”‹àŽœàŽżàŽšà”àŽš àŽšàŽżàŽ€à”àŽ°àŽ™à”àŽ™àŽłà”â€ àŽ’àŽŽàŽżàŽ”àŽŸàŽ•à”àŽ•à”àŽ• (àŽ•à”‹àŽźàŽŻàŽŸàŽČà”â€ àŽ”à”‡àŽ°à”â€àŽ€àŽżàŽ°àŽżàŽŻà”àŽ•à”àŽ•àŽȘà”àŽȘà”†àŽŸà”àŽŸàŽ€à”)"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "àŽȘàŽŸàŽŸà”àŽŸàŽżàŽšà”àŽ±à”† àŽ«àŽŻàŽČà”â€ àŽšà”†àŽŻàŽżàŽźàŽżàŽšà” àŽŻà”‹àŽœàŽżàŽšà”àŽš àŽšàŽżàŽ€à”àŽ°àŽ™à”àŽ™àŽłà”â€àŽ•à”àŽ•àŽŸàŽŻàŽż àŽ€àŽżàŽ°àŽŻà”àŽ•"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "àŽ±àŽżàŽ•à”àŽ•àŽ°à”â€àŽžà”€àŽ”à” àŽ†àŽŻàŽż àŽ€àŽżàŽ°àŽŻà”àŽ•"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "àŽžà”‡àŽ°à”â€àŽšà”àŽšà” àŽĄà”†àŽȘà”àŽ€à”:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>àŽȘà”‹àŽȘà”àŽȘàŽȘà”àŽȘà” àŽ”àŽżàŽ”àŽ°àŽ‚</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "àŽȘà”‹àŽȘà”àŽȘàŽȘà” àŽ”àŽżàŽ”àŽ°àŽ‚ àŽȘà”àŽ°àŽŠàŽ°à”â€àŽ¶àŽżàŽȘà”àŽȘàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "àŽȘà”‹àŽȘà”àŽȘàŽȘà”àŽȘà” àŽ”à”ˆàŽ•àŽČà”â€ (àŽ’àŽ°à” àŽžà”†àŽ•à”àŽ•àŽšà”â€àŽĄàŽżàŽšà”àŽ±à”† àŽȘàŽ€à”àŽ€àŽżàŽČà”ŠàŽšà”àŽšà”àŽ•àŽłà”â€)"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "àŽˆ àŽȘàŽŸàŽŸà”àŽŸàŽżàŽšà”àŽ±à”† àŽŸà”ˆàŽ‚ àŽžà”àŽ•à”†àŽŻàŽżàŽČà”â€ àŽ•àŽŸàŽŁàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITLE"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTIST - TITLE"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTIST - ALBUM - TITLE"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTIST - ALBUM - TRACK. TITLE"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTIST [ ALBUM ] - TRACK. TITLE"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITLE"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "àŽ”àŽżàŽ­àŽŸàŽ—àŽ‚"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "àŽžà”àŽ”à”‡àŽšà”àŽ›àŽŻàŽŸàŽČà”àŽłà”àŽł"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>àŽžà”‹àŽ™à” àŽĄàŽżàŽžà”àŽȘà”àŽČà”‡</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "àŽȘàŽŸàŽŸà”àŽŸà”àŽšàŽźà”àŽȘàŽ±à”àŽ•àŽłà”â€ àŽ•àŽŸàŽŁàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "àŽ€à”àŽŸàŽ•à”àŽ•àŽ€à”àŽ€àŽżàŽČà”àŽłà”àŽł àŽȘà”‚àŽœà”àŽŻàŽ™à”àŽ™àŽłà”â€ àŽ•àŽŸàŽŁàŽżàŽŻà”àŽ•à”àŽ•à”àŽ• (2:00 àŽŽàŽšà”àŽšàŽ€àŽżàŽšà”àŽȘàŽ•àŽ°àŽ‚ 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "àŽŸà”ˆàŽ±à”àŽ±àŽżàŽČà”â€àŽžà”àŽŸà”àŽ°àŽżàŽ™à” àŽ«à”‹àŽ°à”â€àŽźàŽŸàŽ±à”àŽ±à”àŽźàŽŸàŽŻàŽż àŽŹàŽšà”àŽ§àŽȘà”àŽȘà”†àŽŸà”àŽŸ àŽ”àŽżàŽ”àŽ°àŽ‚ àŽȘà”àŽ°àŽŠàŽ°à”â€àŽ¶àŽżàŽȘà”àŽȘàŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "àŽžà”àŽ”à”‡àŽšà”àŽ›àŽŻàŽŸàŽČà”àŽłà”àŽł àŽŽàŽŽà”àŽ€à”àŽ€à”:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "àŽŸà”ˆàŽ±à”àŽ±àŽżàŽČà”â€ àŽ«à”‹àŽ°à”â€àŽźàŽŸàŽ±à”àŽ±à”:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "àŽ”àŽŸà”àŽȘà”àŽŸà”àŽŸà” àŽȘà”àŽČàŽ—à”àŽ—àŽżàŽšà”â€"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "àŽ•àŽŸàŽ€à”àŽ€à”àŽ•"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "àŽ‡àŽšà”â€àŽȘà”àŽŸà”àŽŸà”"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "àŽȘà”àŽ°àŽ­àŽŸàŽ”àŽ‚"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "àŽŠà”ƒàŽ¶à”àŽŻàŽ”àŽ€à”àŽ•àŽ°àŽŁàŽ‚"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "àŽȘà”ŠàŽ€à”àŽ”àŽŸàŽŻ"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "àŽžà”àŽ”à”‡àŽšà”àŽ›àŽŻàŽŸàŽČà”àŽłà”àŽł àŽŽàŽŽà”àŽ€à”àŽ€à”:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "àŽ’àŽĄàŽŸàŽ·à”àŽŻàŽžà” àŽźà”àŽšà”â€àŽ—àŽŁàŽšàŽ•àŽłà”â€"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "àŽĄàŽŻàŽ±àŽ•à”àŽ±à”àŽ±àŽ±àŽż àŽ‰àŽŁà”àŽŸàŽŸàŽ•à”àŽ•àŽŸàŽšàŽŸàŽŻàŽżàŽČà”àŽČ (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "àŽžà”àŽ„àŽŸàŽšàŽ‚ àŽ•àŽŁà”àŽŸà”àŽ•àŽżàŽŸà”àŽŸàŽżàŽŻàŽżàŽČà”àŽČ."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "àŽ’àŽ°à” àŽȘàŽŸàŽŸà”àŽŸà”àŽ‚ àŽȘàŽŸàŽŸà”àŽšà”àŽšàŽżàŽČà”àŽČ."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "àŽ“àŽĄàŽżàŽŻà”‹ àŽžàŽż.àŽĄàŽż., àŽŸà”àŽ°àŽŸàŽ•à”àŽ•à” %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "àŽźà”‹àŽŁà”‹"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "àŽžà”àŽ±à”àŽ±à”€àŽ°àŽżàŽŻà”‹"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -582,409 +605,420 @@ msgstr "àŽŹàŽčà”àŽźàŽ€àŽżàŽ•àŽłà”â€"
msgid "License"
msgstr "àŽ…àŽšà”àŽźàŽ€àŽżàŽȘàŽ€à”àŽ°àŽ‚"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "àŽ’àŽĄàŽŸàŽ·à”àŽŻàŽžà”àŽžàŽżàŽšà”†àŽȘà”àŽȘàŽ±à”àŽ±àŽż"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"%s àŽ…àŽŸàŽŻà”àŽ•à”àŽ•àŽŁàŽźà”†àŽšà”àŽšà” àŽšàŽżàŽ™à”àŽ™àŽłà”â€àŽ•à”àŽ•à”àŽ±àŽȘà”àŽȘà”àŽŁà”àŽŸà”‹? àŽšàŽżàŽ™à”àŽ™àŽłàŽ™à”àŽ™àŽšà”† àŽšà”†àŽŻà”àŽ€àŽŸàŽČà”â€, àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽ•àŽŻàŽ±à”àŽ±à”àŽźàŽ€àŽż "
-"àŽšà”†àŽŻà”àŽ€àŽ€à”àŽźà”àŽ€àŽČà”â€àŽ•à”àŽ•à”àŽłà”àŽł àŽŽàŽČà”àŽČàŽŸ àŽźàŽŸàŽ±à”àŽ±àŽ™à”àŽ™àŽłà”àŽ‚ àŽšàŽ·à”àŽŸàŽȘà”àŽȘà”†àŽŸà”àŽ‚."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽ…àŽŸàŽŻà”àŽ•à”àŽ•à”àŽ•"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_àŽˆ àŽžàŽšà”àŽŠà”‡àŽ¶àŽ‚ àŽ‡àŽšàŽż àŽ•àŽŸàŽŁàŽżàŽŻà”àŽ•à”àŽ•àŽŸàŽ€àŽżàŽ°àŽżàŽŻà”àŽ•à”àŽ•à”àŽ•"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±àŽżàŽšà”àŽ±à”† àŽȘà”‡àŽ°à” àŽźàŽŸàŽ±à”àŽ±à”àŽ•"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "àŽ•à”àŽ°àŽźà”€àŽ•àŽ°àŽŁàŽ™à”àŽ™àŽłà”â€ ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_àŽžàŽŸàŽŠà”àŽ§à”àŽŻàŽźàŽŸàŽ•à”àŽ•à”àŽ•"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "àŽˆàŽ•à”àŽ”àŽČà”ˆàŽžàŽ°à”â€"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "àŽȘà”àŽ°à”€â€ŒàŽ†àŽ‚àŽȘà”"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "àŽŸà”àŽ°àŽŸàŽ•à”àŽ•à”"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "àŽšà”€àŽłàŽ‚"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "àŽ†àŽžàŽżàŽĄà” àŽœàŽŸàŽžà”"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "àŽ†àŽžàŽżàŽĄà” àŽ±à”‹àŽ•à”àŽ•à”"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "àŽ†àŽ‚àŽŹàŽżàŽŻàŽšà”àŽ±à”"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "àŽŹàŽżàŽŹà”‹àŽȘà”"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "àŽŹà”àŽČà”‚àŽ—à”àŽ°àŽŸàŽžà”"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "àŽŹà”àŽČà”‚àŽžà”"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "àŽšà”‡àŽ‚àŽŹàŽ°à”â€ àŽźà”àŽŻà”‚àŽžàŽżàŽ•à”"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "àŽ•à”àŽČàŽŸàŽžàŽżàŽ•à”àŽ•àŽČà”â€"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "àŽ•àŽŁà”â€àŽŸà”àŽ°àŽż"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "àŽĄà”†àŽ€à”àŽ€à” àŽźà”†àŽ±à”àŽ±àŽČà”â€"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "àŽĄàŽżàŽžà”àŽ•à”‹"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "àŽˆàŽžàŽż àŽČàŽżàŽžàŽŁàŽżàŽ™à”"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "àŽšàŽŸàŽŸà”‹àŽŸàŽż"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "àŽ«àŽ™à”àŽ•à”"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "àŽ—àŽ™à”àŽžà”àŽ€àŽŸ àŽ±àŽŸàŽȘà”àŽȘà”"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "àŽ—à”‹àŽžà”àŽȘàŽČà”â€"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "àŽ—à”àŽ°àŽ™à”"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "àŽčàŽŸàŽĄà” àŽ±à”‹àŽ•à”àŽ•à”"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "àŽčà”†àŽ”àŽż àŽźà”†àŽ±à”àŽ±àŽČà”â€"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "àŽčàŽżàŽȘà”-àŽčà”‹àŽȘà”àŽȘà”"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "àŽ”à”€àŽŸà”"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "àŽœàŽŸàŽžà”"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "àŽ•àŽŸàŽŸà”"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "àŽźà”†àŽ±à”àŽ±àŽČà”â€"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "àŽšàŽ”àŽŻà”àŽ—àŽ‚"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "àŽšàŽ”àŽ€àŽ°àŽ‚àŽ—àŽ‚"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "àŽ¶àŽŹà”àŽŠàŽ‚"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "àŽȘà”‹àŽȘà”àŽȘà”"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "àŽȘàŽ™à”àŽ•à” àŽ±à”‹àŽ•à”àŽ•à”"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "àŽ±àŽŸàŽȘà”àŽȘà”"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "àŽ±à”†àŽ—à”àŽ—à”‡àŽœà”"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "àŽ±à”‹àŽ•à”àŽ•à”"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "àŽ±à”‹àŽ•à”àŽ•à” àŽ†àŽšà”â€àŽĄà” àŽ±à”‹àŽłà”â€"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "àŽ±àŽżàŽ„àŽ‚ àŽ†àŽšà”â€àŽĄà” àŽŹà”àŽČà”‚àŽžà”"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "àŽžà”àŽ•àŽŸ"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "àŽžà”‹àŽłà”â€"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "àŽžà”àŽ”àŽżàŽ™à”"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "àŽŸà”†àŽ•à”àŽšà”‹"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "àŽŸà”àŽ°àŽżàŽȘà”àŽȘà”-àŽčà”‹àŽȘà”àŽȘà”"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">àŽČàŽ­à”àŽŻàŽźàŽČà”àŽČ</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "àŽźà”†àŽ±à”àŽ±àŽŸàŽĄàŽŸàŽ±à”àŽ± àŽ”àŽżàŽœàŽŻàŽ•àŽ°àŽźàŽŸàŽŻàŽż àŽȘà”àŽ€à”àŽ•à”àŽ•àŽż"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "àŽźà”†àŽ±à”àŽ±àŽŸàŽĄàŽŸàŽ±à”àŽ± àŽȘà”àŽ€à”àŽ•à”àŽ•àŽČà”â€ àŽȘàŽ°àŽŸàŽœàŽŻàŽȘà”àŽȘà”†àŽŸà”àŽŸà”"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "àŽŸà”àŽ°àŽŸàŽ•à”àŽ•à” àŽ”àŽżàŽ”àŽ°àŽ‚"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">àŽ«à”‹àŽ°à”â€àŽźàŽŸàŽ±à”àŽ±à”:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">àŽ—à”àŽŁàŽźà”‡àŽšà”àŽź:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">àŽŹàŽżàŽ±à”àŽ±à”â€ŒàŽ±à”‡àŽ±à”àŽ±à”:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">àŽŸà”ˆàŽ±à”àŽ±àŽżàŽČà”â€</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">àŽ†àŽ°à”â€àŽŸà”àŽŸàŽżàŽžà”àŽ±à”àŽ±à”</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">àŽ†àŽČà”â€àŽŹàŽ‚</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">àŽ…àŽ­àŽżàŽȘà”àŽ°àŽŸàŽŻàŽ‚</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">àŽ€àŽ°àŽ‚</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">àŽ”àŽ°à”â€àŽ·àŽ‚</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">àŽŸà”àŽ°àŽŸàŽ•à”àŽ•à” àŽšàŽźà”àŽȘàŽ°à”â€</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "%s-àŽ‰àŽźàŽŸàŽŻàŽż àŽŹàŽšà”àŽ§àŽȘà”àŽȘà”†àŽŸà”àŽŸ àŽ”àŽżàŽ”àŽ°àŽ™à”àŽ™àŽłà”ŠàŽšà”àŽšà”àŽ‚ àŽČàŽ­à”àŽŻàŽźàŽČà”àŽČ.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "àŽžàŽźàŽŻàŽ€à”àŽ€àŽżàŽČà”‡àŽŻà”àŽ•à”àŽ•à” àŽšàŽŸàŽŸà”àŽ•"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "àŽžàŽźàŽŻàŽ‚ àŽšàŽČà”â€àŽ•à”àŽ• (àŽźàŽżàŽšàŽżàŽ±à”àŽ±à”àŽ•àŽłà”â€:àŽžà”†àŽ•à”àŽ•àŽšà”â€àŽĄà”àŽ•àŽłà”â€)"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "àŽźàŽŸàŽŻà”àŽšà”àŽšà”†àŽŽà”àŽ€àŽŁà”‹: %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽ•àŽŻàŽ±à”àŽ±à”àŽźàŽ€àŽż àŽšà”†àŽŻà”àŽŻà”àŽ•"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽ‡àŽ±àŽ•à”àŽ•à”àŽźàŽ€àŽż àŽšà”†àŽŻà”àŽŻà”àŽ•"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "àŽźàŽŸàŽŻà”àŽšà”àŽšà”†àŽŽà”àŽ€àŽŁà”‹: %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "àŽ•à”àŽŻà”‚ àŽźàŽŸàŽšà”‡àŽœàŽ°à”â€"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽ€à”àŽ±àŽ•à”àŽ•à”àŽ•"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "àŽ«àŽŻàŽČà”àŽ•àŽłà”â€ àŽšà”‡àŽ°à”â€àŽ•à”àŽ•à”àŽ•"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "àŽ«àŽŻàŽČà”â€ àŽ€à”àŽ±àŽ•à”àŽ•à”àŽźà”àŽȘà”‹àŽłà”â€ àŽœàŽŸàŽČàŽ•àŽ‚ àŽ…àŽŸàŽŻà”àŽ•à”àŽ•à”àŽ•"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "àŽšà”‡àŽ°à”â€àŽ•à”àŽ•à”àŽźà”àŽȘà”‹àŽłà”â€ àŽœàŽŸàŽČàŽ•àŽ‚ àŽ…àŽŸàŽŻà”àŽ•à”àŽ•à”àŽ•"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_àŽ•à”àŽŻà”‚"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "àŽ…_àŽŁà”â€àŽ•à”àŽŻà”‚"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "àŽȘàŽŸàŽŸà”àŽŸàŽżàŽČà”‡àŽŻà”àŽ•à”àŽ•à” àŽšàŽŸàŽŸà”àŽ•"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "àŽ…àŽ°àŽżàŽȘà”àŽȘ:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_àŽ…àŽ°àŽżàŽȘà”àŽȘ:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "àŽ“àŽ°à”â€àŽ•à”àŽ•à”àŽ•"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_àŽ”à”†àŽŸàŽżàŽȘà”àŽȘàŽŸàŽ•à”àŽ•à”àŽ•"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "àŽšàŽŸàŽŸà”àŽźà”àŽȘà”‹àŽłà”â€ àŽ…àŽŸàŽŻà”àŽ•à”àŽ•à”àŽ•"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽźàŽŸàŽšà”‡àŽœàŽ°à”â€"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "àŽŽàŽšà”â€àŽŸà”àŽ°àŽżàŽ•àŽłà”â€"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_àŽȘà”‡àŽ°à” àŽźàŽŸàŽ±à”àŽ±à”àŽ•"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "àŽȘà”àŽČà”‡àŽČàŽżàŽžà”àŽ±à”àŽ±à” àŽ†àŽ•à”àŽ±à”àŽ±àŽżàŽ”à”‡àŽ±à”àŽ±à” àŽšà”†àŽŻà”àŽŻà”àŽźà”àŽȘà”‹àŽłà”â€ àŽœàŽŸàŽČàŽ•àŽ‚ àŽ…àŽŸàŽŻà”àŽ•à”àŽ•à”àŽ•"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "àŽŻà”‚.àŽ†àŽ°à”â€.àŽŽàŽČà”â€. àŽ€à”àŽ±àŽ•à”àŽ•à”àŽ•"
@@ -992,11 +1026,11 @@ msgstr "àŽŻà”‚.àŽ†àŽ°à”â€.àŽŽàŽČà”â€. àŽ€à”àŽ±àŽ•à”àŽ•à”àŽ•"
msgid "Add URL"
msgstr "àŽŻà”‚.àŽ†àŽ°à”â€.àŽŽàŽČà”â€. àŽšà”‡àŽ°à”â€àŽ•à”àŽ•à”àŽ•"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "àŽŻà”‚.àŽ†àŽ°à”â€.àŽŽàŽČà”â€. àŽšàŽČà”â€àŽ•à”àŽ•:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/ms.po b/po/ms.po
index 9a0cc9a..b3d0886 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -4,12 +4,13 @@
#
# Translators:
# Mick The KN <f.seedsss@gmail.com>, 2012
+# Mick The KN <f.seedsss@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-03 20:17+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Malay (http://www.transifex.com/projects/p/audacious/language/"
"ms/)\n"
@@ -19,139 +20,130 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Mencari ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d jumpa fail"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(UTF-8 tidak sah)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Senarai Main Baru"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Ralat mengimport fail Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Langkau ke belakang dalam senarai main"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Mula bermain senarai main terkini"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Tunjukkan versi"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Jeda lagu terkini"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Henti lagu terkini"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Jeda jika bermain, bermain selainnya"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Langkau ke hadapan dalam senarai main"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Paparan Lompat ke Fail dialog"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Tambah fail ke senarai main"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Tambah fail baru untuk senarai main sementara"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Memaparkan tetingkap utama"
-#: src/audacious/main.c:242
-msgid "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
msgstr ""
-#: src/audacious/main.c:243
-msgid "Quit on playback stop"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
msgstr ""
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Tunjukkan versi"
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr ""
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Cetak mesej penyahpijatan"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "FAIL..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- memainkan fail multimedia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Cuba `%s --bantu untuk lebih banyak maklumat.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Tiada dekoder dijumpai untuk %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr ""
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Tak boleh %s %s: lanjutan fail yang tidak disokong."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "simpan"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "memuat"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Tak boleh %s %s: lanjutan fail yang tidak disokong."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Senarai Main Baru"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Sedang Dimainkan"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -159,412 +151,444 @@ msgstr ""
"Senarai main tidak boleh diselesaikan kerana pengimbasan metadata masih "
"dalam progres (atau telah dilumpuhkan)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Tentang %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Tetapan"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Rangkaian"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Senarai main"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Maklumat Lagu"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugin"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Umum"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Kesan"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisasi"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Dalaman"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Memindah"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artist"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Tajuk"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Nombor track"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Aliran"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nama fail"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Laluan fail"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Tarikh"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Tahun"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komen"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kualiti"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Tiada"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Bahasa Arab"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Bahasa Baltik"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Bahasa Cina"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Bahasa Yunani"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Bahasa Ibrani"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Bahasa Jepun"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Bahasa Korea"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Bahasa Poland"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Bahasa Rusia"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Bahasa Taiwan"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Bahasa Turki"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Titik terapung"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Mod album"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Plugin luaran:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Tetapan Keluaran</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Kedalaman bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Saiz penimbal:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Keratan lembut"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Gunakan perisian kawalan volum (tidak digalakkan)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Aktifkan Replay Gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Mod album"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Menghalang keratan (digalakkan)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Laraskan Tahap</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Menguatkan semua fail:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Menguatkan fail yang tidak tanda:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Nama host proksi:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Port proksi:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nama pengguna proksi:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Kata laluan proksi:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Proksi Konfigurasi</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Aktif penggunaan proksi"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Guna pengesahan dengan proksi"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Mengesan secara automatik pengekodan aksara untuk:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Undur pengekodan aksara:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Kelakuan</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Teruskan main semula pada permulaan"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Advance apabila lagu semasa dipadam"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Kosongkan senarai main apabila membuka fail"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Membuka fail dalam senarai main sementara"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Jangan muatkan metadata untuk lagu sehingga dimainkan"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Keserasian</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Tafsirkan \\ (mundur mengurangkan) sebagai pemisah folder"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Seni Album</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Cari imej sepadan kata (dipisah dengan koma):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Tidak termasuk imej yang sepadan dengan kata (dipisah dengan koma):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Carian untuk imej lagu sepadan dengan nama fail"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Cari secara rekursif"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Cari dalaman:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Maklumat Timbul</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Menunjukkan maklumat popup"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Kelewatan popup (persepuluh sesaat):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Tunjukkan skala masa untuk lagu semasa"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TAJUK"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTIST - TAJUK"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTIST - ALBUM - TAJUK"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTIST - ALBUM - TRACK. TAJUK"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTIST [ ALBUM ] - TRACK. TAJUK"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TAJUK"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategori"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Custom"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Paparan Lagu</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Tunjuk nombor lagu"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Tunjukkan mengetuai sifar (02:00 bukan 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Tunjukkan maklumat tentang format rentetan tajuk"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Rentetan custom:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Tajuk format:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Plugin luaran:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Memindah"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Dalaman"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Kesan"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisasi"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Umum"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Rentetan custom:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Pilihan Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Tidak dapat mencipta direktori (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Posisi tidak dijumpai."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Tiada lagu bermain"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, track %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -578,409 +602,420 @@ msgstr "Kredit"
msgid "License"
msgstr "Lesen"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Tentang Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Adakah anda pasti anda mahu menutup %s? Jika anda berbuat demikian, apa-apa "
-"perubahan yang dibuat sejak senarai main dieksport akan hilang."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Tutup Senarai Main"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Jangan paparkan mesej ini lagi"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Namakan Semula Senarai Main"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "tetapan ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Aktifkan"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizer"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamp"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Track"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Panjang"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Jazz Asid"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Rock Asid"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classical"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm dan Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata berjaya dikemas kini"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metadata gagal dikemas kini"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Maklumat track"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kualiti:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Kadar Bit:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Tajuk</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artist</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Komen</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Aliran</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Tahun</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Nombor Track</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Tiada maklumat tersedia untuk %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Lompat ke Masa"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Masukkan masa (minit:saat):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Tulisganti %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Eksport Senarai Main"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Import Senarai Main"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Tulisganti %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Pengurus Teratur"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Buka Fail"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Menambah Fail"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Tutup dialog apabila Buka"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Tutup dialog apabila Menambah"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Atur"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Tidak_Atur"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Lompat ke Lagu"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Tapis:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Tapis:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Ingat"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Pa_dam"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Keluar pada Lompat"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Pengurus Senarai Main"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Penyertaan"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Namakan semula"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Tutup dialog bila mengaktifkan senarai main"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Buka URL"
@@ -988,11 +1023,11 @@ msgstr "Buka URL"
msgid "Add URL"
msgstr "Menambah URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Masukkan URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/nl.po b/po/nl.po
index 2f6ce7a..e01b37d 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,13 +6,14 @@
# Bjorn Roesbeke <inbox@bjornroesbeke.be>, 2012-2013
# Dennis Klomp <c_klomp@epu-forum.net>, 2012
# Glennz <glenn_de_groot@hotmail.com>, 2012
+# Glennz <glenn_de_groot@hotmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-03-16 03:23+0000\n"
-"Last-Translator: Bjorn Roesbeke <inbox@bjornroesbeke.be>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/audacious/language/"
"nl/)\n"
"Language: nl\n"
@@ -21,142 +22,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Zoeken..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d bestand gevonden"
msgstr[1] "%d bestanden gevonden"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (ongeldige UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nieuwe afspeellijst"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
msgstr ""
-"Er is een fout opgetreden bij het importeren van een Winamp EQF bestand "
-"genaamd '%s'"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Ga terug in de speellijst"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Begin de huidige speellijst af te spelen"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Toon de versie"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pauzeer huidig nummer"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Stop huidig nummer"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pauzeer tijdens spelen, anders afspelen"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Ga vooruit in de speellijst"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Toon 'ga naar bestand' dialoogvenster"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Voeg bestanden toe aan de afspeellijst"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Voeg nieuwe bestanden toe aan een tijdelijke speellijst"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Toon het hoofdvenster"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Onzichtbare modus"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Sluit bij stoppen met afspelen"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Toon de versie"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Toon debug berichten"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "BESTAND..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- speel multimedia bestanden af"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Probeer `%s --help' voor meer informatie.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Geen decoder gevonden voor %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s kon niet geopend worden."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Kan niet %s %s: niet ondersteunde bestandsextensie."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "opslaan"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "laad"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Kan niet %s %s: niet ondersteunde bestandsextensie."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nieuwe afspeellijst"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Nu aan het afspelen"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -164,417 +154,449 @@ msgstr ""
"De speellijst kon niet gesorteerd worden omdat metadata scannen nog steeds "
"bezig (of uitgeschakeld) is."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Over %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Instellingen"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Geluid"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Netwerk"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Speellijst"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Lied informatie"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugins"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Algemeen"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effect"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisatie "
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Invoer"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artiest"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titel"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Nummer"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Genre"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Bestandsnaam"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Bestandslocatie"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Datum"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Jaar"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Opmerking"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kwaliteit"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Geen"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabisch"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltisch"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chinees"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grieks"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebreeuws"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japans"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Koreaans"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Pools"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russisch"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwanees"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turks"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Zwevende komma"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Album modus"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Uitvoer plugin"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Uitvoer instellingen</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bitdiepte:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Bufferomvang:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Zacht clippen"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Gebruik de software volumeregelaar (niet aangeraden)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Normaliseren</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Normaliseren gebruiken"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Album modus"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Afknippen voorkomen (aanbevolen)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Niveaus aanpassen</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Versterk alle bestanden:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Versterk bestanden zonder tag"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Proxy-hostnaam:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Proxy-poort:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Proxy-gebruikersnaam:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Proxy-wachtwoord:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Proxy-configuratie</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Proxy gebruiken"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Gebruik authenticatie voor proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatische karakter-encoding detector ingeschakeld voor:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Terugvallen op karakter-encodings:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Gedrag</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Afspeelpositie onthouden"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Ga verder wanneer het huidige liedje is verwijderd"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Wis de afspeellijst wanneer bestanden worden geopend"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Open bestanden in een tijdelijke speellijst"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Laad metadata voor gegevens niet tot ze afgespeeld worden"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibiliteit</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
"Interpreteer \\ (achterwaartse schuine streep) als begrenzingsteken voor een "
"map"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album hoes</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
"Zoek naar afbeeldingen die met deze woorden overeenkomen (kommagescheiden):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
"Sluit afbeeldingen die met deze woorden overeenkomen uit (kommagescheiden): "
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr ""
"Zoek naar afbeeldingen die met de bestandsnaam van het lied overeenkomen"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Zoek recursief"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Zoekdiepte:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Popup-informatie</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Toon popup informatie"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Popup vertraging (tienden van een seconde):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Toon tijdschaal voor het huidige lied"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITEL"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTIEST - TITEL"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTIEST - ALBUM -TITEL"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTIEST - ALBUM - NUMMER. TITEL"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTIEST [ ALBUM ] - NUMMER. TITEL"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITEL"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Categorie"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Aangepast"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Nummer weergave</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Toon lied nummers"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Toon leidende nullen (02:00 in plaats van 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Geef informatie over het titelformaat"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Handmatige instelling:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Titelformaat:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Uitvoer plugin"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Invoer"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Effect"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualisatie "
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Algemeen"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Handmatige instelling:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious voorkeuren"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Kon de map (%s) niet aanmaken: %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Positie niet gevonden."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Er is geen lied aan het afspelen."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, nummer %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -589,409 +611,420 @@ msgstr "Met dank aan"
msgid "License"
msgstr "Licentie"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Over Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Bent u zeker dat u %s wil sluiten? Als u dit doet zullen alle wijzigingen "
-"sinds de speellijst geëxporteed werd verloren gaan."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Sluit afspeellijst"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Toon dit bericht niet opnieuw"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Afspeellijst hernoemen"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "instellingen ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Inschakelen"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizer"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Voorversterker"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Nummer"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Lengte"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Kamermuziek"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klassiek"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop "
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm-and-Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n.v.t.</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata succesvol geactualiseerd"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metadata actualiseren mislukt"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Nummer-informatie:"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formaat:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kwaliteit:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitsnelheid:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titel</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artiest</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Commentaar</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Genre</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Jaar</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Nummer</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Geen informatie beschikbaar voor %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Ga naar tijd"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Voer tijd in (minuten:seconden):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "%s overschrijven?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exporteer speellijst"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importeer speellijst"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "%s overschrijven?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Wachtrij beheerder"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Bestanden openen"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Bestanden toevoegen"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Sluit venster bij openen"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Sluit venster bij toevoegen"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_In wachtrij plaatsen"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Uit wachtrij verwijderen"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Ga naar lied"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filter: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filter:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Onthouden"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Wis_sen"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Sluit bij verspringen"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Speellijst beheerder"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Invoer"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Hernoemen"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Venster sluiten bij activeren afspeellijst"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Open URL"
@@ -999,11 +1032,11 @@ msgstr "Open URL"
msgid "Add URL"
msgstr "Voeg URL toe"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Voer URL in:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/pl.po b/po/pl.po
index ed1e2c1..7c5d458 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -14,15 +14,15 @@
# mgrvnwald <marco@mgrvnwald.com>, 2013
# mgrvnwald <marco@mgrvnwald.com>, 2013
# mgrvnwald <marco@mgrvnwald.com>, 2013
-# mkkot <marcin2006@gmail.com>, 2013
+# mkkot <marcin2006@gmail.com>, 2013-2014
# Piotr SokóƂ <psokol@jabster.pl>, 2012
# Szymon Weihs <sz.weihs@gmail.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-07-07 13:21+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 08:03+0000\n"
"Last-Translator: mkkot <marcin2006@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/audacious/"
"language/pl/)\n"
@@ -33,141 +33,134 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
-msgstr "Wyszukaj ..."
+msgstr "Szukanie ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
-msgstr[0] "Znaleziono %d plik"
+msgstr[0] "Znaleziono plik %d"
msgstr[1] "Znaleziono %d pliki"
msgstr[2] "Znaleziono %d plikĂłw"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (nieprawidƂowe kodowanie UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nowa lista odtwarzania"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "BƂąd importowania pliku EQF, programu Winamp: %s"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "BƂąd"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "PrzejdĆș do poprzedniej ƛcieĆŒki na liƛcie odtwarzania"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Wyƛwietl pomoc linii poleceƄ"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Rozpocznij odtwarzanie bieĆŒÄ…cej listy odtwarzania"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "PokaĆŒ informacje o wersji"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Wstrzymaj odtwarzanie bieĆŒÄ…cej ƛcieĆŒki"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Rozpocznij odtwarzanie"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Zatrzymaj odtwarzanie bieĆŒÄ…cej ƛcieĆŒki"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Wstrzymaj odtwarzanie"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Wstrzymaj i wznĂłw odtwarzanie bieĆŒÄ…cej ƛcieĆŒki"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "PrzejdĆș do następnej ƛcieĆŒki na liƛcie odtwarzania"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Zatrzymaj odtwarzanie"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Wyƛwietl okno dialogowe przejƛcia do ƛcieĆŒki"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "PrzejdĆș do poprzedniej piosenki"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "PrzejdĆș do następnej piosenki"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Dodaj pliki do listy odtwarzania"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
msgstr "Dodaj pliki do tymczasowej listy odtwarzania"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Wyƛwietl gƂówne okno programu"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Tryb Headless"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "Wyƛwietla okno \"PrzejdĆș do ƛcieĆŒki\""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Uruchom bez interfejsu graficznego"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Zamknij program po zakoƄczeniu odtwarzania"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "PokaĆŒ informacje o wersji"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "PokaĆŒ komunikaty bƂędĂłw"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "PLIK..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Nieznana opcja: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr " - odtwĂłrz pliki multimedialne"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Nieznana opcja: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"ProszeÌš wprowadzić „%s --help”, aby wypisać komunikat pomocy.\n"
+"ObsƂuga: audacious [OPCJE] ... [PLIK] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Nie odnaleziono dekodera dla %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "Nie moĆŒna otworzyć %s."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Nie moĆŒna %s %s: nieobsƂugiwany format pliku."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "zapisać"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "Nie moĆŒna otworzyć %s: nieobsƂugiwane rozszerzenie pliku."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "wczytać"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Nie moĆŒna %s %s: nieobsƂugiwany format pliku."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nowa lista odtwarzania"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "Nie moĆŒna zapisać %s: nieobsƂugiwane rozszerzenie pliku."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Teraz odtwarzane"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -175,412 +168,444 @@ msgstr ""
"Nie moĆŒna posortować listy odtwarzania, poniewaĆŒ odczytywanie metadanych "
"nadal trwa albo zostaƂo ono wyƂączone."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "OkoƂo %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "O programie"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "Ustawienia %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "U_staw"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Anuluj"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Zamknij"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Ustawienia"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_O programie"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Wtyczki..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Wygląd"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "DĆșwięk"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Sieć"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Lista odtwarzania"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Informacje o nagraniu"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Wtyczki"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "OgĂłlne"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efekty"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Wizualizacja"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Wejƛcie"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Wykonawca"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TytuƂ"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Numer ƛcieĆŒki"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Gatunek"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nazwa pliku"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "PoƂoĆŒenie pliku"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data wydania"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Rok wydania"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komentarz"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Jakoƛć"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Brak"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabski"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BaƂtycki"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "ChiƄski"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grecki"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebrajski"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JapoƄski"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "KoreaƄski"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polski"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Rosyjski"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "TajwaƄski"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turecki"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Typ zmiennopozycyjny"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Tryb albumu"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>Ustawienia interfejsu</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Wtyczka interfejsu:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "System dĆșwięku:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Wyjƛcie dĆșwięku</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Rozdzielczoƛć bitowa:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Rozmiar bufora:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "UsuƄ przesterowania w nagraniach"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "UĆŒyj programowej regulacji gƂoƛnoƛci (niezalecane)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Wyrównaj gƂoƛnoƛć</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "WƂącz wyrównywanie gƂoƛnoƛci"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Tryb albumu"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Zapobiegaj przesterowaniu (zalecane)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Dostrajanie</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Wzmocnij wszystkie pliki:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Wzmocnij pliki bez etykiet:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Nazwa serwera:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Port serwera:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "UĆŒytkownik:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "HasƂo:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Konfiguracja serwera poƛredniczącego</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "UĆŒyj serwera poƛredniczącego"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Uwierzytelnianie"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatycznie wykryj kodowania dla:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Zapasowe kodowanie znakĂłw:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Zachowanie</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Kontynuuj odtwarzanie po uruchomieniu programu"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "PrzejdĆș do następnej gdy usunę odtwarzaną ƛcieĆŒkę"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Czyƛć listę odtwarzania podczas otwierania nowych plików"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Dodaj pliki do tymczasowej listy odtwarzania"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "OpĂłĆșnij wczytywanie metadanych ƛcieĆŒek do czasu odtworzenia"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Zgodnoƛć</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpretuj \\ (ukoƛnik wsteczny) jako separator folderów"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>OkƂadka albumu</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Wyszukaj obrazy pasujące do tych sƂów (oddzielone przecinkiem):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Wyklucz obrazy pasujące do tych sƂów (oddzielone przecinkiem):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Wyszukaj obrazy pasujące do nazwy pliku utworu"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Wyszukaj rekurencyjnie"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "GƂębokoƛć wyszukiwania:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Wyskakujące komunikaty</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "PokaĆŒ wyskakujące informacje"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "OpĂłĆșnij wyskakujące komunikaty (dziesiąte sekundy):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "PokaĆŒ skalę czasową dla bieĆŒÄ…cej ƛcieĆŒki"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TYTUƁ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "WYKONAWCA - TYTUƁ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "WYKONAWCA - ALBUM - TYTUƁ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "WYKONAWCA - ALBUM - NUMER ƚCIEĆ»KI. TYTUƁ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "WYKONAWCA [ ALBUM ] - NUMER ƚCIEĆ»KI. TYTUƁ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TYTUƁ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategoria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "WƂasny"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Wyƛwietlanie ƛcieĆŒki</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Numery ƛcieĆŒek"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "PokaĆŒ zera (02:00 zamiast 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Wyƛwietla informacje o formatowaniu"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "WƂasny:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Format tytuƂu:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "System dĆșwięku:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Wejƛcie"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efekty"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Wizualizacja"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "OgĂłlne"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "WƂasny:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Ustawienia programu Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Ustawienia Audaciousa"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nie moĆŒna utworzyć katalogu (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Nie odnaleziono pozycji"
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Ć»adna ƛcieĆŒka nie jest odtwarzana."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "PƂyta Audio CD, ƛcieĆŒka %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -596,409 +621,420 @@ msgstr "ZasƂugi"
msgid "License"
msgstr "Licencja"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Informacje o programie Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Zamknąć listę odtwarzania „%s”? Wszelkie zmiany poczynione od momentu "
-"eksportowania listy zostaną utracone."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Czy chcesz trwale usunąć “%s”?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_UsuƄ"
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "UsuƄ listę odtwarzania"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Zamknij listę odtwarzania"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Nie pytaj więcej"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Nie pokazuj tej informacji w przyszƂoƛci"
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_ZmieƄ nazwę"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
-msgstr "ZmieƄ nazwę"
+msgstr "ZmieƄ nazwę listy odtwarzania"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ustawienia ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Podaj nazwę listy odtwarzania"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_WƂącz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Korektor graficzny"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
-msgstr "Przedwzm."
+msgstr "Przedwzmacniacz"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "UtwĂłr"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "DƂugoƛć"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Format:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Jakoƛć:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "PrzepƂywnoƛć bitowa:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Muzyka kameralna"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasyczna"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Przyjemne w odbiorze"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock & Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/d</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Zaktualizowano metadane"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Nie udaƂo się zaktualizować metadanych"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Zapisano pomyƛlnie"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Informacje o ƛcieĆŒce"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "BƂąd zapisu"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Numer nagrania"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Jakoƛć:</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Zapisz"
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Tempo transmisji:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TytuƂ</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Wykonawca</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Komentarz</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Gatunek</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Rok wydania</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Numer ƛcieĆŒki</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "Nie dotyczy"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Brak informacji dla %s. \n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_PrzejdĆș"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "PrzejdĆș do momentu"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "WprowadĆș czas (min:sek):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Nadpisać %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "_Nadpisz"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "PotwierdĆș nadpisanie"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Eksportuj listę odtwarzania"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Eksportuj"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importuj listę odtwarzania"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Nadpisać %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Importuj"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "MenedĆŒer kolejki"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_UsuƄ z kolejki"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "OtwĂłrz pliki"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_OtwĂłrz"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Z_amknij okno po otwarciu"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Dodaj pliki"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Zamknij okno po otworzeniu"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Dodaj"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Zamknij okno po dodaniu"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Za_mknij okno po dodaniu"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
-msgstr "_Dodaj do kolejki"
+msgstr "D_odaj do kolejki"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
-msgstr "_UsuƄ z kolejki"
+msgstr "U_suƄ z kolejki"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "PrzejdĆș do ƛcieĆŒki"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtr: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtr: "
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Pamiętaj"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_Wyczyƛć"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "Zamknij przy zmianie _nagrania"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Zamknij okno po przejƛciu"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "MenedĆŒer list odtwarzania"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
-msgstr "Iloƛć elementów"
+msgstr "Pozycje"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "ZmieƄ _nazwę"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Nowa"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "_ZmieƄ nazwę"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Odtwarzaj"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Za_mknięcie tego okna po aktywowaniu listy"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "OtwĂłrz adres URL"
@@ -1006,11 +1042,11 @@ msgstr "OtwĂłrz adres URL"
msgid "Add URL"
msgstr "Dodaj adres URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "WprowadĆș URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/process-transifex-po b/po/process-transifex-po
index a704861..f2aacd4 100755
--- a/po/process-transifex-po
+++ b/po/process-transifex-po
@@ -14,7 +14,7 @@ ca.po)
LANGUAGE="Catalan"
;;
cmn.po)
- LANGUAGE="Mandarin"
+ LANGUAGE="Chinese (Mandarin)"
;;
cs.po)
LANGUAGE="Czech"
@@ -61,6 +61,9 @@ fr.po)
gl.po)
LANGUAGE="Galician"
;;
+he.po)
+ LANGUAGE="Hebrew"
+ ;;
hu.po)
LANGUAGE="Hungarian"
;;
@@ -86,7 +89,7 @@ lv.po)
LANGUAGE="Latvian"
;;
ml_IN.po)
- LANGUAGE="Malayalam"
+ LANGUAGE="Malayalam (India)"
;;
ms.po)
LANGUAGE="Malay"
@@ -124,6 +127,12 @@ sr@latin.po)
sr.po)
LANGUAGE="Serbian"
;;
+sr_RS.po)
+ LANGUAGE="Serbian (Serbia)"
+ ;;
+sv.po)
+ LANGUAGE="Swedish"
+ ;;
ta.po)
LANGUAGE="Tamil"
;;
diff --git a/po/pt_BR.po b/po/pt_BR.po
index f43daaf..c8d8799 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -5,21 +5,26 @@
# Translators:
# salmora8 <shorterfire@gmail.com>, 2013
# Cleiton cleitonlima <cleitoncfl@yahoo.com.br>, 2011
+# Cleiton cleitonlima <cleitoncfl@yahoo.com.br>, 2011
# edu engler <eduengler@gmail.com>, 2012
# habner <habnertc@msn.com>, 2013
+# habner <habnertc@msn.com>, 2013
+# jimmiemacedo <jimmie.macedo@gmail.com>, 2012
# jimmiemacedo <jimmie.macedo@gmail.com>, 2012
# Karen Eliot <kareneliot@riseup. net>, 2011
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2012
# Rodrigo Macedo <rodrigomacedo@rmsolucoeseminformatica.com>, 2012
+# salmora8 <shorterfire@gmail.com>, 2012-2013
# salmora8 <shorterfire@gmail.com>, 2012
# vitorgatti <vitorgatti@yahoo.com.br>, 2012
+# vitorgatti <vitorgatti@yahoo.com.br>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-04-19 22:34+0000\n"
-"Last-Translator: salmora8 <shorterfire@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
"audacious/language/pt_BR/)\n"
"Language: pt_BR\n"
@@ -28,140 +33,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Procurando..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d arquivo encontrado"
msgstr[1] "%d arquivos encontrados"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 invĂĄlido)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nova Lista de Reprodução"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Erro ao importar arquivo '%s' do Winamp EQF"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Voltar na lista de reprodução"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Reproduzir lista de reprodução atual"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Mostrar versĂŁo"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pausar mĂșsica atual"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Parar mĂșsica atual"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pausar ou reproduzir"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Próximo na lista de reprodução"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Mostrar caixa de diĂĄlogo \"Ir para o Arquivo\""
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Adicionar arquivo(s) à lista de reprodução"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Adicionar novo(s) arquivo(s) a uma lista de reprodução temporåria"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Mostrar janela principal"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Modo Headless"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Sair ao parar a reprodução"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Mostrar versĂŁo"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Imprimir mensagens de depuração"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ARQUIVO..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- reproduzir arquivos multimĂ­dia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Tente `%s --help' para mais informaçÔes.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Decodificador para %s nĂŁo encontrado "
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s nĂŁo pĂŽde ser aberto."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "NĂŁo Ă© possĂ­vel %s %s: extensĂŁo de arquivo nĂŁo suportada."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "salvar"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "carregar"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "NĂŁo Ă© possĂ­vel %s %s: extensĂŁo de arquivo nĂŁo suportada."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nova Lista de Reprodução"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Reproduzindo"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -169,414 +165,446 @@ msgstr ""
"A lista de reprodução não pode ser organizada porque a varredura de "
"metadados ainda estĂĄ em progresso (ou foi desabilitada)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Sobre %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ConfiguraçÔes"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Áudio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Rede"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Lista de Reprodução"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "InformaçÔes da Faixa"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugins"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Geral"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efeito"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualização"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Entrada"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transportar"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Álbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tulo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "NĂșmero da faixa"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "GĂȘnero"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nome do arquivo"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Localização"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Ano"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ComentĂĄrio"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Qualidade"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Nenhum"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Árabe"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂĄltico"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "ChinĂȘs"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grego"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebraico"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JaponĂȘs"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coreano"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "PolonĂȘs"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russo"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "TaiwanĂȘs"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turco"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Ponto flutuante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Modo ĂĄlbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Plugin de saĂ­da:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Configuração de Saída</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profundidade de bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Tamanho do armazenamento:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Recorte suave"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Usar controle de volume de software (nĂŁo recomendado)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>ReplayGain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Habilitar ReplayGain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Modo ĂĄlbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Evitar distorção (recomendado)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustar NĂ­veis</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar todos os arquivos:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar arquivos nĂŁo marcados:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Proxy hostname:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Porta:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nome de usuĂĄrio proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Senha do proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ConfiguraçÔes de Proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Ativar o uso de proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Usar autenticação do proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Converter caracteres automaticamente para:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "CĂłdigos de caracteres de arquivos:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamento</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continuar reprodução ao iniciar"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avançar quando a mĂșsica atual for excluĂ­da"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Limpar lista de reprodução ao abrir arquivo(s)"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Abrir arquivo(s) em uma lista de reprodução temporåria"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "NĂŁo carregar metadados para as mĂșsicas atĂ© que sejam tocadas"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilidade</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
"Interpretar o carĂĄcter \\ (barra invertida) como um indicador de nĂ­vel na "
"ĂĄrvore de diretĂłrios"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Imagem do Álbum</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Pesquisar imagens destas palavras (separado por vĂ­rgula):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Excluir imagens destas palavras (separado por vĂ­rgula):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Pesquisar imagens correspondentes ao nome do arquivo da mĂșsica"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Pesquisar recursivamente"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Pesquisar profundidade:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>InformaçÔes Pop-up</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Mostrar informaçÔes pop-up"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Atraso do pop-up (décimos de segundo):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Mostrar escala de tempo para a mĂșsica atual"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TÍTULO"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTISTA - TÍTULO"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTISTA - ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTA - ÁLBUM - FAIXA. TÍTULO"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTA [ ÁLBUM ] - FAIXA. TÍTULO"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ÁLBUM - TÍTULO"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Categoria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizado"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Exibição do Arquivo</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Mostrar nĂșmeros das mĂșsicas"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Mostrar zero a esquerda (02:00 ao invés de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Mostrar informaçÔes sobre o formato do título"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Formato personalizado:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formato do tĂ­tulo:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Plugin de saĂ­da:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transportar"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Entrada"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efeito"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Visualização"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Geral"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Formato personalizado:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "PreferĂȘncias do Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "NĂŁo foi possĂ­vel criar diretĂłrio (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Posição não encontrada."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Nenhuma mĂșsica tocando."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD de Áudio, faixa %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estéreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -591,409 +619,420 @@ msgstr "Créditos"
msgid "License"
msgstr "Licença"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Sobre o Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"VocĂȘ tem certeza que deseja fechar a guia %s? Se vocĂȘ fizer isto, todas as "
-"mudanças feitas desta a lista de reprodução que foi exportada serå perdida."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Fechar Lista de Reprodução"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_NĂŁo mostrar esta mensagem novamente"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Renomear Lista de Reprodução"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "configuraçÔes..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Ativar"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamplificação"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Faixa"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Duração"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambiente"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de cĂĄmara"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂĄsica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "FĂĄcil de escutar"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadados atualizados com sucesso"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Atualização de metadados falhou"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaçÔes da Faixa"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formato:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Qualidade:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">FrequĂȘncia:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tulo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Álbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ComentĂĄrio</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">GĂȘnero</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Ano</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">NĂșmero da Faixa</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Nenhuma informação disponível para %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Avançar Tempo até"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Digite o tempo (minutos:segundos):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Substituir %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportar Lista de Reprodução"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar Lista de Reprodução"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Substituir %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Gerenciador de Fila"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Abrir Arquivo(s)"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Adicionar Arquivo(s)"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Fechar janela ao Abrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Fechar janela ao Adicionar"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Inserir na fila"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Remover da fila"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Pular para MĂșsica"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtro:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtro:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Lembrar"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Lim_par"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Fechar janela ao abrir"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Editor de Lista de Reprodução"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entradas"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Renomear"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Fechar janela ao ativar lista de reprodução"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Abrir URL"
@@ -1001,11 +1040,11 @@ msgstr "Abrir URL"
msgid "Add URL"
msgstr "Adicionar URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Digite a URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 5a2d6c1..5de4741 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -4,6 +4,8 @@
#
# Translators:
# Pitxyoki <Pitxyoki@gmail.com>, 2010
+# Pitxyoki <Pitxyoki@gmail.com>, 2010
+# salmora8 <shorterfire@gmail.com>, 2012
# SĂ©rgio Marques <smarquespt@gmail.com>, 2012-2013
# salmora8 <shorterfire@gmail.com>, 2012
# Valter Vicente <souobadaro@gmail.com>, 2011
@@ -11,9 +13,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-05 14:09+0000\n"
-"Last-Translator: SĂ©rgio Marques <smarquespt@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
"audacious/language/pt_PT/)\n"
"Language: pt_PT\n"
@@ -22,140 +24,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "A procurar..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d ficheiro encontrado."
msgstr[1] "%d ficheiros encontrados."
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 invĂĄlido)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nova lista de reprodução"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Erro ao importar o EQF \"%s\" do Winamp."
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Recuar na lista de reprodução"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Reproduzir lista de reprodução atual"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Mostrar versĂŁo"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pausar faixa atual"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Parar faixa atual"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pausar se em reprodução. Caso contrårio, reproduzir."
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Avançar na lista de reprodução"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Mostrar \"Ir para o ficheiro\""
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Adicionar ficheiros à lista de reprodução"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Adicionar novos ficheiros a uma lista de reprodução temporåria"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Mostrar janela principal"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Modo \"headless\""
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Sair ao parar a reprodução"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Mostrar versĂŁo"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Imprimir mensagens de depuração"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "Ficheiro..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- reproduzir ficheiros multimédia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Utilize \"%s --help\" para mais informaçÔes.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "NĂŁo foi encontrado o descodificador para %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s nĂŁo pode ser aberto."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "NĂŁo Ă© possĂ­vel %s %s: extensĂŁo nĂŁo suportada."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "gravar"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "carregar"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "NĂŁo Ă© possĂ­vel %s %s: extensĂŁo nĂŁo suportada."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nova lista de reprodução"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "A reproduzir"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -163,412 +156,444 @@ msgstr ""
"A lista de reprodução não pode ser ordenada porque a anålise de detalhes "
"ainda estĂĄ a decorrer (ou inativa)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Sobre %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "DefiniçÔes de %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Áudio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Rede"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Lista de reprodução"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "InformaçÔes da faixa"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Extras"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Geral"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efeitos"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VisualizaçÔes"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Reprodução"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transporte"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artista"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Álbum"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "TĂ­tulo"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "N.Âș da faixa"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "GĂ©nero"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Nome do ficheiro"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Caminho do ficheiro"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Ano"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ComentĂĄrio"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codificador"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Qualidade"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Nenhum"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Árabe"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "BĂĄltico"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Mandarim"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grego"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebraico"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "JaponĂȘs"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Coreano"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polaco"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Russo"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "TaiwanĂȘs"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turco"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "VĂ­rgula flutuante"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Modo de ĂĄlbum"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Suplemento de som:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>DefiniçÔes de som</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Profundidade:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Buffer:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Distorção suave"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Utilizar controlo de volume do programa (nĂŁo recomendado)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Ativar replay gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Modo de ĂĄlbum"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Prevenir distorção (recomendado)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustar nĂ­veis</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplificar todos os ficheiros:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplificar ficheiros sem \"tags\":"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Nome do proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Porta do proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Nome de utilizador do proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Senha do proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Configuração do proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Ativar utilização do proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Utilizar autenticação do proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Deteção automåtica da codificação de caracteres para:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Codificação alternativa de caracteres:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportamento</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Retomar reprodução ao iniciar"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avançar ao eliminar a faixa atual"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Apagar lista de reprodução ao abrir ficheiros"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Abrir ficheiros numa lista de reprodução temporåria"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Não carregar detalhes da faixa antes da reprodução"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibidade</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpretar \\ (barra invertida) como delimitador de pastas"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Imagem do ĂĄlbum</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Procurar imagens que tenham estas palavras (separadas por vĂ­rgula):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Excluir imagens que tenham estas palavras (separadas por vĂ­rgula):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Procurar por imagens concidentes com o nome do ficheiro"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Procurar recursivamente"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "ExtensĂŁo da procura:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Alertas</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Mostrar alertas"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Atraso do alerta (décimas de segundo):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Mostrar escala de tempo da faixa atual"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TĂ­tulo"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "Artista - TĂ­tulo"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "Artista - Álbum - Título"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "Artista - Álbum - Faixa. Título"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "Artista - [Álbum] - Faixa. Título"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "Álbum - Título"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Categoria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizado"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Exibição de faixas</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Mostrar nĂșmero da faixa"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Mostrar zeros (02:00 em vez de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Mostrar informaçÔes sobre o formato do título"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Linha personalizada:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formato do tĂ­tulo:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Suplemento de som:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transporte"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Reprodução"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efeitos"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VisualizaçÔes"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Geral"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Linha personalizada:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "PreferĂȘncias do Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "NĂŁo foi possĂ­vel criar o diretĂłrio (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Posição não encontrada"
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Nenhuma faixa em reprodução"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "CD ĂĄudio, faixa %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Estéreo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -583,411 +608,422 @@ msgstr "Créditos"
msgid "License"
msgstr "Licença"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Sobre o Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Tem a certeza de que quer fechar %s? Se o fizer, vai perder todas as "
-"alteraçÔes efetuadas após a exportação da lista de reprodução."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Fechar lista de reprodução"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_NĂŁo mostrar novamente."
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Mudar nome da lista de reprodução"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "definiçÔes..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Ativar"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Equalizador"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Amplificador"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Faixa"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Duração"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambiente"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "MĂșsica de cĂąmara"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ClĂĄssica"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "MĂșsica ligeira"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/d</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Detalhes atualizados com sucesso."
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Falha ao atualizar os detalhes."
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformaçÔes da faixa"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Formato:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Qualidade:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Taxa de dados:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">TĂ­tulo</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artista</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Álbum</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ComentĂĄrio</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">GĂ©nero</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Ano</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">N.Âș da faixa</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr ""
"Sem informaçÔes para %s\n"
"\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Ir para posição temporal"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Indique a duração (minutos:segundos):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Substituir %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportar lista de reprodução"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importar lista de reprodução"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Substituir %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Gestão de fila de reprodução"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Abrir ficheiros"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Adicionar ficheiros"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Fechar caixa de diĂĄlogo depois de Abrir"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Fechar caixa de diĂĄlogo depois de Adicionar"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Colocar na fila"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "_Retirar da fila"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Ir para a faixa"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtro: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtro:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Lembrar"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Apaga_r"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Fechar ao ir para a faixa"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Gestão de lista de reprodução"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Entradas"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "Muda_r nome"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Fe_char caixa de diålogo ao ativar lista de reprodução"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Abrir URL"
@@ -995,11 +1031,11 @@ msgstr "Abrir URL"
msgid "Add URL"
msgstr "Adicionar URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Indique o URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/ro.po b/po/ro.po
index e661f40..cf26da7 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,13 +5,15 @@
# Translators:
# xyz32 <oanaradu32@yahoo.com>, 2013
# Warui-chan <>, 2012
+# Warui-chan <>, 2012
+# xyz32 <oanaradu32@yahoo.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-03-16 13:48+0000\n"
-"Last-Translator: xyz32 <oanaradu32@yahoo.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Romanian (http://www.transifex.com/projects/p/audacious/"
"language/ro/)\n"
"Language: ro\n"
@@ -21,11 +23,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
"2:1));\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Cautare ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -33,540 +35,563 @@ msgstr[0] "%d fisiere gasite"
msgstr[1] "%d fisiere gasite"
msgstr[2] "%d fisiere gasite"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 invalid)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Nouă Listă de redare"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Eroare la importarea fiƟierului Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Sări ßnapoi ßn playlist"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Începe redarea playlist-ului curent"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Arata versiunea"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pauză"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Oprește melodia curentă"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pauză daca se redă, redare altfel"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Sări ßnainte ßn playlist"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Afișează dialogul de salt la fișier"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Adauga fisiere la lista de redare"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Adaugă fișiere noi la un playlist temporar"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Arată fereastra principală"
-#: src/audacious/main.c:242
-msgid "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
msgstr ""
-#: src/audacious/main.c:243
-msgid "Quit on playback stop"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
msgstr ""
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Arata versiunea"
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr ""
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Afișeaza mesajele de depanare"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "Fișier..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- redă fișierele multimedia"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s:·%s\n"
-"Rulează·`%s·--help'·pentru mai multe informații.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Nu sa găsit decodor pentru %s"
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr ""
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
+msgid "Cannot load %s: unsupported file extension."
msgstr ""
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "salvează"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ßncarcă"
-
-#: src/audacious/playlist-files.c:133
+#: src/audacious/playlist-files.c:185
#, c-format
-msgid "Cannot save %s: plugin does not support saving."
+msgid "Cannot save %s: unsupported file extension."
msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Nouă Listă de redare"
-
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr ""
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr ""
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Retea"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Playlist"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr ""
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugin-uri"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "General"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efect"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Vizualizare"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Intrare"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Transport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artist"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titlu"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Numărul Track-ului"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Genul"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Fișier"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Calea spre fișier"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Data"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Anul"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Comentariu"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Codec"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Calitate"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Nici unul"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabic"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltic"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Chinezesc"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grec"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Ebraică"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japoneză"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Koreană"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Poloneză"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Rusă"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwaneză"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turcă"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr ""
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Mod album"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Plugin de iesire:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Setări IeƟire</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "AdĂąncime bit:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Mărimea Buffer-ului:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr ""
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Controlează volumul la nivel software (nu este recomandat)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Amplificare la redare</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Activeaza amplificarea la redare"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Mod album"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Previne suprapunerea (recomandat)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Ajustați nivelele</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplifică toate fiƟierele:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplifică fișiere neetichetate"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Adresa sau numele:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Port-ul:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Utilizator:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Parolă:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Configurarea Proxy-ului</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Activează proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Folosește autentificarea"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Detecție automată a codificării caracterelor pentru:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Setări de rezervă pentru codificările caracterelor"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Comportament</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Continuă redarea la pornire"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Avansează dacă melodia curentă este ștearsă"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Golește lista de redare la deschiderea de noi fișiere"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Deschideti fisierele intr-o lista de redare temporara"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Nu ßncărca metadata melodiilor decùt la momentul redării"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Compatibilitate</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr ""
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr ""
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr ""
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Caută recursiv"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr ""
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Popup cu Informații</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr ""
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr ""
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr ""
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITLU"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTIST - TITLU"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTIST - ALBUM - TITLU"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTIST - ALBUM - SEMN. TITLU"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTIST [ ALBUM ] - SEMN. TITLU"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TITLU"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Categorie"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Personalizat"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Vizualizarea melodiei</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Show song numbers"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Prefixează cu un zero (02:00 ßn loc de 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Afișează informații despre formatarea titlurilor"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Format specificat:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formatul titlului:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Plugin de iesire:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Transport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Intrare"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efect"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Vizualizare"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "General"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Format specificat:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferințe Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nu s-a putut crea directorul (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Pozitia nu a fost gasita."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Nu se reda nici un cantec."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr ""
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -582,407 +607,420 @@ msgstr "Credite"
msgid "License"
msgstr "Licență"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Despre Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Nu mai arăta acest mesaj niciodată"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Redenumeste Lista de redare"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "setări ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr ""
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Egalizator"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr ""
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr ""
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr ""
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr ""
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr ""
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr ""
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Clasic"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr ""
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr ""
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Evanghelic"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr ""
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Zgomot"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock & Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr ""
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
msgstr ""
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
msgstr ""
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Informații despre Track"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Calitate:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Rată de transfer:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Titlu</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artist</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comentariu</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Gen</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">An</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Numărul Track-ului</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr ""
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Sări la Timp"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr ""
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Suprascrie %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Exportă Lista de redare"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importă Lista de redare"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Suprascrie %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr ""
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Deschide Fișiere"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Adaugă Fișiere"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Închide dialogul la deschidere"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Închide dialogul la adăugare"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Adaugă la coadă"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Scoate din coadă"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Sari la Melodie"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtru: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtru:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Memorează"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Închide dialogul după salt"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Manager de Playlist"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Intrări"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Redenumește"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr ""
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Deschide URL"
@@ -990,11 +1028,11 @@ msgstr "Deschide URL"
msgid "Add URL"
msgstr "Adaugă URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr ""
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/ru.po b/po/ru.po
index 29e42f9..a856fe4 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -4,25 +4,35 @@
#
# Translators:
# Alexander Orlov <alxorlov@pochta.ru>, 2007
+# dane <alpi_bel@mail.ru>, 2014
# michurin <a.michurin@gmail.com>, 2011
+# Someonefree <drag-sasha@mail.ru>, 2014
# Eugene Paskevich <eugene@raptor.kiev.ua>, 2010
# Eugene Zagidullin <e.asphyx@gmail.com>, 2007
+# arinov <i.arinov@iht.kz>, 2014
+# iavojd <iavojd@gmail.com>, 2013
# iavojd <iavojd@gmail.com>, 2013
# StreamThreaedr <kvantarium@gmail.com>, 2012
# Maxim Musatov <m1kc@yandex.ru>, 2012
+# michurin <a.michurin@gmail.com>, 2011
+# Maxim Musatov <m1kc@yandex.ru>, 2012
# NaiLi (aka jamesjames) Rootaerc <theism@mail.ru>, 2012
# NaiLi (aka jamesjames) Rootaerc <theism@mail.ru>, 2012
+# Lowrider <pams@imail.ru>, 2014
+# Rax Garfield <admin@dvizho.ks.ua>, 2012
# Rax Garfield <admin@dvizho.ks.ua>, 2012
# serg0 <serg0@ulx.ru>, 2009
# serg0 <sergo@bk.ru>, 2010
-# Vitaly Lipatov <lav@etersoft.ru>, 2007
+# serg0 <sergo@bk.ru>, 2010
+# StreamThreaedr <kvantarium@gmail.com>, 2012
+# lav <lav@etersoft.ru>, 2007
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-13 19:53+0000\n"
-"Last-Translator: iavojd <iavojd@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 19:44+0000\n"
+"Last-Translator: arinov <i.arinov@iht.kz>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/audacious/"
"language/ru/)\n"
"Language: ru\n"
@@ -32,11 +42,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
-msgstr "ИЮёт ĐżĐŸĐžŃĐș ..."
+msgstr "Đ’Ń‹ĐżĐŸĐ»ĐœŃĐ”Ń‚ŃŃ ĐżĐŸĐžŃĐș ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -44,129 +54,120 @@ msgstr[0] "НаĐčĐŽĐ”Đœ %d фаĐčĐ»"
msgstr[1] "НаĐčĐŽĐ”ĐœĐŸ %d фаĐčла"
msgstr[2] "НаĐčĐŽĐ”ĐœĐŸ %d фаĐčĐ»ĐŸĐČ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (ĐœĐ”ĐČĐ”Ń€ĐœŃ‹Đč UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "ĐĐŸĐČыĐč ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "ĐžŃˆĐžĐ±ĐșĐ° про ĐžĐŒĐżĐŸŃ€Ń‚Đ” фаĐčла Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "ĐžŃˆĐžĐ±ĐșĐ°"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ĐŸĐ”Ń€Đ”Đčто Đș ĐżŃ€Đ”ĐŽŃ‹ĐŽŃƒŃ‰Đ”Đč ĐŽĐŸŃ€ĐŸĐ¶ĐșĐ” ĐČ ŃĐżĐžŃĐșĐ” ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "ĐżĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐșĐŸĐŒĐ°ĐœĐŽĐœŃƒŃŽ ŃŃ‚Ń€ĐŸĐșу ĐżĐŸĐŒĐŸŃ‰Đž"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Начать ĐżŃ€ĐŸĐžĐłŃ€Ń‹ĐČать Ń‚Đ”ĐșущоĐč ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐČДрсОю"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "ĐŸŃ€ĐžĐŸŃŃ‚Đ°ĐœĐŸĐČоть Ń‚Đ”Đșущую ĐŽĐŸŃ€ĐŸĐ¶Đșу"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "ĐœĐ°Ń‡Đ°Ń‚ŃŒ ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžĐ”"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ĐžŃŃ‚Đ°ĐœĐŸĐČоть Ń‚Đ”Đșущую ĐŽĐŸŃ€ĐŸĐ¶Đșу"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "ŃĐŽĐ”Đ»Đ°Ń‚ŃŒ паузу ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "ĐŸŃ€ĐžĐŸŃŃ‚Đ°ĐœĐŸĐČоть про ĐżŃ€ĐŸĐžĐłŃ€Ń‹ĐČĐ°ĐœĐžĐž, ĐžĐœĐ°Ń‡Đ” ― ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐŸĐŽĐžŃ‚ŃŒ"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ĐŸĐ”Ń€Đ”Đčто Đș ŃĐ»Đ”ĐŽŃƒŃŽŃ‰Đ”Đč ĐŽĐŸŃ€ĐŸĐ¶ĐșĐ” ĐČ ŃĐżĐžŃĐșĐ” ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ĐŸŃŃ‚Đ°ĐœĐŸĐČоть ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžĐ”"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "ĐżŃ€ĐŸĐżŃƒŃĐș ĐżŃ€Đ”ĐŽŃ‹ĐŽŃƒŃ‰Đ”Đč ĐżĐ”ŃĐœĐž"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐŽĐžĐ°Đ»ĐŸĐł ĐżĐ”Ń€Đ”Ń…ĐŸĐŽĐ° Đș фаĐčлу"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "ĐżŃ€ĐŸĐżŃƒŃŃ‚ĐžŃ‚ŃŒ ŃĐ»Đ”ĐŽŃƒŃŽŃ‰ŃƒŃŽ ĐżĐ”ŃĐœŃŽ"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Đ”ĐŸĐ±Đ°ĐČоть фаĐčлы ĐČ ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Đ”ĐŸĐ±Đ°ĐČоть фаĐčлы ĐČĐŸ ĐČŃ€Đ”ĐŒĐ”ĐœĐœŃ‹Đč ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "ĐŽĐŸĐ±Đ°ĐČоть фаĐčлы ĐČ ĐżĐ»Đ”ĐčлОст"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ глаĐČĐœĐŸĐ” ĐŸĐșĐœĐŸ"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "ŃƒĐŽĐ°Đ»Đ”ĐœĐœŃ‹Đč ĐŽĐŸŃŃ‚ŃƒĐż"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐŸĐșĐœĐŸ ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ ĐżĐ”ŃĐ”Đœ"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "ĐœĐ°Ń‡Đ°Ń‚ŃŒ бДз графОчДсĐșĐŸĐłĐŸ ĐžĐœŃ‚Đ”Ń€Ń„Đ”Đčса"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ВыĐčто ĐżĐŸ ĐŸĐșĐŸĐœŃ‡Đ°ĐœĐžĐž ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐČДрсОю"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
-msgstr "ĐŸĐ”Ń‡Đ°Ń‚Đ°Ń‚ŃŒ ĐŸŃ‚Đ»Đ°ĐŽĐŸŃ‡ĐœŃƒŃŽ ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃŽ"
+msgstr "ВыĐČДстО ŃĐŸĐŸĐ±Ń‰Đ”ĐœĐžŃ ĐŸĐ± ĐŸŃ‚Đ»Đ°ĐŽĐșĐ”"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ЀАЙЛ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "ĐĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐ°Ń ĐŸĐżŃ†ĐžŃ :%s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- ĐżŃ€ĐŸĐžĐłŃ€Ń‹ĐČать ĐŒŃƒĐ»ŃŒŃ‚ĐžĐŒĐ”ĐŽĐžĐčĐœŃ‹Đ” фаĐčлы"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "ĐĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐ°Ń ĐŸĐżŃ†ĐžŃ :%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-msgstr ""
-"%s: %s\n"
-"ĐŸĐŸĐżŃ€ĐŸĐ±ŃƒĐčŃ‚Đ” `%s --help' ĐŽĐ»Ń ĐżĐŸĐ»ŃƒŃ‡Đ”ĐœĐžŃ ĐżĐŸĐŽŃ€ĐŸĐ±ĐœĐŸĐłĐŸ ĐŸĐżĐžŃĐ°ĐœĐžŃ.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr "ĐŸŃ€ĐžĐŒĐ”Ń€:audacious[ ĐŸĐżŃ†ĐžŃ].....[фаĐčĐ»]...\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "ĐĐ” ĐœĐ°ĐčĐŽĐ”Đœ ĐŽĐ”ĐșĐŸĐŽĐ”Ń€ ĐŽĐ»Ń %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s ĐœĐ” ĐŒĐŸĐ¶Đ”Ń‚ Đ±Ń‹Ń‚ŃŒ ĐŸŃ‚Đșрыт."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ %s %s: Ń€Đ°ŃŃˆĐžŃ€Đ”ĐœĐžĐ” фаĐčла ĐœĐ” ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”Ń‚ŃŃ."
+msgid "Cannot load %s: unsupported file extension."
+msgstr "ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ Đ·Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ %s: Ń€Đ°ŃŃˆĐžŃ€Đ”ĐœĐžĐ” фаĐčла ĐœĐ” ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”Ń‚ŃŃ."
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "ŃĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "Đ·Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ %s %s: Ń€Đ°ŃŃˆĐžŃ€Đ”ĐœĐžĐ” фаĐčла ĐœĐ” ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”Ń‚ŃŃ."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "ĐĐŸĐČыĐč ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ %s : Ń€Đ°ŃŃˆĐžŃ€Đ”ĐœĐžĐ” фаĐčла ĐœĐ” ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”Ń‚ŃŃ."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "ĐĄĐ”Đčчас ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐŸĐŽĐžŃ‚ŃŃ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -174,413 +175,445 @@ msgstr ""
"ĐĄĐżĐžŃĐŸĐș ĐœĐ” ĐŒĐŸĐ¶Đ”Ń‚ Đ±Ń‹Ń‚ŃŒ ĐŸŃ‚ŃĐŸŃ€Ń‚ĐžŃ€ĐŸĐČĐ°Đœ, таĐș ĐșĐ°Đș сĐșĐ°ĐœĐžŃ€ĐŸĐČĐ°ĐœĐžĐ” ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐœŃ‹Ń… ĐČсё Дщё "
"оЮёт (ОлО Đ±Ń‹Đ»ĐŸ ĐČыĐșĐ»ŃŽŃ‡Đ”ĐœĐŸ)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "О %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "О ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐŒĐ”"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_ĐĄĐŽĐ”Đ»Đ°Ń‚ŃŒ"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "ЗаĐșĐŸĐœŃ‡ĐžŃ‚ŃŒ"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "ЗаĐșрыть"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_О"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_ĐŸĐ»Đ°ĐłĐžĐœŃ‹..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "Начать ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžĐ”"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "ЗĐČуĐș"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ĐĄĐ”Ń‚ŃŒ"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ĐĄĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
-msgstr "Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ ĐŸ ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐž"
+msgstr "ĐĄĐČĐ”ĐŽĐ”ĐœĐžŃ ĐŸ ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐž"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
-msgstr "ĐœĐŸĐŽŃƒĐ»Đž"
+msgstr "ĐĐ°ĐŽŃŃ‚Ń€ĐŸĐčĐșĐž"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "ОбщОД"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Đ­Ń„Ń„Đ”Đșты"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Đ’ĐžĐ·ŃƒĐ°Đ»ĐžĐ·Đ°Ń†ĐžŃ"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ВĐČĐŸĐŽ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ĐąŃ€Đ°ĐœŃĐżĐŸŃ€Ń‚"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Đ˜ŃĐżĐŸĐ»ĐœĐžŃ‚Đ”Đ»ŃŒ"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ĐĐ»ŃŒĐ±ĐŸĐŒ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "ĐĐ°Đ·ĐČĐ°ĐœĐžĐ”"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
-msgstr "ĐĐŸĐŒĐ”Ń€ ĐŽĐŸŃ€ĐŸĐ¶ĐșĐž"
+msgstr "ĐĐŸĐŒĐ”Ń€ ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐž"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Đ–Đ°ĐœŃ€"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Đ˜ĐŒŃ фаĐčла"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
-msgstr "Путь Đș фаĐčлу"
+msgstr "Đ Đ°ŃĐżĐŸĐ»ĐŸĐ¶Đ”ĐœĐžĐ”"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Дата"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Đ“ĐŸĐŽ"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
-msgstr "ĐšĐŸĐŒĐŒĐ”ĐœŃ‚Đ°Ń€ĐžĐč"
+msgstr "ĐžĐżĐžŃĐ°ĐœĐžĐ”"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ĐšĐŸĐŽĐ”Đș"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "КачДстĐČĐŸ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "ĐĐ”Ń‚"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "АрабсĐșĐžĐč"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "БалтОĐčсĐșОД ŃĐ·Ń‹ĐșĐž"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "КотаĐčсĐșĐžĐč"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ГрДчДсĐșĐžĐč"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ИĐČрот"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "ĐŻĐżĐŸĐœŃĐșĐžĐč"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "ĐšĐŸŃ€Đ”ĐčсĐșĐžĐč"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "ĐŸĐŸĐ»ŃŒŃĐșĐžĐč"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "РуссĐșĐžĐč"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "йаĐčĐČĐ°ĐœŃŒŃĐșĐžĐč"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "ĐąŃƒŃ€Đ”Ń†ĐșĐžĐč"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "ĐŸĐ»Đ°ĐČающая Ń‚ĐŸŃ‡ĐșĐ°"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Đ Đ”Đ¶ĐžĐŒ Đ°Đ»ŃŒĐ±ĐŸĐŒĐ°"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž Đ˜ĐœŃ‚Đ”Ń€Ń„Đ”Đčса<b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "Đ˜ĐœŃ‚Đ”Ń€Ń„Đ”Đčс ĐżĐ»Đ°ĐłĐžĐœĐ°:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ĐĐ°ĐŽŃŃ‚Ń€ĐŸĐčĐșĐ° ĐČыĐČĐŸĐŽĐ°:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐČыĐČĐŸĐŽĐ°</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
-msgstr "Đ Đ°Đ·Ń€ŃĐŽĐœĐŸŃŃ‚ŃŒ:"
+msgstr "КачДстĐČĐŸ Đ·ĐČуĐșĐ°:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Đ Đ°Đ·ĐŒĐ”Ń€ Đ±ŃƒŃ„Đ”Ń€Đ°:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ĐŒŃ"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "МягĐșая ĐŸĐ±Ń€Đ”Đ·ĐșĐ°"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Đ˜ŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐŒĐœŃƒŃŽ Ń€Đ”ĐłŃƒĐ»ĐžŃ€ĐŸĐČĐșу ĐłŃ€ĐŸĐŒĐșĐŸŃŃ‚Đž (ĐœĐ” рДĐșĐŸĐŒĐ”ĐœĐŽŃƒĐ”Ń‚ŃŃ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
-msgstr "<b>Replay Gain (ĐČыраĐČĐœĐžĐČĐ°ĐœĐžĐ” ĐłŃ€ĐŸĐŒĐșĐŸŃŃ‚Đž)</b>"
+msgstr "<b>ВыраĐČĐœĐžĐČĐ°ĐœĐžĐ” ĐłŃ€ĐŸĐŒĐșĐŸŃŃ‚Đž</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
-msgstr "ВĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ Replay Gain"
+msgstr "Đ—Đ°ĐŽĐ”ĐčстĐČĐŸĐČать ĐČыраĐČĐœĐžĐČĐ°ĐœĐžĐ” ĐłŃ€ĐŸĐŒĐșĐŸŃŃ‚Đž"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Đ Đ”Đ¶ĐžĐŒ Đ°Đ»ŃŒĐ±ĐŸĐŒĐ°"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "ĐŸŃ€Đ”ĐŽĐŸŃ‚ĐČратоть ŃˆĐžĐżĐ”ĐœĐžĐ”/трДсĐș (рДĐșĐŸĐŒĐ”ĐœĐŽŃƒĐ”Ń‚ŃŃ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Đ Đ”ĐłŃƒĐ»ĐžŃ€ĐŸĐČĐșĐ° ŃƒŃ€ĐŸĐČĐœĐ”Đč</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ĐŁŃĐžĐ»ĐžŃ‚ŃŒ Đ·ĐČуĐș ĐČĐŸ ĐČсДх фаĐčлах ĐœĐ°:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "ЮБ"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
-msgstr "ĐŁŃĐžĐ»ĐžŃ‚ŃŒ Đ·ĐČуĐș ĐČ Ń„Đ°Đčлах бДз тэга ĐœĐ°:"
+msgstr "ĐŁŃĐžĐ»ĐžŃ‚ŃŒ Đ·ĐČуĐș ĐČ Ń„Đ°Đčлах бДз ĐŒĐ”Ń‚ĐŸĐș ĐœĐ°:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
-msgstr "ХДрĐČДр:"
+msgstr "Đ˜ĐŒŃ узла ĐżŃ€ĐŸĐșсО-сДрĐČДра:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "ĐŸĐŸŃ€Ń‚:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Đ˜ĐŒŃ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "ĐŸĐ°Ń€ĐŸĐ»ŃŒ:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
-msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐżŃ€ĐŸĐșсО</b>"
+msgstr "<b>ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐżŃ€ĐŸĐșсО-сДрĐČДра</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Đ˜ŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать ĐżŃ€ĐŸĐșсО"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Đ˜ŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать Đ°ĐČŃ‚ĐŸŃ€ĐžĐ·Đ°Ń†ĐžŃŽ чДрДз ĐżŃ€ĐŸĐșсО"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "АĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡Đ”ŃĐșĐž ĐŸĐżŃ€Đ”ĐŽĐ”Đ»ŃŃ‚ŃŒ ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșу ĐŽĐ»Ń ŃĐ·Ń‹ĐșĐ°:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ЕслО ĐœĐ” ŃƒĐŽĐ°Đ»ĐŸŃŃŒ ĐŸĐżŃ€Đ”ĐŽĐ”Đ»ĐžŃ‚ŃŒ, ĐžŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșу:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Đ Đ”Đ¶ĐžĐŒ</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ĐŸŃ€ĐŸĐŽĐŸĐ»Đ¶Đ°Ń‚ŃŒ ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžĐ” про запусĐșĐ”"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
-msgstr "ĐŸŃ€ĐŸĐŽĐČогаться ĐŽĐ°Đ»ŃŒŃˆĐ”, ДслО Ń‚Đ”Đșущая ĐżĐ”ŃĐœŃ ŃƒĐŽĐ°Đ»Đ”ĐœĐ°"
+msgstr "ĐŸŃ€ĐŸĐŽĐČогаться ĐŽĐ°Đ»ŃŒŃˆĐ”, ДслО Ń‚Đ”Đșущая ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžŃ ŃƒĐŽĐ°Đ»Đ”ĐœĐ°"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
-msgstr "Очощать ŃĐżĐžŃĐŸĐș, ДслО ĐŸŃ‚ĐșрыĐČĐ°Đ”Ń‚ŃŃ ĐœĐŸĐČая ĐżĐ”ŃĐœŃ"
+msgstr "Очощать ŃĐżĐžŃĐŸĐș, ДслО ĐŸŃ‚ĐșрыĐČĐ°Đ”Ń‚ŃŃ ĐœĐŸĐČая ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžŃ"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ОтĐșрыĐČать фаĐčлы ĐČĐŸ ĐČŃ€Đ”ĐŒĐ”ĐœĐœĐŸĐŒ спОсĐșĐ” ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
-msgstr "ĐĐ” Đ·Đ°ĐłŃ€ŃƒĐ¶Đ°Ń‚ŃŒ ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐœŃ‹Đ” ĐżĐ”ŃĐ”Đœ ĐŽĐŸ ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
+msgstr "ĐĐ” Đ·Đ°ĐłŃ€ŃƒĐ¶Đ°Ń‚ŃŒ ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐœŃ‹Đ” ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐč ĐŽĐŸ ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>ĐĄĐŸĐČĐŒĐ”ŃŃ‚ĐžĐŒĐŸŃŃ‚ŃŒ</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
"Счотать \\ (ĐŸĐ±Ń€Đ°Ń‚ĐœŃƒŃŽ ĐșĐŸŃŃƒŃŽ Ń‡Đ”Ń€Ń‚Ńƒ) Ń€Đ°Đ·ĐŽĐ”Đ»ĐžŃ‚Đ”Đ»Đ”ĐŒ ĐžĐŒŃ‘Đœ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐŸĐČ ĐČ ĐżŃƒŃ‚Đž Đș фаĐčлу"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ĐžĐ±Đ»ĐŸĐ¶ĐșĐ° Đ°Đ»ŃŒĐ±ĐŸĐŒĐ°</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "ИсĐșать ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ, ŃĐŸĐŽĐ”Ń€Đ¶Đ°Ń‰ĐžĐ” это ŃĐ»ĐŸĐČĐ° (Ń€Đ°Đ·ĐŽĐ”Đ»ŃŃ‚ŃŒ Đ·Đ°ĐżŃŃ‚Ń‹ĐŒĐž):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "ИсĐșĐ»ŃŽŃ‡Đ°Ń‚ŃŒ ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ, ŃĐŸĐŽĐ”Ń€Đ¶Đ°Ń‰ĐžĐ” это ŃĐ»ĐŸĐČĐ° (Ń€Đ°Đ·ĐŽĐ”Đ»ŃŃ‚ŃŒ Đ·Đ°ĐżŃŃ‚Ń‹ĐŒĐž):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
-msgstr "ИсĐșать ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ, ŃĐŸĐŽĐ”Ń€Đ¶Đ°Ń‰ĐžĐ” ĐœĐ°Đ·ĐČĐ°ĐœĐžĐ” ĐżĐ”ŃĐœĐž"
+msgstr "ИсĐșать ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ, ŃĐŸĐŽĐ”Ń€Đ¶Đ°Ń‰ĐžĐ” ĐœĐ°Đ·ĐČĐ°ĐœĐžĐ” ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐž"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Đ Đ”ĐșурсоĐČĐœŃ‹Đč ĐżĐŸĐžŃĐș"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Đ“Đ»ŃƒĐ±ĐžĐœĐ° ĐżĐŸĐžŃĐșĐ°:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
-msgstr "<b>ВсплыĐČающДД ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžĐŸĐœĐœĐŸĐ” ĐŸĐșĐœĐŸ</b>"
+msgstr "<b>ВсплыĐČающОД сĐČĐ”ĐŽĐ”ĐœĐžŃ</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "ĐŸĐŸĐșĐ°Đ·Ń‹ĐČать ĐČсплыĐČающую ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃŽ"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "ЗаЎДржĐșĐ° ĐČсплыĐČĐ°ĐœĐžŃ (ĐŽĐ”ŃŃŃ‚Ń‹Đ” ĐŽĐŸĐ»Đž сДĐșŃƒĐœĐŽŃ‹):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "ĐŸĐŸĐșĐ°Đ·Ń‹ĐČать ĐČŃ€Đ”ĐŒĐ”ĐœĐœŃƒŃŽ шĐșалу ĐŽĐ»Ń Ń‚Đ”ĐșŃƒŃ‰Đ”Đč ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐž"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "НАЗВАНИЕ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ИСПОЛНИбЕЛЬ - НАЗВАНИЕ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ИСПОЛНИбЕЛЬ - АЛЬБОМ - НАЗВАНИЕ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ИСПОЛНИбЕЛЬ - АЛЬБОМ - ДОРОЖКА. НАЗВАНИЕ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ИСПОЛНИбЕЛЬ [ АЛЬБОМ ] - ДОРОЖКА. НАЗВАНИЕ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "АЛЬБОМ - НАЗВАНИЕ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ĐšĐ°Ń‚Đ”ĐłĐŸŃ€ĐžŃ"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "ĐĄĐŸĐ±ŃŃ‚ĐČĐ”ĐœĐœŃ‹Đ” ŃƒŃŃ‚Đ°ĐœĐŸĐČĐșĐž"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
-msgstr "<b>ĐžŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” ĐŽĐŸŃ€ĐŸĐ¶Đ”Đș</b>"
+msgstr "<b>ĐžŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐč</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
-msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐœĐŸĐŒĐ”Ń€ ĐŽĐŸŃ€ĐŸĐ¶ĐșĐž"
+msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐœĐŸĐŒĐ”Ń€ ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐž"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ĐžŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ°Ń‚ŃŒ ĐœŃƒĐ»Đž ĐČ ĐœĐ°Ń‡Đ°Đ»Đ” (02:00 ĐČĐŒĐ”ŃŃ‚ĐŸ 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃŽ ĐŸ Ń„ĐŸŃ€ĐŒĐ°Ń‚Đ” ĐœĐ°Đ·ĐČĐ°ĐœĐžŃ"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "ĐĄĐČĐŸĐč Ń„ĐŸŃ€ĐŒĐ°Ń‚:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Đ€ĐŸŃ€ĐŒĐ°Ń‚ ĐœĐ°Đ·ĐČĐ°ĐœĐžŃ:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "ĐŸĐ»Đ°ĐłĐžĐœ ĐČыĐČĐŸĐŽĐ°:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ĐąŃ€Đ°ĐœŃĐżĐŸŃ€Ń‚"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ВĐČĐŸĐŽ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Đ­Ń„Ń„Đ”Đșты"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Đ’ĐžĐ·ŃƒĐ°Đ»ĐžĐ·Đ°Ń†ĐžŃ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "ОбщОД"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ЗаЮать Ń„ĐŸŃ€ĐŒĐ°Ń‚:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "ĐŸĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Ń‹ Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "ĐŃƒĐŽĐ°Ń†ĐžĐŸŃ ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ ĐșĐ°Ń‚Đ°Đ»ĐŸĐł (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "ĐŸĐŸĐ·ĐžŃ†ĐžŃ ĐœĐ” ĐœĐ°ĐčĐŽĐ”ĐœĐ°."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ĐĐžŃ‡Đ”ĐłĐŸ ĐœĐ” ĐżŃ€ĐŸĐžĐłŃ€Ń‹ĐČĐ°Đ”Ń‚ŃŃ."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
-msgstr "ĐŃƒĐŽĐžĐŸ CD, трДĐș %s"
+msgstr "ĐœŃƒĐ·Ń‹ĐșĐ°Đ»ŃŒĐœŃ‹Đč ĐșĐŸĐŒĐżĐ°Đșт-ЎОсĐș, ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžŃ %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ĐœĐŸĐœĐŸ"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ĐĄŃ‚Đ”Ń€Đ”ĐŸ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -596,424 +629,435 @@ msgstr "АĐČŃ‚ĐŸŃ€Ń‹"
msgid "License"
msgstr "Đ›ĐžŃ†Đ”ĐœĐ·ĐžŃ"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
-msgstr "Об Audacious"
+msgstr "ĐĄĐČĐ”ĐŽĐ”ĐœĐžŃ Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Вы уĐČĐ”Ń€Đ”ĐœŃ‹, Ń‡Ń‚ĐŸ Ń…ĐŸŃ‚ĐžŃ‚Đ” Đ·Đ°Đșрыть %s? В ŃŃ‚ĐŸĐŒ ŃĐ»ŃƒŃ‡Đ°Đ” ĐČсД ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžŃ с ĐŒĐŸĐŒĐ”ĐœŃ‚Đ° "
-"эĐșŃĐżĐŸŃ€Ń‚Đ° спОсĐșĐ° ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ Đ±ŃƒĐŽŃƒŃ‚ ŃƒŃ‚Đ”Ń€ŃĐœŃ‹."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Вы Ń…ĐŸŃ‚ĐžŃ‚Đ” ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ бДз ĐČĐŸŃŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”ĐœĐžŃ “%s”?"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ЗаĐșрыть ŃĐżĐžŃĐŸĐș"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "Đ‘ĐŸĐ»ŃŒŃˆĐ” ĐœĐ” ĐżĐŸĐșĐ°Đ·Ń‹ĐČать ŃŃ‚ĐŸ ĐżŃ€Đ”ĐŽŃƒĐżŃ€Đ”Đ¶ĐŽĐ”ĐœĐžĐ”"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ плДĐčлОст"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_ĐĐ” спрашоĐČать ŃĐœĐŸĐČĐ°"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать"
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Đ§Ń‚ĐŸ ĐČы Ń…ĐŸŃ‚ĐžŃ‚Đ” ĐżĐŸŃĐ»ŃƒŃˆĐ°Ń‚ŃŒ ĐČ ŃŃ‚ĐŸĐŒ плДĐčлОстД?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "ВĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Гц"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 ĐșГц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 ĐșГц"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Đ­ĐșĐČалаĐčзДр"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ĐŸŃ€Đ”ĐŽŃƒŃĐžĐ»Đ”ĐœĐžĐ”"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
-msgstr "йрДĐș"
+msgstr "ĐšĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžŃ"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
-msgstr "Đ”Đ»ĐžĐœĐ°"
+msgstr "Đ”Đ»ĐžŃ‚Đ”Đ»ŃŒĐœĐŸŃŃ‚ŃŒ"
+
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Đ€ĐŸŃ€ĐŒĐ°Ń‚:"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "КачДстĐČĐŸ:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "бОтрДĐčт:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classical"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ĐœĐ”ĐŽĐŸŃŃ‚ŃƒĐżĐœĐŸ</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ĐœĐ”Ń‚Đ°ĐŽĐ°ĐœĐœŃ‹Đ” ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐŸĐ±ĐœĐŸĐČĐ»Đ”ĐœŃ‹"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ĐžŃˆĐžĐ±ĐșĐ° про ĐŸĐ±ĐœĐŸĐČĐ»Đ”ĐœĐžĐž ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐœŃ‹Ń…"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ ĐŸ ĐŽĐŸŃ€ĐŸĐ¶ĐșĐ”"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Đ€ĐŸŃ€ĐŒĐ°Ń‚:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">КачДстĐČĐŸ:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">БОтрДĐčт:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">ĐĐ°Đ·ĐČĐ°ĐœĐžĐ”</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "ŃƒŃĐżĐ”ŃˆĐœĐŸ ŃĐŸŃ…Ń€Đ°ĐœĐ”ĐœĐŸ"
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Đ˜ŃĐżĐŸĐ»ĐœĐžŃ‚Đ”Đ»ŃŒ</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "ŃĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ ĐŸŃˆĐžĐ±Đșу"
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ĐĐ»ŃŒĐ±ĐŸĐŒ</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "ĐœĐŸĐŒĐ”Ń€ трДĐșĐ°"
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ĐšĐŸĐŒĐŒĐ”ĐœŃ‚Đ°Ń€ĐžĐž</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ"
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Đ–Đ°ĐœŃ€</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Đ“ĐŸĐŽ</span>"
-
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ĐĐŸĐŒĐ”Ń€ ĐŽĐŸŃ€ĐŸĐ¶ĐșĐž</span>"
-
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
-msgstr "%d ĐșбОт/с"
+msgstr "%d КбОт/с"
+
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "ĐœĐ” ĐŽĐŸŃŃ‚ŃƒĐżĐ”Đœ"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
-msgstr "ĐĐ”Ń‚ ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžĐž ĐŽĐ»Ń %s.\n"
+msgstr "ОтсутстĐČуют сĐČĐ”ĐŽĐ”ĐœĐžŃ %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_ĐŸĐ”Ń€Đ”Đčто"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ĐŸĐ”Ń€Đ”Đčто ĐșĐŸ ĐČŃ€Đ”ĐŒĐ”ĐœĐž"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ВĐČДЎОтД ĐČŃ€Đ”ĐŒŃ (ĐŒĐžĐœŃƒŃ‚Ń‹:сДĐșŃƒĐœĐŽŃ‹):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Đ—Đ°ĐŒĐ”ĐœĐžŃ‚ŃŒ %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "_ĐŸĐ”Ń€Đ”Đ·Đ°ĐżĐžŃĐ°Ń‚ŃŒ"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "ĐŸĐŸĐŽŃ‚ĐČĐ”Ń€ĐŽĐžŃ‚ŃŒ ĐŸĐ”Ń€Đ”Đ·Đ°ĐżĐžŃŃŒ"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Đ­ĐșŃĐżĐŸŃ€Ń‚ĐžŃ€ĐŸĐČать ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_Đ­ĐșŃĐżĐŸŃ€Ń‚ĐžŃ€ĐŸĐČать"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Đ˜ĐŒĐżĐŸŃ€Ń‚ĐžŃ€ĐŸĐČать ŃĐżĐžŃĐŸĐș ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ĐŸĐ”Ń€Đ”Đ·Đ°ĐżĐžŃĐ°Ń‚ŃŒ %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_Đ˜ĐŒĐżĐŸŃ€Ń‚ĐžŃ€ĐŸĐČать"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "УпраĐČĐ»Đ”ĐœĐžĐ” ĐŸŃ‡Đ”Ń€Đ”ĐŽŃŒŃŽ"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_ĐŁĐ±Ń€Đ°Ń‚ŃŒ Оз ĐŸŃ‡Đ”Ń€Đ”ĐŽĐž"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "ОтĐșрыть фаĐčлы"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_ОтĐșрыть"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "ЗаĐșрыть ĐŽĐžĐ°Đ»ĐŸĐł про ĐŸŃ‚Đșрытоо"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Đ”ĐŸĐ±Đ°ĐČоть фаĐčлы"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ЗаĐșрыть ĐŸĐșĐœĐŸ ĐżĐŸŃĐ»Đ” ĐŸŃ‚Đșрытоя фаĐčĐ»ĐŸĐČ"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "Đ”ĐŸĐ±Đ°ĐČоть"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ЗаĐșрыть ĐŸĐșĐœĐŸ ĐżĐŸŃĐ»Đ” ĐŽĐŸĐ±Đ°ĐČĐ»Đ”ĐœĐžŃ фаĐčĐ»ĐŸĐČ"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "ЗаĐșрыть ĐŽĐžĐ°Đ»ĐŸĐł ĐżĐŸŃĐ»Đ” ĐŽĐŸĐ±Đ°ĐČĐ»Đ”ĐœĐžŃ"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
-msgstr "В ĐŸŃ‡Đ”Ń€Đ”ĐŽŃŒ"
+msgstr "_ĐŸĐŸŃŃ‚Đ°ĐČоть ĐČ ĐŸŃ‡Đ”Ń€Đ”ĐŽŃŒ"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
-msgstr "ĐŁĐ±Ń€Đ°Ń‚ŃŒ Оз ĐŸŃ‡Đ”Ń€Đ”ĐŽĐž"
+msgstr "Из_ъять Оз ĐŸŃ‡Đ”Ń€Đ”ĐŽĐž"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
-msgstr "ĐŸĐ”Ń€Đ”Đčто Đș ĐżĐ”ŃĐœĐ”"
+msgstr "ĐŸĐ”Ń€Đ”Đčто Đș ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†ĐžĐž"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Đ€ĐžĐ»ŃŒŃ‚Ń€: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "Đ€ĐžĐ»ŃŒŃ‚Ń€:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Đ—Đ°ĐżĐŸĐŒĐœĐžŃ‚ŃŒ"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Очостоть"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
msgstr "ЗаĐșрыть ĐżĐŸŃĐ»Đ” ĐżĐ”Ń€Đ”Ń…ĐŸĐŽĐ°"
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "УпраĐČĐ»Đ”ĐœĐžĐ” спОсĐșĐ°ĐŒĐž ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Đ­Đ»Đ”ĐŒĐ”ĐœŃ‚ĐŸĐČ"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_ĐĐŸĐČыĐč"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "ĐŸĐ”Ń€Đ”_ĐžĐŒĐ”ĐœĐŸĐČать"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Đ’ĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžĐ”"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "ЗаĐșрыть ĐŸĐșĐœĐŸ про ĐČŃ‹Đ±ĐŸŃ€Đ” спОсĐșĐ° ĐČĐŸŃĐżŃ€ĐŸĐžĐ·ĐČĐ”ĐŽĐ”ĐœĐžŃ"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
-msgstr "ОтĐșрыть URL"
+msgstr "ОтĐșрыть ĐČДб-ссылĐșу"
#: src/libaudgui/url-opener.c:55
msgid "Add URL"
-msgstr "Đ”ĐŸĐ±Đ°ĐČоть URL"
+msgstr "Đ”ĐŸĐ±Đ°ĐČоть ĐČДб-ссылĐșу"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
-msgstr "ВĐČДЎОтД URL:"
+msgstr "ВĐČДЎОтД ĐČДб-ссылĐșу:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
msgstr ""
"\n"
-"(Đ”Đ°Đ»ŃŒĐœĐ”ĐčшОД ŃĐŸĐŸĐ±Ń‰Đ”ĐœĐžŃ былО сĐșрыты.)"
+"(ĐŸĐŸĐŽŃ€ĐŸĐ±ĐœŃ‹Đ” ŃĐŸĐŸĐ±Ń‰Đ”ĐœĐžŃ былО сĐșрыты.)"
diff --git a/po/si.po b/po/si.po
index 6c1ac94..42f5e2b 100644
--- a/po/si.po
+++ b/po/si.po
@@ -4,14 +4,16 @@
#
# Translators:
# ashintha89 <ashintha@gmail.com>, 2013
+# ashintha89 <ashintha@gmail.com>, 2013
+# D.N.Perera <deen.niro@gmail.com>, 2013
# D.N.Perera <deen.niro@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-06-03 15:56+0000\n"
-"Last-Translator: ashintha89 <ashintha@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Sinhala (http://www.transifex.com/projects/p/audacious/"
"language/si/)\n"
"Language: si\n"
@@ -20,140 +22,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "සොà¶șඞින් ඎවතී ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d ගොනුව හඞුවිà¶ș "
msgstr[1] "%d ගොනු හඞුවිà¶ș "
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(අවගංගු UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "නව ධාවන ගැà¶șිස්තුව"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr " විනැඞ්ඎ් EQF %s ගොනුව ආà¶șාත à¶šà·’à¶»à·“à¶žà·šà¶Żà·“ à¶Żà·à·‚à¶șක් "
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ධාවන ගැà¶șිස්තුවේ ඎසුඎසට ඎනින්න"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "ඎ්‍රවර්තන ධාවන ගැà¶șිස්තුවේ ධාවනà¶ș අරà¶čන්න​"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "à¶…à¶±à·”à·€à·à¶Żà¶ș ඎෙන්නන්න "
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "ඎ්‍රවර්තන ගීතà¶șට විරාඞà¶șක් à¶Żà·™à¶±à·Šà¶±"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ඎ්‍රවර්තන ගීතà¶ș නවත්තන්න​"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "à¶…à¶±à·”à·€à·à¶Żà¶ș​ ඎෙන්නන්න​"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ධාවන ගැà¶șිස්තුවේ à¶‰à¶łà·’à¶»à·’à¶șට ඎනින්න"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ඞගහැර ගොනුවට ඎිවිසීඞේ à·ƒà¶‚à·€à·à¶Ż කොටුව à·ƒà¶‚à¶Żà¶»à·Šà·à¶±à¶ș කරන්න "
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "ගොනු ධාවන ගැà¶șිස්තුවට එකතු කරන්න "
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "නව ගොනු තාවකාගික ධාවන ගැà¶șිස්තුවට එකතු කරන්න "
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ඎ්‍රධාන කවුළුව à·ƒà¶‚à¶Żà¶»à·Šà·à¶±à¶ș කරන්න​"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr " \tහිස් ඎ්‍රකාරà¶ș"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr " \t \tඎසුබිඞ් ගාà¶șනà¶șෙන් නික්ඞෙන්න"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "à¶…à¶±à·”à·€à·à¶Żà¶ș ඎෙන්නන්න "
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "à¶±à·’à¶Żà·œà·ƒà·Š කිරීඞෙ හසුන à¶žà·”à¶Żà·Šâ€à¶»à¶«à¶ș කරන්න "
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ගොනුව​"
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "බහුඞාධ්‍à¶șà¶ș ගොනු ධාවනà¶ș කරන්න "
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"උත්සහ කරන්න `%s --ආධාර කරන්න' à·€à·à¶©à·’à¶Żà·”à¶» තොරතුරු à·ƒà¶Żà·„à·.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "ඔඩේෂස්"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "\t%s à·ƒà¶Żà·„à· \tවිකේතකà¶șක් නොඞැත"
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s විවෘත කිරීඞට නොහැකි විà¶ș."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "%s %s නොහැකිà¶ș: සහාà¶ș නොඞැති ගොනු à¶Żà·’à¶œà·”à·€"
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "\tසුරකින්න"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ඎ්‍රවේශනà¶ș කරන්න"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "%s %s නොහැකිà¶ș: සහාà¶ș නොඞැති ගොනු à¶Żà·’à¶œà·”à·€"
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "නව ධාවන ගැà¶șිස්තුව"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "à¶Żà·à¶±à·Š ධාවනà¶șවේ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -161,412 +154,444 @@ msgstr ""
"ඎාර-à¶Żà¶­à·Šà¶­ ඎරිගෝකනà¶ș කිරීඞ à¶­à·€à¶Żà·”à¶»à¶§à¶­à·Š à·ƒà·’à¶Żà·”à·€à¶± බැවින් ධාවන ගැà¶șිස්තුව අණුඎිළිවෙගට තේරීඞට නොහැකිà¶ș (එසේත් "
"නැතිනඞ් අක්‍රීà¶ș කර ඇත)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s à¶Žà·’à·…à·’à¶¶à¶ł "
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s හි සිටුවඞ් "
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "ශ්‍රව්‍à¶ș​"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "à¶ąà·à¶œà¶ș"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ධාවන ගැà¶șිස්තුව​"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "ගීත තොරතුරු "
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ඎේනු à¶žà·˜à¶Żà·”à¶šà·à¶‚à¶œà¶ș"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "සාඞාන්‍à¶ș"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "ඎ‍්‍රතිඑගà¶ș"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "à¶Żà·˜à·‚à·Šâ€à¶șකරණà¶ș"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "à¶†à¶Żà·à¶±à¶ș"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "\tඎ‍්‍රවාහණà¶ș"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "ශිග්ඎිà¶șා "
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ඇග්බඞà¶ș "
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "ඞාතෘකාව"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "ඛණ්ඩ අංකà¶ș "
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "à¶Žà·Šâ€à¶»à¶·à·šà¶Żà¶ș"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "ගොනු නාඞà¶ș "
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "ගොනු ඎෙත"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "à¶Żà·’à¶±à¶ș "
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "වර්ෂà¶ș "
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "විවරණà¶ș"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "කොඩෙක් "
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "\tඎ්‍රශස්තතාව"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "කිසිසේත් නැති"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "අරාබි භාෂාව"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "බෝග්ටික්"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "චීන"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ග්‍රීක"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "\tහීබà·Č"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "à¶ąà¶Žà¶±à·Š "
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "කොරිà¶șානු"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "ඔඎකරà¶ș"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "රුසිà¶șානු"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "තාà¶șිවානීà¶ș "
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "තුර්කීà¶ș "
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "ඉඎිගෙන ගක්ෂ්‍à¶șà¶ș"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ඇග්බඞ් ඎ්‍රකාරà¶ș"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr " \tà¶Žà·Šâ€à¶»à¶­à·’à¶Żà·à¶± ඎේනු à¶žà·˜à¶Żà·”à¶šà·à¶‚à¶œà¶ș "
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "\t<b>à¶Žà·Šâ€à¶»à¶­à·’à¶Żà·à¶± සිටුවඞ්<b> "
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr " බිටු ගැà¶čුර"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "බෆරà¶șේ ඎ්‍රඞාණà¶ș "
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "\tà¶žà·˜à¶Żà·”à¶šà·à¶‚à¶œ ඎරිඞා ඎාගකà¶ș භාවිතා කරන්න à¶±à·’à¶»à·Šà¶Żà·šà· කරනොඞැත"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "à¶žà·˜à¶Żà·” ඇඞිණීඞ"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "à¶žà·˜à¶Żà·”à¶šà·à¶‚à¶œ ඎරිඞා ඎාගකà¶ș භාවිතා කරන්න (à¶±à·’à¶»à·Šà¶Żà·šà· කරනොඞැත)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>ඎ්‍රතිගාභà¶ș නැවත විකාශà¶ș කිරිඞ<b> "
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "\tනැවත විකාශà¶ș සබග කිරිඞ"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ඇග්බඞ් ඎ්‍රකාරà¶ș"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "ඇඞුණුඞ වළක්වන්න (à¶±à·’à¶»à·Šà¶Żà·šà·à·’à¶­à¶șි)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>ඞට්ටඞ සීරුඞාරු කිරීඞ<b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "සිà¶șගු ගොනු විස්තාරණà¶ș කිරීඞ "
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr " නොඇඞුණු ගොනු විස්තාරණà¶ș කිරීඞ "
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "නිà¶șුතු සත්කාරක නාඞà¶ș:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "නිà¶șුතු තොට:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "නිà¶șුතු ඎරිශීගක නාඞà¶ș: "
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "\tනිà¶șුතු à¶žà·”à¶»à¶Žà¶Żà¶ș:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>නිà¶șුතු වින්‍à¶șාසà¶ș<b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "නිà¶șුතු භාවිතà¶ș සබග කිරිඞ"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "නිà¶șුතු සඞඟ සත්‍à¶șාඎනà¶ș භාවිතා කරන්න"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "ස්වà¶șංක්‍රීà¶ș අනුගකුණු කේතන අනාවරකà¶ș:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ඎිහිටාධාර අනුගකුණු කේතන:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "\t<b>චර්à¶șාව</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ඇරà¶čුඞේ සිට නොනවත්වා වාර්තා තැබීඞ "
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "\tඎ්‍රවර්තන ගීතà¶ș ඞැකුනු ඎසු ඎ්‍රගඞනà¶șවේ "
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "ගොනු විවෘත වන විට ධාවන ගැà¶șිස්තුව හිස් කරන්න "
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ගොනු තාවකාගික ධාවන ගැà¶șිස්තුවක විවෘත කරන්න "
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ධාවනà¶ș වනතුරු ගීත à·ƒà¶łà·„à· ඎාර-à¶Żà¶­à·Šà¶­ ඎ්‍රවේශනà¶ș නොකරන්න "
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>ගැළඎුඞ</b> "
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "à¶…à¶»à·Šà¶źà¶±à·’à¶»à·–à¶Žà¶«à¶ș කරන්න \\ (ඎසු ඇග ඉර) ෆෝග්ඩර ඎරිසීඞකà¶șක් ගෙස "
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ඇග්බඞ් කගාව</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "ඞෙඞ වචන වගට ගැගඎෙන අනුරූ සීහුඞ් කිරීඞ (විරාඞ වෙන්කරන à¶œà¶Ż):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "ඞෙඞ වචන වගට ගැගඎෙන අනුරූ ඉවත් කිරීඞ (comma-separated):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "ගීත ගොනුවේ නාඞà¶șට ගැගඎෙන අනුරූ සෙවීඞ "
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "සඞාවර්තව සෙවීඞ "
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "\tගැà¶čුරට සෙවීඞ:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>උත්ඎතන තොරතුරු</b> "
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "උත්ඎතන තොරතුරු ඎෙන්නන්න "
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "උත්ඎතන à¶Žà·Šâ€à¶»à¶žà·à¶Żà¶ș (තත්ඎරà¶șෙන් à¶Żà·„à¶șෙන් ඎංගුවකි):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "à¶Żà·à¶±à·Š ඎවත්නා ගීතà¶șේ කාග ඎරිඞාව ඎෙන්නන්න "
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "ඞාතෘකාව"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "\tකගාකරු - ඞාතෘකාව"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "කගාකරු - ඇග්බඞà¶ș - ඞාතෘකාව"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "කගාකරු - ඇග්බඞà¶ș - ඛණ්ඩà¶ș. ඞාතෘකාව"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "කගාකරු [ ඇග්බඞà¶ș ] - ඛණ්ඩà¶ș. ඞාතෘකාව"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ඇග්බඞà¶ș - ඞාතෘකාව"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "\tඎ්‍රවර්ගà¶ș"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "අභිරුචිà¶ș "
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>ගීත à·ƒà¶‚à¶Żà¶»à·Šà·à¶šà¶ș</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "ගීත අංක ඎෙන්නන්න"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ඎ‍්‍රඞුඛ ශුන්‍à¶ș අගà¶șන් ඎෙන්වන්න (02:00 වෙනුවට 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "titlestring ආකෘතිà¶ș à¶Žà·’à·…à·’à¶¶à¶ł තොරතුරු ඎෙන්නන්න"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "අභිරුචි අනුගකුණු වැග:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "ඞාතෘකා ආකෘතිà¶ș:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr " \tà¶Žà·Šâ€à¶»à¶­à·’à¶Żà·à¶± ඎේනු à¶žà·˜à¶Żà·”à¶šà·à¶‚à¶œà¶ș "
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "\tඎ‍්‍රවාහණà¶ș"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "à¶†à¶Żà·à¶±à¶ș"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "ඎ‍්‍රතිඑගà¶ș"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "à¶Żà·˜à·‚à·Šâ€à¶șකරණà¶ș"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "සාඞාන්‍à¶ș"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "අභිරුචි අනුගකුණු වැග:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "ඔඩේෂස් වරණ"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "නාඞාවගිà¶ș නිර්ඞාණà¶ș කීරීඞට නොහැකිà¶ș (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "à·ƒà·Šà¶źà·à¶±à¶ș හඞුනොවීà¶ș."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "à¶šà·’à·ƒà·’à¶łà·” ගීතà¶șක් ධාවනà¶ș වන්නේ නැත "
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "\tශ්‍රව්‍à¶ș CD, à¶Žà¶ź %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "තනි "
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ත‍්‍ර‍්‍රිඞාණ "
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -581,409 +606,420 @@ msgstr "\tසඞ්ඞානà¶ș"
msgid "License"
msgstr "වරඎත "
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "ඔඩේෂස් à¶Žà·’à·…à·’à¶¶à¶ł "
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"ඔබට à·€à·’à·à·Šà·€à·à·ƒà¶Ż %s වාසිà¶ș à¶șුතුà¶șි කිà¶șා? එසේ නඞ්, ධාවන ගැà¶șිස්තුවට කග සිà¶șගු වෙනස්කඞ් නිර්à¶șාත කරන විට "
-"නැතිවී à¶șà¶șි."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ධාවන ගැà¶șිස්තුව වසන්න "
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_ඞෙඞ ඎණිවිඩà¶ș නැවත à¶Żà¶»à·Šà·à¶±à¶ș නොකරන්න "
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ධාවන ගැà¶șිස්තුව නැවත නඞ්කරනවා "
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "සිටුවඞ් ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "\t_සබග කරනවා"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "සඞානකරණà¶ș"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ඎූර්ව වර්ධකà¶ș "
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "ඛණ්ඩà¶ș "
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "à¶Żà·’à¶œ"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "කටුක ඝෝෂාකර සංගීතà¶ș"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "ඇසිඩ් රොක් "
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "හාත්ඎස ඎැතිරුණු"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "à¶ąà·‘à·ƒà·Š සංගීතà¶ș "
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "බ්ගුග්‍රාස් "
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "බ්ගූස් "
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ශාගිකා සංගීතà¶ș"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "සඞ්භාව්‍à¶ș"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "à¶Żà·šà·à¶ș "
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr " ඩෙත් ඞෙට්ග් "
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ඩිස්කෝ නැටුඞ "
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "ඎහසු ඇහුන්කන් à¶Żà·“à¶ž "
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "à¶ąà¶± සඞූහà¶ș "
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "බිà¶șගුග්ගා "
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "ගැනස්ටර් රැඎ් "
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "අනුශාසනà¶ș "
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "හාඩ් රොක්"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "හෙවි ඞෙට්ග් "
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "හිඎ්-ඎොඎ්"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "නිවස "
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "à¶ąà·‘à·ƒà·Š"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "කැගෑව"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "ගෝහà¶ș"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "නව à¶șුගà¶ș"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "\tනව තරංගà¶ș"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ඝෝෂාව"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "à¶ąà¶±à¶Žâ€à·Šâ€à¶»à·’à¶ș "
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "ඎන්ක් රොක් "
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "තට්ටු කරනවා"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "රෙගේà¶șී සංගීතà¶ș"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "à¶Žà·à¶Żà·Šà¶Żà·™à¶±à·€à· "
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "රොක් ඇන්ඩ් රෝග් "
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr " \tà¶»à·’à¶Żà·Šà¶žà¶ș සහ බ්ගු සංගීතà¶ș"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "ස්කා "
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "ආත්ඞà¶ș "
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "à¶Žà·à¶Żà·Šà¶Żà·“à¶ž "
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "තාක්ෂණික"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "ට්‍රිඎ්-හොඎ්"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ඎාර-à¶Żà¶­à·Šà¶­ à·ƒà·à¶»à·Šà¶źà¶š ගෙස à¶șාවත්කාගීන විà¶ș"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ඎාර-à¶Żà¶­à·Šà¶­ à¶șාවත්කාගීන වීඞ à¶…à·ƒà·à¶»à·Šà¶źà¶š විà¶ș "
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "ඛණ්ඩ තොරතුරු"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">ආකෘතිà¶ș:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">ඎ්‍රශස්තතාව:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">බිටු අනුඎාතà¶ș:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">ඞාතෘකාව</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ශිග්ඎිà¶șා</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ඇග්බඞà¶ș</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">සටහන</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">වර්ගà¶ș</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">වර්ෂà¶ș</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ඞාර්ග අංකà¶ș</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "%s à·ƒà¶łà·„à· තොරතුරු උඎà¶șà·à¶ąà·Šâ€à¶ș නැත.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ඞගහැර වේගාවට ඎිවිසෙන්න"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ඇතුගත් කරන කාළà¶ș (ඞිනිත්තු:තත්ඎර):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "\tඋඩින් ගිවීඞ %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "ධාවන ගැà¶șිස්තුව නිර්à¶șාත කරන්න"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr " ධාවන ගැà¶șිස්තුව ආà¶șාත කරන්න"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "\tඋඩින් ගිවීඞ %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "\tඎේළි කළඞනාකරණà¶ș "
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "ගොනු විවෘත කරන්න"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "ගොනු එකතු කරන්න"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "\tà·€à·’à·€à·˜à¶­à·€à·“à¶žà·šà¶Żà·“ à·ƒà¶‚à·€à·à¶Żà¶ș වසන්න "
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "එකතු à·€à·“à¶žà·šà¶Żà·“ à·ƒà¶‚à·€à·à¶Żà¶ș වසන්න "
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "\t_ඎේළිà¶ș"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Un_ඎේළිà¶ș"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ඞගහැර ගීතà¶șට ඎිවිසෙන්න "
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "\tඎෙරහන:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_ඎෙරහන:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "ඞතක තබාගැනීඞ"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Clea_r"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ඞඟහරිනවිට වසන්න "
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "\tධාවන ගැà¶șිස්තු කළඞනාකරු"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "සටහන්"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_නැවත නඞ්කිරීඞ "
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "\t_ධාවන ගැà¶șිස්තුව සක්‍රිà¶ș à¶šà·’à¶»à·“à¶žà·šà¶Żà·“ à·ƒà¶‚à·€à·à¶Żà¶ș වසන්න "
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "URL විවෘත කරන්න"
@@ -991,11 +1027,11 @@ msgstr "URL විවෘත කරන්න"
msgid "Add URL"
msgstr "URL එකතු කරන්න"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "\tURL ඇතුග් කරන්න:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/sk.po b/po/sk.po
index b5291a9..daeb2d2 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -3,7 +3,10 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
-# Andrej Herceg <herceg.andrej@zoznam.sk>, 2007, 2009, 2010, 2011
+# Andrej Herceg <herceg.andrej@zoznam.sk>, 2007,2009-2011
+# citro <lukas.dobransky@gmail.com>, 2012-2013
+# Corduroy <vdcorduroy@gmail.com>, 2013
+# filipbielik <filip.bielik@gmail.com>, 2014
# citro <lukas.dobransky@gmail.com>, 2012
# citro <lukas.dobransky@gmail.com>, 2013
# TomĂĄĆĄ Vadina <kyberdev@gmail.com>, 2012
@@ -12,9 +15,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-05-06 17:40+0000\n"
-"Last-Translator: Corduroy <vdcorduroy@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Slovak (http://www.transifex.com/projects/p/audacious/"
"language/sk/)\n"
"Language: sk\n"
@@ -23,11 +26,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "VyhÄŸadĂĄva sa 
"
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -35,129 +38,120 @@ msgstr[0] "NĂĄjdenĂœch %d sĂșborov"
msgstr[1] "NĂĄjdenĂœ %d sĂșbor"
msgstr[2] "NĂĄjdenĂ© %d sĂșbory"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (neplatné UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "NovĂœ zoznam skladieb"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Chyba pri importovanĂ­ WinAMP EQF sĂșboru '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Chyba"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Preskočí na predchĂĄdzajĂșcu skladbu"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "ZobraziƄ nåpovedu k príkazovému riadku"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Začne prehrĂĄvaĆ„ aktuĂĄlny zoznam skladieb"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ZobrazĂ­ verziu"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "PozastavĂ­ prehrĂĄvanĂș skladbu"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "PrehraƄ"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ZastavĂ­ prehrĂĄvanĂș skladbu"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "PozastaviƄ"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pri prehrĂĄvanĂ­ pozastavĂ­, inak začne prehrĂĄvaĆ„"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Preskočí na nasledujĂșcu skladbu"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ZastaviƄ"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "PredchĂĄdzajĂșca pieseƈ"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ZobrazĂ­ okno \"Presun na sĂșbor\""
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "NasledujĂșca pieseƈ"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "PridĂĄ sĂșbory do zoznamu skladieb"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "PridĂĄ sĂșbory do dočasnĂ©ho zoznamu skladieb"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "PridaĆ„ sĂșbory do dočasnĂ©ho zoznamu skladieb"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Zobrazí hlavné okno"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr ""
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "ZobraziƄ zoznam piesní"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "SpustiƄ bez grafického prostredia"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "UkončiĆ„ program po zastavenĂ­ prehrĂĄvania"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ZobrazĂ­ verziu"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Vypisuje ladiace hlĂĄsenia"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "SÚBOR..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "NeznĂĄma moĆŸnosĆ„: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- prehraĆ„ multimediĂĄlne sĂșbory"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "NeznĂĄma moĆŸnosĆ„: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-msgstr ""
-"%s: %s\n"
-"Ak chcete viac informĂĄciĂ­ vyskĂșĆĄajte \"%s --help\".\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr "Pouzitie: audacious [VOLBA] ... [SUBOR] ...\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Pre %s nebol nĂĄjdenĂœ ĆŸiadny dekodĂ©r."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s nemohol byĆ„ otvorenĂœ."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Nie je moĆŸnĂ© %s %s: nepodporovanĂœ typ sĂșboru."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "uloĆŸiĆ„"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "NedokĂĄĆŸem otvoriĆ„ %s: NepodporovanĂĄ prĂ­pona sĂșboru."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "načítaĆ„"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Nie je moĆŸnĂ© %s %s: nepodporovanĂœ typ sĂșboru."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "NovĂœ zoznam skladieb"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "NedokĂĄĆŸem uloĆŸiĆ„ %s: NepodporovanĂĄ prĂ­pona sĂșboru.."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "PrĂĄve hrĂĄ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -165,412 +159,444 @@ msgstr ""
"Zoznam skladieb nie je moĆŸnĂ© triediĆ„, pretoĆŸe skenovanie metadĂĄt stĂĄle "
"prebieha (alebo boli zakåzané)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "O %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Nastavenia"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_NastaviƄ"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_ZruƥiƄ"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_ZatvoriƄ"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_Nastavenia"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Pomoc"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Doplnky ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "VzhÄŸad"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Zvuk"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "SieƄ"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Zoznam skladieb"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "InformĂĄcie o skladbe"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Moduly"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Vƥeobecné"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efekt"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "VizualizĂĄcia"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Vstup"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Prenos"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Umelec"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "NĂĄzov"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Číslo stopy"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "ĆœĂĄner"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "NĂĄzov sĂșboru"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Cesta k sĂșboru"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "DĂĄtum"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Rok"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "KomentĂĄr"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodér"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kvalita"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ćœiadne"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabčina"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltské jazyky"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Čínơtina"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "GrĂ©Ätina"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebrejčina"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japončina"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Kórejčina"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "PoÄŸĆĄtina"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "RuĆĄtina"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Taiwančina"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turečtina"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "PlĂĄvajĂșca desatinnĂĄ čiarka"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ReĆŸim albumu"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "VĂœstupnĂœ modul:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Nastavenia vĂœstupu</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "BitovĂĄ hÄșbka:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "VeÄŸkosĆ„ vyrovnĂĄvacej pamĂ€te:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Jemné orezanie"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "PouĆŸiĆ„ softvĂ©rovĂ© ovlĂĄdanie hlasitosti (neodporĂșča sa)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Zosilnenie pri prehrĂĄvanĂ­</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "PovoliƄ zosilnenie pri prehråvaní"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ReĆŸim albumu"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "PredchĂĄdzaĆ„ orezĂĄvaniu (odporĂșča sa)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Nastavenie ĂșrovnĂ­</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ZosilniĆ„ vĆĄetky sĂșbory:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ZosilniĆ„ sĂșbory bez popisov:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Meno počítača:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Port:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "PouĆŸĂ­vateÄŸ:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Heslo:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Nastavenie proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "PouĆŸĂ­vaĆ„ proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "PouĆŸĂ­vaĆ„ autentifikĂĄciu"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Automatické rozoznåvanie kódovania znakov:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ZĂĄloĆŸnĂ© kĂłdovanie znakov:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>SprĂĄvanie</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Po spustenĂ­ pokračovaĆ„ v prehrĂĄvanĂ­"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "PrejsĆ„ na nasledujĂșcu skladbu ak je aktuĂĄlna skladba vymazanĂĄ"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Pri otvorenĂ­ sĂșborov vyprĂĄzdniĆ„ zoznam skladieb"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "OtvoriĆ„ sĂșbory do dočasnĂ©ho zoznamu skladieb"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "NenačítaĆ„ metadĂĄta skladieb pred prehranĂ­m"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Kompatibilita</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpret \\ (spĂ€tnĂ© lomĂ­tko) ako oddeÄŸovač priečinku"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "VyhÄŸadaĆ„ obrĂĄzky odpovedajĂșce tĂœmto slovĂĄm (oddelenĂ© čiarkou):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "VylĂșčiĆ„ obrĂĄzky odpovedajĂșce tĂœmto slovĂĄm (oddelenĂ© čiarkou):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "HÄŸadaĆ„ obrĂĄzky odpovedajĂșce nĂĄzvu sĂșboru"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "HÄŸadaĆ„ rekurzivne"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "HÄșka hÄŸadania:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Vyskakovacie okno s podrobnosƄami</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "ZobraziƄ popup informåcie"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Popup oneskorenie (desatiny sekundy):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "ZobraziĆ„ časovĂœ merač pre aktuĂĄlnu skladbu"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "NÁZOV"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "UMELEC - NÁZOV"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "UMELEC - ALBUM - NÁZOV"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "UMELEC - ALBUM - STOPA. NÁZOV"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "UMELEC [ALBUM] - STOPA. NÁZOV"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - NÁZOV"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "KategĂłria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Vlastné"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Zobrazenie skladby</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "ZobraziĆ„ čísla skladieb"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ZobrazovaĆ„ ĂșvodnĂ© nuly (02:00 namiesto 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "ZobraziƄ informåcie o formåte nåzvu"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "VlastnĂœ reĆ„azec:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "FormĂĄt nĂĄzvu:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "VĂœstupnĂœ modul:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Prenos"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Vstup"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efekt"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "VizualizĂĄcia"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Vƥeobecné"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "VlastnĂœ reĆ„azec:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
msgstr "Nastavenia programu"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nepodarilo sa vytvoriƄ adresår (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "PozĂ­cia nenĂĄjdenĂĄ."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "NehrĂĄ ĆŸiadna skladba."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Zvukové CD, stopa %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -586,409 +612,420 @@ msgstr "ZĂĄsluhy"
msgid "License"
msgstr "Licencia"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "O Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Ste si istĂœ, ĆŸe chcete zatvoriĆ„ %s? Ak tak urobĂ­te, akĂ©koÄŸvek zmeny urobenĂ© "
-"od poslednĂ©ho exportu budĂș stratenĂ©."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Naozaj chcete nenåvratne odstråniƄ \"%s\"?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_OdstråniƄ"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ZatvoriƄ zoznam skladieb"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "OdstråniƄ zoznam skladieb"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_TĂșto sprĂĄvu uĆŸ nezobrazovaĆ„"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_NepĂœtaĆ„ sa nabudĂșce"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "PremenovaƄ zoznam skladieb"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "nastavenia 
"
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Ako chcete pomenovaƄ Våƥ playlist?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_PovoliƄ"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ekvalizér"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Predzosilnenie"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Stopa"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "DÄșĆŸka"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "FormĂĄt:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Kvalita:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "DĂĄtovĂœ tok:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "KomornĂĄ hudba"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasika"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "PrĂ­jemnĂ© počĂșvanie"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "NovĂĄ vlna"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Ruch"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">-</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "MatadĂĄta boli ĂșspeĆĄne aktualizovanĂ©"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "AktualizĂĄcia metadĂĄt zlyhala"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "InformĂĄcie o stope"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">FormĂĄt:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kvalita:</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "ÚspeĆĄne uloĆŸenĂ©."
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">DĂĄtovĂœ tok:</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Chyba pri ukladanĂ­"
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">NĂĄzov</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Umelec</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">KomentĂĄr</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">ĆœĂĄner</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Rok</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Číslo stopy"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Číslo stopy</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "UloĆŸiĆ„"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "Nedostupné"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Pre %s nie sĂș dostupnĂ© ĆŸiadne informĂĄcie.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "SkočiĆ„"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "SkočiĆ„ na čas"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Zadajte čas (minĂșty:sekundy):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "PrepísaƄ %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "PrepísaƄ"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "ExportovaƄ zoznam skladieb"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ImportovaƄ zoznam skladieb"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "PrepísaƄ %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "SprĂĄvca fronty"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "OdstråniƄ"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "OtvoriĆ„ sĂșbory"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "OtvoriƄ"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "ZatvoriƄ okno po otvorení"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "PridaĆ„ sĂșbory"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ZatvoriƄ okno po otvorení"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "PridaƄ"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
msgstr "ZatvoriƄ okno po pridaní"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "Pri_daƄ do fronty"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "O_dobraƄ z fronty"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "SkočiĆ„ na skladbu"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filter: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filter:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "ZapamÀtaƄ si filter"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Vyči_stiĆ„"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
msgstr "ZatvoriƄ po skoku"
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "SprĂĄvca zoznamu skladieb"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "PoloĆŸky"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "P_remenovaƄ"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_NovoĂœ"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "PremenovaƄ"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "PrehraƄ"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_ZatvoriƄ okno po aktivåcii zoznamu skladieb"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "OtvoriƄ URL"
@@ -996,11 +1033,11 @@ msgstr "OtvoriƄ URL"
msgid "Add URL"
msgstr "PridaƄ URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Zadajte URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/sq.po b/po/sq.po
index 0a40518..93da6e2 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -4,12 +4,14 @@
#
# Translators:
# natird <dritan86@gmail.com>, 2012
+# milot <milot.shala@gmail.com>, 2013
+# natird <dritan86@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-03 20:17+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Albanian (http://www.transifex.com/projects/p/audacious/"
"language/sq/)\n"
@@ -19,140 +21,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Duke kërkuar"
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d skedar i gjetur"
msgstr[1] "%d skedar i gjetur"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(UTF-8 e pavleshme)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Këngëlist e Re"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Gabim në kalimin e skedarit Winamp EQF '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Kalo mbrapa në këngëlist"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Fillo duke luajtur këngëlistën në vazhdim"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Trego variantin"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pushim këngës në vazhdim"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Ndalo këngën në vazhdim"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "pushim nëse luhet , luaj përndryshe"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Kalo përpara në këngëlist"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Ekranizo kalimin në dialogun e Skedarit "
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Shto skedë k"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Shto nje skedë të re në këngëlistën e përkohëshme"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Ekranizo dritaren kryesore"
-#: src/audacious/main.c:242
-msgid "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
msgstr ""
-#: src/audacious/main.c:243
-msgid "Quit on playback stop"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
msgstr ""
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Trego variantin"
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr "Mbyll pasi që playback të ndalet"
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Shtyp mesazhin e debagut"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "SKEDAR..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- luaj skedar multimediatik"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Përpiqu `%s --ndihëmo' për më shumë informacion.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Asnjë dekoder nuk u gjetë për %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
-msgstr ""
+msgstr "%s nuk mund të hapet"
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Nuk mundet %s %s: shtrirja e skedarit e pa mbështetur."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "ruaj"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ngarko"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Nuk mundet %s %s: shtrirja e skedarit e pa mbështetur."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Këngëlist e Re"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Tani duke Luajtur"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -160,412 +153,444 @@ msgstr ""
"Këngëlista nuk mund të zgjidhet për shkak skanimi i metadatas është ende në "
"zhvillim e sipër (ose ka qenë çaktivizuar)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Rreth %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s Konfigurimet"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "ZĂ«ri"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Rrejt"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Këngëlist"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "të dhënat e këngës"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Plugine"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "E përgjithëshme"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Pasojat"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Vizualizimi"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Të dhëna"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Trasport"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Artist"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Titull"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Numërkënga"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Lloji"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Emëriskedarit"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Shtegëskedari"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Datë"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Vitë"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Koment"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Cilësi"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Asnjë"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arabisht"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltike"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Kinezëçe"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Greqisht"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Hebraishte"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japonisht"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Koreane"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Polonisht"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Rusisht"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Tavanisht"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turqisht"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Pika lundrues"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "MĂ«nyra Album"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Shtojca e Prodhimit"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Konfigurimet e Prodhimit</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Thellësia e Bitit"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Madhësia e Bufferit"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Prerëje e butë"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Përdorimi i programit të kontrollit të volumit (nuk rekomandohet)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Riluaj Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Aktivizo Rregulluesin Zanor"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "MĂ«nyra Album"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Parandalo klipimin (e recomanduara)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Rregullo Livelet </b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Amplifiko te gjitha skedarët"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Amplifiko skedarët e pa etiketuar"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Prokura emërbuajtëse"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Prokura portë"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Prokura emërpërdorim"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Prokura fjalëkalim"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Konfigurim i Prokurës</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Aktivizo përdorimin e prokurës"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Përdorni vertetimi me prokurë"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Vetë karakteri duke koduar detektor për:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Kodifikimet follbek karakter:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>Sjellëjet</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Vazhdo playback në fillimin e"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Përparo kur kënga e tanishme është fshirë"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Fshi këngëlistës kur hapen e skedarët"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Hap skedarët në një këngëlist të përkohshëme"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Mos ngarko metadata për këngën derisa të luahet"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Pajtueshmëri</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Interpreto \\ (slash e prapambetur) si një Kufizues dosjesh"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Albumi Art</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Kërko per figura që i përkojnë këtyre fjalëve ( të ndara me presje)"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Përjashto imazhet që përkojnë këto fjalë (të ndara me presje-):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "Kërko për imazhe që përputhen me emëri e skedarit këngë"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "KĂ«rkim rekursivisht"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Kërko thellësi:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Informacioni Popap</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Trego informacion popap"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Vonesë popapi (të dhjetat e një sekonde):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "Trego shkallëkohën për këngën e tanishme"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TITULLI"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ARTIST - TITULLI"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ARTIST - ALBUMI - TITULLI"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ARTISTI - ALBUMI - KËNGA. TITULLI"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ARTISTI [ ALBUMI ] - KËNGA. TITULLI"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "TITULLI I ALBUMIT"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategoria"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Porosi"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Ekranizimi i Këngës</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Trego numwrin e kwngws"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Trego zeron kryesore (2:00 në vend të 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Trego informacion në lidhje me formatin e rrjeshtit e titullit"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Vargu me porosi"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Formati i titullit"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Shtojca e Prodhimit"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Trasport"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Të dhëna"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Pasojat"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Vizualizimi"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "E përgjithëshme"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Vargu me porosi"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Preferncat e Audaciuos"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Nuk mund të krijoj direktori (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Vendëndodhja nuk gjendet"
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Asnjë kënge nuk luhet"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Audio CD, udhë %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Sterejo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -580,409 +605,420 @@ msgstr "Kredite"
msgid "License"
msgstr "Liçenca"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Rreth Audaciousit"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Jeni te sigurte qe doni te mbyllni %s? Nëse ju e kryeni, çdo ndryshim i "
-"bërë deri kur këngëlista u eksportuar do të humbas."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Mbyll Këngëlistën"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Mos e trego këtë mesazh përsëri"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Riemëro këngëlistën"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "Konfigurimet ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Aktivizo"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Balancues"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Preamp"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Udhë"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Gjatësia"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Xhaz Acid"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Rrok Acid"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Blugras"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Bluz"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Muzik Dhome"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasike"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Kauntri"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Metal Vdekje"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Dëgjimi i lehtë"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folkloristike"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gengstarep"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Granxhë"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "HardRrok"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Hevimetal "
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "Hauz"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Xhaz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Xhungël"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "Nju Eixh"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "Valë e Re"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Zhurmë"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Pank Rrok"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rrep"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Rrege"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rrok"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rrok en Rroll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Ridhëm dhe Bluz"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Suing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tenko"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metadata u përditësua me sukses"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Metadata përditësimin dështoj"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Informacione e Këngës"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Format:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Quality:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bitrate:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Title</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Artist</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Comment</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Genre</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Year</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Track Number</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Asnjë e dhëne e gjindëshme për %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Kalo në Kohë"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Hyrje kohës (minuta:sekonda)"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Mbishkruaj %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Eksporto këngëlistën"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Importo këngëlistën"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Mbishkruaj %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Menaxheri i radhëve"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Hap Skedarin"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Shto Skedarin"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Mbyll dialog në Hapje"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Mbyll dialog në Shtim"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Radhë"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Un_radhë"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Kalo tek kënga"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Filtër:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Filtër:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Kujto"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Pastro_j"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Mbyll në Kalim"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Menaxher i Këngëlistës"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Hyrjet"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Riemëro"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Mbyll Dialogun për aktivizimin këngëlistës"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Hap URL"
@@ -990,11 +1026,11 @@ msgstr "Hap URL"
msgid "Add URL"
msgstr "Shto URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Hyrje URL"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/sr.po b/po/sr.po
index b555cae..efe7f50 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -3,16 +3,17 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# MirosNik <miroslavnikolic@rocketmail.com>, 2013
# Strahinja Kustudic <kustudic@gmail.com>, 2007-2008
-# MirosNik <miroslavnikolic@rocketmail.com>, 2011-2012
+# MirosNik <miroslavnikolic@rocketmail.com>, 2011-2012,2014
# MirosNik <miroslavnikolic@rocketmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-03-26 08:31+0000\n"
-"Last-Translator: MirosNik <miroslavnikolic@rocketmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Serbian (http://www.transifex.com/projects/p/audacious/"
"language/sr/)\n"
"Language: sr\n"
@@ -22,11 +23,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "ĐąŃ€Đ°Đ¶ĐžĐŒ ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -34,129 +35,122 @@ msgstr[0] "ĐŸŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ŃĐ°ĐŒ %d ĐŽĐ°Ń‚ĐŸŃ‚Đ”Đșу"
msgstr[1] "ĐŸŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ŃĐ°ĐŒ %d ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
msgstr[2] "ĐŸŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ŃĐ°ĐŒ %d ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ°"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (ĐœĐ”ĐžŃĐżŃ€Đ°ĐČĐ°Đœ УйЀ-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "ĐĐŸĐČĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Đ“Ń€Đ”ŃˆĐșĐ° прОлОĐșĐŸĐŒ уĐČĐŸĐ·Đ° Đ’ĐžĐœĐĐœĐŸ Đ•ĐšŃƒĐ€ ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” „%s“"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "ГрeшĐșa"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ĐŸŃ€Đ”ŃĐșачД ŃƒĐœĐ°Đ·Đ°ĐŽ у спОсĐșу ĐœŃƒĐŒĐ”Ń€Đ°"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "ПроĐșазујД ĐżĐŸĐŒĐŸŃ› Đ»ĐžĐœĐžŃ˜Đ” ĐœĐ°Ń€Đ”ĐŽĐ±Đž"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Пушта Ń‚Đ”Đșућо спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ПроĐșазујД ОзЎањД"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "ĐŸĐ°ŃƒĐ·ĐžŃ€Đ° Ń‚Đ”Đșућу ĐżĐ”ŃĐŒŃƒ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Đ—Đ°ĐżĐŸŃ‡ĐžŃšĐ” ĐżŃƒŃˆŃ‚Đ°ŃšĐ”"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ЗаустаĐČља Ń‚Đ”Đșућу ĐżĐ”ŃĐŒŃƒ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "ĐŸĐ°ŃƒĐ·ĐžŃ€Đ° ĐżŃƒŃˆŃ‚Đ°ŃšĐ”"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
-msgstr "ĐŸĐ°ŃƒĐ·ĐžŃ€Đ° Đ°ĐșĐŸ пушта, ĐžĐœĐ°Ń‡Đ” пушта"
+msgstr "ĐŸĐ°ŃƒĐ·ĐžŃ€Đ° Đ°ĐșĐŸ сĐČора, ĐžĐœĐ°Ń‡Đ” пушта"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ĐŸŃ€Đ”ŃĐșачД ŃƒĐœĐ°ĐżŃ€Đ”ĐŽ у спОсĐșу ĐœŃƒĐŒĐ”Ń€Đ°"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ЗаустаĐČља ĐżŃƒŃˆŃ‚Đ°ŃšĐ”"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ПроĐșазујД ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” â€žĐŸŃ€Đ”Ń’Đž ĐœĐ° ĐŽĐ°Ń‚ĐŸŃ‚Đ”Đșу“"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "ИЎД ĐœĐ° ĐżŃ€Đ”Ń‚Ń…ĐŸĐŽĐœŃƒ ĐżĐ”ŃĐŒŃƒ"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "ИЎД ĐœĐ° ŃĐ»Đ”ĐŽĐ”Ń›Ńƒ ĐżĐ”ŃĐŒŃƒ"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
-msgstr "Đ”ĐŸĐŽĐ°Ń˜Đ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” у спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+msgstr "Đ”ĐŸĐŽĐ°Ń˜Đ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐ° спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Đ”ĐŸĐŽĐ°Ń˜Đ” ĐœĐŸĐČĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” у проĐČŃ€Đ”ĐŒĐ”ĐœĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Đ”ĐŸĐŽĐ°Ń˜Đ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐ° проĐČŃ€Đ”ĐŒĐ”ĐœĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ПроĐșазујД глаĐČĐœĐž ĐżŃ€ĐŸĐ·ĐŸŃ€"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Đ Đ”Đ¶ĐžĐŒ ĐœĐ”ĐżŃ€ĐŸĐŒĐžŃˆŃ™Đ”ĐœĐŸŃŃ‚Đž"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "ПроĐșазујД ĐżŃ€ĐŸĐ·ĐŸŃ€ Đ·Đ° бОрањД ĐżĐ”ŃĐ°ĐŒĐ°"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "ĐŸĐŸĐșрДћД сД бДз графочĐșĐŸĐł ŃŃƒŃ‡Đ”Ń™Đ°"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ИзлазО ĐœĐ° Đ·Đ°ŃƒŃŃ‚Đ°ĐČљањД пуштања"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ПроĐșазујД ОзЎањД"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
-msgstr "ИспОсујД ĐżĐŸŃ€ŃƒĐșĐ” Đ·Đ° оспраĐČљањД ĐłŃ€Đ”ŃˆĐ°ĐșĐ°"
+msgstr "ИспОсујД ĐżĐŸŃ€ŃƒĐșĐ” ĐżŃ€ĐŸŃ‡ĐžŃˆŃ›Đ°ĐČања"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ДАбОбЕКА..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚Đ° ĐŸĐżŃ†ĐžŃ˜Đ°: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "— пушта ĐŒŃƒĐ»Ń‚ĐžĐŒĐ”ĐŽĐžŃ˜Đ°Đ»ĐœĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚Đ° ĐŸĐżŃ†ĐžŃ˜Đ°: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"ĐŸŃ€ĐŸĐ±Đ°Ń˜Ń‚Đ” „%s --help“ Đ·Đ° ĐČОшД ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ˜Đ°.\n"
+"ĐŁĐżĐŸŃ‚Ń€Đ”Đ±Đ°: audacious [ОПЩИЈА] ... [ДАбОбЕКА] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐș"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
-msgstr "ĐĐžŃĐ°ĐŒ ĐżŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ĐŽĐ”ĐșĐŸĐŽĐ”Ń€ Đ·Đ° %s."
+msgstr "ĐĐžŃĐ°ĐŒ ĐżŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ĐŽĐ”ĐșĐŸĐŽĐ”Ń€ Đ·Đ° „%s“."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° ĐŸŃ‚ĐČĐŸŃ€ĐžĐŒ „%s“."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° %s %s: ĐœĐžŃ˜Đ” ĐżĐŸĐŽŃ€Đ¶Đ°ĐœĐŸ ĐżŃ€ĐŸŃˆĐžŃ€Đ”ŃšĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "сачуĐČĐ°ĐŒ"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° ŃƒŃ‡ĐžŃ‚Đ°ĐŒ „%s“: ĐżŃ€ĐŸŃˆĐžŃ€Đ”ŃšĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐžŃ˜Đ” ĐżĐŸĐŽŃ€Đ¶Đ°ĐœĐŸ."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ŃƒŃ‡ĐžŃ‚Đ°ĐŒ"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° %s %s: ĐœĐžŃ˜Đ” ĐżĐŸĐŽŃ€Đ¶Đ°ĐœĐŸ ĐżŃ€ĐŸŃˆĐžŃ€Đ”ŃšĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "ĐĐŸĐČĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° сачуĐČĐ°ĐŒ „%s“: ĐżŃ€ĐŸŃˆĐžŃ€Đ”ŃšĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐžŃ˜Đ” ĐżĐŸĐŽŃ€Đ¶Đ°ĐœĐŸ."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "ĐĄĐ°ĐŽ ĐżŃƒŃˆŃ‚Đ°ĐŒ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -164,412 +158,444 @@ msgstr ""
"ХпОсаĐș ĐœŃƒĐŒĐ”Ń€Đ° ĐœĐ” ĐŒĐŸĐ¶Đ” бОтО ĐżĐŸŃ€Đ”Ń’Đ°Đœ Đ·Đ°Ń‚ĐŸ ŃˆŃ‚ĐŸ јД прДглДЎањД ĐŒĐ”Ń‚Đ°ĐżĐŸĐŽĐ°Ń‚Đ°ĐșĐ° Ń˜ĐŸŃˆ "
"уĐČĐ”Đș у Ń‚ĐŸĐșу (ОлО јД ОсĐșŃ™ŃƒŃ‡Đ”ĐœĐŸ)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "О ĐżŃ€ĐŸĐłŃ€Đ°ĐŒŃƒ „%s“"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања Đ·Đ° %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_ĐŸĐŸĐŽĐ”ŃĐž"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_ОтĐșажО"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_ЗатĐČĐŸŃ€Đž"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_О ĐżŃ€ĐŸĐłŃ€Đ°ĐŒŃƒ"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_ПроĐșључцо ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "ИзглДЎ"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
-msgstr "ĐŃƒĐŽĐžĐŸ"
+msgstr "ЗĐČуĐș"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ĐœŃ€Đ”Đ¶Đ°"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ХпОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
-msgstr "ĐŸĐŸĐŽĐ°Ń†Đž ĐŸ ĐżĐ”ŃĐŒĐž"
+msgstr "ĐŸĐŸĐŽĐ°Ń†Đž ĐżĐ”ŃĐŒĐ”"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ПроĐșључцо"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "ĐžĐżŃˆŃ‚Đ”"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Đ”Đ”Ń˜ŃŃ‚ĐČĐŸ"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "ПроĐșĐ°Đ·ĐžĐČањД"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ĐŁĐœĐŸŃ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ĐŸŃ€Đ”ĐœĐŸŃ"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "ИзĐČĐŸŃ’Đ°Ń‡"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ĐĐ»Đ±ŃƒĐŒ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "ĐĐ°ŃĐ»ĐŸĐČ"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Đ‘Ń€ĐŸŃ˜ ĐœŃƒĐŒĐ”Ń€Đ”"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Đ–Đ°ĐœŃ€"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "ĐĐ°Đ·ĐžĐČ ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Путања ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Đ”Đ°Ń‚ŃƒĐŒ"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Đ“ĐŸĐŽĐžĐœĐ°"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
-msgstr "ĐšĐŸĐŒĐ”ĐœŃ‚Đ°Ń€"
+msgstr "ĐĐ°ĐżĐŸĐŒĐ”ĐœĐ°"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ĐšĐŸĐŽĐ”Đș"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "КĐČалОтДт"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Ношта"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
-msgstr "АрапсĐșĐž"
+msgstr "арапсĐșĐž"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
-msgstr "БалтОчĐșĐž"
+msgstr "балтОчĐșĐž"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
-msgstr "ĐšĐžĐœĐ”ŃĐșĐž"
+msgstr "ĐșĐžĐœĐ”ŃĐșĐž"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
-msgstr "ГрчĐșĐž"
+msgstr "грчĐșĐž"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
-msgstr "ЈДĐČŃ€Đ”Ń˜ŃĐșĐž"
+msgstr "јДĐČŃ€Đ”Ń˜ŃĐșĐž"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
-msgstr "ĐˆĐ°ĐżĐ°ĐœŃĐșĐž"
+msgstr "Ń˜Đ°ĐżĐ°ĐœŃĐșĐž"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
-msgstr "ĐšĐŸŃ€Đ”Ń˜ŃĐșĐž"
+msgstr "ĐșĐŸŃ€Đ”Ń˜ŃĐșĐž"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
-msgstr "ĐŸĐŸŃ™ŃĐșĐž"
+msgstr "ĐżĐŸŃ™ŃĐșĐž"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
-msgstr "РусĐșĐž"
+msgstr "русĐșĐž"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
-msgstr "йајĐČĐ°ĐœŃĐșĐž"
+msgstr "тајĐČĐ°ĐœŃĐșĐž"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
-msgstr "бурсĐșĐž"
+msgstr "турсĐșĐž"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "ĐŸĐŸĐșŃ€Đ”Ń‚ĐœĐž зарДз"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Đ Đ”Đ¶ĐžĐŒ Đ°Đ»Đ±ŃƒĐŒĐ°"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања ŃŃƒŃ‡Đ”Ń™Đ°</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ПроĐșључаĐș ŃŃƒŃ‡Đ”Ń™Đ°:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ПроĐșључаĐș Озлаза:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања Озлаза</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Đ”ŃƒĐ±ĐžĐœĐ° бОта:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Đ’Đ”Đ»ĐžŃ‡ĐžĐœĐ° ĐŒĐ”Ń’ŃƒĐŒĐ”ĐŒĐŸŃ€ĐžŃ˜Đ”:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "ĐœĐ”ĐșĐŸ ОсДцањД"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "ĐšĐŸŃ€ĐžŃŃ‚Đž ŃĐŸŃ„Ń‚ĐČДрсĐșĐŸ упраĐČљањД Ń˜Đ°Ń‡ĐžĐœĐŸĐŒ Đ·ĐČуĐșĐ° (ĐœĐžŃ˜Đ” ĐżŃ€Đ”ĐżĐŸŃ€ŃƒŃ‡Ń™ĐžĐČĐŸ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>ĐŸĐŸŃ˜Đ°Ń‡Đ°ŃšĐ” ĐżĐŸĐœĐ°ĐČљања</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ĐŁĐșључо ĐżĐŸŃ˜Đ°Ń‡Đ°ŃšĐ” ĐżĐŸĐœĐ°ĐČљања"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Đ Đ”Đ¶ĐžĐŒ Đ°Đ»Đ±ŃƒĐŒĐ°"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "ХпрДчО ĐŸĐŽŃĐ”Ń†Đ°ŃšĐ” (ĐżŃ€Đ”ĐżĐŸŃ€ŃƒŃ‡Ń™ĐžĐČĐŸ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
-msgstr "<b>ĐŸĐŸĐŽĐ”ŃĐž ĐœĐžĐČĐŸĐ”</b>"
+msgstr "<b>Đ”ĐŸŃ‚Đ”Ń€ĐžĐČања ĐœĐžĐČĐŸĐ°</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ĐŸĐŸŃ˜Đ°Ń‡Đ°Ń˜ сĐČĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ĐŸĐŸŃ˜Đ°Ń‡Đ°Ń˜ ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” бДз ĐŸĐ·ĐœĐ°ĐșĐ°:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "ĐĐ°Đ·ĐžĐČ ĐŽĐŸĐŒĐ°Ń›ĐžĐœĐ° ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "ПроĐșŃ™ŃƒŃ‡ĐœĐžĐș ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "ĐšĐŸŃ€ĐžŃĐœĐžŃ‡ĐșĐŸ ĐžĐŒĐ” ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Đ›ĐŸĐ·ĐžĐœĐșĐ° ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ĐŁĐșључо ĐșĐŸŃ€ĐžŃˆŃ›Đ”ŃšĐ” ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "ĐšĐŸŃ€ĐžŃŃ‚Đž ĐżĐŸŃ‚ĐČрђоĐČањД ĐžĐŽĐ”ĐœŃ‚ĐžŃ‚Đ”Ń‚Đ° са ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐŸĐŒ"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
-msgstr "ДДтДĐșŃ‚ĐŸŃ€ Đ°ŃƒŃ‚ĐŸĐŒĐ°Ń‚ŃĐșĐŸĐł ĐșĐŸĐŽĐžŃ€Đ°ŃšĐ° Đ·ĐœĐ°ĐșĐŸĐČĐ° Đ·Đ°:"
+msgstr "ĐĄĐ°ĐŒĐŸŃŃ‚Đ°Đ»ĐœĐž ĐŸŃ‚ĐșроĐČач ĐșĐŸĐŽĐžŃ€Đ°ŃšĐ° Đ·ĐœĐ°ĐșĐŸĐČĐ° Đ·Đ°:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
-msgstr "РДзДрĐČĐœĐŸ ĐșĐŸĐŽĐžŃ€Đ°ŃšĐ” Đ·ĐœĐ°ĐșĐŸĐČĐ°:"
+msgstr "РДзДрĐČĐœĐ° ĐșĐŸĐŽĐžŃ€Đ°ŃšĐ° Đ·ĐœĐ°ĐșĐŸĐČĐ°:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>ĐŸĐŸĐœĐ°ŃˆĐ°ŃšĐ”</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
-msgstr "НастаĐČĐž ĐżŃƒŃˆŃ‚Đ°ŃšĐ” про ĐżĐŸĐșŃ€Đ”Ń‚Đ°ŃšŃƒ"
+msgstr "НастаĐČĐž ĐżŃƒŃˆŃ‚Đ°ŃšĐ” прОлОĐșĐŸĐŒ ĐżĐŸĐșрДтања"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "ĐĐ°ĐżŃ€Đ”ĐŽŃƒŃ˜ ĐșĐ°ĐŽĐ° јД ĐŸĐ±Ń€ĐžŃĐ°ĐœĐ° Ń‚Đ”Đșућа ĐżĐ”ŃĐŒĐ°"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Очосто спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ° прОлОĐșĐŸĐŒ ĐŸŃ‚ĐČарања ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ°"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ОтĐČĐŸŃ€Đž ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” у проĐČŃ€Đ”ĐŒĐ”ĐœĐŸĐŒ спОсĐșу ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ĐĐ” учотаĐČај ĐŒĐ”Ń‚Đ°ĐżĐŸĐŽĐ°Ń‚ĐșĐ” Đ·Đ° ĐżĐ”ŃĐŒĐ” ĐŽĐŸĐș сД ĐœĐ” ĐżŃƒŃŃ‚Đ”"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
-msgstr "<b>ĐŁŃĐ°ĐłĐ»Đ°ŃˆĐ”ĐœĐŸŃŃ‚</b>"
+msgstr "<b>ĐĄĐ°ĐłĐ»Đ°ŃĐœĐŸŃŃ‚</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "ĐŸŃ€ĐŸŃ‚ŃƒĐŒĐ°Ń‡Đž \\ (ĐșĐŸĐœŃ‚Ń€Đ° ĐșĐŸŃŃƒ црту) ĐșĐ°ĐŸ ĐłŃ€Đ°ĐœĐžŃ‡ĐœĐžĐș фасцоĐșлД"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ĐžĐŒĐŸŃ‚ Đ°Đ»Đ±ŃƒĐŒĐ°</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "ĐŸĐŸŃ‚Ń€Đ°Đ¶Đž слОĐșĐ” ĐșĐŸŃ˜Đ” ĐŸĐŽĐłĐŸĐČарају ĐŸĐČĐžĐŒ Ń€Đ”Ń‡ĐžĐŒĐ° (разЎĐČĐŸŃ˜Đ”ĐœĐ” Đ·Đ°Ń€Đ”Đ·ĐŸĐŒ):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "ИсĐșључо слОĐșĐ” ĐșĐŸŃ˜Đ” ĐŸĐŽĐłĐŸĐČарају ĐŸĐČĐžĐŒ Ń€Đ”Ń‡ĐžĐŒĐ° (разЎĐČĐŸŃ˜Đ”ĐœĐ” Đ·Đ°Ń€Đ”Đ·ĐŸĐŒ):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
-msgstr "ĐŸĐŸŃ‚Ń€Đ°Đ¶ĐžŃ‚Đ” слОĐșĐ” ĐșĐŸŃ˜Đ” ĐŸĐŽĐłĐŸĐČарају ĐœĐ°Đ·ĐžĐČу ĐżĐ”ŃĐŒĐ”"
+msgstr "ĐŸĐŸŃ‚Ń€Đ°Đ¶Đž слОĐșĐ” ĐșĐŸŃ˜Đ” ĐŸĐŽĐłĐŸĐČарају ĐœĐ°Đ·ĐžĐČу ĐżĐ”ŃĐŒĐ”"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "ĐŸĐŸŃ‚Ń€Đ°Đ¶Đž ĐŽŃƒĐ±ĐžĐœŃĐșĐž"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
-msgstr "Đ”ŃƒĐ±ĐžĐœĐ° прДтрагД:"
+msgstr "Đ”ŃƒĐ±ĐžĐœĐ° прДтрагД: "
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
-msgstr "<b>ОблачОћ ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ˜Đ°</b>"
+msgstr "<b>ОблачОћ ĐżĐŸĐŽĐ°Ń‚Đ°ĐșĐ°</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "ПроĐșажО ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›Đ” ĐżĐŸĐŽĐ°Ń‚Đ°ĐșĐ°"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
-msgstr "Đ—Đ°ŃŃ‚ĐŸŃ˜ проĐșĐ°Đ·Đ° (ĐŽĐ”ŃĐ”Ń‚ĐžĐœĐșĐ” сДĐșŃƒĐœĐŽĐ”):"
+msgstr "Đ—Đ°ŃŃ‚ĐŸŃ˜ ОсĐșĐ°Đșања (ĐŽĐ”ŃĐ”Ń‚ĐžĐœĐșĐ” сДĐșŃƒĐœĐŽĐ”):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
-msgstr "ПроĐșажОтД ĐČŃ€Đ”ĐŒĐ”ĐœŃĐșу лДстĐČоцу Đ·Đ° Ń‚Đ”Đșућу ĐżĐ”ŃĐŒŃƒ"
+msgstr "ПроĐșажО ĐČŃ€Đ”ĐŒĐ”ĐœŃĐșу лДстĐČоцу Đ·Đ° Ń‚Đ”Đșућу ĐżĐ”ŃĐŒŃƒ"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "НАСЛОВ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ИЗВОЂАЧ — НАСЛОВ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ИЗВОЂАЧ — АЛБУМ — НАСЛОВ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ИЗВОЂАЧ — АЛБУМ — БРОЈ. НАСЛОВ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ИЗВОЂАЧ [ АЛБУМ ] — БРОЈ. НАСЛОВ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "АЛБУМ — НАСЛОВ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ĐšĐ°Ń‚Đ”ĐłĐŸŃ€ĐžŃ˜Đ°"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "ĐŸŃ€ĐŸĐžĐ·ĐČĐŸŃ™ĐœĐŸ"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>ПроĐșĐ°Đ· ĐżĐ”ŃĐŒĐ”</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "ПроĐșажО Đ±Ń€ĐŸŃ˜Đ”ĐČĐ” ĐżĐ”ŃĐ°ĐŒĐ°"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ПроĐșажО ĐżĐŸŃ‡Đ”Ń‚ĐœĐ” ĐœŃƒĐ»Đ” (02:00 ŃƒĐŒĐ”ŃŃ‚ĐŸ 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "ПроĐșажО ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ˜Đ” ĐŸ запОсу ĐœĐ°ŃĐ»ĐŸĐČĐ°"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "ĐŸŃ€ĐŸĐžĐ·ĐČĐŸŃ™ĐœĐ° ĐœĐžŃĐșĐ°:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Запос ĐœĐ°ŃĐ»ĐŸĐČĐ°:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "ПроĐșључаĐș Озлаза:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ĐŸŃ€Đ”ĐœĐŸŃ"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ĐŁĐœĐŸŃ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Đ”Đ”Ń˜ŃŃ‚ĐČĐŸ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "ПроĐșĐ°Đ·ĐžĐČањД"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "ĐžĐżŃˆŃ‚Đ”"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ĐŸŃ€ĐŸĐžĐ·ĐČĐŸŃ™ĐœĐ° ĐœĐžŃĐșĐ°:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "ĐŸĐŸŃŃ‚Đ°ĐČĐșĐ” Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐșĐ°"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐșĐ°"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
-msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° ĐœĐ°ĐżŃ€Đ°ĐČĐžĐŒ фасцоĐșлу (%s): %s\n"
-
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "ĐĐžŃĐ°ĐŒ ĐżŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ĐżĐŸĐ»ĐŸĐ¶Đ°Ń˜."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ĐĐžŃ˜Đ” ĐżŃƒŃˆŃ‚Đ”ĐœĐ° ĐœĐžŃ˜Đ”ĐŽĐœĐ° ĐżĐ”ŃĐŒĐ°."
+msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° ĐœĐ°ĐżŃ€Đ°ĐČĐžĐŒ ЎОрДĐșŃ‚ĐŸŃ€ĐžŃ˜ŃƒĐŒ (%s): %s\n"
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "ЗĐČŃƒŃ‡ĐœĐž ЩД, ĐœŃƒĐŒĐ”Ń€Đ° %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ĐœĐŸĐœĐŸ"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ĐĄŃ‚Đ”Ń€Đ”ĐŸ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -585,409 +611,420 @@ msgstr "Đ—Đ°ŃĐ»ŃƒĐłĐ”"
msgid "License"
msgstr "Đ”ĐŸĐ·ĐČĐŸĐ»Đ°"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
-msgstr "О Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐșу"
+msgstr "O Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐșу"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"Да лО стД ŃĐžĐłŃƒŃ€ĐœĐž ĐŽĐ° жДлОтД ĐŽĐ° Đ·Đ°Ń‚ĐČĐŸŃ€ĐžŃ‚Đ” %s? АĐșĐŸ Ń‚ĐŸ ŃƒŃ€Đ°ĐŽĐžŃ‚Đ”, сĐČĐ” ĐžĐ·ĐŒĐ”ĐœĐ” "
-"ĐœĐ°ĐżŃ€Đ°ĐČŃ™Đ”ĐœĐ” ĐŸĐŽ ĐșĐ°ĐŽĐ° јД ОзĐČĐ”Đ·Đ”Đœ спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ° бОћД ĐžĐ·ĐłŃƒĐ±Ń™Đ”ĐœĐ”."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Да лО жДлОтД ĐŽĐ° Ń‚Ń€Đ°Ń˜ĐœĐŸ уĐșĐ»ĐŸĐœĐžŃ‚Đ” „%s“?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_ĐŁĐșĐ»ĐŸĐœĐž"
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ĐŁĐșĐ»ĐŸĐœĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ЗатĐČĐŸŃ€Đž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_ĐĐ” потај ĐżĐŸĐœĐŸĐČĐŸ"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_ĐĐ” проĐșазуј ĐČОшД ĐŸĐČу ĐżĐŸŃ€ŃƒĐșу"
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒŃ˜ спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ĐżĐŸĐŽĐ”ŃˆĐ°ĐČања ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "КаĐșĐŸ жДлОтД ĐŽĐ° ĐœĐ°Đ·ĐŸĐČДтД ĐŸĐČај спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_ĐŁĐșључо"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "ĐŁŃ˜Đ”ĐŽĐœĐ°Ń‡Đ°ĐČач"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ĐŸŃ€Đ”Ń‚ĐżĐŸŃ˜Đ°Ń‡Đ°ŃšĐ”"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "ĐŃƒĐŒĐ”Ń€Đ°"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
-msgstr "ĐąŃ€Đ°Ń˜Đ°ŃšĐ”"
+msgstr "Đ”ŃƒĐ¶ĐžĐœĐ°"
+
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Запос:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "КĐČалОтДт:"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "ĐŸŃ€ĐŸŃ‚ĐŸĐș бОта:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "КОсДлО ŃŸĐ”Đ·"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "КОсДлО Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "ĐĐŒĐ±ĐžŃ˜Đ”ĐœŃ‚Đ°Đ»ĐœĐ°"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Đ‘Đ”Đ±ĐŸĐż"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Đ‘Đ»ŃƒĐłŃ€Đ°Ń"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Đ‘Đ»ŃƒĐ·"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ĐšĐ°ĐŒĐ”Ń€ĐœĐ° ĐŒŃƒĐ·ĐžĐșĐ°"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ĐšĐ»Đ°ŃĐžŃ‡ĐœĐ°"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "ĐšĐ°ĐœŃ‚Ń€Đž"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "МртĐČĐž ĐŒĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "ДосĐșĐŸ"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "ЛаĐșĐŸ ŃĐ»ŃƒŃˆĐ°ŃšĐ”"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "ĐĐ°Ń€ĐŸĐŽĐœĐ°"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Đ€Đ°ĐœĐșĐž"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Đ“Đ°ĐœĐłŃŃ‚Đ° рДп"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "ВДрсĐșĐ°"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Đ“Ń€Đ°ĐœŃŸ"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "ЄарЎ Ń€ĐŸĐș"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Đ„Đ”ĐČĐž ĐŒĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ЄОп-Đ„ĐŸĐż"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
-msgstr "Єаус"
+msgstr "Єауз"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "ĐĐ”Đ·"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "ĐŃƒĐœĐłĐ»Đ°"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "ĐœĐ”Ń‚Đ°Đ»"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "ĐĐŸĐČĐŸ ĐŽĐŸĐ±Đ°"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "ĐĐŸĐČĐž талас"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "БуĐșĐ°"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "ĐŸĐŸĐż"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "ĐŸĐ°ĐœĐș Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "РДп"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "РДгД"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Đ ĐŸĐș"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Đ ĐŸĐșĐ”ĐœŃ€ĐŸĐ»"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Đ ĐžŃ‚Đ°ĐŒ Đž Đ‘Đ»ŃƒĐ·"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "ĐĄĐșĐ°"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "ĐĄĐŸŃƒĐ»"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "ĐĄĐČĐžĐœĐł"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "ĐąĐ”Ń…ĐœĐŸ"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "броп-Đ„ĐŸĐż"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ĐœĐ”ĐŽĐŸŃŃ‚ŃƒĐżĐœĐŸ</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ĐœĐ”Ń‚Đ°ĐżĐŸĐŽĐ°Ń†Đž су ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐŸŃĐČĐ”Đ¶Đ”ĐœĐž"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ОсĐČДжаĐČањД ĐŒĐ”Ń‚Đ°ĐżĐŸĐŽĐ°Ń‚Đ°ĐșĐ° ĐœĐžŃ˜Đ” ŃƒŃĐżĐ”Đ»ĐŸ"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "ĐŸĐŸĐŽĐ°Ń†Đž ĐŸ ĐżĐ”ŃĐŒĐž"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "ЧуĐČањД јД ŃƒŃĐżĐ”Đ»ĐŸ"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Запос:</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "ЧуĐČањД ĐœĐžŃ˜Đ” ŃƒŃĐżĐ”Đ»ĐŸ"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">КĐČалОтДт:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">ĐŸŃ€ĐŸŃ‚ĐŸĐș бОта:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">ĐĐ°ŃĐ»ĐŸĐČ</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ИзĐČĐŸŃ’Đ°Ń‡</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ĐĐ»Đ±ŃƒĐŒ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ĐĐ°ĐżĐŸĐŒĐ”ĐœĐ°</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Đ–Đ°ĐœŃ€</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Đ“ĐŸĐŽĐžĐœĐ°</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Đ‘Ń€ĐŸŃ˜ ĐœŃƒĐŒĐ”Ń€Đ”"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Đ‘Ń€ĐŸŃ˜ ĐżĐ”ŃĐŒĐ”</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_СачуĐČај"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "Н/Д"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
-msgstr "Носу ĐŽĐŸŃŃ‚ŃƒĐżĐœĐž ĐżĐŸĐŽĐ°Ń†Đž Đ·Đ° %s.\n"
+msgstr "Носу ĐŽĐŸŃŃ‚ŃƒĐżĐœĐž ĐżĐŸĐŽĐ°Ń†Đž Đ·Đ° „%s“.\n"
+
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_ĐĄĐșĐŸŃ‡Đž"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ĐŸŃ€Đ”Ń’Đž ĐœĐ° ĐČŃ€Đ”ĐŒĐ”"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ĐŁĐœĐ”ŃĐžŃ‚Đ” ĐČŃ€Đ”ĐŒĐ” (ĐŒĐžĐœŃƒŃ‚Đž:сДĐșŃƒĐœĐŽĐ”):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Да ĐżŃ€Đ”ĐżĐžŃˆĐ”ĐŒ „%s“?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "ĐŸĐŸŃ‚ĐČрЮо прДпОсОĐČањД"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
-msgstr "ИзĐČДзО спОсаĐș"
+msgstr "ИзĐČДзО спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
-msgstr "ĐŁĐČДзО спОсаĐș"
+msgstr "ĐŁĐČДзО спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Да ĐżŃ€Đ”ĐżĐžŃˆĐ”ĐŒ %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
-msgstr "УпраĐČĐœĐžĐș Ń€Đ”ĐŽĐŸŃĐ»Đ”ĐŽĐ°"
+msgstr "УпраĐČĐœĐžĐș рДЎа"
+
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "Đ˜Đ·Đ±Đ°Ń†Đž Оз _рДЎа"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
-msgstr "ОтĐČĐŸŃ€ĐžŃ‚Đ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+msgstr "ОтĐČĐŸŃ€Đž ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_ОтĐČĐŸŃ€Đž"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "ЗатĐČĐŸŃ€Đž _ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° „ОтĐČĐŸŃ€Đžâ€œ"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
-msgstr "Đ”ĐŸĐŽĐ°Ń˜Ń‚Đ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+msgstr "Đ”ĐŸĐŽĐ°Ń˜ ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ЗатĐČĐŸŃ€Đž ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° „ОтĐČĐŸŃ€Đžâ€œ"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Đ”ĐŸĐŽĐ°Ń˜"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ЗатĐČĐŸŃ€Đž ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° â€žĐ”ĐŸĐŽĐ°Ń˜â€œ"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "ЗатĐČĐŸŃ€Đž _ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° â€žĐ”ĐŸĐŽĐ°Ń˜â€œ"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "СтаĐČĐž у _рДЎ"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Đ˜Đ·Đ±Đ°Ń†Đž Оз _рДЎа"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ĐŸŃ€Đ”Ń’Đž ĐœĐ° ĐżĐ”ŃĐŒŃƒ"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "ĐŸŃ€ĐŸĐżŃƒŃĐœĐžĐș: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
-msgstr "_ĐŸŃ€ĐŸĐżŃƒŃĐœĐžĐș:"
-
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Đ—Đ°ĐżĐ°ĐŒŃ‚Đž"
+msgstr "_ĐŸŃ€ĐŸĐżŃƒŃŃ‚Đž:"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Очос_то"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "ЗатĐČĐŸŃ€Đž ĐżĐŸŃĐ»Đ” _сĐșĐŸĐșĐ°"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ЗатĐČĐŸŃ€Đž ĐżĐŸŃĐ»Đ” сĐșĐŸĐșĐ°"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "УпраĐČĐœĐžĐș спОсĐșĐ° ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "СтаĐČĐșĐ”"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_ĐĐŸĐČĐ°"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
msgstr "_ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒŃ˜"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Пусто"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
-msgstr "_ЗатĐČĐŸŃ€Đž ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ°ĐșĐŸĐœ Đ°ĐșтоĐČорања спОсĐșĐ° ĐœŃƒĐŒĐ”Ń€Đ°"
+msgstr "_ЗатĐČĐŸŃ€Đž ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° ĐżĐŸĐșрДтањД спОсĐșĐ° ĐœŃƒĐŒĐ”Ń€Đ°"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "ОтĐČĐŸŃ€ĐžŃ‚Đ” Đ°ĐŽŃ€Đ”ŃŃƒ"
@@ -995,14 +1032,14 @@ msgstr "ОтĐČĐŸŃ€ĐžŃ‚Đ” Đ°ĐŽŃ€Đ”ŃŃƒ"
msgid "Add URL"
msgstr "Đ”ĐŸĐŽĐ°Ń˜Ń‚Đ” Đ°ĐŽŃ€Đ”ŃŃƒ"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "ĐŁĐœĐ”ŃĐž Đ°ĐŽŃ€Đ”ŃŃƒ:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
msgstr ""
"\n"
-"ссс(Đ”ĐŸĐŽĐ°Ń‚ĐœĐ” ĐżĐŸŃ€ŃƒĐșĐ” су сĐșроĐČĐ”ĐœĐ”.)"
+"(Đ”ĐŸĐŽĐ°Ń‚ĐœĐ” ĐżĐŸŃ€ŃƒĐșĐ” су сĐșроĐČĐ”ĐœĐ”.)"
diff --git a/po/sr@latin.po b/po/sr@latin.po
index f18136a..678e037 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -5,14 +5,15 @@
# Translators:
# MirosNik <miroslavnikolic@rocketmail.com>, 2011-2012
# MirosNik <miroslavnikolic@rocketmail.com>, 2013
+# MirosNik <miroslavnikolic@rocketmail.com>, 2013
# Strahinja Kustudic <kustudic@gmail.com>, 2007-2008
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-03-26 08:31+0000\n"
-"Last-Translator: MirosNik <miroslavnikolic@rocketmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/"
"audacious/language/sr@latin/)\n"
"Language: sr@latin\n"
@@ -22,11 +23,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "TraĆŸim ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -34,129 +35,120 @@ msgstr[0] "PronaĆĄao sam %d datoteku"
msgstr[1] "PronaĆĄao sam %d datoteke"
msgstr[2] "PronaĆĄao sam %d datoteka"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (neispravan UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Novi spisak numera"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Greơka prilikom uvoza VinAMP EKuF datoteke „%s“"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Preskače unazad u spisku numera"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Puơta tekući spisak numera"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Prikazuje izdanje"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Pauzira tekuću pesmu"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Zaustavlja tekuću pesmu"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Pauzira ako puơta, inače puơta"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Preskače unapred u spisku numera"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Prikazuje prozorče „Pređi na datoteku“"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Dodaje datoteke u spisak numera"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Dodaje nove datoteke u privremeni spisak numera"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Prikazuje glavni prozor"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "ReĆŸim nepromiĆĄljenosti"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Izlazi na zaustavljanje puĆĄtanja"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Prikazuje izdanje"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Ispisuje poruke za ispravljanje greĆĄaka"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "DATOTEKA..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "— puơta multimedijalne datoteke"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Probajte „%s --help“ za viơe informacija.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Bezočnik"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "Nisam pronaĆĄao dekoder za %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "Ne mogu da otvorim „%s“."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "Ne mogu da %s %s: nije podrĆŸano proĆĄirenje datoteke."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "sačuvam"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "učitam"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "Ne mogu da %s %s: nije podrĆŸano proĆĄirenje datoteke."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Novi spisak numera"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Sad puĆĄtam"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -164,412 +156,444 @@ msgstr ""
"Spisak numera ne moĆŸe biti poređan zato ĆĄto je pregledanje metapodataka joĆĄ "
"uvek u toku (ili je isključeno)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "O programu „%s“"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "PodeĆĄavanja za %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Audio"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "MreĆŸa"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Spisak numera"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Podaci o pesmi"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Priključci"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "OpĆĄte"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Dejstvo"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Prikazivanje"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Unos"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Prenos"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Izvođač"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Naslov"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Broj numere"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Ćœanr"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Naziv datoteke"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Putanja datoteke"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Datum"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Godina"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Komentar"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Kodek"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kvalitet"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "NiĆĄta"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arapski"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltički"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Kineski"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Grčki"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Jevrejski"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japanski"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korejski"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Poljski"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Ruski"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Tajvanski"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Turski"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Pokretni zarez"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ReĆŸim albuma"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "Priključak izlaza:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>PodeĆĄavanja izlaza</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Dubina bita:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Veličina međumemorije:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "Meko isecanje"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Koristi softversko upravljanje jačinom zvuka (nije preporučljivo)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Pojačanje ponavljanja</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Uključi pojačanje ponavljanja"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ReĆŸim albuma"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Spreči odsecanje (preporučljivo)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Podesi nivoe</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Pojačaj sve datoteke:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Pojačaj datoteke bez oznaka:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Naziv domaćina posrednika:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Priključnik posrednika:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Korisničko ime posrednika:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Lozinka posrednika:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>PodeĆĄavanja posrednika</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Uključi koriơćenje posrednika"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Koristi potvrđivanje identiteta sa posrednikom"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Detektor automatskog kodiranja znakova za:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Rezervno kodiranje znakova:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>PonaĆĄanje</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Nastavi puĆĄtanje pri pokretanju"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Napreduj kada je obrisana tekuća pesma"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Očisti spisak numera prilikom otvaranja datoteka"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Otvori datoteke u privremenom spisku numera"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Ne učitavaj metapodatke za pesme dok se ne puste"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>UsaglaĆĄenost</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Protumači \\ (kontra kosu crtu) kao graničnik fascikle"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Omot albuma</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "PotraĆŸi slike koje odgovaraju ovim rečima (razdvojene zarezom):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Isključi slike koje odgovaraju ovim rečima (razdvojene zarezom):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "PotraĆŸite slike koje odgovaraju nazivu pesme"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "PotraĆŸi dubinski"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Dubina pretrage:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Oblačić informacija</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "PrikaĆŸi oblačiće podataka"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Zastoj prikaza (desetinke sekunde):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "PrikaĆŸite vremensku lestvicu za tekuću pesmu"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "NASLOV"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "IZVOĐAČ — NASLOV"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "IZVOĐAČ — ALBUM — NASLOV"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "IZVOĐAČ — ALBUM — BROJ. NASLOV"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "IZVOĐAČ [ ALBUM ] — BROJ. NASLOV"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM — NASLOV"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategorija"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Proizvoljno"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Prikaz pesme</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "PrikaĆŸi brojeve pesama"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "PrikaĆŸi početne nule (02:00 umesto 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "PrikaĆŸi informacije o zapisu naslova"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Proizvoljna niska:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Zapis naslova:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "Priključak izlaza:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Prenos"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Unos"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Dejstvo"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Prikazivanje"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "OpĆĄte"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Proizvoljna niska:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Postavke Bezočnika"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Ne mogu da napravim fasciklu (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Nisam pronaĆĄao poloĆŸaj."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Nije puĆĄtena nijedna pesma."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Zvučni CD, numera %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -585,409 +609,420 @@ msgstr "Zasluge"
msgid "License"
msgstr "Dozvola"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "O Bezočniku"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"Da li ste sigurni da ĆŸelite da zatvorite %s? Ako to uradite, sve izmene "
-"napravljene od kada je izvezen spisak numera biće izgubljene."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Zatvori spisak numera"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_Ne prikazuj viĆĄe ovu poruku"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Preimenuj spisak numera"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "podeĆĄavanja ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Uključi"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ujednačavač"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Pretpojačanje"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Numera"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Trajanje"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Kiseli dĆŸez"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Kiseli rok"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambijentalna"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Blugras"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Bluz"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Kamerna muzika"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasična"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Kantri"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Mrtvi metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Lako sluĆĄanje"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Narodna"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Fanki"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta rep"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Verska"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "GrandĆŸ"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard rok"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Hevi metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-Hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "Haus"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "DĆŸez"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "DĆŸungla"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "Novo doba"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "Novi talas"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Buka"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Pank Rok"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rep"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Rege"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rok"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rokenrol"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Ritam i Bluz"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Sving"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tehno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-Hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">nedostupno</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Metapodaci su uspeĆĄno osveĆŸeni"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "OsveĆŸavanje metapodataka nije uspelo"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Podaci o pesmi"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Zapis:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kvalitet:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Protok bita:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Naslov</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Izvođač</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Napomena</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Ćœanr</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Godina</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Broj pesme</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Nisu dostupni podaci za %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Pređi na vreme"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Unesite vreme (minuti:sekunde):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Da prepiĆĄem %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Izvezi spisak"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Uvezi spisak"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Da prepiĆĄem %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Upravnik redosleda"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Otvorite datoteke"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Dodajte datoteke"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Zatvori prozorče na „Otvori“"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Zatvori prozorče na „Dodaj“"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "Stavi u _red"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Izbaci iz _reda"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Pređi na pesmu"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Propusnik: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Propusnik:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Zapamti"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Očis_ti"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Zatvori posle skoka"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Upravnik spiska numera"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Stavke"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_Preimenuj"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_Zatvori prozorče nakon aktiviranja spiska numera"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Otvorite adresu"
@@ -995,11 +1030,11 @@ msgstr "Otvorite adresu"
msgid "Add URL"
msgstr "Dodajte adresu"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Unesi adresu:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/sr_RS.po b/po/sr_RS.po
new file mode 100644
index 0000000..5f18d09
--- /dev/null
+++ b/po/sr_RS.po
@@ -0,0 +1,1047 @@
+# Serbian (Serbia) translation for Audacious
+# Copyright (C) Audacious translators
+# This file is distributed under the same license as the Audacious package.
+#
+# Translators:
+# MirosNik <miroslavnikolic@rocketmail.com>, 2014
+msgid ""
+msgstr ""
+"Project-Id-Version: Audacious\n"
+"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-03-15 22:38+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
+"Language-Team: Serbian (Serbia) (http://www.transifex.com/projects/p/"
+"audacious/language/sr_RS/)\n"
+"Language: sr_RS\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/audacious/adder.c:76
+msgid "Searching ..."
+msgstr "ĐąŃ€Đ°Đ¶ĐžĐŒ ..."
+
+#: src/audacious/adder.c:104
+#, c-format
+msgid "%d file found"
+msgid_plural "%d files found"
+msgstr[0] "ĐŸŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ŃĐ°ĐŒ %d ĐŽĐ°Ń‚ĐŸŃ‚Đ”Đșу"
+msgstr[1] "ĐŸŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ŃĐ°ĐŒ %d ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+msgstr[2] "ĐŸŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ŃĐ°ĐŒ %d ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ°"
+
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "ĐĐŸĐČĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "ГрeшĐșa"
+
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "ПроĐșазујД ĐżĐŸĐŒĐŸŃ› Đ»ĐžĐœĐžŃ˜Đ” ĐœĐ°Ń€Đ”ĐŽĐ±Đž"
+
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ПроĐșазујД ОзЎањД"
+
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Đ—Đ°ĐżĐŸŃ‡ĐžŃšĐ” ĐżŃƒŃˆŃ‚Đ°ŃšĐ”"
+
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "ĐŸĐ°ŃƒĐ·ĐžŃ€Đ° ĐżŃƒŃˆŃ‚Đ°ŃšĐ”"
+
+#: src/audacious/main.c:74
+msgid "Pause if playing, play otherwise"
+msgstr "ĐŸĐ°ŃƒĐ·ĐžŃ€Đ° Đ°ĐșĐŸ сĐČора, ĐžĐœĐ°Ń‡Đ” пушта"
+
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ЗаустаĐČља ĐżŃƒŃˆŃ‚Đ°ŃšĐ”"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "ИЎД ĐœĐ° ĐżŃ€Đ”Ń‚Ń…ĐŸĐŽĐœŃƒ ĐżĐ”ŃĐŒŃƒ"
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "ИЎД ĐœĐ° ŃĐ»Đ”ĐŽĐ”Ń›Ńƒ ĐżĐ”ŃĐŒŃƒ"
+
+#: src/audacious/main.c:78
+msgid "Add files to the playlist"
+msgstr "Đ”ĐŸĐŽĐ°Ń˜Đ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐ° спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Đ”ĐŸĐŽĐ°Ń˜Đ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐ° проĐČŃ€Đ”ĐŒĐ”ĐœĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/audacious/main.c:80
+msgid "Display the main window"
+msgstr "ПроĐșазујД глаĐČĐœĐž ĐżŃ€ĐŸĐ·ĐŸŃ€"
+
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "ПроĐșазујД ĐżŃ€ĐŸĐ·ĐŸŃ€ Đ·Đ° бОрањД ĐżĐ”ŃĐ°ĐŒĐ°"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "ĐŸĐŸĐșрДћД сД бДз графочĐșĐŸĐł ŃŃƒŃ‡Đ”Ń™Đ°"
+
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr "ИзлазО ĐœĐ° Đ·Đ°ŃƒŃŃ‚Đ°ĐČљањД пуштања"
+
+#: src/audacious/main.c:84
+msgid "Print debugging messages"
+msgstr "ИспОсујД ĐżĐŸŃ€ŃƒĐșĐ” ĐżŃ€ĐŸŃ‡ĐžŃˆŃ›Đ°ĐČања"
+
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚Đ° ĐŸĐżŃ†ĐžŃ˜Đ°: %s\n"
+
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚Đ° ĐŸĐżŃ†ĐžŃ˜Đ°: -%c\n"
+
+#: src/audacious/main.c:314
+#, c-format
+msgid ""
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr ""
+"ĐŁĐżĐŸŃ‚Ń€Đ”Đ±Đ°: audacious [ОПЩИЈА] ... [ДАбОбЕКА] ...\n"
+"\n"
+
+#: src/audacious/main.c:601
+msgid "Audacious"
+msgstr "Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐș"
+
+#: src/audacious/playback.c:354
+#, c-format
+msgid "No decoder found for %s."
+msgstr "ĐĐžŃĐ°ĐŒ ĐżŃ€ĐŸĐœĐ°ŃˆĐ°ĐŸ ĐŽĐ”ĐșĐŸĐŽĐ”Ń€ Đ·Đ° „%s“."
+
+#: src/audacious/playback.c:387
+#, c-format
+msgid "%s could not be opened."
+msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° ĐŸŃ‚ĐČĐŸŃ€ĐžĐŒ „%s“."
+
+#: src/audacious/playlist-files.c:95
+#, c-format
+msgid "Cannot load %s: unsupported file extension."
+msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° ŃƒŃ‡ĐžŃ‚Đ°ĐŒ „%s“: ĐżŃ€ĐŸŃˆĐžŃ€Đ”ŃšĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐžŃ˜Đ” ĐżĐŸĐŽŃ€Đ¶Đ°ĐœĐŸ."
+
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° сачуĐČĐ°ĐŒ „%s“: ĐżŃ€ĐŸŃˆĐžŃ€Đ”ŃšĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” ĐœĐžŃ˜Đ” ĐżĐŸĐŽŃ€Đ¶Đ°ĐœĐŸ."
+
+#: src/audacious/playlist-new.c:98
+msgid "Now Playing"
+msgstr "ĐĄĐ°ĐŽ ĐżŃƒŃˆŃ‚Đ°ĐŒ"
+
+#: src/audacious/playlist-new.c:1656
+msgid ""
+"The playlist cannot be sorted because metadata scanning is still in progress "
+"(or has been disabled)."
+msgstr ""
+"ХпОсаĐș ĐœŃƒĐŒĐ”Ń€Đ° ĐœĐ” ĐŒĐŸĐ¶Đ” бОтО ĐżĐŸŃ€Đ”Ń’Đ°Đœ Đ·Đ°Ń‚ĐŸ ŃˆŃ‚ĐŸ јД прДглДЎањД ĐŒĐ”Ń‚Đ°ĐżĐŸĐŽĐ°Ń‚Đ°ĐșĐ° Ń˜ĐŸŃˆ "
+"уĐČĐ”Đș у Ń‚ĐŸĐșу (ОлО јД ОсĐșŃ™ŃƒŃ‡Đ”ĐœĐŸ)."
+
+#: src/audacious/plugin-preferences.c:55
+#, fuzzy
+msgid "About"
+msgstr "О ĐżŃ€ĐŸĐłŃ€Đ°ĐŒŃƒ "
+
+#: src/audacious/plugin-preferences.c:94
+#, fuzzy
+msgid "Settings"
+msgstr " ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_ĐŸĐŸĐŽĐ”ŃĐž"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_ОтĐșажО"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_ЗатĐČĐŸŃ€Đž"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "_ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_О ĐżŃ€ĐŸĐłŃ€Đ°ĐŒŃƒ"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_ПроĐșључцо ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "ИзглДЎ"
+
+#: src/audacious/ui_preferences.c:83
+msgid "Audio"
+msgstr "ЗĐČуĐș"
+
+#: src/audacious/ui_preferences.c:84
+msgid "Network"
+msgstr "ĐœŃ€Đ”Đ¶Đ°"
+
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
+msgid "Playlist"
+msgstr "ХпОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
+msgid "Song Info"
+msgstr "ĐŸĐŸĐŽĐ°Ń†Đž ĐżĐ”ŃĐŒĐ”"
+
+#: src/audacious/ui_preferences.c:87
+msgid "Plugins"
+msgstr "ПроĐșључцо"
+
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "ĐžĐżŃˆŃ‚Đ”"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Đ”Đ”Ń˜ŃŃ‚ĐČĐŸ"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "ПроĐșĐ°Đ·ĐžĐČањД"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ĐŁĐœĐŸŃ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ĐŸŃ€Đ”ĐœĐŸŃ"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
+msgid "Artist"
+msgstr "ИзĐČĐŸŃ’Đ°Ń‡"
+
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
+msgid "Album"
+msgstr "ĐĐ»Đ±ŃƒĐŒ"
+
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
+msgid "Title"
+msgstr "ĐĐ°ŃĐ»ĐŸĐČ"
+
+#: src/audacious/ui_preferences.c:103
+msgid "Tracknumber"
+msgstr "Đ‘Ń€ĐŸŃ˜ ĐœŃƒĐŒĐ”Ń€Đ”"
+
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
+msgid "Genre"
+msgstr "Đ–Đ°ĐœŃ€"
+
+#: src/audacious/ui_preferences.c:105
+msgid "Filename"
+msgstr "ĐĐ°Đ·ĐžĐČ ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+
+#: src/audacious/ui_preferences.c:106
+msgid "Filepath"
+msgstr "Путања ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+
+#: src/audacious/ui_preferences.c:107
+msgid "Date"
+msgstr "Đ”Đ°Ń‚ŃƒĐŒ"
+
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
+msgid "Year"
+msgstr "Đ“ĐŸĐŽĐžĐœĐ°"
+
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
+msgid "Comment"
+msgstr "ĐĐ°ĐżĐŸĐŒĐ”ĐœĐ°"
+
+#: src/audacious/ui_preferences.c:110
+msgid "Codec"
+msgstr "ĐšĐŸĐŽĐ”Đș"
+
+#: src/audacious/ui_preferences.c:111
+msgid "Quality"
+msgstr "КĐČалОтДт"
+
+#: src/audacious/ui_preferences.c:116
+msgid "None"
+msgstr "Ношта"
+
+#: src/audacious/ui_preferences.c:117
+msgid "Arabic"
+msgstr "арапсĐșĐž"
+
+#: src/audacious/ui_preferences.c:118
+msgid "Baltic"
+msgstr "балтОчĐșĐž"
+
+#: src/audacious/ui_preferences.c:119
+msgid "Chinese"
+msgstr "ĐșĐžĐœĐ”ŃĐșĐž"
+
+#: src/audacious/ui_preferences.c:120
+msgid "Greek"
+msgstr "грчĐșĐž"
+
+#: src/audacious/ui_preferences.c:121
+msgid "Hebrew"
+msgstr "јДĐČŃ€Đ”Ń˜ŃĐșĐž"
+
+#: src/audacious/ui_preferences.c:122
+msgid "Japanese"
+msgstr "Ń˜Đ°ĐżĐ°ĐœŃĐșĐž"
+
+#: src/audacious/ui_preferences.c:123
+msgid "Korean"
+msgstr "ĐșĐŸŃ€Đ”Ń˜ŃĐșĐž"
+
+#: src/audacious/ui_preferences.c:124
+msgid "Polish"
+msgstr "ĐżĐŸŃ™ŃĐșĐž"
+
+#: src/audacious/ui_preferences.c:125
+msgid "Russian"
+msgstr "русĐșĐž"
+
+#: src/audacious/ui_preferences.c:126
+msgid "Taiwanese"
+msgstr "тајĐČĐ°ĐœŃĐșĐž"
+
+#: src/audacious/ui_preferences.c:127
+msgid "Turkish"
+msgstr "турсĐșĐž"
+
+#: src/audacious/ui_preferences.c:135
+msgid "Floating point"
+msgstr "ĐŸĐŸĐșŃ€Đ”Ń‚ĐœĐž зарДз"
+
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања ŃŃƒŃ‡Đ”Ń™Đ°</b>"
+
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ПроĐșључаĐș ŃŃƒŃ‡Đ”Ń™Đ°:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ПроĐșључаĐș Озлаза:"
+
+#: src/audacious/ui_preferences.c:172
+msgid "<b>Output Settings</b>"
+msgstr "<b>ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања Озлаза</b>"
+
+#: src/audacious/ui_preferences.c:175
+msgid "Bit depth:"
+msgstr "Đ”ŃƒĐ±ĐžĐœĐ° бОта:"
+
+#: src/audacious/ui_preferences.c:178
+msgid "Buffer size:"
+msgstr "Đ’Đ”Đ»ĐžŃ‡ĐžĐœĐ° ĐŒĐ”Ń’ŃƒĐŒĐ”ĐŒĐŸŃ€ĐžŃ˜Đ”:"
+
+#: src/audacious/ui_preferences.c:180
+msgid "ms"
+msgstr "ms"
+
+#: src/audacious/ui_preferences.c:181
+msgid "Soft clipping"
+msgstr "ĐœĐ”ĐșĐŸ ОсДцањД"
+
+#: src/audacious/ui_preferences.c:183
+msgid "Use software volume control (not recommended)"
+msgstr "ĐšĐŸŃ€ĐžŃŃ‚Đž ŃĐŸŃ„Ń‚ĐČДрсĐșĐŸ упраĐČљањД Ń˜Đ°Ń‡ĐžĐœĐŸĐŒ Đ·ĐČуĐșĐ° (ĐœĐžŃ˜Đ” ĐżŃ€Đ”ĐżĐŸŃ€ŃƒŃ‡Ń™ĐžĐČĐŸ)"
+
+#: src/audacious/ui_preferences.c:185
+msgid "<b>Replay Gain</b>"
+msgstr "<b>ĐŸĐŸŃ˜Đ°Ń‡Đ°ŃšĐ” ĐżĐŸĐœĐ°ĐČљања</b>"
+
+#: src/audacious/ui_preferences.c:186
+msgid "Enable Replay Gain"
+msgstr "ĐŁĐșључо ĐżĐŸŃ˜Đ°Ń‡Đ°ŃšĐ” ĐżĐŸĐœĐ°ĐČљања"
+
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Đ Đ”Đ¶ĐžĐŒ Đ°Đ»Đ±ŃƒĐŒĐ°"
+
+#: src/audacious/ui_preferences.c:190
+msgid "Prevent clipping (recommended)"
+msgstr "ХпрДчО ĐŸĐŽŃĐ”Ń†Đ°ŃšĐ” (ĐżŃ€Đ”ĐżĐŸŃ€ŃƒŃ‡Ń™ĐžĐČĐŸ)"
+
+#: src/audacious/ui_preferences.c:192
+msgid "<b>Adjust Levels</b>"
+msgstr "<b>Đ”ĐŸŃ‚Đ”Ń€ĐžĐČања ĐœĐžĐČĐŸĐ°</b>"
+
+#: src/audacious/ui_preferences.c:193
+msgid "Amplify all files:"
+msgstr "ĐŸĐŸŃ˜Đ°Ń‡Đ°Ń˜ сĐČĐ” ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”:"
+
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
+msgid "dB"
+msgstr "dB"
+
+#: src/audacious/ui_preferences.c:196
+msgid "Amplify untagged files:"
+msgstr "ĐŸĐŸŃ˜Đ°Ń‡Đ°Ń˜ ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” бДз ĐŸĐ·ĐœĐ°ĐșĐ°:"
+
+#: src/audacious/ui_preferences.c:201
+msgid "Proxy hostname:"
+msgstr "ĐĐ°Đ·ĐžĐČ ĐŽĐŸĐŒĐ°Ń›ĐžĐœĐ° ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
+
+#: src/audacious/ui_preferences.c:202
+msgid "Proxy port:"
+msgstr "ПроĐșŃ™ŃƒŃ‡ĐœĐžĐș ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
+
+#: src/audacious/ui_preferences.c:205
+msgid "Proxy username:"
+msgstr "ĐšĐŸŃ€ĐžŃĐœĐžŃ‡ĐșĐŸ ĐžĐŒĐ” ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
+
+#: src/audacious/ui_preferences.c:206
+msgid "Proxy password:"
+msgstr "Đ›ĐŸĐ·ĐžĐœĐșĐ° ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°:"
+
+#: src/audacious/ui_preferences.c:210
+msgid "<b>Proxy Configuration</b>"
+msgstr "<b>ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°</b>"
+
+#: src/audacious/ui_preferences.c:211
+msgid "Enable proxy usage"
+msgstr "ĐŁĐșључо ĐșĐŸŃ€ĐžŃˆŃ›Đ”ŃšĐ” ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐ°"
+
+#: src/audacious/ui_preferences.c:214
+msgid "Use authentication with proxy"
+msgstr "ĐšĐŸŃ€ĐžŃŃ‚Đž ĐżĐŸŃ‚ĐČрђоĐČањД ĐžĐŽĐ”ĐœŃ‚ĐžŃ‚Đ”Ń‚Đ° са ĐżĐŸŃŃ€Đ”ĐŽĐœĐžĐșĐŸĐŒ"
+
+#: src/audacious/ui_preferences.c:221
+msgid "Auto character encoding detector for:"
+msgstr "ĐĄĐ°ĐŒĐŸŃŃ‚Đ°Đ»ĐœĐž ĐŸŃ‚ĐșроĐČач ĐșĐŸĐŽĐžŃ€Đ°ŃšĐ° Đ·ĐœĐ°ĐșĐŸĐČĐ° Đ·Đ°:"
+
+#: src/audacious/ui_preferences.c:225
+msgid "Fallback character encodings:"
+msgstr "РДзДрĐČĐœĐ° ĐșĐŸĐŽĐžŃ€Đ°ŃšĐ° Đ·ĐœĐ°ĐșĐŸĐČĐ°:"
+
+#: src/audacious/ui_preferences.c:229
+msgid "<b>Behavior</b>"
+msgstr "<b>ĐŸĐŸĐœĐ°ŃˆĐ°ŃšĐ”</b>"
+
+#: src/audacious/ui_preferences.c:230
+msgid "Continue playback on startup"
+msgstr "НастаĐČĐž ĐżŃƒŃˆŃ‚Đ°ŃšĐ” прОлОĐșĐŸĐŒ ĐżĐŸĐșрДтања"
+
+#: src/audacious/ui_preferences.c:232
+msgid "Advance when the current song is deleted"
+msgstr "ĐĐ°ĐżŃ€Đ”ĐŽŃƒŃ˜ ĐșĐ°ĐŽĐ° јД ĐŸĐ±Ń€ĐžŃĐ°ĐœĐ° Ń‚Đ”Đșућа ĐżĐ”ŃĐŒĐ°"
+
+#: src/audacious/ui_preferences.c:234
+msgid "Clear the playlist when opening files"
+msgstr "Очосто спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ° прОлОĐșĐŸĐŒ ĐŸŃ‚ĐČарања ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ°"
+
+#: src/audacious/ui_preferences.c:236
+msgid "Open files in a temporary playlist"
+msgstr "ОтĐČĐŸŃ€Đž ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ” у проĐČŃ€Đ”ĐŒĐ”ĐœĐŸĐŒ спОсĐșу ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/audacious/ui_preferences.c:238
+msgid "Do not load metadata for songs until played"
+msgstr "ĐĐ” учотаĐČај ĐŒĐ”Ń‚Đ°ĐżĐŸĐŽĐ°Ń‚ĐșĐ” Đ·Đ° ĐżĐ”ŃĐŒĐ” ĐŽĐŸĐș сД ĐœĐ” ĐżŃƒŃŃ‚Đ”"
+
+#: src/audacious/ui_preferences.c:241
+msgid "<b>Compatibility</b>"
+msgstr "<b>ĐĄĐ°ĐłĐ»Đ°ŃĐœĐŸŃŃ‚</b>"
+
+#: src/audacious/ui_preferences.c:242
+msgid "Interpret \\ (backward slash) as a folder delimiter"
+msgstr "ĐŸŃ€ĐŸŃ‚ŃƒĐŒĐ°Ń‡Đž \\ (ĐșĐŸĐœŃ‚Ń€Đ° ĐșĐŸŃŃƒ црту) ĐșĐ°ĐŸ ĐłŃ€Đ°ĐœĐžŃ‡ĐœĐžĐș фасцоĐșлД"
+
+#: src/audacious/ui_preferences.c:247
+msgid "<b>Album Art</b>"
+msgstr "<b>ĐžĐŒĐŸŃ‚ Đ°Đ»Đ±ŃƒĐŒĐ°</b>"
+
+#: src/audacious/ui_preferences.c:248
+msgid "Search for images matching these words (comma-separated):"
+msgstr "ĐŸĐŸŃ‚Ń€Đ°Đ¶Đž слОĐșĐ” ĐșĐŸŃ˜Đ” ĐŸĐŽĐłĐŸĐČарају ĐŸĐČĐžĐŒ Ń€Đ”Ń‡ĐžĐŒĐ° (разЎĐČĐŸŃ˜Đ”ĐœĐ” Đ·Đ°Ń€Đ”Đ·ĐŸĐŒ):"
+
+#: src/audacious/ui_preferences.c:250
+msgid "Exclude images matching these words (comma-separated):"
+msgstr "ИсĐșључо слОĐșĐ” ĐșĐŸŃ˜Đ” ĐŸĐŽĐłĐŸĐČарају ĐŸĐČĐžĐŒ Ń€Đ”Ń‡ĐžĐŒĐ° (разЎĐČĐŸŃ˜Đ”ĐœĐ” Đ·Đ°Ń€Đ”Đ·ĐŸĐŒ):"
+
+#: src/audacious/ui_preferences.c:252
+msgid "Search for images matching song file name"
+msgstr "ĐŸĐŸŃ‚Ń€Đ°Đ¶Đž слОĐșĐ” ĐșĐŸŃ˜Đ” ĐŸĐŽĐłĐŸĐČарају ĐœĐ°Đ·ĐžĐČу ĐżĐ”ŃĐŒĐ”"
+
+#: src/audacious/ui_preferences.c:254
+msgid "Search recursively"
+msgstr "ĐŸĐŸŃ‚Ń€Đ°Đ¶Đž ĐŽŃƒĐ±ĐžĐœŃĐșĐž"
+
+#: src/audacious/ui_preferences.c:256
+msgid "Search depth:"
+msgstr "Đ”ŃƒĐ±ĐžĐœĐ° прДтрагД: "
+
+#: src/audacious/ui_preferences.c:259
+msgid "<b>Popup Information</b>"
+msgstr "<b>ОблачОћ ĐżĐŸĐŽĐ°Ń‚Đ°ĐșĐ°</b>"
+
+#: src/audacious/ui_preferences.c:260
+msgid "Show popup information"
+msgstr "ПроĐșажО ĐŸĐ±Đ»Đ°Ń‡ĐžŃ›Đ” ĐżĐŸĐŽĐ°Ń‚Đ°ĐșĐ°"
+
+#: src/audacious/ui_preferences.c:262
+msgid "Popup delay (tenths of a second):"
+msgstr "Đ—Đ°ŃŃ‚ĐŸŃ˜ ОсĐșĐ°Đșања (ĐŽĐ”ŃĐ”Ń‚ĐžĐœĐșĐ” сДĐșŃƒĐœĐŽĐ”):"
+
+#: src/audacious/ui_preferences.c:265
+msgid "Show time scale for current song"
+msgstr "ПроĐșажО ĐČŃ€Đ”ĐŒĐ”ĐœŃĐșу лДстĐČоцу Đ·Đ° Ń‚Đ”Đșућу ĐżĐ”ŃĐŒŃƒ"
+
+#: src/audacious/ui_preferences.c:280
+msgid "TITLE"
+msgstr "НАСЛОВ"
+
+#: src/audacious/ui_preferences.c:281
+msgid "ARTIST - TITLE"
+msgstr "ИЗВОЂАЧ — НАСЛОВ"
+
+#: src/audacious/ui_preferences.c:282
+msgid "ARTIST - ALBUM - TITLE"
+msgstr "ИЗВОЂАЧ — АЛБУМ — НАСЛОВ"
+
+#: src/audacious/ui_preferences.c:283
+msgid "ARTIST - ALBUM - TRACK. TITLE"
+msgstr "ИЗВОЂАЧ — АЛБУМ — БРОЈ. НАСЛОВ"
+
+#: src/audacious/ui_preferences.c:284
+msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
+msgstr "ИЗВОЂАЧ [ АЛБУМ ] — БРОЈ. НАСЛОВ"
+
+#: src/audacious/ui_preferences.c:285
+msgid "ALBUM - TITLE"
+msgstr "АЛБУМ — НАСЛОВ"
+
+#: src/audacious/ui_preferences.c:375
+msgid "Category"
+msgstr "ĐšĐ°Ń‚Đ”ĐłĐŸŃ€ĐžŃ˜Đ°"
+
+#: src/audacious/ui_preferences.c:457
+msgid "Custom"
+msgstr "ĐŸŃ€ĐŸĐžĐ·ĐČĐŸŃ™ĐœĐŸ"
+
+#: src/audacious/ui_preferences.c:481
+msgid "<b>Song Display</b>"
+msgstr "<b>ПроĐșĐ°Đ· ĐżĐ”ŃĐŒĐ”</b>"
+
+#: src/audacious/ui_preferences.c:490
+msgid "Show song numbers"
+msgstr "ПроĐșажО Đ±Ń€ĐŸŃ˜Đ”ĐČĐ” ĐżĐ”ŃĐ°ĐŒĐ°"
+
+#: src/audacious/ui_preferences.c:501
+msgid "Show leading zeroes (02:00 instead of 2:00)"
+msgstr "ПроĐșажО ĐżĐŸŃ‡Đ”Ń‚ĐœĐ” ĐœŃƒĐ»Đ” (02:00 ŃƒĐŒĐ”ŃŃ‚ĐŸ 2:00)"
+
+#: src/audacious/ui_preferences.c:515
+msgid "Title format:"
+msgstr "Запос ĐœĐ°ŃĐ»ĐŸĐČĐ°:"
+
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "ĐŸŃ€ĐŸĐžĐ·ĐČĐŸŃ™ĐœĐ° ĐœĐžŃĐșĐ°:"
+
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "ĐŸĐŸĐŽĐ”ŃˆĐ°ĐČања Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐșĐ°"
+
+#: src/audacious/util.c:112
+#, c-format
+msgid "Could not create directory (%s): %s\n"
+msgstr "ĐĐ” ĐŒĐŸĐłŃƒ ĐŽĐ° ĐœĐ°ĐżŃ€Đ°ĐČĐžĐŒ ЎОрДĐșŃ‚ĐŸŃ€ĐžŃ˜ŃƒĐŒ (%s): %s\n"
+
+#: src/libaudcore/audstrings.c:385
+#, c-format
+msgid "Audio CD, track %s"
+msgstr "ЗĐČŃƒŃ‡ĐœĐž ЩД, ĐœŃƒĐŒĐ”Ń€Đ° %s"
+
+#: src/libaudcore/tuple.c:442
+msgid "Mono"
+msgstr "ĐœĐŸĐœĐŸ"
+
+#: src/libaudcore/tuple.c:444
+msgid "Stereo"
+msgstr "ĐĄŃ‚Đ”Ń€Đ”ĐŸ"
+
+#: src/libaudcore/tuple.c:446
+#, c-format
+msgid "%d channel"
+msgid_plural "%d channels"
+msgstr[0] "%d ĐșĐ°ĐœĐ°Đ»"
+msgstr[1] "%d ĐșĐ°ĐœĐ°Đ»Đ°"
+msgstr[2] "%d ĐșĐ°ĐœĐ°Đ»Đ°"
+
+#: src/libaudgui/about.c:37
+msgid "Credits"
+msgstr "Đ—Đ°ŃĐ»ŃƒĐłĐ”"
+
+#: src/libaudgui/about.c:37
+msgid "License"
+msgstr "Đ”ĐŸĐ·ĐČĐŸĐ»Đ°"
+
+#: src/libaudgui/about.c:69
+msgid "About Audacious"
+msgstr "O Đ‘Đ”Đ·ĐŸŃ‡ĐœĐžĐșу"
+
+#: src/libaudgui/confirm.c:51
+#, c-format
+msgid "Do you want to permanently remove “%s”?"
+msgstr "Да лО жДлОтД ĐŽĐ° Ń‚Ń€Đ°Ń˜ĐœĐŸ уĐșĐ»ĐŸĐœĐžŃ‚Đ” „%s“?"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_ĐŁĐșĐ»ĐŸĐœĐž"
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ĐŁĐșĐ»ĐŸĐœĐž спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_ĐĐ” потај ĐżĐŸĐœĐŸĐČĐŸ"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
+msgid "Rename Playlist"
+msgstr "ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒŃ˜ спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "КаĐșĐŸ жДлОтД ĐŽĐ° ĐœĐ°Đ·ĐŸĐČДтД ĐŸĐČај спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°?"
+
+#: src/libaudgui/equalizer.c:44
+msgid "_Enable"
+msgstr "_ĐŁĐșључо"
+
+#: src/libaudgui/equalizer.c:119
+msgid "31 Hz"
+msgstr "31 Hz"
+
+#: src/libaudgui/equalizer.c:119
+msgid "63 Hz"
+msgstr "63 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "125 Hz"
+msgstr "125 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "250 Hz"
+msgstr "250 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "500 Hz"
+msgstr "500 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "1 kHz"
+msgstr "1 kHz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "2 kHz"
+msgstr "2 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "4 kHz"
+msgstr "4 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "8 kHz"
+msgstr "8 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "16 kHz"
+msgstr "16 kHz"
+
+#: src/libaudgui/equalizer.c:124
+msgid "Equalizer"
+msgstr "ĐŁŃ˜Đ”ĐŽĐœĐ°Ń‡Đ°ĐČач"
+
+#: src/libaudgui/equalizer.c:138
+msgid "Preamp"
+msgstr "ĐŸŃ€Đ”Ń‚ĐżĐŸŃ˜Đ°Ń‡Đ°ŃšĐ”"
+
+#: src/libaudgui/infopopup.c:155
+msgid "Track"
+msgstr "ĐŃƒĐŒĐ”Ń€Đ°"
+
+#: src/libaudgui/infopopup.c:156
+msgid "Length"
+msgstr "Đ”ŃƒĐ¶ĐžĐœĐ°"
+
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Запос:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "КĐČалОтДт:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "ĐŸŃ€ĐŸŃ‚ĐŸĐș бОта:"
+
+#: src/libaudgui/infowin.c:76
+msgid "Acid Jazz"
+msgstr "КОсДлО ŃŸĐ”Đ·"
+
+#: src/libaudgui/infowin.c:77
+msgid "Acid Rock"
+msgstr "КОсДлО Ń€ĐŸĐș"
+
+#: src/libaudgui/infowin.c:78
+msgid "Ambient"
+msgstr "ĐĐŒĐ±ĐžŃ˜Đ”ĐœŃ‚Đ°Đ»ĐœĐ°"
+
+#: src/libaudgui/infowin.c:79
+msgid "Bebop"
+msgstr "Đ‘Đ”Đ±ĐŸĐż"
+
+#: src/libaudgui/infowin.c:80
+msgid "Bluegrass"
+msgstr "Đ‘Đ»ŃƒĐłŃ€Đ°Ń"
+
+#: src/libaudgui/infowin.c:81
+msgid "Blues"
+msgstr "Đ‘Đ»ŃƒĐ·"
+
+#: src/libaudgui/infowin.c:82
+msgid "Chamber Music"
+msgstr "ĐšĐ°ĐŒĐ”Ń€ĐœĐ° ĐŒŃƒĐ·ĐžĐșĐ°"
+
+#: src/libaudgui/infowin.c:83
+msgid "Classical"
+msgstr "ĐšĐ»Đ°ŃĐžŃ‡ĐœĐ°"
+
+#: src/libaudgui/infowin.c:84
+msgid "Country"
+msgstr "ĐšĐ°ĐœŃ‚Ń€Đž"
+
+#: src/libaudgui/infowin.c:85
+msgid "Death Metal"
+msgstr "МртĐČĐž ĐŒĐ”Ń‚Đ°Đ»"
+
+#: src/libaudgui/infowin.c:86
+msgid "Disco"
+msgstr "ДосĐșĐŸ"
+
+#: src/libaudgui/infowin.c:87
+msgid "Easy Listening"
+msgstr "ЛаĐșĐŸ ŃĐ»ŃƒŃˆĐ°ŃšĐ”"
+
+#: src/libaudgui/infowin.c:88
+msgid "Folk"
+msgstr "ĐĐ°Ń€ĐŸĐŽĐœĐ°"
+
+#: src/libaudgui/infowin.c:89
+msgid "Funk"
+msgstr "Đ€Đ°ĐœĐșĐž"
+
+#: src/libaudgui/infowin.c:90
+msgid "Gangsta Rap"
+msgstr "Đ“Đ°ĐœĐłŃŃ‚Đ° рДп"
+
+#: src/libaudgui/infowin.c:91
+msgid "Gospel"
+msgstr "ВДрсĐșĐ°"
+
+#: src/libaudgui/infowin.c:92
+msgid "Grunge"
+msgstr "Đ“Ń€Đ°ĐœŃŸ"
+
+#: src/libaudgui/infowin.c:93
+msgid "Hard Rock"
+msgstr "ЄарЎ Ń€ĐŸĐș"
+
+#: src/libaudgui/infowin.c:94
+msgid "Heavy Metal"
+msgstr "Đ„Đ”ĐČĐž ĐŒĐ”Ń‚Đ°Đ»"
+
+#: src/libaudgui/infowin.c:95
+msgid "Hip-hop"
+msgstr "ЄОп-Đ„ĐŸĐż"
+
+#: src/libaudgui/infowin.c:96
+msgid "House"
+msgstr "Єауз"
+
+#: src/libaudgui/infowin.c:97
+msgid "Jazz"
+msgstr "ĐĐ”Đ·"
+
+#: src/libaudgui/infowin.c:98
+msgid "Jungle"
+msgstr "ĐŃƒĐœĐłĐ»Đ°"
+
+#: src/libaudgui/infowin.c:99
+msgid "Metal"
+msgstr "ĐœĐ”Ń‚Đ°Đ»"
+
+#: src/libaudgui/infowin.c:100
+msgid "New Age"
+msgstr "ĐĐŸĐČĐŸ ĐŽĐŸĐ±Đ°"
+
+#: src/libaudgui/infowin.c:101
+msgid "New Wave"
+msgstr "ĐĐŸĐČĐž талас"
+
+#: src/libaudgui/infowin.c:102
+msgid "Noise"
+msgstr "БуĐșĐ°"
+
+#: src/libaudgui/infowin.c:103
+msgid "Pop"
+msgstr "ĐŸĐŸĐż"
+
+#: src/libaudgui/infowin.c:104
+msgid "Punk Rock"
+msgstr "ĐŸĐ°ĐœĐș Đ ĐŸĐș"
+
+#: src/libaudgui/infowin.c:105
+msgid "Rap"
+msgstr "РДп"
+
+#: src/libaudgui/infowin.c:106
+msgid "Reggae"
+msgstr "РДгД"
+
+#: src/libaudgui/infowin.c:107
+msgid "Rock"
+msgstr "Đ ĐŸĐș"
+
+#: src/libaudgui/infowin.c:108
+msgid "Rock and Roll"
+msgstr "Đ ĐŸĐșĐ”ĐœŃ€ĐŸĐ»"
+
+#: src/libaudgui/infowin.c:109
+msgid "Rhythm and Blues"
+msgstr "Đ ĐžŃ‚Đ°ĐŒ Đž Đ‘Đ»ŃƒĐ·"
+
+#: src/libaudgui/infowin.c:110
+msgid "Ska"
+msgstr "ĐĄĐșĐ°"
+
+#: src/libaudgui/infowin.c:111
+msgid "Soul"
+msgstr "ĐĄĐŸŃƒĐ»"
+
+#: src/libaudgui/infowin.c:112
+msgid "Swing"
+msgstr "ĐĄĐČĐžĐœĐł"
+
+#: src/libaudgui/infowin.c:113
+msgid "Techno"
+msgstr "ĐąĐ”Ń…ĐœĐŸ"
+
+#: src/libaudgui/infowin.c:114
+msgid "Trip-hop"
+msgstr "броп-Đ„ĐŸĐż"
+
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "ЧуĐČањД јД ŃƒŃĐżĐ”Đ»ĐŸ"
+
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "ЧуĐČањД ĐœĐžŃ˜Đ” ŃƒŃĐżĐ”Đ»ĐŸ"
+
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Đ‘Ń€ĐŸŃ˜ ĐœŃƒĐŒĐ”Ń€Đ”"
+
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_СачуĐČај"
+
+#: src/libaudgui/infowin.c:418
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "Н/Д"
+
+#: src/libaudgui/infowin.c:453
+#, c-format
+msgid "No info available for %s.\n"
+msgstr "Носу ĐŽĐŸŃŃ‚ŃƒĐżĐœĐž ĐżĐŸĐŽĐ°Ń†Đž Đ·Đ° „%s“.\n"
+
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_ĐĄĐșĐŸŃ‡Đž"
+
+#: src/libaudgui/jump-to-time.c:52
+msgid "Jump to Time"
+msgstr "ĐŸŃ€Đ”Ń’Đž ĐœĐ° ĐČŃ€Đ”ĐŒĐ”"
+
+#: src/libaudgui/jump-to-time.c:52
+msgid "Enter time (minutes:seconds):"
+msgstr "ĐŁĐœĐ”ŃĐžŃ‚Đ” ĐČŃ€Đ”ĐŒĐ” (ĐŒĐžĐœŃƒŃ‚Đž:сДĐșŃƒĐœĐŽĐ”):"
+
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Да ĐżŃ€Đ”ĐżĐžŃˆĐ”ĐŒ „%s“?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "ĐŸĐŸŃ‚ĐČрЮо прДпОсОĐČањД"
+
+#: src/libaudgui/playlists.c:121
+msgid "Export Playlist"
+msgstr "ИзĐČДзО спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
+msgid "Import Playlist"
+msgstr "ĐŁĐČДзО спОсаĐș ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
+
+#: src/libaudgui/queue-manager.c:172
+msgid "Queue Manager"
+msgstr "УпраĐČĐœĐžĐș рДЎа"
+
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "Đ˜Đ·Đ±Đ°Ń†Đž Оз _рДЎа"
+
+#: src/libaudgui/ui_fileopener.c:79
+msgid "Open Files"
+msgstr "ОтĐČĐŸŃ€Đž ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_ОтĐČĐŸŃ€Đž"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "ЗатĐČĐŸŃ€Đž _ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° „ОтĐČĐŸŃ€Đžâ€œ"
+
+#: src/libaudgui/ui_fileopener.c:87
+msgid "Add Files"
+msgstr "Đ”ĐŸĐŽĐ°Ń˜ ĐŽĐ°Ń‚ĐŸŃ‚Đ”ĐșĐ”"
+
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Đ”ĐŸĐŽĐ°Ń˜"
+
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "ЗатĐČĐŸŃ€Đž _ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° â€žĐ”ĐŸĐŽĐ°Ń˜â€œ"
+
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
+msgid "_Queue"
+msgstr "СтаĐČĐž у _рДЎ"
+
+#: src/libaudgui/ui_jumptotrack.c:107
+msgid "Un_queue"
+msgstr "Đ˜Đ·Đ±Đ°Ń†Đž Оз _рДЎа"
+
+#: src/libaudgui/ui_jumptotrack.c:245
+msgid "Jump to Song"
+msgstr "ĐŸŃ€Đ”Ń’Đž ĐœĐ° ĐżĐ”ŃĐŒŃƒ"
+
+#: src/libaudgui/ui_jumptotrack.c:270
+msgid "Filter: "
+msgstr "ĐŸŃ€ĐŸĐżŃƒŃĐœĐžĐș: "
+
+#: src/libaudgui/ui_jumptotrack.c:271
+msgid "_Filter:"
+msgstr "_ĐŸŃ€ĐŸĐżŃƒŃŃ‚Đž:"
+
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "ЗатĐČĐŸŃ€Đž ĐżĐŸŃĐ»Đ” _сĐșĐŸĐșĐ°"
+
+#: src/libaudgui/ui_playlist_manager.c:223
+msgid "Playlist Manager"
+msgstr "УпраĐČĐœĐžĐș спОсĐșĐ° ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/libaudgui/ui_playlist_manager.c:236
+msgid "Entries"
+msgstr "СтаĐČĐșĐ”"
+
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_ĐĐŸĐČĐ°"
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "_ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒŃ˜"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Пусто"
+
+#: src/libaudgui/ui_playlist_manager.c:269
+msgid "_Close dialog on activating playlist"
+msgstr "_ЗатĐČĐŸŃ€Đž ĐżŃ€ĐŸĐ·ĐŸŃ€Ń‡Đ” ĐœĐ° ĐżĐŸĐșрДтањД спОсĐșĐ° ĐœŃƒĐŒĐ”Ń€Đ°"
+
+#: src/libaudgui/url-opener.c:49
+msgid "Open URL"
+msgstr "ОтĐČĐŸŃ€ĐžŃ‚Đ” Đ°ĐŽŃ€Đ”ŃŃƒ"
+
+#: src/libaudgui/url-opener.c:55
+msgid "Add URL"
+msgstr "Đ”ĐŸĐŽĐ°Ń˜Ń‚Đ” Đ°ĐŽŃ€Đ”ŃŃƒ"
+
+#: src/libaudgui/url-opener.c:74
+msgid "Enter URL:"
+msgstr "ĐŁĐœĐ”ŃĐž Đ°ĐŽŃ€Đ”ŃŃƒ:"
+
+#: src/libaudgui/util.c:148
+msgid ""
+"\n"
+"(Further messages have been hidden.)"
+msgstr ""
+"\n"
+"(Đ”ĐŸĐŽĐ°Ń‚ĐœĐ” ĐżĐŸŃ€ŃƒĐșĐ” су сĐșроĐČĐ”ĐœĐ”.)"
+
+#~ msgid "_Remember"
+#~ msgstr "_Đ—Đ°ĐżĐ°ĐŒŃ‚Đž"
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..5141b3c
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,1034 @@
+# Swedish translation for Audacious
+# Copyright (C) Audacious translators
+# This file is distributed under the same license as the Audacious package.
+#
+# Translators:
+# Bosse <bserrander@gmail.com>, 2013
+# Martin Persenius <martin@persenius.net>, 2004
+msgid ""
+msgstr ""
+"Project-Id-Version: Audacious\n"
+"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
+"POT-Creation-Date: 2014-04-21 23:00+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
+"Language-Team: Swedish (http://www.transifex.com/projects/p/audacious/"
+"language/sv/)\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/audacious/adder.c:76
+msgid "Searching ..."
+msgstr "Söker..."
+
+#: src/audacious/adder.c:104
+#, c-format
+msgid "%d file found"
+msgid_plural "%d files found"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Ny spellista"
+
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
+
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
+
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Visa version"
+
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
+
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
+
+#: src/audacious/main.c:74
+msgid "Pause if playing, play otherwise"
+msgstr "Pausa om spelandes, spela annars"
+
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
+msgid "Add files to the playlist"
+msgstr "LĂ€gg till filer i spellista"
+
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
+
+#: src/audacious/main.c:80
+msgid "Display the main window"
+msgstr "Visa huvudfönster"
+
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
+
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr ""
+
+#: src/audacious/main.c:84
+msgid "Print debugging messages"
+msgstr ""
+
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
+
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
+
+#: src/audacious/main.c:314
+#, c-format
+msgid ""
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr ""
+
+#: src/audacious/main.c:601
+msgid "Audacious"
+msgstr "Audacious"
+
+#: src/audacious/playback.c:354
+#, c-format
+msgid "No decoder found for %s."
+msgstr "Kunde inte hitta dekoder för %s."
+
+#: src/audacious/playback.c:387
+#, c-format
+msgid "%s could not be opened."
+msgstr ""
+
+#: src/audacious/playlist-files.c:95
+#, c-format
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
+
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
+
+#: src/audacious/playlist-new.c:98
+msgid "Now Playing"
+msgstr "Spelar nu"
+
+#: src/audacious/playlist-new.c:1656
+msgid ""
+"The playlist cannot be sorted because metadata scanning is still in progress "
+"(or has been disabled)."
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
+msgid "Audio"
+msgstr "Ljud"
+
+#: src/audacious/ui_preferences.c:84
+msgid "Network"
+msgstr "NĂ€tverk"
+
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
+msgid "Playlist"
+msgstr "Spellista"
+
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
+msgid "Song Info"
+msgstr "LĂ„tinformation"
+
+#: src/audacious/ui_preferences.c:87
+msgid "Plugins"
+msgstr "Plugin"
+
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "AllmÀnt"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Effekt"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Visualisering"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Input"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
+msgid "Artist"
+msgstr "Artist"
+
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
+msgid "Album"
+msgstr "Album"
+
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
+msgid "Title"
+msgstr "Titel"
+
+#: src/audacious/ui_preferences.c:103
+msgid "Tracknumber"
+msgstr "SpÄrnummer"
+
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
+msgid "Genre"
+msgstr "Genre"
+
+#: src/audacious/ui_preferences.c:105
+msgid "Filename"
+msgstr "Filnamn"
+
+#: src/audacious/ui_preferences.c:106
+msgid "Filepath"
+msgstr "SökvÀg"
+
+#: src/audacious/ui_preferences.c:107
+msgid "Date"
+msgstr "Datum"
+
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
+msgid "Year"
+msgstr "År"
+
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
+msgid "Comment"
+msgstr "Kommentar"
+
+#: src/audacious/ui_preferences.c:110
+msgid "Codec"
+msgstr "Codec"
+
+#: src/audacious/ui_preferences.c:111
+msgid "Quality"
+msgstr "Kvalitet"
+
+#: src/audacious/ui_preferences.c:116
+msgid "None"
+msgstr "Ingen"
+
+#: src/audacious/ui_preferences.c:117
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: src/audacious/ui_preferences.c:118
+msgid "Baltic"
+msgstr "Baltisk"
+
+#: src/audacious/ui_preferences.c:119
+msgid "Chinese"
+msgstr "Kinesisk"
+
+#: src/audacious/ui_preferences.c:120
+msgid "Greek"
+msgstr "Grekisk"
+
+#: src/audacious/ui_preferences.c:121
+msgid "Hebrew"
+msgstr "Hebreisk"
+
+#: src/audacious/ui_preferences.c:122
+msgid "Japanese"
+msgstr "Japansk"
+
+#: src/audacious/ui_preferences.c:123
+msgid "Korean"
+msgstr "Koreansk"
+
+#: src/audacious/ui_preferences.c:124
+msgid "Polish"
+msgstr "Polsk"
+
+#: src/audacious/ui_preferences.c:125
+msgid "Russian"
+msgstr "Rysk"
+
+#: src/audacious/ui_preferences.c:126
+msgid "Taiwanese"
+msgstr "Taiwanesisk"
+
+#: src/audacious/ui_preferences.c:127
+msgid "Turkish"
+msgstr "Turkiska"
+
+#: src/audacious/ui_preferences.c:135
+msgid "Floating point"
+msgstr "flyttal"
+
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:172
+msgid "<b>Output Settings</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:175
+msgid "Bit depth:"
+msgstr "Bitdjup:"
+
+#: src/audacious/ui_preferences.c:178
+msgid "Buffer size:"
+msgstr "Buffertstorlek:"
+
+#: src/audacious/ui_preferences.c:180
+msgid "ms"
+msgstr "ms"
+
+#: src/audacious/ui_preferences.c:181
+msgid "Soft clipping"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:183
+msgid "Use software volume control (not recommended)"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:185
+msgid "<b>Replay Gain</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:186
+msgid "Enable Replay Gain"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "AlbumlÀge"
+
+#: src/audacious/ui_preferences.c:190
+msgid "Prevent clipping (recommended)"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:192
+msgid "<b>Adjust Levels</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:193
+msgid "Amplify all files:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
+msgid "dB"
+msgstr "dB"
+
+#: src/audacious/ui_preferences.c:196
+msgid "Amplify untagged files:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:201
+msgid "Proxy hostname:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:202
+msgid "Proxy port:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:205
+msgid "Proxy username:"
+msgstr "Proxy anvÀndar-ID:"
+
+#: src/audacious/ui_preferences.c:206
+msgid "Proxy password:"
+msgstr "Proxy lösenord:"
+
+#: src/audacious/ui_preferences.c:210
+msgid "<b>Proxy Configuration</b>"
+msgstr "<b>Proxy-konfiguration</b>"
+
+#: src/audacious/ui_preferences.c:211
+msgid "Enable proxy usage"
+msgstr "AnvÀnd proxy"
+
+#: src/audacious/ui_preferences.c:214
+msgid "Use authentication with proxy"
+msgstr "AnvÀnd autentisering med proxy"
+
+#: src/audacious/ui_preferences.c:221
+msgid "Auto character encoding detector for:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:225
+msgid "Fallback character encodings:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:229
+msgid "<b>Behavior</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:230
+msgid "Continue playback on startup"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:232
+msgid "Advance when the current song is deleted"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:234
+msgid "Clear the playlist when opening files"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:236
+msgid "Open files in a temporary playlist"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:238
+msgid "Do not load metadata for songs until played"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:241
+msgid "<b>Compatibility</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:242
+msgid "Interpret \\ (backward slash) as a folder delimiter"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:247
+msgid "<b>Album Art</b>"
+msgstr "<b>Albumomslag</b>"
+
+#: src/audacious/ui_preferences.c:248
+msgid "Search for images matching these words (comma-separated):"
+msgstr "Leta efter bilder som matchar följande ord (kommaseparerade):"
+
+#: src/audacious/ui_preferences.c:250
+msgid "Exclude images matching these words (comma-separated):"
+msgstr "Ta inte med bilder som matchar orden (kommaseparerade):"
+
+#: src/audacious/ui_preferences.c:252
+msgid "Search for images matching song file name"
+msgstr "Sök efter bilder som matchar lÄttitel"
+
+#: src/audacious/ui_preferences.c:254
+msgid "Search recursively"
+msgstr "Rekursiv sökning"
+
+#: src/audacious/ui_preferences.c:256
+msgid "Search depth:"
+msgstr "Sökdjup:"
+
+#: src/audacious/ui_preferences.c:259
+msgid "<b>Popup Information</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:260
+msgid "Show popup information"
+msgstr "Visa popup-information"
+
+#: src/audacious/ui_preferences.c:262
+msgid "Popup delay (tenths of a second):"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:265
+msgid "Show time scale for current song"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:280
+msgid "TITLE"
+msgstr "RUBRIK"
+
+#: src/audacious/ui_preferences.c:281
+msgid "ARTIST - TITLE"
+msgstr "ARTIST - RUBRIK"
+
+#: src/audacious/ui_preferences.c:282
+msgid "ARTIST - ALBUM - TITLE"
+msgstr "ARTIST - ALBUM - RUBRIK"
+
+#: src/audacious/ui_preferences.c:283
+msgid "ARTIST - ALBUM - TRACK. TITLE"
+msgstr "ARTIST - ALBUM - SPÅR. RUBRIK"
+
+#: src/audacious/ui_preferences.c:284
+msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
+msgstr "ARTIST [ ALBUM ] - SPÅR. RUBRIK"
+
+#: src/audacious/ui_preferences.c:285
+msgid "ALBUM - TITLE"
+msgstr "ALBUM - RUBRIK"
+
+#: src/audacious/ui_preferences.c:375
+msgid "Category"
+msgstr "Kategori"
+
+#: src/audacious/ui_preferences.c:457
+msgid "Custom"
+msgstr "Anpassad"
+
+#: src/audacious/ui_preferences.c:481
+msgid "<b>Song Display</b>"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:490
+msgid "Show song numbers"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:501
+msgid "Show leading zeroes (02:00 instead of 2:00)"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:515
+msgid "Title format:"
+msgstr "Rubrikformat:"
+
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
+
+#: src/audacious/util.c:112
+#, c-format
+msgid "Could not create directory (%s): %s\n"
+msgstr "Kunde inte skapa mapp (%s): %s\n"
+
+#: src/libaudcore/audstrings.c:385
+#, c-format
+msgid "Audio CD, track %s"
+msgstr "Ljud-CD, spÄr %s"
+
+#: src/libaudcore/tuple.c:442
+msgid "Mono"
+msgstr "Mono"
+
+#: src/libaudcore/tuple.c:444
+msgid "Stereo"
+msgstr "Stereo"
+
+#: src/libaudcore/tuple.c:446
+#, c-format
+msgid "%d channel"
+msgid_plural "%d channels"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/libaudgui/about.c:37
+msgid "Credits"
+msgstr ""
+
+#: src/libaudgui/about.c:37
+msgid "License"
+msgstr "Licens"
+
+#: src/libaudgui/about.c:69
+msgid "About Audacious"
+msgstr "Om Audacious"
+
+#: src/libaudgui/confirm.c:51
+#, c-format
+msgid "Do you want to permanently remove “%s”?"
+msgstr ""
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
+msgid "Rename Playlist"
+msgstr "Döp om spellista"
+
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
+
+#: src/libaudgui/equalizer.c:44
+msgid "_Enable"
+msgstr "_Aktivera"
+
+#: src/libaudgui/equalizer.c:119
+msgid "31 Hz"
+msgstr "31 Hz"
+
+#: src/libaudgui/equalizer.c:119
+msgid "63 Hz"
+msgstr "63 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "125 Hz"
+msgstr "125 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "250 Hz"
+msgstr "250 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "500 Hz"
+msgstr "500 Hz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "1 kHz"
+msgstr "1 kHz"
+
+#: src/libaudgui/equalizer.c:120
+msgid "2 kHz"
+msgstr "2 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "4 kHz"
+msgstr "4 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "8 kHz"
+msgstr "8 kHz"
+
+#: src/libaudgui/equalizer.c:121
+msgid "16 kHz"
+msgstr "16 kHz"
+
+#: src/libaudgui/equalizer.c:124
+msgid "Equalizer"
+msgstr "Equalizer"
+
+#: src/libaudgui/equalizer.c:138
+msgid "Preamp"
+msgstr "Preamp"
+
+#: src/libaudgui/infopopup.c:155
+msgid "Track"
+msgstr "SpÄr"
+
+#: src/libaudgui/infopopup.c:156
+msgid "Length"
+msgstr "LĂ€ngd"
+
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
+msgid "Acid Jazz"
+msgstr "Acid Jazz"
+
+#: src/libaudgui/infowin.c:77
+msgid "Acid Rock"
+msgstr "Acid Rock"
+
+#: src/libaudgui/infowin.c:78
+msgid "Ambient"
+msgstr "Bakgrundsljud"
+
+#: src/libaudgui/infowin.c:79
+msgid "Bebop"
+msgstr "Bebop"
+
+#: src/libaudgui/infowin.c:80
+msgid "Bluegrass"
+msgstr "Bluegrass"
+
+#: src/libaudgui/infowin.c:81
+msgid "Blues"
+msgstr "Blues"
+
+#: src/libaudgui/infowin.c:82
+msgid "Chamber Music"
+msgstr "Rumsmusik"
+
+#: src/libaudgui/infowin.c:83
+msgid "Classical"
+msgstr "Klassiskt"
+
+#: src/libaudgui/infowin.c:84
+msgid "Country"
+msgstr "Country"
+
+#: src/libaudgui/infowin.c:85
+msgid "Death Metal"
+msgstr "Dödsmetall"
+
+#: src/libaudgui/infowin.c:86
+msgid "Disco"
+msgstr "Disco"
+
+#: src/libaudgui/infowin.c:87
+msgid "Easy Listening"
+msgstr "Easy Listening"
+
+#: src/libaudgui/infowin.c:88
+msgid "Folk"
+msgstr "Folkdans"
+
+#: src/libaudgui/infowin.c:89
+msgid "Funk"
+msgstr "Funk"
+
+#: src/libaudgui/infowin.c:90
+msgid "Gangsta Rap"
+msgstr "Gangsterrap"
+
+#: src/libaudgui/infowin.c:91
+msgid "Gospel"
+msgstr "Gospell"
+
+#: src/libaudgui/infowin.c:92
+msgid "Grunge"
+msgstr "Grunge"
+
+#: src/libaudgui/infowin.c:93
+msgid "Hard Rock"
+msgstr "HĂ„rd rock"
+
+#: src/libaudgui/infowin.c:94
+msgid "Heavy Metal"
+msgstr "Heavy Metal"
+
+#: src/libaudgui/infowin.c:95
+msgid "Hip-hop"
+msgstr "Hip-hop"
+
+#: src/libaudgui/infowin.c:96
+msgid "House"
+msgstr "House"
+
+#: src/libaudgui/infowin.c:97
+msgid "Jazz"
+msgstr "Jazz"
+
+#: src/libaudgui/infowin.c:98
+msgid "Jungle"
+msgstr "Jungel"
+
+#: src/libaudgui/infowin.c:99
+msgid "Metal"
+msgstr "Metall"
+
+#: src/libaudgui/infowin.c:100
+msgid "New Age"
+msgstr "New Age"
+
+#: src/libaudgui/infowin.c:101
+msgid "New Wave"
+msgstr "New Wave"
+
+#: src/libaudgui/infowin.c:102
+msgid "Noise"
+msgstr "Oljud"
+
+#: src/libaudgui/infowin.c:103
+msgid "Pop"
+msgstr "Pop"
+
+#: src/libaudgui/infowin.c:104
+msgid "Punk Rock"
+msgstr "Punkrock"
+
+#: src/libaudgui/infowin.c:105
+msgid "Rap"
+msgstr "Rap"
+
+#: src/libaudgui/infowin.c:106
+msgid "Reggae"
+msgstr "Reggae"
+
+#: src/libaudgui/infowin.c:107
+msgid "Rock"
+msgstr "Rock"
+
+#: src/libaudgui/infowin.c:108
+msgid "Rock and Roll"
+msgstr "Rock and Roll"
+
+#: src/libaudgui/infowin.c:109
+msgid "Rhythm and Blues"
+msgstr "Rhythm and Blues"
+
+#: src/libaudgui/infowin.c:110
+msgid "Ska"
+msgstr "Ska"
+
+#: src/libaudgui/infowin.c:111
+msgid "Soul"
+msgstr "Soul"
+
+#: src/libaudgui/infowin.c:112
+msgid "Swing"
+msgstr "Swing"
+
+#: src/libaudgui/infowin.c:113
+msgid "Techno"
+msgstr "Techno"
+
+#: src/libaudgui/infowin.c:114
+msgid "Trip-hop"
+msgstr "Trip-hop"
+
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
+
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
+
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
+
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
+
+#: src/libaudgui/infowin.c:418
+#, c-format
+msgid "%d kb/s"
+msgstr "%d kb/s"
+
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
+#, c-format
+msgid "No info available for %s.\n"
+msgstr "Ingen information om %s.\n"
+
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
+msgid "Jump to Time"
+msgstr "Hoppa till tid"
+
+#: src/libaudgui/jump-to-time.c:52
+msgid "Enter time (minutes:seconds):"
+msgstr "Ange tid (minuter:sekunder):"
+
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Skriva över %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
+msgid "Export Playlist"
+msgstr "Exportera spellista"
+
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
+msgid "Import Playlist"
+msgstr "Importera spellista"
+
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
+
+#: src/libaudgui/queue-manager.c:172
+msgid "Queue Manager"
+msgstr ""
+
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
+msgid "Open Files"
+msgstr "Öppna filer"
+
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
+msgid "Add Files"
+msgstr "LĂ€gg till filer"
+
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
+
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
+msgid "_Queue"
+msgstr "_Kö"
+
+#: src/libaudgui/ui_jumptotrack.c:107
+msgid "Un_queue"
+msgstr "Ta _bort frÄn kö"
+
+#: src/libaudgui/ui_jumptotrack.c:245
+msgid "Jump to Song"
+msgstr "Hoppa till lÄt"
+
+#: src/libaudgui/ui_jumptotrack.c:270
+msgid "Filter: "
+msgstr "Filter:"
+
+#: src/libaudgui/ui_jumptotrack.c:271
+msgid "_Filter:"
+msgstr "_Filter:"
+
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:223
+msgid "Playlist Manager"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:236
+msgid "Entries"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
+msgid "_Close dialog on activating playlist"
+msgstr ""
+
+#: src/libaudgui/url-opener.c:49
+msgid "Open URL"
+msgstr "Öppna URL"
+
+#: src/libaudgui/url-opener.c:55
+msgid "Add URL"
+msgstr "LĂ€gg till URL"
+
+#: src/libaudgui/url-opener.c:74
+msgid "Enter URL:"
+msgstr "Ange URL:"
+
+#: src/libaudgui/util.c:148
+msgid ""
+"\n"
+"(Further messages have been hidden.)"
+msgstr ""
diff --git a/po/ta.po b/po/ta.po
index 118d71f..cb3aa23 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -3,15 +3,17 @@
# This file is distributed under the same license as the Audacious package.
#
# Translators:
+# bage <bagerathan@gmail.com>, 2013
+# nar7esh <rajnareshwar@gmail.com>, 2013
# nar7esh <rajnareshwar@gmail.com>, 2013
# bage <bagerathan@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-06-01 13:51+0000\n"
-"Last-Translator: nar7esh <rajnareshwar@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Tamil (http://www.transifex.com/projects/p/audacious/language/"
"ta/)\n"
"Language: ta\n"
@@ -20,140 +22,131 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "àź€àŻ‡àźŸàŻàź•àźżàź©àŻàź±àź€àŻ ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d àź•àŻ‹àźȘàŻàźȘàŻ àź•àźŸàźŁàźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ"
msgstr[1] "%d àź•àŻ‹àźȘàŻàźȘàŻàź•àŻàź•àźłàŻ àź•àźŸàźŁàźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(àźȘàźżàźŽàŻˆàźŻàźŸàź© UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "àźȘàŻàź€àźżàźŻ àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻ"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Winamp EQF àź•àŻ‹àźȘàŻàźȘàŻ '%s' àź‰àźłàŻàźłàźżàźŸàŻàź”àź€àźżàźČàŻ àź€àź”àź±àŻ‡àź±àŻàźȘàźŸàŻàźŸàŻàźłàŻàźłàź€àŻ"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "àźȘàźżàź©àŻàź©àŻ‹àź•àŻàź•àźżàźŻ àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻˆ àź€àź”àźżàź°àŻàź•àŻàź• "
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻˆ àź‡àźŻàź•àŻàź•àź”àŻàźźàŻ "
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "àźȘàź€àźżàźȘàŻàźȘàŻˆ àź•àźŸàźŸàŻàźŸàŻ"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àźȘàźŸàźŸàŻàźŸàŻˆ àź‡àźŸàŻˆàźšàźżàź±àŻàź€àŻàź€àŻ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àźȘàźŸàźŸàŻàźŸàŻˆ àźšàźżàź±àŻàź€àŻàź€àŻ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "àźȘàźŸàźŸàźČàŻ àź‡àźŻàź™àŻàź•àŻàźźàźŸàź©àźŸàźČàŻ àź‡àźŸàŻˆàźšàźżàź±àŻàź€àŻàź€àŻ, àź‡àźČàŻàźČàŻˆàźŻàŻ†àź©àźżàźČàŻ àź‡àźŻàź™àŻàź• àź”àŻˆ"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "àźźàŻàź©àŻàź©àŻ‹àź•àŻàź•àźżàźŻ àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻˆ àź€àź”àźżàź°àŻàź•àŻàź• "
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "àź•àŻ‡àźŸàźȘàŻàźȘàŻ àź€àźŸàź”àźż àźšàŻ†àźČàŻàźČàŻàźźàŻ àź‰àź°àŻˆàźŻàźŸàźŸàźČàŻ àźȘàŻ†àźŸàŻàźŸàźżàźŻàźżàź©àŻˆ àź•àźŸàźŸàŻàźŸàŻàź•"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
+
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻàź•àŻàź•àŻ àź•àŻ‹àźȘàŻàźȘàŻàź•àźłàŻˆ àź‰àźŸàŻàźšàŻ†àźČàŻàź€àŻàź€àź”àŻàźźàŻ"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "àź€àź±àŻàź•àźŸàźČàźżàź• àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻàź•àŻàź•àŻ àźȘàŻàź€àźżàźŻ àź•àŻ‹àźȘàŻàźȘàŻàź•àźłàŻˆ àź‰àźŸàŻàźšàŻ‡àź°àŻàź•àŻàź•"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "àźȘàźżàź°àź€àźŸàź© àźšàźŸàźłàź°àź€àŻàź€àŻˆ àź•àźŸàźŸàŻàźšàźżàźȘàŻàźȘàźŸàŻàź€àŻàź€àź”àŻàźźàŻ"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "àźźàŻ‚àźŸàźżàźŻàźżàźČàŻàźČàźŸ àźźàŻàź±àŻˆàźźàŻˆ "
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "àźȘàźŸàźŸàźČàŻ àź‡àźŻàź•àŻàź•àź€àŻàź€àŻˆ àźšàźżàź±àŻàź€àŻàź€àŻàźźàŻ àźȘàŻ‹àź€àŻ àź”àźżàźČàź•àŻàź•àŻàź•"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "àźȘàź€àźżàźȘàŻàźȘàŻˆ àź•àźŸàźŸàŻàźŸàŻ"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "àź”àźŽàŻ àźšàŻ€àź•àŻàź•àźČàŻ àź€àź•àź”àźČàŻàź•àźłàŻˆ àź€àźżàź°àŻˆàźŻàźżàźŸàŻ "
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "àź•àŻ‹àźȘàŻàźȘàŻ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "àźȘàźČàŻàźČàŻ‚àźŸàź• àź•àŻ‹àźȘàŻàźȘàŻàź•àŻàź•àźłàŻˆ àź‡àźŻàź•àŻàź•àŻ"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s⏎\n"
-"àźźàŻàźŻàź±àŻàźšàźż àźšàŻ†àźŻàŻàź• `%s --àź‰àź€àź”àźż àź•àŻ‹àź°àŻàź•' àźźàŻ‡àźČàź€àźżàź• àź€àź•àź”àźČàŻàź•àźłàŻàź•àŻàź•àŻ.⏎\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "àź”àźŸàź•àźżàź”àźžàŻ"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "%s àź‡àź±àŻàź•àźŸàź© àź•àŻàź±àźżàź”àźżàźČàź•àŻàź•àźżàź•àźłàŻ àź•àźŸàźŁàźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ "
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s àź‡àź©àŻˆ àź€àźżàź±àź•àŻàź• àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ "
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "àź•àŻ‹àźȘàŻàźȘàŻ àźšàŻ€àźŸàŻàźŸàźżàźȘàŻàźȘàŻ àź…àź±àźżàźŻàźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ/ àź†àź€àź°àź”àź±àŻàź±àź€àŻ. %s %s: àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "àźšàŻ‡àźźàźż"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "àźàź±àŻàź±àŻ"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "àź•àŻ‹àźȘàŻàźȘàŻ àźšàŻ€àźŸàŻàźŸàźżàźȘàŻàźȘàŻ àź…àź±àźżàźŻàźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ/ àź†àź€àź°àź”àź±àŻàź±àź€àŻ. %s %s: àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "àźȘàŻàź€àźżàźŻ àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻ"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "àź€àź±àŻàźȘàŻ‹àź€àŻ àź‡àźŻàź•àŻàź•àźȘàŻàźȘàźŸàŻàź”àź€àŻ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -161,412 +154,444 @@ msgstr ""
"àźźàŻ€àź€àŻàź€àź°àź”àŻ àź”àź°àŻàźŸàŻàź€àźČàŻ àź‡àźŸàźźàŻàźȘàŻ†àź±àŻàź”àź€àźŸàźČàŻ àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻˆ àź”àź°àźżàźšàŻˆàźŻàźŸàź•àŻàź• àź‡àźŻàźČàź”àźżàźČàŻàźČàŻˆ (àź…àźČàŻàźČàź€àŻ "
"àźźàŻàźŸàź•àŻàź•àźȘàŻàźȘàźŸàŻàźŸàŻàźłàŻàźłàź€àŻ)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "%s àźȘàź±àŻàź±àźż"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s àź…àźźàŻˆàźȘàŻàźȘàŻàź•àŻàź•àźłàŻ"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "àź’àźČàźż"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "àź”àźČàŻˆàźŻàźźàŻˆàźȘàŻàźȘàŻ"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻ"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "àźȘàźŸàźŸàźČàŻ àź”àźżàźȘàź°àźźàŻ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "àźšàŻ€àźŸàŻàźšàźżàź•àźłàŻ"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "àźȘàŻŠàź€àŻàź”àźŸàź©àź€àŻ"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "vilaivugal"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "àź‰àź°àŻàź”àź• àź•àźŸàźŸàŻàźšàźżàźȘàŻàźȘàźŸàŻthàź€àźČàŻ "
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ulleedu"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "àźȘàŻ‡àźŸàź•àŻàź•àŻàź”àź°àź€àŻàź€àŻ"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "àźȘàźŸàźŸàź•àź°àŻ"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "àź€àźČàŻˆàźȘàŻàźȘàŻ"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "àźȘàźŸàźŸàźČàŻ àźŽàźŁàŻ"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "àź”àź•àŻˆ"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "àź•àŻ‹àźȘàŻàźȘàźżàź©àŻ àźȘàŻ†àźŻàź°àŻ"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "àź•àŻ‹àźȘàŻàźȘàźżàź±àŻàź•àŻ àźšàŻ†àźČàŻàźČàŻàźźàŻ vazhi"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "àź€àźżàź•àź€àźż"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "àź”àź°àŻàźŸàźźàŻ"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "àźȘàźżàź©àŻàź©àŻ‚àźŸàŻàźŸàźźàŻ"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "àź•àŻàź±àźżàźŻàźŸàź•àŻàź•àźż / àź”àźżàźČàź•àŻàź•àźż"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "àź€àź°àźźàŻ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "àźŽàź€àŻàź”àŻàźźàŻ alla"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "àź…àź°àźȘàźżàź•àŻ"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "àźȘàźŸàźČàŻàź°àźżàź•àŻ"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "àźšàŻ€àź©àźźàŻ"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "àź•àźżàź°àŻ‡àź•àŻàź•àźźàŻ"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "àźčàŻ€àźȘàŻàź°àŻ"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "àźœàźȘàŻàźȘàźŸàź©àŻ€àźžàŻ"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "àź•àŻŠàź°àźżàźŻàź©àŻ"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "àźȘàŻŠàźČàźżàźžàŻ"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "àź‰àź°àŻàźšàźżàźŻàź©àŻ"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "àź€àźŸàźŻàŻàź”àźŸàź©àŻ€àźžàŻ"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "àź€àŻàź°àŻàź•àŻàź•àźż"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "àźźàźżàź€àź”àŻˆ àźȘàŻàźłàŻàźłàźż"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ àźźàŻàź±àŻˆàźźàŻˆ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "àź”àŻ†àźłàźżàźŻàŻ€àźŸàŻàźŸàŻ àźšàŻ€àźŸàŻàźšàźżàź•àźłàŻ"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>àź”àŻ†àźłàźżàźŻàŻ€àźŸàŻàźŸàŻ àź…àźźàŻˆàźȘàŻàźȘàŻàź•l</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "àźȘàźżàźŸàŻ àź†àźŽàźźàŻ"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "àź€àźŸàź™àŻàź•àźČàŻ àź…àźłàź”àŻ"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "àźźàŻ†àź©àŻàźźàŻˆàźŻàźŸàź© thundaakkal"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "àźźàŻ†àź©àŻàźȘàŻŠàź°àŻàźłàŻ àź’àźČàźż àź•àźŸàŻàźŸàŻàźȘàŻàźȘàźŸàŻàź€àŻàź€àźżàźŻàŻˆ àź‰àźȘàźŻàŻ‹àź•àźżàź•àŻàź• (àźȘàź°àźżàźšàŻàź€àŻàź°àŻˆàź•àŻàź•àźȘàŻàźȘàźŸàŻàźŸ àźźàŻàź±àŻˆàźźàŻˆ àź…àźČàŻàźČ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>àźȘàźŻàź©àźżàź©àŻˆ àźźàŻ€àźłàźżàźŻàź•àŻàź•àŻ</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "àźȘàźŻàź©àŻ àźźàŻ€àźłàźżàźŻàź•àŻàź•àźżàźŻàŻˆ àźšàŻ†àźŻàźČàŻàźȘàŻàźȘàźŸàŻàź€àŻàź€àŻàź•"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ àźźàŻàź±àŻˆàźźàŻˆ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "àźšàź±àŻàź•àŻàź•àŻàź€àźČàŻˆ àź€àź”àźżàź°àŻàź•àŻàź•àź”àŻàźźàŻ (àźȘàź°àźżàźšàŻàź€àŻàź°àŻˆàź•àŻàź•àźȘàŻàźȘàźŸàŻàźŸ àźźàŻàź±àŻˆàźźàŻˆ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>àźšàźżàźČàŻˆàź•àźłàŻˆ àźšàź°àźżàźšàŻ†àźŻàŻga</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "àź…àź©àŻˆàź€àŻàź€àŻ àź•àŻ‹àźȘàŻàźȘàŻàź•àźłàźżàź©àź€àŻàźźàŻ àźšàźȘàŻàź€àź€àŻàź€àŻˆ perukku:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "àź‡àźŁàŻˆàź•àŻàź•àźȘàŻàźȘàźŸàźŸàź€ àź•àŻ‹àźȘàŻàźȘàŻàź•àźłàźżàź©àŻ àźšàźȘàŻàź€àź€àŻàź€àŻˆ àźȘàŻ†àź°àŻàź•àŻàź•àŻ:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "àźȘàź€àźżàźČàźż àź”àźŽàź™àŻàź•àŻàźšàź°àŻ àźȘàŻ†àźŻàź°àŻ"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "àźȘàź€àźżàźČàźż àźȘàŻ‹àź°àŻàźŸàŻ àźŽàźŁàŻ:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "àźȘàź€àźżàźČàźż àźȘàźŻàź©àź°àŻàźȘàŻ†àźŻàź°àŻ:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "àźȘàź€àźżàźČàźż kadavuchchol"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>àźȘàź€àźżàźČàźż àź‰àźłàŻàźłàźźàŻˆàź”àŻ</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "àźȘàź€àźżàźČàźż àźȘàźŻàź©àŻàźȘàźŸàźŸàŻàźŸàźżàź©àŻˆ àźšàŻ†àźŻàźČàŻàźȘàźŸàŻàź€àŻàź€àŻàź•"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "àźȘàź€àźżàźČàźżàźŻàŻàźŸàź©àŻ àź‰àź±àŻàź€àźżàźȘàŻàźȘàźŸàźŸàŻàźŸàźżàź©àŻˆàźŻàŻàźźàŻ àźȘàźŻàź©àŻàźȘàźŸàŻàź€àŻàź€àŻàź• "
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "àź•àŻàź±àźżàźŻàźżàźŸàźȘàŻàźȘàźŸàŻàźŸ àź‰àźŁàź°àŻàź•àź°àŻàź”àźżàź•àźłàŻ àźŽàźšàŻàź€ àź€àźŸàź©àźżàźŻàź™àŻàź•àŻ àźŽàźŽàŻàź€àŻàź€àŻàź•àźłàŻàź•àŻàź•àŻ: "
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "àź•àŻàź±àŻˆàź”àźŸàŻˆàźŻàŻàźźàŻ àźŽàźŽàŻàź€àŻàź€àŻàź•àźłàŻàź•àŻàź•àźŸàź© àź•àŻàź±àźżàźŻàŻ€àźŸàŻàź•àźłàŻ:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>àźšàźŸàź€àŻàź€àŻˆ</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "àź€àŻàź”àź•àŻàź•àźšàźżàźČàŻˆàźŻàźżàźČàźżàź°àŻàźšàŻàź€àŻ àźȘàźŸàźŸàźČàŻ àź‡àźŻàź•àŻàź•àź€àŻàź€àŻˆ àźšàŻ€àźŸàźżàź•àŻàź•àźšàŻ àźšàŻ†àźŻàŻ"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àźȘàźŸàźŸàźČàŻ àźšàŻ€àź•àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ àźȘàźŸàŻàźšàź€àŻàź€àźżàźČàŻ àź…àźŸàŻàź€àŻàź€ àźȘàźŸàźŸàźČàŻàź•àŻàź•àŻ àźźàŻàź©àŻàź©àŻ‡àź±àŻ "
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "àź•àŻ‹àźȘàŻàźȘàŻàź•àźłàŻˆ àź€àźżàź±àź•àŻàź•àŻàźźàŻ àźȘàŻ‹àź€àŻ àź•àŻàź±àźżàź€àŻàź€ àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻˆ àźšàŻ€àź•àŻàź•àŻàź• "
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "àź€àź±àŻàź•àźŸàźČàźżàź• àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàźżàźČàŻ àź•àŻ‹àźȘàŻàźȘàŻàź•àźłàŻˆ àź€àźżàź±àź•àŻàź• "
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "àźȘàźŸàźŸàźČàŻàź•àźłàźżàź©àŻˆ àź‡àźŻàź•àŻàź•àŻàźźàŻ àź”àź°àŻˆ àźźàŻ€àź€àŻàź€àź°àź”àźżàź©àŻˆ àźàź±àŻàź± àź”àŻ‡àźŁàŻàźŸàźŸàźźàŻ"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>àź‡àźŁàź•àŻàź•àź€àŻàź€àź©àŻàźźàŻˆ</b> "
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr " \\ (àźȘàźżàź©àŻàź©àŻ‡àźŸàź•àŻàź•àźżàźŻ àźšàźŸàźŻàŻàź”àŻ) àź‡àź©àŻˆ àź•àŻ‹àźȘàŻàźȘàŻàź±àŻˆ àźŽàźČàŻàźČàŻˆàźŻàźŸàź• àź”àź°àŻˆàźŻàź±àŻàź•àŻàź•"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ varaivu</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "àź‡àźšàŻàźšàŻŠàź±àŻàź•àźłàŻàź•àŻàź•àŻ àźȘàŻŠàź°àŻàź€àŻàź€àźźàźŸàź© àźšàźżàźŽàź±àŻàźȘàźŸàź™àŻàź•àźłàŻˆ àź€àŻ‡àźŸàŻàź• (àź•àźŸàź±àŻàźȘàŻàźłàŻàźłàźżàźŻàźŸàźČàŻ àźȘàźżàź°àźżàź•àŻàź•àŻàź•):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "àź‡àźšàŻàźšàŻŠàź±àŻàź•àźłàŻàź•àŻàź•àŻ àźȘàŻŠàź°àŻàź€àŻàź€àźźàźŸàź© àźšàźżàźŽàź±àŻàźȘàźŸàź™àŻàź•àźłàŻˆ àźšàŻ€àź•àŻàź•àŻàź• (àź•àźŸàź±àŻàźȘàŻàźłàŻàźłàźżàźŻàźŸàźČàŻ àźȘàźżàź°àźżàź•àŻàź•àŻàź•):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "àź‡àźȘàŻàźȘàźŸàźŸàźČàŻ àź•àŻ‹àźȘàŻàźȘàŻ àźȘàŻ†àźŻàź°àŻàź•àŻàź•àŻ àźȘàŻŠàź°àŻàź€àŻàź€àźźàźŸàź© àźšàźżàźŽàź±àŻàźȘàźŸàź™àŻàź•àźłàŻˆ àź€àŻ‡àźŸàŻàź•"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "àźźàŻ€àźłàŻàźšàŻàźŽàźČàźČàźŸàź• àź€àŻ‡àźŸàŻàź• "
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "àź€àŻ‡àźŸàŻàźźàŻ àź†àźŽàźźàŻ:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>àźźàŻ‡àźČàŻàźźàŻ€àźŸàŻàźȘàŻ àź€àź•àź”àźČàŻ</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "àźźàŻ‡àźČàŻàźźàŻ€àźŸàŻàźȘàŻ àź€àź•àź”àźČàŻàź•àźłàŻˆ àź•àźŸàźŁàŻàźȘàźżkkuga"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "àźźàŻ‡àźČàŻàźźàŻ€àźŸàŻàźȘàŻ àź€àźŸàźźàź€àźźàŻ (àź’àź°àŻ àź”àźżàź©àźŸàźŸàźżàźŻàźżàź©àŻ àźȘàź€àŻàź€àŻ àźȘàźżàź°àźżàź”àŻàź•àźłàźŸàź•)"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "àź€àź±àŻàźȘàŻ‹àź€àŻˆàźŻ àźȘàźŸàźŸàźČàźżàź©àŻ àź•àźŸàźČ àź…àźłàź”àźżàźŸàŻˆàźŻàŻˆ àź•àźŸàźŁàŻàźȘàźżàź•àŻàź•"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "thalaippu"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "àź•àźČàŻˆàźžàź°àŻ - àź€àźČàŻˆàźȘàŻàźȘàŻ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "àź•àźČàŻˆàźžàź°àŻ - àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ - àź€àźČàŻˆàźȘàŻàźȘàŻ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "àź•àźČàŻˆàźžàź°àŻ - àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ - àźȘàźŸàźŸàźČàŻ. àź€àźČàŻˆàźȘàŻàźȘàŻ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "àź•àźČàŻˆàźžàź°àŻ [àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ] - àźȘàźŸàźŸàźČàŻ. àź€àźČàŻˆàźȘàŻàźȘàŻ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ - àź€àźČàŻˆàźȘàŻàźȘàŻ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "àźȘàźżàź°àźżàź”àŻ"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "àź€àź©àźżàźȘàŻàźȘàźŻàź©àŻ"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>àźȘàźŸàźŸàźČàŻ kaatchippaduththu</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "àźȘàźŸàźŸàźČàŻ àź‡àźČàź•àŻàź•àź™àŻàź•àźłàŻˆ kaattuga"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "àźźàŻàź©àŻàź©àŻˆàźŻ àźšàŻàźŽàźżàźŻàź€àŻàź€àŻˆ àź•àźŸàźŸàŻàźŸàŻàź• (2:00 àź‡àź±àŻàź•àŻ àźȘàź€àźżàźČàźŸàź• 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "àź€àźČàŻˆàźȘàŻàźȘàŻ àźšàź°àźźàŻ àź”àźŸàźżàź”àźźàŻ àźšàźŸàź°àŻàźšàŻàź€ àź€àź•àź”àźČàŻàź•àźłàŻˆ àź•àźŸàźŸàŻàźŸàŻàź• "
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "àź€àź©àźżàźȘàŻàźȘàźŻàź©àŻ àźšàź°àźźàŻ:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "àź€àźČàŻˆàźȘàŻàźȘàŻ àź”àźŸàźżàź”àźźàŻ:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "àź”àŻ†àźłàźżàźŻàŻ€àźŸàŻàźŸàŻ àźšàŻ€àźŸàŻàźšàźżàź•àźłàŻ"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "àźȘàŻ‡àźŸàź•àŻàź•àŻàź”àź°àź€àŻàź€àŻ"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ulleedu"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "vilaivugal"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "àź‰àź°àŻàź”àź• àź•àźŸàźŸàŻàźšàźżàźȘàŻàźȘàźŸàŻthàź€àźČàŻ "
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "àźȘàŻŠàź€àŻàź”àźŸàź©àź€àŻ"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "àź€àź©àźżàźȘàŻàźȘàźŻàź©àŻ àźšàź°àźźàŻ:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "àź”àźŸàź•àźżàź”àźžàŻ viruppaththerivugal"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "àź•àŻ‡àźŸàźȘàŻàźȘàź•àźźàŻŠàź©àŻàź±àŻˆ àź‰àź°àŻàź”àźŸàź•àŻàź• àźźàŻàźŸàźżàźŻàź”àźżàźČàŻàźČàŻˆ (%s): %s⏎\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "àźšàźżàźČàŻˆàźȘàŻàźȘàźŸàźŸàŻ àź…àź±àźżàźŻàźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ "
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "àźŽàźšàŻàź€ àźȘàźŸàźŸàźČàŻàźźàŻ àź‡àźŻàź•àŻàź•àźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ "
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "àź’àźČàźż àź‡àź±àŻàź”àźŸàŻàźŸàŻ, àźȘàźŸàźŸàźČàŻ, %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "àź€àź©àźżàź€àŻàź€ "
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "àź’àźČàźżàźȘàŻàźȘàźżàź°àźżàźȘàŻàźȘàŻ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -581,409 +606,420 @@ msgstr "àźšàź±àŻàźȘàŻ†àźŻàź°àŻàź•l"
msgid "License"
msgstr "àź‰àź°àźżàźźàźźàŻ"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "àź”àźŸàź•àźżàź”àźžàŻ àźȘàź±àŻàź±àźż"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"àźšàźżàźšàŻàźšàźŻàźźàźŸàź• %s àź‡àź©àŻˆ àźźàŻ‚àźŸ àź”àŻ‡àźŁàŻàźŸàŻàźźàźŸ? àźźàŻ‚àźŸàźżàź©àźŸàźČàŻ, àź•àźŸàŻˆàźšàźżàźŻàźŸàź• àźàź±àŻàź±àŻàźźàź€àźżàźŻàźżàź©àŻ àźȘàŻ‹àź€àŻ àźšàŻ†àźŻàŻàź€ àźźàźŸàź±àŻàź±àź™àŻàź•àźłàŻ "
-"àź‡àźŽàź•àŻàź•àźȘàŻàźȘàźŸàŻàźźàŻ."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàźżàź©àŻˆ mooduga"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_àź‡àźšàŻàźšàŻ†àźŻàŻàź€àźżàźŻàŻˆ àźźàŻ€àźłàź•àŻ àź•àźŸàźŸàŻàźŸ àź”àŻ‡àźŁàŻàźŸàźŸàźźàŻ"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàźżàź©àŻˆ àźźàź±àŻàźȘàŻ†àźŻàź°àŻ àźšàŻ†àźŻàŻàź• "
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "àź…àźźàŻˆàźȘàŻàźȘàŻàź•àŻàź•àźłàŻ ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_àźšàŻ†àźŻàźČàŻàźȘàźŸàŻàź€àŻàź€àź”àŻàźźàŻ"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "àźšàźźàźźàźŸàź•àŻàź•àźż"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "munperukki"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "paadal"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "àźȘàźŸàźŸàźČàźżàź©àŻ àź•àźŸàźČ alavidai"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "àź†àźšàźżàźŸàŻ àźœàźŸàźžàŻ"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "àź†àźšàźżàźŸàŻ àź°àźŸàź•àŻ"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "àźšàŻàź±àŻàź±àŻàźšàŻàźšàŻ‚àźŽàźČàŻ"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "àźȘàŻ†àźȘàźŸàźȘàŻ"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "àźȘàŻàźłàŻ‚àź•àźżàź°àźŸàźžàŻ"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "àźȘàŻàźłàŻ‚àźžàŻ"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "àźšàźȘàŻˆ àź‡àźšàŻˆ"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "àźȘàźŸàź°àźźàŻàźȘàź°àźżàźŻ àź‡àźšàŻˆ"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "àź•àźżàź°àźŸàźźàźȘàŻàźȘàŻàź±àźȘàŻàźȘàźŸàźŸàźČàŻàź•àźłàŻ "
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "àźŸàŻ†àź€àŻ metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "àźŽàźłàźżàź€àźŸàź• àź•àŻ‡àźŸàŻàź•kàź•àŻ‚àźŸàźżàźŻàź”àŻˆ"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "àźšàźŸàźŸàŻàźŸàŻàźȘàŻàźȘàŻàź±pàźȘàźŸàźŸàźČàŻàź•àźłàŻ"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "àźšàź”àź©àźŸàź•àź°àŻ€àź•àźźàźŸàź©àź”àŻˆ"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "àź•àŻàźŽàŻ àź°àźŸàźȘàŻ"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "gaasbel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "granj"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "àźčàźŸàź°àŻàźŸàŻ raak"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "àźčàŻ†àź”àźż mettal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "àźčàźżàźȘàŻ-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "hawus"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "jaas"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "àźœàź™àŻàź•àźłàŻ"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "mettal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "àźȘàŻàź€àźżàźŻ àźȘàźŸàźżàźȘàŻàźȘàŻàź•l"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "àźȘàŻàź€àźżàźŻ alaigal"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "àź‡àź°àŻˆàźšàŻàźšàźČàŻ àźšàź€àŻàź€àźźàŻ "
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "paap"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "àźȘàź™àŻàź•àŻ raak"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "raap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "rage"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "raak"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "àź°àźŸàź•àŻ àźźàź±àŻàź±àŻàźźàŻ rol"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "àź°àźżàź€àźźàŻ àźźàź±àŻàź±àŻàźźàŻ blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "skaa"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "sowul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "tekno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "àźŸàŻàź°àźżàźȘàŻ-àźčàźŸàźȘàŻ "
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\"> àź‡àź™àŻàź•àŻ àźȘàŻ†àźŸàź°àŻàźšàŻàź€àźŸàź€àŻ </span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "àźźàŻ€àź€àŻàź€àź°àź”àŻàź•àźłàŻ àź”àŻ†àź±àŻàź±àźżàź•àź°àźźàźŸàź• àźȘàŻàź€àŻàźȘàŻàźȘàźżàź•àŻàź•àźȘàŻàźȘàźŸàŻàźŸàŻàźłàŻàźłàź€àŻ "
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "àźźàŻ€àź€àŻàź€àź°àź”àŻàź•àźłàŻ àźȘàŻàź€àŻàźȘàŻàźȘàźżàź•àŻàź•àźȘàŻàźȘàźŸàź”àźżàźČàŻàźČàŻˆ "
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "àź€àź•àź”àźČàŻàź•àźłàŻˆ àź•àźŁàŻàź•àźŸàźŁàźżàź•àŻàź•àź”àŻàźźàŻ "
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">àź”àź•àŻˆ:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">àź€àź°àźźàŻ:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">bitveetham:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">àź€àźČàŻˆàźȘàŻàźȘàŻ</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">àźȘàźŸàźŸàź•àź°àŻ</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">àź•àŻàź±àŻàź”àźŸàŻàźŸàŻ:</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">àźȘàźżàź©àŻàź©àŻ‚àźŸàŻàźŸàŻ:</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">àź‡àźČàź•àŻàź•àźżàźŻàźšàźŸàŻˆ</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">àź”àź°àŻàźŸàźźàŻ</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">àźȘàźŸàźŸàźČàŻ àźŽàźŁàŻ</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "àźŽàź”àŻàź”àźżàź€ àź€àź•àź”àźČàŻàź•àźłàŻàźźàŻ àź•àźżàźŸàŻˆàź•àŻàź•àź”àźżàźČàŻàźČàŻˆ %s.⏎\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "àźšàŻ‡àź°àź€àŻàź€àźżàź±àŻàź•àŻ àźšàŻ†àźČàŻàźČàź”àŻàźźàŻ "
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "àźšàŻ‡àź°àź€àŻàź€àŻˆ àźȘàź€àźżàź”àŻ àźšàŻ†àźŻàŻàź• (àźšàźżàźźàźżàźŸàź™àŻàź•àźłàŻ:àź”àźżàź©àźŸàźŸàźżàź•àźłàŻ)"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "%s àźźàŻ‡àźČàŻ†àźŽàŻàź€àŻàź• ?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻˆ àźàź±àŻàź±àŻàźźàź€àźż àźšàŻ†àźŻàŻàź• "
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻàźČàŻˆ àź‡àź±àź•àŻàź•àŻàźźàź€àźż àźšàŻ†àźŻàŻàź• "
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "%s àźźàŻ‡àźČàŻ†àźŽàŻàź€àŻàź• ?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "àź”àź°àźżàźšàŻˆ àźšàźżàź°àŻàź”àźŸàź•àźż"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "àź•àŻ‹àźȘàŻàźȘàŻàź•àŻàź•àźłàŻˆàź€àŻ àź€àźżàź±kkavum"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "àź•àŻ‹àźȘàŻàźȘàŻàź•àŻàź•àźłàŻˆ àźšàŻ‡àź°àŻkkavum"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "àź€àźżàź±àź•àŻàź•àŻàźźàŻ àźȘàŻ‹àź€àŻ àź‰àź°àŻˆàźŻàźŸàźŸàźČàŻ àźȘàŻ†àźŸàŻàźŸàźżàźŻàźżàź©àŻˆ àźźàŻ‚àźŸàŻàź•"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "àźšàŻ‡àź°àŻàź•àŻàź•àŻàźźàŻ àźȘàŻ‹àź€àŻ àź‰àź°àŻˆàźŻàźŸàźŸàźČàŻ àźȘàŻ†àźŸàŻàźŸàźżàźŻàźżàź©àŻˆ àźźàŻ‚àźŸàŻàź•"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_àź”àź°àźżàźšàŻˆ"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "àź”àź°àźżàźšàŻˆàź•àźłàŻˆ àźšàŻ€àź•àŻàź•àŻ"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "àźȘàźŸàźŸàźČàŻàź•àŻàź•àŻ àź€àźŸàź”àŻàź•"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "àź”àźŸàźżàź•àźŸàŻàźŸàŻàź•"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_àź”àźŸàźżàź•àźŸàŻàźŸàŻàź•:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "àźšàźżàź©àŻˆàź”àŻ àź”àŻˆàź€àŻàź€àŻàź•àŻàź•àŻŠàźłàŻàź•"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "neekkuga"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "àź€àźŸàź”àźČàźżàź©àŻ àźȘàŻ‹àź€àŻ mooduga"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "àźȘàźŸàźŸàźČàŻ àźȘàźŸàŻàźŸàźżàźŻ nirvaagi"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "varavugal"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "_àźźàŻ€àźłàŻàźȘàŻ†àźŻàź°àźżàźŸàŻ"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "_àźšàŻ†àźŻàźČàŻàźȘàźŸàŻàź€àŻàź€àŻàźźàŻ àźȘàŻ‹àź€àŻ àź‰àź°àŻˆàźŻàźŸàźŸàźČàŻ àźȘàŻ†àźŸàŻàźŸàźżàźŻàźżàź©àŻˆ àźźàŻ‚àźŸàŻàź•"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "àźźàŻàź•àź”àź°àźżàźŻàŻˆ àź€àźżàź±"
@@ -991,11 +1027,11 @@ msgstr "àźźàŻàź•àź”àź°àźżàźŻàŻˆ àź€àźżàź±"
msgid "Add URL"
msgstr "àźźàŻàź•àź”àź°àźżàźŻàŻˆ àźšàŻ‡àź°àŻ"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "àźźàŻàź•àź”àź°àźżàźŻàŻˆ àź‰àźłàŻàźłàźżàźŸàŻ:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/tr.po b/po/tr.po
index 2451c39..b8cdacd 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -5,24 +5,30 @@
# Translators:
# 80s <onder.y@msn.com>, 2013
# aamet <aaydin159@gmail.com>, 2012
+# aamet <aaydin159@gmail.com>, 2012
# Imnune <alikoc@hush.ai>, 2012
# Ali Orhun Akkirman <the.alorak@gmail.com>, 2013
# hsngrms <dead-bodies-everywhere@hotmail.com>, 2012
# emfi <emrefirat93@gmail.com>, 2013
+# emfi <emrefirat93@gmail.com>, 2013
+# hsngrms <dead-bodies-everywhere@hotmail.com>, 2012
+# Imnune <alikoc@hush.ai>, 2012
# kodadiirem <kodadiirem@gmail.com>, 2013
# maruf1 <turk.etna@gmail.com>, 2013
# Murat Senel <muratasenel@gmail.com>, 2007
# Murat ƞenel <muratasenel@gmail.com>, 2007
# nicotine <zekeriya.cihan@gmail.com>, 2013
+# tarkan255 <t.oguzman@hotmail.com>, 2012
# Tayyip <m.tayyib.yel@gmail.com>, 2013
# tarkan255 <t.oguzman@hotmail.com>, 2012
+# volkangezer <volkangezer@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-09-02 05:53+0000\n"
-"Last-Translator: hbayindir <hakan.bayindir@pardus.org.tr>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 12:43+0000\n"
+"Last-Translator: volkangezer <volkangezer@gmail.com>\n"
"Language-Team: Turkish (http://www.transifex.com/projects/p/audacious/"
"language/tr/)\n"
"Language: tr\n"
@@ -31,140 +37,133 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Aranıyor..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d dosya bulundu"
msgstr[1] "%d dosya bulundu"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(geçersiz UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "Yeni Çalma Listesi"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Winamp EQF dosyası '%s' içe aktarılırken hata oluƟtu"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "Hata"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "Çalma listesinde geri git"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "Komut satırı yardımını göster"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "Geçerli çalma listesini oynat"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "SĂŒrĂŒm bilgisini göster"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "Çalınan Ɵarkıyı duraklat"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "Oynatmayı baƟlat"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Çalınan Ɵarkıyı durdur"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "Oynatmayı duraklat"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "Duraklat veya devam et"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "Çalma listesinde ileri atla"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "Oynatmayı durdur"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Dosyaya Atla penceresini göster"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "Önceki Ɵarkıya geç"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "Sonraki Ɵarkıya geç"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Çalma listesine dosya ekle"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Geçici çalma listesine yeni dosya ekle"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "Dosyaları geçici bir listeye ekle"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Ana pencereyi göster"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "BaƟsız modu"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "ƞarkıya atla penceresini görĂŒntĂŒle"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "Grafiksel arayĂŒz olmadan baƟla"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "Kayıttan yĂŒrĂŒtmeyi durdur ve çık"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "SĂŒrĂŒm bilgisini göster"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Hata ayıklama iletilerini göster"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "DOSYA..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "Bilinmeyen seçenek: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- ortam dosyalarını oynat"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "Bilinmeyen seçenek: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"Bilgi için `%s --help' komutunu deneyin.\n"
+"Kullanım: audacious [SEÇENEK] ... [DOSYA] ...\n"
+"\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "%s için çözĂŒcĂŒ bulunamadı."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s açılamadı."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "%s %s kullanılamıyor: desteklenmeyen dosya uzantısı."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "kaydet"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "%s yĂŒklenemiyor: desteklenmeyen dosya uzantısı."
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "yĂŒkle"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "%s %s kullanılamıyor: desteklenmeyen dosya uzantısı."
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "Yeni Çalma Listesi"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "%s kaydedilemiyor: desteklenmeyen dosya uzantısı."
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "ƞimdi Çalınıyor"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -172,412 +171,444 @@ msgstr ""
"Üstveri taraması devam ettiğinden (veya iptal edildiğinden) listede sıralama "
"yapılamıyor."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Hakkında%s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "Hakkında"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%sAyarları"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "_Ayarla"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "_Ä°ptal"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "_Kapat"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "A_yarlar"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "_Hakkında"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "_Eklentiler ..."
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "GörĂŒnĂŒm"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Ses"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "Ağ"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Çalma Listesi"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "ƞarkı bilgisi"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "Eklentiler"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Genel"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Efekt"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Görsel Ă¶ÄŸeler"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "GiriƟ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Aktarım"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Sanatçı"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "AlbĂŒm"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "BaƟlık"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "Parça Numarası"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "TĂŒr"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Dosya Adı"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Dosya Yolu"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Tarih"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Yıl"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "Yorum"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ÇözĂŒcĂŒ"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Kalite"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "Hiçbiri"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Arapça"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Baltık Dili"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Çince"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Yunanca"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Ä°branice"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Japonca"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Korece"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Lehçe"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Rusça"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Tayvanca"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "TĂŒrkçe"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Kayan noktalı"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "AlbĂŒm modu"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ArayĂŒz Ayarları</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ArayĂŒz eklentisi:"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ÇıkÄ±ĆŸ eklentisi:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ÇıkÄ±ĆŸ Ayarları</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Bit derinliği:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Arabellek boyutu:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "YumuƟak kesim"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Yazılımsal ses denetimi kullan (önerilmez)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Ses GĂŒĂ§lendirme</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Çalarken ses gĂŒĂ§lendirmeyi etkinleƟtir"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "AlbĂŒm modu"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "TıraƟlamayı önle (önerilir)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Seviyeleri Ayarla</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "TĂŒm dosyaları yĂŒkselt:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Etiketsiz dosyaları yĂŒkselt:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "Vekil sunucu makine adı:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Vekil sunucu bağlantı noktası:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Vekil sunucu kullanıcı adı:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Vekil sunucu Ɵifresi:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Vekil Sunucu Yapılandırması</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Vekil sunucu kullanımını etkinleƟtir"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "Vekil sunucu doğrulaması kullan"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "ƞu dil için otomatik karakter tanımlamayı aç:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "Alternatif karakter kodlamaları:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>DavranÄ±ĆŸ</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "BaƟlangıçta kalınan yerden devam et"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Çalan Ɵarkı silindiğinde sonrakine atla"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Dosya açarken listeyi temizle"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Dosyaları geçici bir listede aç"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "Çalınana kadar Ɵarkı ĂŒstverilerini yĂŒkleme"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>Uyumluluk</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "Geriye yatık taksimi ( \\ ) klasör sınırlayıcı olarak yorumla"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>Album resmi</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "Bu kelimelerle eƟleƟen resimleri ara (virgĂŒlle ayırın)"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "Bu kelimeleri içeren resimleri çıkar (virgĂŒlle ayırın):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "ƞarkı ismiyle eƟleƟen resimleri ara"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Arama yineleme"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Arama derinliği:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Açılır Bilgi</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Popup bilgisi göster"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Popup erteleme (saniyenin onda biri):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "ƞarkı zamanını göster"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "BAƞLIK"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "SANATÇI - BAƞLIK"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "SANATÇI - ALBÜM - BAƞLIK"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "SANATÇI - ALBÜM - PARÇA. BAƞLIK"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "SANATÇI [ ALBÜM ] - PARÇA. BAƞLIK"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBÜM - BAƞLIK"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Kategori"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Özel"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>ƞarkı Göstergesi</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "ƞarkı numaralarını göster"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "BaƟtaki sıfırları göster (2:00 yerine 02:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "BaƟlık metni biçimi hakkında bilgi göster"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Özel metin:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "BaƟlık biçimi:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "ÇıkÄ±ĆŸ eklentisi:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Aktarım"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "GiriƟ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Efekt"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Görsel Ă¶ÄŸeler"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Genel"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Özel metin:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious Özellikleri"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Audacious Ayarları"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "Dizin oluƟturulamadı (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "Pozisyon bulunamadı."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Çalınan Ɵarkı yok."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Ses CD'si, parça %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -592,409 +623,420 @@ msgstr "Katkıda bulunanlar"
msgid "License"
msgstr "Lisans"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Audacious Hakkında"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr ""
-"%s'yi kapatmak istediğinize emin misiniz? Kapatırsanız çalma listesi dÄ±ĆŸa "
-"aktarıldığından beri yapılan değiƟiklikler kaybolur."
+msgid "Do you want to permanently remove “%s”?"
+msgstr "\"%s\" ögesini kalıcı olarak silmek istiyor musunuz?"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Çalma Listesini Kapat"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "_Kaldır"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "Bu mesajı bir _daha gösterme"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "Çalma Listesini Kaldır"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "_Bir daha sorma"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "_Yeniden Adlandır"
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Listeyi Yeniden Adlandır"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ayarlar..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "Bu dosya adına ne ad vermek istersiniz?"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_EtkinleƟtir"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Ekolayzer"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Ön gĂŒĂ§lendirme"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Parça"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "uzunluk"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "Biçim:"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "Kalite:"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "Bit oranı:"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Çevre"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Oda mĂŒziği"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Klasik"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disko"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Kolay Dinleme"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Caz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Tekno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">EriƟilemez</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Üstveri baƟarıyla gĂŒncellendi"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "Kayıt baƟarılı"
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "Üstveri gĂŒncellemesi baƟarısız oldu"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "Kayıt hatası"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Parça Bilgisi"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Biçim:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Kalite:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Bit hızı:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">BaƟlık</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Sanatçı</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">AlbĂŒm</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">Yorum</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">TĂŒr</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Yıl</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "Parça Numarası"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Parça Numarası</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "_Kaydet"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "Bilinmiyor"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "%s için kullanılabilir bilgi yok.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "_Atla"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Zamana Atla"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "GiriƟ zamanı (dakika:saniye):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "%s ĂŒzerine yazılsın mı?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "_Üzerine Yaz"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "Üzerine Yazmayı Onayla"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Çalma Listesini DÄ±ĆŸa Aktar"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "_DÄ±ĆŸa Aktar"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Çalma Listesini İçe Aktar"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "%s ĂŒzerine yazılsın mı?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "_İçe Aktar"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "Kuyruk Yöneticisi"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "_Sıradan Kaldır"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Dosyaları Aç"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "_Aç"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "Açtıktan sonra _pencereyi kapat"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Dosyaları Ekle"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Dosya açılınca diyaloğu kapat"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "_Ekle"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Ekledikten sonra diyaloğu kapat"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "Ekledikten sonra _pencereyi kapat"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Kuyruğa al"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Kuyruktan _çıkar"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ƞarkıya Atla"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "SĂŒzgeç:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_SĂŒzgeç:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Hatırla"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Te_mizle"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "GeçiƟten sonra _kapat"
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Dosyaya atlayınca diyaloğu kapat"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "Çalma Listesi Yöneticisi"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "GiriƟler"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "Yeniden adlandı_r"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "_Yeni"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "_Adlandır"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "_Oynat"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Liste etkinleƟtirildiğinde diyaloğu _kapat"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Bağlantı Aç"
@@ -1002,11 +1044,11 @@ msgstr "Bağlantı Aç"
msgid "Add URL"
msgstr "Bağlantı Ekle"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "URL gir :"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/uk.po b/po/uk.po
index f6b930c..f2d128a 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,17 +6,20 @@
# Kostyantyn Fedenko <fedenko@ukr.net>, 2011
# StreamThreaedr <kvantarium@gmail.com>, 2012
# NaiLi (aka jamesjames) Rootaerc <theism@mail.ru>, 2012
+# NaiLi (aka jamesjames) Rootaerc <theism@mail.ru>, 2012
# Rax Garfield <admin@dvizho.ks.ua>, 2012
# Rax Garfield (http://biokillaz.com/), 2012
# Rax Garfield <admin@dvizho.ks.ua>, 2012-2013
# rustam <rustam.tsurik@gmail.com>, 2013
+# rustam <rustam.tsurik@gmail.com>, 2013
+# StreamThreaedr <kvantarium@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-04-16 15:44+0000\n"
-"Last-Translator: rustam <rustam.tsurik@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
+"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Ukrainian (http://www.transifex.com/projects/p/audacious/"
"language/uk/)\n"
"Language: uk\n"
@@ -26,11 +29,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "КуĐșаю..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
@@ -38,129 +41,120 @@ msgstr[0] "Đ—ĐœĐ°ĐžÌ†ĐŽĐ”ĐœĐŸ %d Ń„Đ°ĐžÌ†Đ»"
msgstr[1] "Đ—ĐœĐ°ĐžÌ†ĐŽĐ”ĐœĐŸ %d Ń„Đ°ĐžÌ†Đ»Đž"
msgstr[2] "Đ—ĐœĐ°ĐžÌ†ĐŽĐ”ĐœĐŸ %d Ń„Đ°ĐžÌ†Đ»Ń–ĐČ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr "(ĐœĐ”ĐŽŃ–ĐčŃĐœĐžĐč UTF-8)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "ĐĐŸĐČĐžĐč ŃĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "ĐĐ” ĐČĐŽĐ°Đ»ĐŸŃŃ Ń–ĐŒĐżĐŸŃ€Ń‚ŃƒĐČато Winamp EQF-Ń„Đ°ĐžÌ†Đ» «%s»"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ĐŸĐ”Ń€Đ”Đčто ĐŽĐŸ ĐżĐŸĐżĐ”Ń€Đ”ĐŽĐœŃŒĐŸŃ— ĐŽĐŸŃ€Ń–Đ¶ĐșĐž у спОсĐșу"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "ĐŸĐŸŃ‡Đ°Ń‚Đž ĐżŃ€ĐŸĐłŃ€Đ°ĐČато ĐżĐŸŃ‚ĐŸŃ‡ĐœĐžĐč ŃĐżĐžŃĐŸĐș"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚Đž ĐČДрсію"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "ĐŸŃ€ĐžĐ·ŃƒĐżĐžĐœĐžŃ‚Đž ĐżĐŸŃ‚ĐŸŃ‡ĐœŃƒ ĐżŃ–ŃĐœŃŽ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Đ—ŃƒĐżĐžĐœĐžŃ‚Đž ĐżĐŸŃ‚ĐŸŃ‡ĐœŃƒ ĐżŃ–ŃĐœŃŽ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "ĐŸŃ€ĐžĐ·ŃƒĐżĐžĐœĐžŃ‚Đž, яĐșŃ‰ĐŸ Ń‰ĐŸ-ĐœĐ”Đ±ŃƒŃ‚ŃŒ ĐżŃ€ĐŸĐłŃ€Đ°Ń”Ń‚ŃŒŃŃ, ĐČ Ń–ĐœŃˆĐŸĐŒŃƒ ĐČОпаЎĐșу ĐżŃ€ĐŸĐłŃ€Đ°ĐČато"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ĐŸĐ”Ń€Đ”Đčто ĐŽĐŸ ĐœĐ°ŃŃ‚ŃƒĐżĐœĐŸŃ— ĐŽĐŸŃ€Ń–Đ¶ĐșĐž у спОсĐșу ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚Đž ĐŽŃ–Đ°Đ»ĐŸĐł ĐżĐ”Ń€Đ”Ń…ĐŸĐŽŃƒ ĐŽĐŸ фаĐčлу"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "Đ”ĐŸĐŽĐ°Ń‚Đž фаĐčлО ĐŽĐŸ спОсĐșу ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "Đ”ĐŸĐŽĐ°Ń‚Đž ĐœĐŸĐČі фаĐčлО ĐŽĐŸ Ń‚ĐžĐŒŃ‡Đ°ŃĐŸĐČĐŸĐłĐŸ спОсĐșу ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚Đž ĐłĐŸĐ»ĐŸĐČĐœĐ” ĐČіĐșĐœĐŸ"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "Headless-Ń€Đ”Đ¶ĐžĐŒ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr ""
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr ""
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ВоĐčто про Đ·Đ°ĐČĐ”Ń€ŃˆĐ”ĐœĐœŃ– ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "ĐŸĐŸĐșĐ°Đ·Đ°Ń‚Đž ĐČДрсію"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "ДруĐșуĐČато ĐżĐŸĐČŃ–ĐŽĐŸĐŒĐ»Đ”ĐœĐœŃ ĐżŃ€ĐŸ ĐœĐ°Đ»Đ°ĐłĐŸĐŽĐ¶Đ”ĐœĐœŃ"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "ЀАЙЛ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "— ĐČіЮтĐČĐŸŃ€ĐžŃ‚Đž ĐŒŃƒĐ»ŃŒŃ‚ĐžĐŒĐ”ĐŽŃ–ĐčĐœŃ– фаĐčлО"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"ĐĄĐżŃ€ĐŸĐ±ŃƒĐčŃ‚Đ” `%s --help' ĐŽĐ»Ń ĐŸŃ‚Ń€ĐžĐŒĐ°ĐœĐœŃ ĐŽĐŸĐșĐ»Đ°ĐŽĐœŃ–ŃˆĐŸĐłĐŸ ĐŸĐżĐžŃŃƒ.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "ĐĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ ĐŽĐ”ĐșĐŸĐŽĐ”Ń€Đ° ĐŽĐ»Ń %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "ĐĐ” ĐČĐŽĐ°Đ»ĐŸŃŃ ĐČіЮĐșрото %s."
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ %s %s: Ń€ĐŸĐ·ŃˆĐžŃ€Đ”ĐœĐœŃ фаĐčлу ĐœĐ” ĐżŃ–ĐŽŃ‚Ń€ĐžĐŒŃƒŃ”Ń‚ŃŒŃŃ."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "збДрДгтО"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ %s %s: Ń€ĐŸĐ·ŃˆĐžŃ€Đ”ĐœĐœŃ фаĐčлу ĐœĐ” ĐżŃ–ĐŽŃ‚Ń€ĐžĐŒŃƒŃ”Ń‚ŃŒŃŃ."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "ĐĐŸĐČĐžĐč ŃĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Зараз ĐČіЮтĐČĐŸŃ€ŃŽŃ”Ń‚ŃŒŃŃ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -168,412 +162,444 @@ msgstr ""
"ĐĄĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ ĐœĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČŃ–ĐŽŃĐŸŃ€Ń‚ŃƒĐČато, ĐżĐŸĐșĐž сĐșĐ°ĐœŃƒĐČĐ°ĐœĐœŃ ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœĐžŃ… троĐČає "
"Đ°Đ±ĐŸ ĐČĐžĐŒĐșĐœĐ”ĐœĐŸ."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "ĐŸŃ€ĐŸ %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s. ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "ЗĐČуĐș"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ĐœĐ”Ń€Đ”Đ¶Đ°"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "ХпОсĐșĐž ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "Đ†ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń ĐżŃ€ĐŸ ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†Ń–ŃŽ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ĐœĐŸĐŽŃƒĐ»Ń–"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Đ†ĐœŃˆĐ”"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Đ•Ń„Đ”Đșто"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "Đ’Ń–Đ·ŃƒĐ°Đ»Ń–Đ·Đ°Ń†Ń–Ń"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "ВхіЮ"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ĐąŃ€Đ°ĐœŃĐżĐŸŃ€Ń‚"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "ВоĐșĐŸĐœĐ°ĐČĐ”Ń†ŃŒ"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ĐĐ»ŃŒĐ±ĐŸĐŒ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Đ—Đ°ĐłĐŸĐ»ĐŸĐČĐŸĐș"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "ĐĐŸĐŒĐ”Ń€ ĐŽĐŸŃ€Ń–Đ¶ĐșĐž"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "ĐĄŃ‚ĐžĐ»ŃŒ"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "Đ†ĐŒ'я фаĐčлу"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "ĐšĐ»ŃŃ… ĐŽĐŸ фаĐčлу"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "Дата"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "РіĐș"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ĐšĐŸĐŒĐ”ĐœŃ‚Đ°Ń€"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ĐšĐŸĐŽĐ”Đș"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "ĐŻĐșість"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "ĐŃ–Ń‡ĐŸĐłĐŸ"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "ĐŃ€Đ°Đ±ŃŃŒĐșĐ°"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "БалтіĐčсьĐșі ĐŒĐŸĐČĐž"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "КотаĐčсьĐșĐ°"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Đ“Ń€Đ”Ń†ŃŒĐșĐ°"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ІĐČрот"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "ĐŻĐżĐŸĐœŃŃŒĐșĐ°"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "ĐšĐŸŃ€Đ”ĐčсьĐșĐ°"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "ĐŸĐŸĐ»ŃŒŃŃŒĐșĐ°"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Đ ĐŸŃŃ–ĐčсьĐșĐ°"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "йаĐčĐČĐ°ĐœŃŃŒĐșĐ°"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "ĐąŃƒŃ€Đ”Ń†ŃŒĐșĐ°"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Đ ŃƒŃ…ĐŸĐŒĐ° ĐșĐŸĐŒĐ°"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Đ Đ”Đ¶ĐžĐŒ Đ°Đ»ŃŒĐ±ĐŸĐŒŃƒ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "ĐœĐŸĐŽŃƒĐ»ŃŒ ĐČĐžĐČĐ”ĐŽĐ”ĐœĐœŃ:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>ĐŸĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đž ĐČĐžĐČĐŸĐŽŃƒ</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "ĐĐŒĐżĐ»Ń–Ń‚ŃƒĐŽĐœĐ° Ń€ĐŸĐ·Ń€ŃĐŽĐœŃ–ŃŃ‚ŃŒ:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Đ ĐŸĐ·ĐŒŃ–Ń€ Đ±ŃƒŃ„Đ”Ń€Đ°:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ĐŒŃ"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "М’яĐșĐ” ĐČіЮсіĐșĐ°ĐœĐœŃ"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "ĐšĐ”Ń€ŃƒĐČато ĐłŃƒŃ‡ĐœŃ–ŃŃ‚ŃŽ лОшД Audacious (ĐœĐ” рДĐșĐŸĐŒĐ”ĐœĐŽĐŸĐČĐ°ĐœĐŸ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Replay Gain</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ĐŁĐČŃ–ĐŒĐșĐœŃƒŃ‚Đž Replay Gain"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Đ Đ”Đ¶ĐžĐŒ Đ°Đ»ŃŒĐ±ĐŸĐŒŃƒ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "Đ—Đ°ĐżĐŸĐ±Ń–ĐłĐ°Ń‚Đž Đ·Ń€Ń–Đ·Đ°ĐœĐœŃŽ (рДĐșĐŸĐŒĐ”ĐœĐŽĐŸĐČĐ°ĐœĐŸ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>Đ Đ”ĐłŃƒĐ»ŃŽĐČато ріĐČĐœŃ–</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ĐŸŃ–ĐŽŃĐžĐ»ŃŽĐČато ĐČсі фаĐčлО:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "ЮБ"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ĐŸŃ–ĐŽŃĐžĐ»ŃŽĐČато ĐœĐ”ĐżĐŸĐ·ĐœĐ°Ń‡Đ”ĐœŃ– фаĐčлО:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "АЎрДса ĐżŃ€ĐŸĐșсі-сДрĐČДра:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "ĐŸĐŸŃ€Ń‚:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "Đ†ĐŒ'я ĐșĐŸŃ€ĐžŃŃ‚ŃƒĐČача:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "ĐŸĐ°Ń€ĐŸĐ»ŃŒ:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ĐšĐŸĐœŃ„Ń–ĐłŃƒŃ€Đ°Ń†Ń–Ń ĐżŃ€ĐŸĐșсі</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ВоĐșĐŸŃ€ĐžŃŃ‚ĐŸĐČуĐČато ĐżŃ€ĐŸĐșсі"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "ВоĐșĐŸŃ€ĐžŃŃ‚ĐŸĐČуĐČато Đ°ĐČŃ‚Đ”ĐœŃ‚ĐžŃ„Ń–Đșацію"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "АĐČŃ‚ĐŸĐČĐžĐ·ĐœĐ°Ń‡Đ”ĐœĐœŃ ĐșĐŸĐŽŃƒĐČĐ°ĐœĐœŃ ŃĐžĐŒĐČĐŸĐ»Ń–ĐČ:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ĐąĐžĐżĐŸĐČĐ” ĐșĐŸĐŽŃƒĐČĐ°ĐœĐœŃ ŃĐžĐŒĐČĐŸĐ»Ń–ĐČ:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>ĐŸĐŸĐČĐ”ĐŽŃ–ĐœĐșĐ°</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ĐŸŃ€ĐŸĐŽĐŸĐČжуĐČато ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ піЮ час запусĐșу"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Про ĐČĐžĐŽĐ°Đ»Đ”ĐœĐœŃ– ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸŃ— ĐżŃ–ŃĐœŃ– ĐČіЮтĐČĐŸŃ€ŃŽĐČато ĐœĐ°ŃŃ‚ŃƒĐżĐœŃƒ"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Сторато ŃĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ про ĐČіЮĐșротті фаĐčліĐČ"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ВіЮĐșроĐČато фаĐčлО у Ń‚ĐžĐŒŃ‡Đ°ŃĐŸĐČĐŸĐŒŃƒ спОсĐșу ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ĐĐ” Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ŃƒĐČато ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœŃ– ĐŽĐŸŃ€Ń–Đ¶ĐŸĐș ĐŽĐŸ ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>ĐĄŃƒĐŒŃ–ŃĐœŃ–ŃŃ‚ŃŒ</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "ВĐČажатО \\ (ĐŸĐ±Đ”Ń€ĐœĐ”ĐœŃƒ ĐșĐŸŃŃƒ росĐșу) Ń€ĐŸĐ·ĐŽŃ–Đ»ŃŽĐČĐ°Ń‡Đ”ĐŒ Ń‚Đ”Đș"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ОбĐșĐ»Đ°ĐŽĐžĐœĐșĐ° Đ°Đ»ŃŒĐ±ĐŸĐŒŃƒ</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "КуĐșато Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ Đ·Đ° Ń†ĐžĐŒĐž ŃĐ»ĐŸĐČĐ°ĐŒĐž (Ń€ĐŸĐ·ĐŽŃ–Đ»ŃŽĐčŃ‚Đ” ĐșĐŸĐŒĐ°ĐŒĐž):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "ĐŸŃ€ĐŸĐżŃƒŃĐșато Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ Đ·Đ° Đ· Ń†ĐžĐŒĐž ŃĐ»ĐŸĐČĐ°ĐŒĐž (Ń€ĐŸĐ·ĐŽŃ–Đ»ŃŽĐčŃ‚Đ” ĐșĐŸĐŒĐ°ĐŒĐž):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "КуĐșато Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ Đ·Đ° Ń–ĐŒĐ”ĐœĐ”ĐŒ фаĐčлу ĐŽĐŸŃ€Ń–Đ¶ĐșĐž"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "Đ Đ”ĐșурсоĐČĐœĐžĐč ĐżĐŸŃˆŃƒĐș"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "Đ“Đ»ĐžĐ±ĐžĐœĐ° ĐżĐŸŃˆŃƒĐșу:"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>ХплОĐČĐœĐ° Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "ĐŸĐŸĐșазуĐČато сплОĐČĐœŃƒ Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–ŃŽ"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "Đ—Đ°Ń‚Ń€ĐžĐŒĐșĐ° сплОĐČĐ°ĐœĐœŃ (ĐŽĐ”ŃŃŃ‚Ń– частĐșĐž сДĐșŃƒĐœĐŽĐž):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "ĐŸĐŸĐșазуĐČато ĐżŃ€ĐŸĐłŃ€Đ”Ń ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ ĐșĐŸĐŒĐżĐŸĐ·ĐžŃ†Ń–Ń—"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "НАЗВА"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "ВИКОНАВЕЩЬ - НАЗВА"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "ВИКОНАВЕЩЬ - АЛЬБОМ - НАЗВА"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "ВИКОНАВЕЩЬ - АЛЬБОМ - ДОРІЖКА. НАЗВА"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "ВИКОНАВЕЩЬ [ АЛЬБОМ ] ДОРІЖКА. НАЗВА"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "АЛЬБОМ - НАЗВА"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ĐšĐ°Ń‚Đ”ĐłĐŸŃ€Ń–Ń"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "Đ’Đ»Đ°ŃĐœŃ– ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Đ’Ń–ĐŽĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ ĐżŃ–ŃĐœŃ–</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "ĐŸĐŸĐșазуĐČато ĐœĐŸĐŒĐ”Ń€ ĐżŃ–ŃĐœŃ–"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "ĐŸĐŸĐșазуĐČато ĐœŃƒĐ»ŃŒĐŸĐČі старші Ń€ĐŸĐ·Ń€ŃĐŽĐž (02:00 Đ·Đ°ĐŒŃ–ŃŃ‚ŃŒ 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "ĐŸĐŸĐșазуĐČато Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–ŃŽ ĐżŃ€ĐŸ Ń„ĐŸŃ€ĐŒĐ°Ń‚ ĐœĐ°Đ·ĐČĐž"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Đ’Đ»Đ°ŃĐœĐžĐč Ń„ĐŸŃ€ĐŒĐ°Ń‚:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Đ€ĐŸŃ€ĐŒĐ°Ń‚ ĐœĐ°Đ·ĐČĐž:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "ĐœĐŸĐŽŃƒĐ»ŃŒ ĐČĐžĐČĐ”ĐŽĐ”ĐœĐœŃ:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ĐąŃ€Đ°ĐœŃĐżĐŸŃ€Ń‚"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "ВхіЮ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Đ•Ń„Đ”Đșто"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "Đ’Ń–Đ·ŃƒĐ°Đ»Ń–Đ·Đ°Ń†Ń–Ń"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Đ†ĐœŃˆĐ”"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Đ’Đ»Đ°ŃĐœĐžĐč Ń„ĐŸŃ€ĐŒĐ°Ń‚:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ĐĐ” ĐŒĐŸĐ¶Ńƒ стĐČĐŸŃ€ĐžŃ‚Đž Ń‚Đ”Đșу (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "ĐŸĐŸĐ·ĐžŃ†Ń–Ń— ĐœĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ĐŃ–Ń‡ĐŸĐłĐŸ ĐœĐ” ĐżŃ€ĐŸĐłŃ€Đ°Ń”Ń‚ŃŒŃŃ."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "ЗĐČуĐșĐŸĐČĐžĐč CD, ĐŽĐŸŃ€Ń–Đ¶ĐșĐ° %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "ĐœĐŸĐœĐŸ"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ĐĄŃ‚Đ”Ń€Đ”ĐŸ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -589,411 +615,422 @@ msgstr "АĐČŃ‚ĐŸŃ€Đž"
msgid "License"
msgstr "Đ›Ń–Ń†Đ”ĐœĐ·Ń–Ń"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "ĐŸŃ€ĐŸ Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"ĐąĐŸŃ‡ĐœĐŸ Đ·Đ°Đșрото %s? ĐŻĐșŃ‰ĐŸ таĐș, Ń‚ĐŸ ĐČсі Đ·ĐŒŃ–ĐœĐž Đ· ĐŒĐŸĐŒĐ”ĐœŃ‚Ńƒ Đ”ĐșŃĐżĐŸŃ€Ń‚Ńƒ спОсĐșу "
-"ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ Đ±ŃƒĐŽŃƒŃ‚ŃŒ ĐČŃ‚Ń€Đ°Ń‡Đ”ĐœŃ–."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ЗаĐșрото ŃĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "ĐĐ” ĐżĐŸĐșазуĐČато цД ĐżĐŸĐżĐ”Ń€Đ”ĐŽĐ¶Đ”ĐœĐœŃ _Đ·ĐœĐŸĐČу"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "ĐŸĐ”Ń€Đ”ĐčĐŒĐ”ĐœŃƒĐČато ŃĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "ĐŁĐČŃ–ĐŒĐșĐœŃƒŃ‚Đž"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Гц"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Гц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 ĐșГц"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 ĐșГц"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "18 ĐșГц"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "ЕĐșĐČалаĐčзДр"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr ""
"ĐŸĐŸĐżĐ”Ń€Đ”ĐŽĐœŃ”\n"
"ĐżŃ–ĐŽŃĐžĐ»Đ”ĐœĐœŃ"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "Đ”ĐŸŃ€Ń–Đ¶ĐșĐ°"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "броĐČĐ°Đ»Ń–ŃŃ‚ŃŒ"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classical"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">ĐœĐ”ĐČŃ–ĐŽĐŸĐŒĐŸ</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "ĐœĐ”Ń‚Đ°ĐŽĐ°ĐœŃ– ŃƒŃĐżŃ–ŃˆĐœĐŸ ĐŸĐœĐŸĐČĐ»Đ”ĐœŃ–"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "ĐĐ” ĐČĐŽĐ°Đ»ĐŸŃŃ ĐŸĐœĐŸĐČото ĐŒĐ”Ń‚Đ°ĐŽĐ°ĐœŃ–"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "Đ†ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń ĐżŃ€ĐŸ ĐŽĐŸŃ€Ń–Đ¶Đșу"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Đ€ĐŸŃ€ĐŒĐ°Ń‚:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">ĐŻĐșість:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">БітрДĐčт:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">ĐĐ°Đ·ĐČĐ°</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">ВоĐșĐŸĐœĐ°ĐČĐ”Ń†ŃŒ</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ĐĐ»ŃŒĐ±ĐŸĐŒ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ĐšĐŸĐŒĐ”ĐœŃ‚Đ°Ń€</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Đ–Đ°ĐœŃ€</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">РіĐș</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">ĐĐŸĐŒĐ”Ń€ ĐŽĐŸŃ€Ń–Đ¶ĐșĐž</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d Đșб/с"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "Đ†ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń ĐœĐ”ĐŽĐŸŃŃ‚ŃƒĐżĐœĐ° ĐŽĐ»Ń %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "ĐŸĐ”Ń€Đ”Đčто ĐŽĐŸ часу"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "ВĐČĐ”ĐŽŃ–Ń‚ŃŒ час (хĐČĐžĐ»ĐžĐœĐž:сДĐșŃƒĐœĐŽĐž):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "ĐŸĐ”Ń€Đ”Đ·Đ°ĐżĐžŃĐ°Ń‚Đž %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "ЕĐșŃĐżĐŸŃ€Ń‚ŃƒĐČато ŃĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Đ†ĐŒĐżĐŸŃ€Ń‚ŃƒĐČато ŃĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "ĐŸĐ”Ń€Đ”Đ·Đ°ĐżĐžŃĐ°Ń‚Đž %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "ĐšĐ”Ń€ŃƒĐČĐ°ĐœĐœŃ Ń‡Đ”Ń€ĐłĐŸŃŽ"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "ВіЮĐșрото фаĐčлО"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "Đ”ĐŸĐŽĐ°Ń‚Đž фаĐčлО"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "ЗаĐșрото ĐČіĐșĐœĐŸ ĐżŃ–ŃĐ»Ń ĐČіЮĐșроття"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ЗаĐșрото ĐČіĐșĐœĐŸ ĐżŃ–ŃĐ»Ń ĐŽĐŸĐŽĐ°ĐČĐ°ĐœĐœŃ"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_Đ”ĐŸĐŽĐ°Ń‚Đž ĐŽĐŸ спОсĐșу"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "В_ĐžĐ»ŃƒŃ‡ĐžŃ‚Đž Đ·Ń– спОсĐșу"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "ĐŸĐ”Ń€Đ”Đčто ĐŽĐŸ ĐŽĐŸŃ€Ń–Đ¶ĐșĐž"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Đ€Ń–Đ»ŃŒŃ‚Ń€: "
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Đ€Ń–Đ»ŃŒŃ‚Ń€: "
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Đ—Đ°ĐżĐ°ĐŒ'ятато"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "Очостото"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ЗаĐșрото ĐżŃ–ŃĐ»Ń ĐżĐ”Ń€Đ”Ń…ĐŸĐŽŃƒ"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "ĐœĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€ спОсĐșіĐČ"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Đ•Đ»Đ”ĐŒĐ”ĐœŃ‚Đž"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "ĐŸĐ”Ń€Đ”ĐčĐŒĐ”ĐœŃƒĐČато"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "ЗаĐșрото ĐČіĐșĐœĐŸ ĐżŃ–ŃĐ»Ń ĐČĐžĐ±ĐŸŃ€Ńƒ спОсĐșу"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "ВіЮĐșрото Đ°ĐŽŃ€Đ”ŃŃƒ"
@@ -1001,11 +1038,11 @@ msgstr "ВіЮĐșрото Đ°ĐŽŃ€Đ”ŃŃƒ"
msgid "Add URL"
msgstr "Đ”ĐŸĐŽĐ°Ń‚Đž Đ°ĐŽŃ€Đ”ŃŃƒ"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "ВĐČĐ”ĐŽŃ–Ń‚ŃŒ URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/vi.po b/po/vi.po
index 7ff5a3f..c5c12e7 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -4,13 +4,13 @@
#
# Translators:
# LĂȘ Trường An <truongan@linuxmail.org>, 2011, 2012
-# LĂȘ Trường An <truongan@linuxmail.org>, 2011, 2012
+# LĂȘ Trường An <truongan@linuxmail.org>, 2011-2012
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-03 20:17+0000\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 07:08+0000\n"
"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/audacious/"
"language/vi/)\n"
@@ -20,139 +20,130 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "Đang tÏm ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "%d táș­p tin Ä‘Æ°á»Łc tĂŹm tháș„y"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (UTF-8 khĂŽng hợp lệ)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "D.sĂĄch mới"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "Lỗi khi nháș­p táș­p tin EQF của Winamp '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr ""
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "KhĂŽng xáșŁ ngÆ°á»Łc trong danh sĂĄch"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr ""
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "BáșŻt đáș§u phĂĄt danh sĂĄch hiện táșĄi"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "Hiện phiĂȘn báșŁn"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "TáșĄm dừng bĂ i đang phĂĄt"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr ""
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "Dừng phåt"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr ""
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "TáșĄm dừng náșżu đang phĂĄt, phĂĄt trở láșĄi náșżu đang táșĄm dừng"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "KhÎng tự chuyển bài trong danh såch"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr ""
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "Hiện hộp thoáșĄi Chuyển đáșżn táș­p tin"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr ""
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr ""
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "ThĂȘm táș­p tin vĂ o danh sĂĄch"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "ThĂȘm táș­p tin mới vĂ o danh sĂĄch táșĄm thời"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr ""
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "Hiện cá»­a sổ chĂ­nh"
-#: src/audacious/main.c:242
-msgid "Headless mode"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
msgstr ""
-#: src/audacious/main.c:243
-msgid "Quit on playback stop"
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
msgstr ""
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "Hiện phiĂȘn báșŁn"
+#: src/audacious/main.c:83
+msgid "Quit on playback stop"
+msgstr ""
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "Hiện thĂŽng bĂĄo gụ lỗi"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "T.TIN..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr ""
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- phĂĄt táș­p tin đa phÆ°ÆĄng tiện"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr ""
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
msgstr ""
-"%s: %s\n"
-"CháșĄy `%s --help' để biáșżt thĂȘm thĂŽng tin.\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "KhĂŽng tĂŹm tháș„y bộ giáșŁi mĂŁ cho %s."
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr ""
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "KhĂŽng thể %s %s: táș­p tin khĂŽng Ä‘Æ°á»Łc hỗ trợ."
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "lÆ°u"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "náșĄp"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "KhĂŽng thể %s %s: táș­p tin khĂŽng Ä‘Æ°á»Łc hỗ trợ."
+msgid "Cannot load %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "D.sĂĄch mới"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr ""
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "Đang phåt"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
@@ -160,412 +151,444 @@ msgstr ""
"Danh sĂĄch khĂŽng thể Ä‘Æ°á»Łc sáșŻp xáșżp vĂŹ quĂĄ trĂŹnh quĂ©t thĂŽng tin đang diễn ra "
"(hoáș·c bị táșŻt)."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "Giới thiệu %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr ""
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "Thiáșżt láș­p %s"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr ""
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr ""
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr ""
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr ""
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr ""
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr ""
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "Âm thanh"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "MáșĄng"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "Danh sĂĄch"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "ThĂŽng tin bĂ i hĂĄt"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "TrĂŹnh cáșŻm"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "Tổng quĂĄt"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "Hiệu ứng"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "HĂŹnh áșŁnh áșŁo"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "Đáș§u vĂ o"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "Truyền táșŁi"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "Nghệ sĩ"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "Album"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "Tựa đề"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "BĂ i số"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "Thể loáșĄi"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "TĂȘn táș­p tin"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "Đường dáș«n táș­p tin"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "NgĂ y"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "Năm"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "BĂŹnh luáș­n"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "Bộ giáșŁi mĂŁ"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "Cháș„t lÆ°á»Łng"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "KhĂŽng"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "Tiáșżng áșą Ráș­p"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "Tiáșżng Ban-tic"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "Tiáșżng Trung"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "Tiáșżng Hy LáșĄp"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "Tiáșżng Do ThĂĄi"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "Tiáșżng Nháș­t"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "Tiáșżng HĂ n"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "Tiáșżng Ba Lan"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "Tiáșżng Nga"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "Tiáșżng Đài Loan"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "Tiáșżng Thổ NhÄ© Kỳ"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "Điểm chuyển động"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "Cháșż độ album"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr ""
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr ""
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "TrĂŹnh cáșŻm xuáș„t ra:"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>Thiáșżt láș­p xuáș„t Ăąm thanh</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "Chiều sùu ùm thanh:"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "Dung lÆ°á»Łng bộ đệm:"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "ms"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr ""
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "Sá»­ dỄng kiểm soĂĄt Ăąm lÆ°á»Łng của pháș§n mềm (khĂŽng nĂȘn)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>Tăng ùm</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "Báș­t cháșż độ tăng thĂȘm Ăąm lÆ°á»Łng"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "Cháșż độ album"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "TrĂĄnh tổn tháș„t (khuyĂȘn dĂčng)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>CĂĄc mức điều chỉnh</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "Khuáșżch đáșĄi mọi táș­p tin:"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "Khuáșżch đáșĄi táș­p tin chÆ°a gĂĄn tháș»:"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "TĂȘn mĂĄy chủ proxy:"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "Cổng proxy:"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "TĂȘn người dĂčng proxy:"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "Máș­t kháș©u proxy:"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>Cáș„u hĂŹnh Proxy</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "Cho phĂ©p dĂčng proxy"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "XĂĄc thá»±c với proxy"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "Tá»± động nháș­n diện báșŁng mĂŁ kĂ­ tá»± cho:"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "BáșŁng mĂŁ kĂ­ tá»± dá»± phĂČng:"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>HĂ nh động</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "Tiáșżp tỄc phĂĄt khi khởi động"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "Đáșżn bĂ i káșż tiáșżp khi xĂła bĂ i hiện táșĄi"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "Dọn sáșĄch danh sĂĄch khi mở cĂĄc táș­p tin"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "Mở cĂĄc táș­p tin trong một danh sĂĄch táșĄm"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "KhĂŽng náșĄp thĂŽng tin bĂ i hĂĄt cho đáșżn khi nĂł Ä‘Æ°á»Łc phĂĄt"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr ""
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr ""
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>áșąnh bĂŹa</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "TĂŹm áșŁnh cĂł tĂȘn chứa cĂĄc từ sau (cĂĄch báș±ng dáș„u pháș©y):"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "NgoáșĄi trừ tĂȘn áșŁnh chứa cĂĄc từ sau (cĂĄch báș±ng dáș„u pháș©y):"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "TĂŹm áșŁnh khớp với tĂȘn táș­p tin"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr ""
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr ""
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>Cá»­a sổ thĂŽng tin báș­t lĂȘn</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "Hiện ĂŽ chĂș thĂ­ch thĂŽng tin"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr ""
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr ""
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "TỰA ĐỀ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "NGHỆ SÄš - Tá»°A ĐỀ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "NGHỆ SÄš - ALBUM - Tá»°A"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "NGHỆ SÄš - ALBUM - BÀI. Tá»°A"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "NGHỆ SÄš [ALBUM ] - BÀI. Tá»°A"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ALBUM - TỰA ĐỀ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "Danh mỄc"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "TĂčy chọn"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>Hiển thị bĂ i hĂĄt</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "Hiện số thứ tá»± trong danh sĂĄch của bĂ i hĂĄt"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "Hiện số khĂŽng ở đáș§u (02:00 thay vĂŹ of 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "Hiện thĂŽng tin về định dáșĄng tá»±a đề"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "Chuỗi tĂčy chọn:"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "Định dáșĄng tá»±a đề:"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "TrĂŹnh cáșŻm xuáș„t ra:"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "Truyền táșŁi"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "Đáș§u vĂ o"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "Hiệu ứng"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "HĂŹnh áșŁnh áșŁo"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "Tổng quĂĄt"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "Chuỗi tĂčy chọn:"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "TĂčy chỉnh Audacious"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr ""
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "KhĂŽng thể táșĄo thÆ° mỄc (%s): %s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "KhĂŽng tĂŹm tháș„y vị trĂ­."
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "Hiện khĂŽng phĂĄt nháșĄc."
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "Đĩa nháșĄc, bĂ i %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "Mono"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "Stereo"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -579,409 +602,420 @@ msgstr "Đóng góp"
msgid "License"
msgstr "Giáș„y phĂ©p"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "Giới thiệu Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
+msgid "Do you want to permanently remove “%s”?"
msgstr ""
-"BáșĄn cĂł cháșŻc lĂ  muốn đóng %s? Náșżu báșĄn lĂ m váș­y, cĂĄc thay đổi kể từ khi danh "
-"sĂĄch Ä‘Æ°á»Łc xuáș„t ra sáșœ bị máș„t."
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "Đóng danh såch"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr ""
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "_KhĂŽng hiện tin nháșŻn nĂ y nữa"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr ""
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr ""
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr ""
+
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "Đổi tĂȘn danh sĂĄch"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "thiáșżt láș­p ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr ""
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "_Báș­t"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "Bộ cĂąn chỉnh Ăąm"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "Độ lớn"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "BĂ i hĂĄt"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "Độ dĂ i"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr ""
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "Acid Jazz"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "Acid Rock"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "Ambient"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "Bluegrass"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "Blues"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "Chamber Music"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "Classical"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "Country"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "Death Metal"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "Disco"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "Easy Listening"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "Folk"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "Funk"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "Gangsta Rap"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "Gospel"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "Grunge"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "Hard Rock"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "Heavy Metal"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "Hip-hop"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "Jazz"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "Jungle"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "Metal"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "New Age"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "New Wave"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "Noise"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "Pop"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "Punk Rock"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "Rap"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "Reggae"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "Rock"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "Rock and Roll"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "Rhythm and Blues"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "Soul"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "Swing"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "Techno"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "Trip-hop"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "Đã cáș­p nháș­t thĂŽng tin"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "KhĂŽng thể cáș­p nháș­t thĂŽng tin"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "ThĂŽng tin"
-
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">Định dáșĄng:</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">Cháș„t lÆ°á»Łng:</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">Tỉ lệ bit:</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">Tựa đề</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">Nghệ sĩ</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">Album</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">BĂŹnh luáș­n</span>"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr ""
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">Thể loáșĄi</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr ""
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">Năm</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr ""
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">Số thứ tự</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr ""
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/giĂąy"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr ""
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "KhÎng có thÎng tin của %s.\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr ""
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "Định mốc t.gian phĂĄt nháșĄc"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "Nháș­p thời gian (phĂșt:giĂąy):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "Ghi đù %s?"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr ""
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "Xuáș„t danh sĂĄch"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr ""
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "Nháș­p danh sĂĄch"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "Ghi đù %s?"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr ""
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "TrĂŹnh quáșŁn lĂ­ hĂ ng đợi"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "Mở táș­p tin"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr ""
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "ThĂȘm táș­p tin"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "Đóng hộp thoáșĄi khi Mở"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr ""
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "Đóng hộp thoáșĄi khi ThĂȘm"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr ""
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "_HĂ ng đợi"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "Bỏ khỏi _hĂ ng đợi"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "Chuyển đáșżn bĂ i hĂĄt"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "Bộ lọc:"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "_Bộ lọc:"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "Ghi nhớ"
-
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "_XĂła tráșŻng"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "Đóng khi chọn xong"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "QuáșŁn lĂœ danh sĂĄch"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "Số mỄc"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "Đổi _tĂȘn"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr ""
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr ""
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "Đóng hộp thoáșĄi khi _kĂ­ch hoáșĄt danh sĂĄch"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "Mở địa chỉ URL"
@@ -989,11 +1023,11 @@ msgstr "Mở địa chỉ URL"
msgid "Add URL"
msgstr "ThĂȘm URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "Nháș­p URL:"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index a2e5a67..b0c712f 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -4,15 +4,18 @@
#
# Translators:
# Chasye <chasye@gmail.com>, 2010
+# JeffBai <jeffbaichina@members.fsf.org>, 2014
# Luke <runningwaterpro@gmail.com>, 2012
-# zhangmin <zm1990s@gmail.com>, 2013
+# Luke <runningwaterpro@gmail.com>, 2012
+# min zhang <zm1990s@gmail.com>, 2013-2014
+# min zhang <zm1990s@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-02-04 14:11+0000\n"
-"Last-Translator: zhangmin <zm1990s@gmail.com>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-04 14:48+0000\n"
+"Last-Translator: min zhang <zm1990s@gmail.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/"
"audacious/language/zh_CN/)\n"
"Language: zh_CN\n"
@@ -21,550 +24,573 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "æœçŽąäž­..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "æ‰Ÿćˆ°%däžȘ文件"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (éžæł•çš„UTF-8猖码)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "新ć»șæ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "ćŻŒć…„Winamp EQFæ–‡ä»¶æ—¶ć‘ç”Ÿé”™èŻŻ '%s'"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "é”™èŻŻ"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "æ’­æ”Ÿć‰äž€éŠ–"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "星ç€șć‘œä»€èĄŒćžźćŠ©"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "æ’­æ”Ÿćœ“ć‰ćˆ—èĄš"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "星ç€șç‰ˆæœŹäżĄæŻ"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "æš‚ćœæ’­æ”Ÿ"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "ćŒ€ć§‹ć›žæ”Ÿ"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ćœæ­ąæ’­æ”Ÿ"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "æš‚ćœć›žæ”Ÿ"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
msgstr "æš‚ćœ/播攟"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "播攟䞋䞀銖"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ćœæ­ąć›žæ”Ÿ"
+
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "è·łć›žäžŠäž€æ›Č盼"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "星ç€șâ€œè·łćˆ°æ–‡ä»¶â€ćŻčèŻæĄ†"
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "è·łè‡łäž‹äž€æ›Č盼"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
msgstr "æ·»ćŠ æ–‡ä»¶ćˆ°æ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "æ·»ćŠ æ–‡ä»¶ćˆ°äžŽæ—¶æ’­æ”Ÿćˆ—èĄš"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "æ·»ćŠ æ–‡ä»¶ćˆ°äž€äžȘäžŽæ—¶æ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "星ç€șäž»ç•Œéą"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "æ— éŠ–æšĄćŒ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "星ç€șæ›Čç›źé€‰æ‹©çȘ—揣"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "äžćŻćŠšć›Ÿćœąç•Œéą"
+
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "ćœæ­ąæ’­æ”Ÿæ—¶é€€ć‡ș"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "星ç€șç‰ˆæœŹäżĄæŻ"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "蟓ć‡șè°ƒèŻ•äżĄæŻ"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "文件..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "æœȘ矄选éĄč: %s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- æ’­æ”Ÿć€šćȘ’䜓文件"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "æœȘ矄选éĄč: -%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-msgstr ""
-"%s: %s\n"
-"甹 `%s --help' ä»„èŽ·ć–æ›Žć€šäżĄæŻ.\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr "ç”šæł•: audacious [选éĄč] ... [文件] ...\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "æœȘ胜äžș %s æ‰Ÿćˆ°è§Łç ć™šă€‚"
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "%s äžèƒœæ‰“ćŒ€ă€‚"
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "æ— æł• %s %s: æœȘæ”ŻæŒæ–‡ä»¶ćŽçŒ€ă€‚"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "æ— æł•èœœć…„ %s: äžèą«æ”ŻæŒçš„æ–‡ä»¶ćŽçŒ€ă€‚"
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "保歘"
-
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "ćŠ èœœ"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "æ— æł• %s %s: æœȘæ”ŻæŒæ–‡ä»¶ćŽçŒ€ă€‚"
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "新ć»șæ’­æ”Ÿćˆ—èĄš"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "æ— æł•äżć­˜ %s: äžèą«æ”ŻæŒçš„æ–‡ä»¶ćŽçŒ€"
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "æ­Łćœšæ’­æ”Ÿ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr "ć› æ­Łćœšæ‰«ææ­Œæ›ČäżĄæŻ, æ’­æ”Ÿćˆ—èĄšæš‚æ—¶æ— æł•äżć­˜."
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "慳äșŽ %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "慳äșŽ"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s èźŸçœź"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "èźŸçœź"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "èźŸçœź (&S)"
+
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "ć–æ¶ˆ (&C)"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "慳闭 (&C)"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "èźŸçœź (&S)"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "慳äșŽ (&A)"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "插件... (&P)"
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "ć€–è§‚"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "音鱑"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "眑络"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "æ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "歌æ›ČäżĄæŻ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "插件"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "äž€èˆŹ"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "éŸłæ•ˆ"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "虚拟效果"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "èŸ“ć…„"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "䌠蟓"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "è‰șæœŻćź¶"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "䞓蟑"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "æ ‡éą˜"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "éŸłèœšćșć·"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "éŁŽæ Œ"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "æ–‡ä»¶ć"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "è·ŻćŸ„"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "时闎"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "ćčŽä»œ"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ć€‡æłš"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "猖码"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "éŸłèŽš"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "无"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "é˜żæ‹‰äŒŻèŻ­"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "æłąçœ—çš„èŻ­"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "æ±‰èŻ­"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ćžŒè…ŠèŻ­"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ćžŒäŒŻæ„èŻ­"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "æ—„èŻ­"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "éŸ©èŻ­"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "æłąć…°èŻ­"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "äż„èŻ­"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "ć°èŻ­"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "ćœŸè€łć…¶èŻ­"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "æ”źç‚č"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "äž“èŸ‘æšĄćŒ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ç•ŒéąèźŸçœź</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ç•Œéąæ’ä»¶: "
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "蟓ć‡ș插件"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>蟓ć‡șèźŸçœź</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "䜍深"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "猓ć†Čć€§ć°ïŒš"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "æŻ«ç§’"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "柔性ć‰Șćł°"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "äœżç”šèœŻéŸłé‡æŽ§ćˆ¶ïŒˆéžć»șèźźïŒ‰"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>ć›žæ”Ÿćąžç›Š</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ćŻç”šć›žæ”Ÿćąžç›Š"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "äž“èŸ‘æšĄćŒ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "éżć…çˆ†éŸłïŒˆæŽšèïŒ‰"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>调敎ćč…ćșŠ</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "ćș”ç”šćˆ°æ–‡ä»¶ïŒš"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "dB"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "ćș”ç”šćˆ°æ— æ ‡ç­Ÿæ–‡ä»¶ïŒš"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "äž»æœșćœ°ć€ïŒš"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "èżžæŽ„ç«ŻćŁïŒš"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "èź€èŻç”šæˆ·ïŒš"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "èź€èŻćŻ†ç ïŒš"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>ä»Łç†æœćŠĄć™šèźŸçœź</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ćŻç”šä»Łç†æœćŠĄć™š"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "ä»Łç†æœćŠĄć™šèŠæ±‚èź€èŻ"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "è‡ȘćŠšæŁ€æ”‹äž‹ćˆ—çŒ–ç ïŒš"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ć€‡ç”šć­—çŹŠçŒ–ç ïŒš"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>èĄŒäžș</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ćŻćŠšæ—¶æąć€æ’­æ”Ÿ"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
msgstr "歌æ›Čæ’­æ”Ÿäž­èą«ćˆ é™€ćˆ™æ’­æ”Ÿäž‹äž€éŠ–"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "æ‰“ćŒ€æ–‡ä»¶æ—¶æž…ç©șćœ“ć‰æ’­æ”Ÿćˆ—èĄš"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ćœšäžŽæ—¶æ’­æ”Ÿćˆ—èĄšæ‰“ćŒ€æ–‡ä»¶"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "æœȘæ’­æ”Ÿæ—¶ćˆ‡ć‹żćŠ èœœć…ƒæ•°æź"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>ć…Œćźč性</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "èŻŽæ˜Ž \\(ćæ–œæ )䜜äžș侀äžȘ文件ć€č戆隔笩"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>äž“èŸ‘ć°éą</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "æœçŽąćŒčé…ä»„äž‹èŻèŻ­çš„ć›Ÿç‰‡(ç”šé€—ć·ćˆ†éš”)"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "排陀ćŒčé…ä»„äž‹èŻèŻ­çš„ć›Ÿç‰‡(ç”šé€—ć·ćˆ†éš”)"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "æœçŽąćŒč配歌æ›Čæ–‡ä»¶ćçš„ć›Ÿç‰‡"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "é€’ćœ’æœçŽą"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "æœçŽąæ·±ćșŠïŒš"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>ćŒčć‡șäżĄæŻ</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "星ç€șćŒčć‡șäżĄæŻ"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "ćŒčć‡șć»¶èżŸ (捁戆äč‹äž€ç§’):"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "ćœæ­ąæ’­æ”Ÿ"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "æ ‡éą˜"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "è‰șæœŻćź¶ - æ ‡éą˜"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "è‰șæœŻćź¶ - 䞓蟑 - æ ‡éą˜"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "è‰șæœŻćź¶ - 䞓蟑 - æ›Čç›źć·. æ ‡éą˜"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "è‰șæœŻćź¶ [䞓蟑] - æ›Čç›źć·. æ ‡éą˜"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "䞓蟑 - æ ‡éą˜"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "ćˆ†ç±»"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "è‡Ș漚äč‰"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>歌æ›Č星ç€ș</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "星ç€ș歌æ›Čćșć·"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "星ç€șæ—¶é—Žć‰çš„0ïŒˆćŠ‚ïŒšæ˜Ÿç€ș2:00äžș02:00"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "æ ‡éą˜æ˜Ÿç€șæ ŒćŒ"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "è‡Șćźšć­—çŹŠïŒš"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "æ ‡éą˜æ ·ćŒïŒš"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "蟓ć‡ș插件"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "䌠蟓"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "èŸ“ć…„"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "éŸłæ•ˆ"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "虚拟效果"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "äž€èˆŹ"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "è‡Șćźšć­—çŹŠïŒš"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious驖选éĄč"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Audacious èźŸçœź"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "æ— æł•ćˆ›ć»șç›źćœ•(%s)%s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "äœçœźäžć­˜ćœš"
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "暂æœȘ播攟"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "音鱑CD, éŸłèœš %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "捕棰道"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "ç«‹äœ“ćŁ°"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -578,407 +604,420 @@ msgstr "ç‰čćˆ«éžŁè°ą"
msgid "License"
msgstr "èźžćŻ"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "慳äșŽAudacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr "慳闭”%sâ€œć°†äŒšäœżæ‰€æœ‰ć·Čæ”čć˜çš„èźŸçœźäžąć€±ïŒŒèŠç»§ç»­ć—ïŒŸ"
+msgid "Do you want to permanently remove “%s”?"
+msgstr "äœ ćžŒæœ›ćźŒć…šćˆ é™€ \"%s\" ć—ïŒŸ"
+
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "移陀 &R)"
+
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ç§»é™€æ’­æ”Ÿćˆ—èĄš"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "ć…łé—­æ’­æ”Ÿćˆ—èĄš"
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "äžć†èŻąé—ź (&D)"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "ćˆ‡ć‹żć†æç€ș(_D)"
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "é‡ć‘œć(_R)"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "é‡ć‘œćæ’­æ”Ÿćˆ—èĄš"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "èźŸçœź..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "äœ ćžŒæœ›ćŠ‚äœ•ç§°ć‘Œèż™äžȘæ’­æ”Ÿćˆ—èĄšïŒŸ"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "搯甹(_E)"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "ćŠ èœœ"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "ć‡èĄĄć™š"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ć‰çœźæ”Ÿć€§ć™š"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "éŸłèœš"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "长ćșŠ"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "æ ŒćŒ: "
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "éŸłèŽš: "
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "æŻ”ç‰č率: "
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "èż·ćč»çˆ”棫äč"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "酞性摇滚"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "æ°›ć›ŽéŸłäč"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "æŻ”æłąæ™źçˆ”ćŁ«äč"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "è“è‰éŸłäč"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "蓝调"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ćź€ć†…éŸłäč"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
-msgstr "ć€ć…žéŸłäč"
+msgstr "ć€ć…ž"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "äčĄæ‘éŸłäč"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "æ­»äșĄé‡‘汞"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "èżȘæ–Żç§‘"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "èœ»éŸłäč"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "æ°‘è°Ł"
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "æ”Ÿć…‹"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "ćŒȘćžźèŻŽć”±"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "穏音音äč"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "ćžƒćœŸæ‘‡æ»š"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "çĄŹæ‘‡æ»š"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "é‡é‡‘ć±ž"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ć˜»ć“ˆéŸłäč"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr " æ”©ćź€èˆžæ›Č"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "爔棫"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "äž›æž—éŸłäč"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "金汞"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "æ–°äž–çșȘ"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "新æ”Șæœź"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ć™Ș音音äč"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "æ”èĄŒ"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
-msgstr "æœ‹ćźąæ‘‡æ»šäč"
+msgstr "æœ‹ć…‹æ‘‡æ»šäč"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "èŻŽć”±"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
-msgstr "é›·éŹŒ"
+msgstr "雷盖舞æ›Č"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "摇滚"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "摇滚äč"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "èŠ‚ć„ćžƒéČæ–ŻéŸłäč"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "æ–ŻćĄ"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "灔魂äč"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr " 摇摆äč"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
-msgstr " 科技舞æ›Č"
+msgstr " ç””ć­èˆžæ›Č"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "焞枞舞æ›Č"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "æ•°æźæ›Žæ–°æˆćŠŸ"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "æ•°æźæ›Žæ–°ć€±èŽ„"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "äżć­˜æˆćŠŸ"
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "éŸłèœšäżĄæŻ"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "保歘ć‡ș错"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">æ ŒćŒïŒš</span>"
-
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">éŸłèŽšïŒš</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">æŻ”çŽ‡ïŒš</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">æ ‡éą˜</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">è‰șæœŻćź¶</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">䞓蟑</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">æłšé‡Š</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">攁掟</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">ćčŽä»œ</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "éŸłèœšćșć·"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">éŸłèœšćșć·</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "保歘 (&S)"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "侍揯甹"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "æœȘæ‰Ÿćˆ°äžŽâ€˜%sâ€™ç›žć…łäżĄæŻă€‚\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "è·łè‡ł (&J)"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
msgstr "è·łćˆ°æ—¶é—Ž"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "èŸ“ć…„æ—¶é—Ž (戆:秒):"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "æ˜ŻćŠèŠ†ç›– %s"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "芆盖(O)"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "çĄźćźšèŠ†ç›–"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "ćŻŒć‡șæ’­æ”Ÿćˆ—èĄš"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "ćŻŒć‡ș(E)"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ćŻŒć…„æ’­æ”Ÿćˆ—èĄš"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "æ˜ŻćŠèŠ†ç›– %s"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "ćŻŒć…„(I)"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "队戗缡理晹"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "ä»Žé˜Ÿćˆ—ç§»é™€ (&U)"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "æ‰“ćŒ€æ–‡ä»¶"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "æ‰“ćŒ€ (&O)"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "æ‰“ćŒ€æ—¶ć…łé—­ćŻčèŻæĄ† (&D)"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "æ·»ćŠ æ–‡ä»¶"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "æ‰“ćŒ€æ—¶ć…łé—­ćŻčèŻæĄ†"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "æ·»ćŠ  (&A)"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "æ·»ćŠ æ—¶ć…łé—­ćŻčèŻæĄ†"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "æ·»ćŠ æ—¶ć…łé—­ćŻčèŻæĄ† (&D)"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "ć…„é˜Ÿ(_Q)"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "ć‡ș戗(_q)"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
msgstr "è·łćˆ°æ­Œæ›Č"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "èż‡æ»€ć™šïŒš"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "èż‡æ»€ć™š(_F)"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "èź°äœ"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "è·łèœŹæ—¶ć…łé—­ (&C)"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "æž…ç©ș(_r)"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "è·łèœŹæ—¶ć…łé—­"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "æ’­æ”Ÿćˆ—èĄšçźĄç†ć™š"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "æĄç›ź"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "é‡ć‘œć(_R)"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "新ć»ș (&N)"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "é‡ć‘œć (&A)"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "播攟 (&P)"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "æż€æŽ»æ’­æ”Ÿćˆ—èĄšæ—¶ć…łé—­ćŻčèŻæĄ†(_C)"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "æ‰“ćŒ€URL"
@@ -986,11 +1025,11 @@ msgstr "æ‰“ćŒ€URL"
msgid "Add URL"
msgstr "æ·»ćŠ URL"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "èŸ“ć…„ćœ°ć€"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 7387875..f7c6e34 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -5,13 +5,14 @@
# Translators:
# Ruei-Yuan Lu <RueiYuan.Lu@gmail.com>, 2011
# Wai Hon Law <whhone@gmail.com>, 2013
+# Wai Hon Law <whhone@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: Audacious\n"
"Report-Msgid-Bugs-To: http://redmine.audacious-media-player.org/\n"
-"POT-Creation-Date: 2014-01-03 15:24+0100\n"
-"PO-Revision-Date: 2013-04-15 16:48+0000\n"
-"Last-Translator: Radioactiveman <thomas-lange2@gmx.de>\n"
+"POT-Creation-Date: 2014-04-21 22:48+0200\n"
+"PO-Revision-Date: 2014-04-06 06:19+0000\n"
+"Last-Translator: 瑞慃 盧 <rueiyuan.lu@gmail.com>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/"
"audacious/language/zh_TW/)\n"
"Language: zh_TW\n"
@@ -20,550 +21,573 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: src/audacious/adder.c:74
+#: src/audacious/adder.c:76
msgid "Searching ..."
msgstr "æœć°‹äž­ ..."
-#: src/audacious/adder.c:102
+#: src/audacious/adder.c:104
#, c-format
msgid "%d file found"
msgid_plural "%d files found"
msgstr[0] "æ‰Ÿćˆ° %d 怋æȘ”æĄˆ"
-#: src/audacious/chardet.c:38
-msgid " (invalid UTF-8)"
-msgstr " (ç„Ąæ•ˆçš„ UTF-8 歗äžČ)"
+#: src/audacious/adder.c:386 src/audacious/playlist-new.c:97
+msgid "New Playlist"
+msgstr "æ–°æ’­æ”Ÿæž…ć–ź"
-#: src/audacious/equalizer_preset.c:171
-#, c-format
-msgid "Error importing Winamp EQF file '%s'"
-msgstr "ćŒŻć…„ Winamp EQF æȘ”æ™‚ç™Œç”ŸéŒŻèȘ€ă€Œ%s」"
+#: src/audacious/interface.c:93
+msgid "Error"
+msgstr "錯èȘ€"
-#: src/audacious/main.c:232
-msgid "Skip backwards in playlist"
-msgstr "ćˆ‡æ›è‡łæ’­æ”Ÿæž…ć–źçš„äžŠäž€ć€‹"
+#: src/audacious/main.c:70
+msgid "Show command-line help"
+msgstr "饯ç€șć‘œä»€ćˆ—çš„æ±‚ćŠ©èšŠæŻ"
-#: src/audacious/main.c:233
-msgid "Start playing current playlist"
-msgstr "é–‹ć§‹æ’­æ”Ÿç›źć‰çš„æ’­æ”Ÿæž…ć–ź"
+#: src/audacious/main.c:71
+msgid "Show version"
+msgstr "饯ç€șç‰ˆæœŹèł‡èšŠ"
-#: src/audacious/main.c:234
-msgid "Pause current song"
-msgstr "æš«ćœæ’­æ”Ÿç›źć‰æ­Œæ›Č"
+#: src/audacious/main.c:72
+msgid "Start playback"
+msgstr "é–‹ć§‹æ’­æ”Ÿ"
-#: src/audacious/main.c:235
-msgid "Stop current song"
-msgstr "ćœæ­ąæ’­æ”Ÿç›źć‰æ­Œæ›Č"
+#: src/audacious/main.c:73
+msgid "Pause playback"
+msgstr "æš«ćœæ’­æ”Ÿ"
-#: src/audacious/main.c:236
+#: src/audacious/main.c:74
msgid "Pause if playing, play otherwise"
-msgstr "è‹„æ’­æ”Ÿäž­ć‰‡æš«ćœïŒŒćŠć‰‡çčŒçșŒæ’­æ”Ÿ"
+msgstr "ćœšæ’­æ”Ÿèˆ‡æš«ćœäč‹é–“çš„ćˆ‡æ›"
-#: src/audacious/main.c:237
-msgid "Skip forward in playlist"
-msgstr "ćˆ‡æ›è‡łæ’­æ”Ÿæž…ć–źçš„äž‹äž€ć€‹"
+#: src/audacious/main.c:75
+msgid "Stop playback"
+msgstr "ćœæ­ąæ’­æ”Ÿ"
-#: src/audacious/main.c:238
-msgid "Display Jump to File dialog"
-msgstr "饯ç€șè·łè‡łæȘ”æĄˆć°è©±èŠ–çȘ—"
+#: src/audacious/main.c:76
+msgid "Skip to previous song"
+msgstr "è·łćˆ°äžŠäž€éŠ–æ­Œæ›Č"
-#: src/audacious/main.c:239
+#: src/audacious/main.c:77
+msgid "Skip to next song"
+msgstr "è·łćˆ°äž‹äž€éŠ–æ­Œæ›Č"
+
+#: src/audacious/main.c:78
msgid "Add files to the playlist"
-msgstr "抠慄æȘ”æĄˆè‡łæ’­æ”Ÿæž…ć–ź"
+msgstr "抠慄æȘ”æĄˆćˆ°æ’­æ”Ÿæž…ć–ź"
-#: src/audacious/main.c:240
-msgid "Add new files to a temporary playlist"
-msgstr "抠慄æȘ”æĄˆè‡łæš«ć­˜æ’­æ”Ÿæž…ć–ź"
+#: src/audacious/main.c:79
+msgid "Add files to a temporary playlist"
+msgstr "抠慄æȘ”æĄˆćˆ°æš«ć­˜çš„æ’­æ”Ÿæž…ć–ź"
-#: src/audacious/main.c:241
+#: src/audacious/main.c:80
msgid "Display the main window"
msgstr "饯ç€ș䞻芖çȘ—"
-#: src/audacious/main.c:242
-msgid "Headless mode"
-msgstr "éš±ćœąæšĄćŒ"
+#: src/audacious/main.c:81
+msgid "Display the jump-to-song window"
+msgstr "饯ç€șè·łèœ‰èŠ–çȘ—"
+
+#: src/audacious/main.c:82
+msgid "Start without a graphical interface"
+msgstr "ä»„éš±ćŒżæšĄćŒć•Ÿć‹•"
-#: src/audacious/main.c:243
+#: src/audacious/main.c:83
msgid "Quit on playback stop"
msgstr "æ’­æ”Ÿćœæ­ąćŸŒé›ąé–‹"
-#: src/audacious/main.c:244
-msgid "Show version"
-msgstr "饯ç€șç‰ˆæœŹèł‡èšŠ"
-
-#: src/audacious/main.c:245
+#: src/audacious/main.c:84
msgid "Print debugging messages"
msgstr "饯ç€șé™€éŒŻèšŠæŻ"
-#: src/audacious/main.c:246
-msgid "FILE..."
-msgstr "æȘ”æĄˆ..."
+#: src/audacious/main.c:269
+#, c-format
+msgid "Unknown option: %s\n"
+msgstr "æœȘ矄的遞項%s\n"
-#: src/audacious/main.c:258
-msgid "- play multimedia files"
-msgstr "- æ’­æ”Ÿć€šćȘ’é«”æȘ”æĄˆ"
+#: src/audacious/main.c:291
+#, c-format
+msgid "Unknown option: -%c\n"
+msgstr "æœȘ矄的遞項-%c\n"
-#: src/audacious/main.c:265
+#: src/audacious/main.c:314
#, c-format
msgid ""
-"%s: %s\n"
-"Try `%s --help' for more information.\n"
-msgstr ""
-"%s%s\n"
-"è«‹ć˜—è©Šç”šă€Œ%s --helpă€ć–ćŸ—æ›Žć€šèł‡èšŠă€‚\n"
+"Usage: audacious [OPTION] ... [FILE] ...\n"
+"\n"
+msgstr "äœżç”šæ–čćŒïŒšaudacious [遾項] ... [æȘ”æĄˆ] ...\n"
-#: src/audacious/main.c:565
+#: src/audacious/main.c:601
msgid "Audacious"
msgstr "Audacious"
-#: src/audacious/playback.c:379
+#: src/audacious/playback.c:354
#, c-format
msgid "No decoder found for %s."
msgstr "æ‰Ÿäžćˆ°é©ç”šæ–Œ %s çš„è§ŁçąŒć™šă€‚"
-#: src/audacious/playback.c:417
+#: src/audacious/playback.c:387
#, c-format
msgid "%s could not be opened."
msgstr "ç„Ąæł•é–‹ć•Ÿ %s。"
-#: src/audacious/playlist-files.c:50
+#: src/audacious/playlist-files.c:95
#, c-format
-msgid "Cannot %s %s: unsupported file extension."
-msgstr "ç„Ąæł•%s %sæœȘæ”ŻæŽçš„ć‰ŻæȘ”ćă€‚"
-
-#: src/audacious/playlist-files.c:51
-msgid "save"
-msgstr "ć„Č歘"
+msgid "Cannot load %s: unsupported file extension."
+msgstr "ç„Ąæł•èŒ‰ć…„ă€Œ%să€ïŒšæœȘæ”ŻæŽçš„ć‰ŻæȘ”ćă€‚"
-#: src/audacious/playlist-files.c:51
-msgid "load"
-msgstr "èŒ‰ć…„"
-
-#: src/audacious/playlist-files.c:133
-#, fuzzy, c-format
-msgid "Cannot save %s: plugin does not support saving."
-msgstr "ç„Ąæł•%s %sæœȘæ”ŻæŽçš„ć‰ŻæȘ”ćă€‚"
-
-#: src/audacious/playlist-new.c:96
-msgid "New Playlist"
-msgstr "æ–°æ’­æ”Ÿæž…ć–ź"
+#: src/audacious/playlist-files.c:185
+#, c-format
+msgid "Cannot save %s: unsupported file extension."
+msgstr "ç„Ąæł•ć„Č歘「%să€ïŒšæœȘæ”ŻæŽçš„ć‰ŻæȘ”ćă€‚"
-#: src/audacious/playlist-new.c:97
+#: src/audacious/playlist-new.c:98
msgid "Now Playing"
msgstr "æ­Łćœšæ’­æ”Ÿ"
-#: src/audacious/playlist-new.c:1670
+#: src/audacious/playlist-new.c:1656
msgid ""
"The playlist cannot be sorted because metadata scanning is still in progress "
"(or has been disabled)."
msgstr "曠ç‚șæ­Łćœšé€ČèĄŒè©źé‡‹èł‡æ–™çš„æŽƒæïŒŒç„Ąæł•ć°æ’­æ”Ÿæž…ć–źé€ČèĄŒæŽ’ćșă€‚(或者ć·Čç¶“èą«é—œé–‰)"
-#: src/audacious/plugin-preferences.c:54
-#, c-format
-msgid "About %s"
-msgstr "關斌 %s"
+#: src/audacious/plugin-preferences.c:55
+msgid "About"
+msgstr "關斌"
-#: src/audacious/plugin-preferences.c:92
-#, c-format
-msgid "%s Settings"
-msgstr "%s èš­ćźšć€Œ"
+#: src/audacious/plugin-preferences.c:94
+msgid "Settings"
+msgstr "èš­ćźš"
+
+#: src/audacious/plugin-preferences.c:99
+msgid "_Set"
+msgstr "愗甚(_S)"
-#: src/audacious/ui_preferences.c:67
+#: src/audacious/plugin-preferences.c:100 src/libaudgui/confirm.c:57
+#: src/libaudgui/confirm.c:90 src/libaudgui/jump-to-time.c:49
+#: src/libaudgui/playlists.c:89 src/libaudgui/playlists.c:142
+#: src/libaudgui/url-opener.c:71
+msgid "_Cancel"
+msgstr "ć–æ¶ˆ(_C)"
+
+#: src/audacious/plugin-preferences.c:106 src/audacious/ui_preferences.c:763
+#: src/libaudgui/infowin.c:370 src/libaudgui/queue-manager.c:189
+#: src/libaudgui/ui_fileopener.c:127 src/libaudgui/ui_jumptotrack.c:312
+#: src/libaudgui/util.c:161
+msgid "_Close"
+msgstr "關閉(_C)"
+
+#: src/audacious/plugin-view.c:242 src/audacious/ui_preferences.c:641
+msgid "_Settings"
+msgstr "èš­ćźš(_S)"
+
+#: src/audacious/plugin-view.c:250 src/audacious/ui_preferences.c:652
+msgid "_About"
+msgstr "關斌(_A)"
+
+#: src/audacious/ui_plugin_menu.c:37
+msgid "_Plugins ..."
+msgstr "ć€–æŽ›(_P)"
+
+#: src/audacious/ui_preferences.c:82
+msgid "Appearance"
+msgstr "ć€–è§€"
+
+#: src/audacious/ui_preferences.c:83
msgid "Audio"
msgstr "éŸłèšŠ"
-#: src/audacious/ui_preferences.c:68
+#: src/audacious/ui_preferences.c:84
msgid "Network"
msgstr "ç¶Čè·Ż"
-#: src/audacious/ui_preferences.c:69 src/audacious/ui_preferences.c:1203
+#: src/audacious/ui_preferences.c:85 src/audacious/ui_preferences.c:95
msgid "Playlist"
msgstr "æ’­æ”Ÿæž…ć–ź"
-#: src/audacious/ui_preferences.c:70
+#: src/audacious/ui_preferences.c:86 src/libaudgui/infowin.c:299
msgid "Song Info"
msgstr "歌æ›Čèł‡èšŠ"
-#: src/audacious/ui_preferences.c:71
+#: src/audacious/ui_preferences.c:87
msgid "Plugins"
msgstr "ć€–æŽ›"
-#: src/audacious/ui_preferences.c:77 src/libaudgui/infopopup.c:150
+#: src/audacious/ui_preferences.c:91
+msgid "General"
+msgstr "äž€èˆŹ"
+
+#: src/audacious/ui_preferences.c:92
+msgid "Effect"
+msgstr "ç‰č效"
+
+#: src/audacious/ui_preferences.c:93
+msgid "Visualization"
+msgstr "芖èŠșç‰č效"
+
+#: src/audacious/ui_preferences.c:94
+msgid "Input"
+msgstr "èŒžć…„"
+
+#: src/audacious/ui_preferences.c:96
+msgid "Transport"
+msgstr "ć‚łèŒž"
+
+#: src/audacious/ui_preferences.c:100 src/libaudgui/infopopup.c:151
+#: src/libaudgui/infowin.c:343
msgid "Artist"
msgstr "藝äșș"
-#: src/audacious/ui_preferences.c:78 src/libaudgui/infopopup.c:151
+#: src/audacious/ui_preferences.c:101 src/libaudgui/infopopup.c:152
+#: src/libaudgui/infowin.c:346
msgid "Album"
msgstr "ć°ˆèŒŻ"
-#: src/audacious/ui_preferences.c:79 src/libaudgui/infopopup.c:149
-#: src/libaudgui/ui_playlist_manager.c:286
+#: src/audacious/ui_preferences.c:102 src/libaudgui/infopopup.c:150
+#: src/libaudgui/infowin.c:340 src/libaudgui/ui_playlist_manager.c:235
msgid "Title"
msgstr "æš™éĄŒ"
-#: src/audacious/ui_preferences.c:80
+#: src/audacious/ui_preferences.c:103
msgid "Tracknumber"
msgstr "éŸłè»Œç·šè™Ÿ"
-#: src/audacious/ui_preferences.c:81 src/libaudgui/infopopup.c:152
+#: src/audacious/ui_preferences.c:104 src/libaudgui/infopopup.c:153
+#: src/libaudgui/infowin.c:352
msgid "Genre"
msgstr "類枋"
-#: src/audacious/ui_preferences.c:82
+#: src/audacious/ui_preferences.c:105
msgid "Filename"
msgstr "æȘ”æĄˆćçš±"
-#: src/audacious/ui_preferences.c:83
+#: src/audacious/ui_preferences.c:106
msgid "Filepath"
msgstr "æȘ”æĄˆè·ŻćŸ‘"
-#: src/audacious/ui_preferences.c:84
+#: src/audacious/ui_preferences.c:107
msgid "Date"
msgstr "旄期"
-#: src/audacious/ui_preferences.c:85 src/libaudgui/infopopup.c:153
+#: src/audacious/ui_preferences.c:108 src/libaudgui/infopopup.c:154
+#: src/libaudgui/infowin.c:356
msgid "Year"
msgstr "ćčŽä»œ"
-#: src/audacious/ui_preferences.c:86
+#: src/audacious/ui_preferences.c:109 src/libaudgui/infowin.c:349
msgid "Comment"
msgstr "ć‚™èš»"
-#: src/audacious/ui_preferences.c:87
+#: src/audacious/ui_preferences.c:110
msgid "Codec"
msgstr "ç·šè§ŁçąŒć™š"
-#: src/audacious/ui_preferences.c:88
+#: src/audacious/ui_preferences.c:111
msgid "Quality"
msgstr "擁èłȘ"
-#: src/audacious/ui_preferences.c:94
+#: src/audacious/ui_preferences.c:116
msgid "None"
msgstr "無"
-#: src/audacious/ui_preferences.c:95
+#: src/audacious/ui_preferences.c:117
msgid "Arabic"
msgstr "é˜żæ‹‰äŒŻèȘž"
-#: src/audacious/ui_preferences.c:96
+#: src/audacious/ui_preferences.c:118
msgid "Baltic"
msgstr "æłąçŸ…çš„æ”·"
-#: src/audacious/ui_preferences.c:97
+#: src/audacious/ui_preferences.c:119
msgid "Chinese"
msgstr "äž­æ–‡"
-#: src/audacious/ui_preferences.c:98
+#: src/audacious/ui_preferences.c:120
msgid "Greek"
msgstr "ćžŒè‡˜èȘž"
-#: src/audacious/ui_preferences.c:99
+#: src/audacious/ui_preferences.c:121
msgid "Hebrew"
msgstr "ćžŒäŒŻäŸ†èȘž"
-#: src/audacious/ui_preferences.c:100
+#: src/audacious/ui_preferences.c:122
msgid "Japanese"
msgstr "æ—„æœŹèȘž"
-#: src/audacious/ui_preferences.c:101
+#: src/audacious/ui_preferences.c:123
msgid "Korean"
msgstr "韓文"
-#: src/audacious/ui_preferences.c:102
+#: src/audacious/ui_preferences.c:124
msgid "Polish"
msgstr "æłąè˜­èȘž"
-#: src/audacious/ui_preferences.c:103
+#: src/audacious/ui_preferences.c:125
msgid "Russian"
msgstr "俄èȘž"
-#: src/audacious/ui_preferences.c:104
+#: src/audacious/ui_preferences.c:126
msgid "Taiwanese"
msgstr "æ­Łé«”äž­æ–‡"
-#: src/audacious/ui_preferences.c:105
+#: src/audacious/ui_preferences.c:127
msgid "Turkish"
msgstr "ćœŸè€łć…¶èȘž"
-#: src/audacious/ui_preferences.c:112
+#: src/audacious/ui_preferences.c:135
msgid "Floating point"
msgstr "æ”źé»žæ•ž"
-#: src/audacious/ui_preferences.c:119
-msgid "Album mode"
-msgstr "ć°ˆèŒŻæšĄćŒ"
+#: src/audacious/ui_preferences.c:147
+msgid "<b>Interface Settings</b>"
+msgstr "<b>ä»‹éąèš­ćźš</b>"
-#: src/audacious/ui_preferences.c:122
+#: src/audacious/ui_preferences.c:148
+msgid "Interface plugin:"
+msgstr "ä»‹éąć€–æŽ›ïŒš"
+
+#: src/audacious/ui_preferences.c:165
+msgid "Output plugin:"
+msgstr "茞ć‡șć€–æŽ›ïŒš"
+
+#: src/audacious/ui_preferences.c:172
msgid "<b>Output Settings</b>"
msgstr "<b>茞ć‡șèš­ćźš</b>"
-#: src/audacious/ui_preferences.c:124
+#: src/audacious/ui_preferences.c:175
msgid "Bit depth:"
msgstr "ć–æšŁæ ŒćŒïŒš"
-#: src/audacious/ui_preferences.c:127
+#: src/audacious/ui_preferences.c:178
msgid "Buffer size:"
msgstr "ç·©èĄć€ć€§ć°ïŒš"
-#: src/audacious/ui_preferences.c:129
+#: src/audacious/ui_preferences.c:180
msgid "ms"
msgstr "æŻ«ç§’"
-#: src/audacious/ui_preferences.c:130
+#: src/audacious/ui_preferences.c:181
msgid "Soft clipping"
msgstr "è»Ÿæ€§ć‰Šćł°"
-#: src/audacious/ui_preferences.c:132
+#: src/audacious/ui_preferences.c:183
msgid "Use software volume control (not recommended)"
msgstr "äœżç”šè»Ÿé«”éŸłé‡æŽ§ćˆ¶ (䞍ć»șè­°é–‹ć•Ÿ)"
-#: src/audacious/ui_preferences.c:134
+#: src/audacious/ui_preferences.c:185
msgid "<b>Replay Gain</b>"
msgstr "<b>æ’­æ”Ÿćąžç›Š</b>"
-#: src/audacious/ui_preferences.c:135
+#: src/audacious/ui_preferences.c:186
msgid "Enable Replay Gain"
msgstr "ć•Ÿç”šæ’­æ”Ÿćąžç›Š"
-#: src/audacious/ui_preferences.c:138
+#: src/audacious/ui_preferences.c:188
+msgid "Album mode"
+msgstr "ć°ˆèŒŻæšĄćŒ"
+
+#: src/audacious/ui_preferences.c:190
msgid "Prevent clipping (recommended)"
msgstr "é˜Čæ­ąèšŠè™ŸèŁć‰Ș (ć»șè­°é–‹ć•Ÿ)"
-#: src/audacious/ui_preferences.c:140
+#: src/audacious/ui_preferences.c:192
msgid "<b>Adjust Levels</b>"
msgstr "<b>èȘżæ•ŽéŸłé‡</b>"
-#: src/audacious/ui_preferences.c:141
+#: src/audacious/ui_preferences.c:193
msgid "Amplify all files:"
msgstr "æ”Ÿć€§æ‰€æœ‰æȘ”æĄˆçš„éŸłé‡ïŒš"
-#: src/audacious/ui_preferences.c:143 src/audacious/ui_preferences.c:146
+#: src/audacious/ui_preferences.c:195 src/audacious/ui_preferences.c:198
msgid "dB"
msgstr "戆èȝ"
-#: src/audacious/ui_preferences.c:144
+#: src/audacious/ui_preferences.c:196
msgid "Amplify untagged files:"
msgstr "æ”Ÿć€§ç„Ąæš™ç±€æȘ”æĄˆçš„éŸłé‡ïŒš"
-#: src/audacious/ui_preferences.c:149
+#: src/audacious/ui_preferences.c:201
msgid "Proxy hostname:"
msgstr "代理äŒșæœć™šćçš±ïŒš"
-#: src/audacious/ui_preferences.c:150
+#: src/audacious/ui_preferences.c:202
msgid "Proxy port:"
msgstr "代理äŒșæœć™šé€ŁæŽ„ćŸ ïŒš"
-#: src/audacious/ui_preferences.c:153
+#: src/audacious/ui_preferences.c:205
msgid "Proxy username:"
msgstr "代理äŒșæœć™šäœżç”šè€…ćçš±ïŒš"
-#: src/audacious/ui_preferences.c:154
+#: src/audacious/ui_preferences.c:206
msgid "Proxy password:"
msgstr "代理äŒșæœć™šćŻ†çąŒïŒš"
-#: src/audacious/ui_preferences.c:158
+#: src/audacious/ui_preferences.c:210
msgid "<b>Proxy Configuration</b>"
msgstr "<b>代理äŒșæœć™šèš­ćźš</b>"
-#: src/audacious/ui_preferences.c:159
+#: src/audacious/ui_preferences.c:211
msgid "Enable proxy usage"
msgstr "ć•Ÿç”šä»Łç†äŒșæœć™š"
-#: src/audacious/ui_preferences.c:162
+#: src/audacious/ui_preferences.c:214
msgid "Use authentication with proxy"
msgstr "需芁èȘè­‰"
-#: src/audacious/ui_preferences.c:170
+#: src/audacious/ui_preferences.c:221
msgid "Auto character encoding detector for:"
msgstr "è‡Șć‹•ć”æžŹć­—ć…ƒç·šçąŒïŒš"
-#: src/audacious/ui_preferences.c:174
+#: src/audacious/ui_preferences.c:225
msgid "Fallback character encodings:"
msgstr "ć‚™ç”šć­—ć…ƒç·šçąŒïŒš"
-#: src/audacious/ui_preferences.c:178
+#: src/audacious/ui_preferences.c:229
msgid "<b>Behavior</b>"
msgstr "<b>èĄŒç‚ș</b>"
-#: src/audacious/ui_preferences.c:179
+#: src/audacious/ui_preferences.c:230
msgid "Continue playback on startup"
msgstr "ć•Ÿć‹•ćŸŒçčŒçșŒäč‹ć‰çš„播攟"
-#: src/audacious/ui_preferences.c:181
+#: src/audacious/ui_preferences.c:232
msgid "Advance when the current song is deleted"
-msgstr "ç›źć‰çš„æ­Œæ›Čèą«ćˆȘé™€æ™‚ç§»è‡łäž‹äž€ć€‹"
+msgstr "ç›źć‰çš„æ­Œæ›Čèą«ćˆȘé™€æ™‚ç§»ćˆ°äž‹äž€ć€‹é …ç›ź"
-#: src/audacious/ui_preferences.c:183
+#: src/audacious/ui_preferences.c:234
msgid "Clear the playlist when opening files"
msgstr "開敟æȘ”æĄˆćŸŒæž…é™€æ’­æ”Ÿæž…ć–ź"
-#: src/audacious/ui_preferences.c:185
+#: src/audacious/ui_preferences.c:236
msgid "Open files in a temporary playlist"
msgstr "ćœšæš«ć­˜æ’­æ”Ÿæž…ć–źäž­é–‹ć•ŸæȘ”æĄˆ"
-#: src/audacious/ui_preferences.c:187
+#: src/audacious/ui_preferences.c:238
msgid "Do not load metadata for songs until played"
msgstr "ćœšæ­Œæ›Čæ’­æ”Ÿä»„ć‰äžèŠèŒ‰ć…„è©źé‡‹èł‡æ–™"
-#: src/audacious/ui_preferences.c:190
+#: src/audacious/ui_preferences.c:241
msgid "<b>Compatibility</b>"
msgstr "<b>盾ćźč性</b>"
-#: src/audacious/ui_preferences.c:191
+#: src/audacious/ui_preferences.c:242
msgid "Interpret \\ (backward slash) as a folder delimiter"
msgstr "氇 \\ (ćæ–œç·š) 芖ç‚șèł‡æ–™ć€Ÿćˆ†éš”çŹŠè™Ÿ"
-#: src/audacious/ui_preferences.c:198
+#: src/audacious/ui_preferences.c:247
msgid "<b>Album Art</b>"
msgstr "<b>ć°ˆèŒŻć°éą</b>"
-#: src/audacious/ui_preferences.c:199
+#: src/audacious/ui_preferences.c:248
msgid "Search for images matching these words (comma-separated):"
msgstr "æœć°‹çŹŠćˆé€™äș›ć–źć­—çš„ćœ–ç‰‡ (ä»„é€—è™Ÿćˆ†éš”)"
-#: src/audacious/ui_preferences.c:201
+#: src/audacious/ui_preferences.c:250
msgid "Exclude images matching these words (comma-separated):"
msgstr "æŽ’é™€çŹŠćˆé€™äș›ć–źć­—çš„ćœ–ç‰‡ (ä»„é€—è™Ÿćˆ†éš”)"
-#: src/audacious/ui_preferences.c:203
+#: src/audacious/ui_preferences.c:252
msgid "Search for images matching song file name"
msgstr "æœć°‹çŹŠćˆæ­Œæ›ČæȘ”ćçš„ćœ–ç‰‡"
-#: src/audacious/ui_preferences.c:205
+#: src/audacious/ui_preferences.c:254
msgid "Search recursively"
msgstr "éžèżŽæœć°‹"
-#: src/audacious/ui_preferences.c:207
+#: src/audacious/ui_preferences.c:256
msgid "Search depth:"
msgstr "æœć°‹æ·±ćșŠïŒš"
-#: src/audacious/ui_preferences.c:210
+#: src/audacious/ui_preferences.c:259
msgid "<b>Popup Information</b>"
msgstr "<b>ćœˆć‡șćŒèł‡èšŠèŠ–çȘ—</b>"
-#: src/audacious/ui_preferences.c:211
+#: src/audacious/ui_preferences.c:260
msgid "Show popup information"
msgstr "饯ç€șćœˆć‡șćŒèł‡èšŠèŠ–çȘ—"
-#: src/audacious/ui_preferences.c:213
+#: src/audacious/ui_preferences.c:262
msgid "Popup delay (tenths of a second):"
msgstr "ćœˆć‡ș芖çȘ—的滶éČ時間 (捁戆äč‹äž€ç§’)"
-#: src/audacious/ui_preferences.c:216
+#: src/audacious/ui_preferences.c:265
msgid "Show time scale for current song"
msgstr "饯ç€șç›źć‰æ­Œæ›Č的時間軞"
-#: src/audacious/ui_preferences.c:230
+#: src/audacious/ui_preferences.c:280
msgid "TITLE"
msgstr "æš™éĄŒ"
-#: src/audacious/ui_preferences.c:231
+#: src/audacious/ui_preferences.c:281
msgid "ARTIST - TITLE"
msgstr "藝äșș - æš™éĄŒ"
-#: src/audacious/ui_preferences.c:232
+#: src/audacious/ui_preferences.c:282
msgid "ARTIST - ALBUM - TITLE"
msgstr "藝äșș - ć°ˆèŒŻ - æš™éĄŒ"
-#: src/audacious/ui_preferences.c:233
+#: src/audacious/ui_preferences.c:283
msgid "ARTIST - ALBUM - TRACK. TITLE"
msgstr "藝äșș - ć°ˆèŒŻ - éŸłè»Œ. æš™éĄŒ"
-#: src/audacious/ui_preferences.c:234
+#: src/audacious/ui_preferences.c:284
msgid "ARTIST [ ALBUM ] - TRACK. TITLE"
msgstr "藝äșș [ ć°ˆèŒŻ ] - éŸłè»Œ. æš™éĄŒ"
-#: src/audacious/ui_preferences.c:235
+#: src/audacious/ui_preferences.c:285
msgid "ALBUM - TITLE"
msgstr "ć°ˆèŒŻ - æš™éĄŒ"
-#: src/audacious/ui_preferences.c:435
+#: src/audacious/ui_preferences.c:375
msgid "Category"
msgstr "盼錄"
-#: src/audacious/ui_preferences.c:961
+#: src/audacious/ui_preferences.c:457
msgid "Custom"
msgstr "è‡Șèš‚"
-#: src/audacious/ui_preferences.c:998
+#: src/audacious/ui_preferences.c:481
msgid "<b>Song Display</b>"
msgstr "<b>饯ç€ș歌æ›Č</b>"
-#: src/audacious/ui_preferences.c:1007
+#: src/audacious/ui_preferences.c:490
msgid "Show song numbers"
msgstr "饯ç€ș歌æ›Č線號"
-#: src/audacious/ui_preferences.c:1018
+#: src/audacious/ui_preferences.c:501
msgid "Show leading zeroes (02:00 instead of 2:00)"
msgstr "饯ç€șé–‹é ­çš„æ•žć­—é›¶ (䟋02:00 è€Œäžæ˜Ż 2:00)"
-#: src/audacious/ui_preferences.c:1038
-msgid "Show information about titlestring format"
-msgstr "饯ç€șé—œæ–Œæš™éĄŒć­—äžČæ ŒćŒçš„èł‡èšŠ"
-
-#: src/audacious/ui_preferences.c:1052
-msgid "Custom string:"
-msgstr "è‡Șèš‚ć­—äžČ"
-
-#: src/audacious/ui_preferences.c:1057
+#: src/audacious/ui_preferences.c:515
msgid "Title format:"
msgstr "æš™éĄŒæ ŒćŒïŒš"
-#: src/audacious/ui_preferences.c:1144
-msgid "Output plugin:"
-msgstr "茞ć‡șć€–æŽ›ïŒš"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Transport"
-msgstr "ć‚łèŒž"
-
-#: src/audacious/ui_preferences.c:1203
-msgid "Input"
-msgstr "èŒžć…„"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Effect"
-msgstr "ç‰č效"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "Visualization"
-msgstr "芖èŠșç‰č效"
-
-#: src/audacious/ui_preferences.c:1204
-msgid "General"
-msgstr "äž€èˆŹ"
+#: src/audacious/ui_preferences.c:520
+msgid "Custom string:"
+msgstr "è‡Șèš‚ć­—äžČ"
-#: src/audacious/ui_preferences.c:1239
-msgid "Audacious Preferences"
-msgstr "Audacious ćć„œèš­ćźš"
+#: src/audacious/ui_preferences.c:714
+msgid "Audacious Settings"
+msgstr "Audacious èš­ćźš"
-#: src/audacious/util.c:114
+#: src/audacious/util.c:112
#, c-format
msgid "Could not create directory (%s): %s\n"
msgstr "ç„Ąæł•ć»șç«‹èł‡æ–™ć€Ÿ (%s)%s\n"
-#: src/audtool/handlers_playlist.c:262
-msgid "Position not found."
-msgstr "æ‰Ÿäžćˆ°äœć€ă€‚"
-
-#: src/audtool/handlers_vitals.c:51
-msgid "No song playing."
-msgstr "ç„Ąæ’­æ”Ÿäž­æ­Œæ›Č。"
-
-#: src/libaudcore/audstrings.c:203
+#: src/libaudcore/audstrings.c:385
#, c-format
msgid "Audio CD, track %s"
msgstr "éŸłæš‚ CDïŒŒéŸłè»Œ %s"
-#: src/libaudcore/tuple.c:543
+#: src/libaudcore/tuple.c:442
msgid "Mono"
msgstr "於èČ道"
-#: src/libaudcore/tuple.c:545
+#: src/libaudcore/tuple.c:444
msgid "Stereo"
msgstr "立體èČ"
-#: src/libaudcore/tuple.c:547
+#: src/libaudcore/tuple.c:446
#, c-format
msgid "%d channel"
msgid_plural "%d channels"
@@ -577,407 +601,420 @@ msgstr "é–‹ç™Œćœ˜éšŠ"
msgid "License"
msgstr "æŽˆæŹŠæąæŹŸ"
-#: src/libaudgui/about.c:73
+#: src/libaudgui/about.c:69
msgid "About Audacious"
msgstr "關斌 Audacious"
-#: src/libaudgui/confirm.c:66
+#: src/libaudgui/confirm.c:51
#, c-format
-msgid ""
-"Are you sure you want to close %s? If you do, any changes made since the "
-"playlist was exported will be lost."
-msgstr "æ‚šçąșćźšèŠé—œé–‰ %s? 所有æœȘ振ć‡șçš„èł‡æ–™ć°‡æœƒéș怱。"
+msgid "Do you want to permanently remove “%s”?"
+msgstr "æ‚šçąșćźšèŠæ°žäč…ćœ°ç§»é™€ă€Œ%să€ïŒŸ"
-#: src/libaudgui/confirm.c:73
-msgid "Close Playlist"
-msgstr "é—œé–‰æ’­æ”Ÿæž…ć–ź"
+#: src/libaudgui/confirm.c:55 src/libaudgui/ui_playlist_manager.c:255
+msgid "_Remove"
+msgstr "移陀(_R)"
-#: src/libaudgui/confirm.c:77
-msgid "_Don't show this message again"
-msgstr "äžèŠć†éĄŻç€șé€™ć€‹èšŠæŻ(_D)"
+#: src/libaudgui/confirm.c:60
+msgid "Remove Playlist"
+msgstr "ç§»é™€æ’­æ”Ÿæž…ć–ź"
+
+#: src/libaudgui/confirm.c:62
+msgid "_Don’t ask again"
+msgstr "äžć†è©ąć•(_D)"
+
+#: src/libaudgui/confirm.c:89
+msgid "_Rename"
+msgstr "é‡æ–°ć‘œć(_R)"
-#: src/libaudgui/confirm.c:100
+#: src/libaudgui/confirm.c:93
msgid "Rename Playlist"
msgstr "é‡æ–°ć‘œćæ’­æ”Ÿæž…ć–ź"
-#: src/libaudgui/effects-menu.c:70
-msgid "settings ..."
-msgstr "èš­ćźš ..."
+#: src/libaudgui/confirm.c:93
+msgid "What would you like to call this playlist?"
+msgstr "æ‚šćžŒæœ›æ€ŽéșŒć‘œćé€™ä»œæ’­æ”Ÿæž…ć–źïŒŸ"
-#: src/libaudgui/equalizer.c:50
+#: src/libaudgui/equalizer.c:44
msgid "_Enable"
msgstr "敟甹(_E)"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "31 Hz"
msgstr "31 Hz"
-#: src/libaudgui/equalizer.c:123
+#: src/libaudgui/equalizer.c:119
msgid "63 Hz"
msgstr "63 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "125 Hz"
msgstr "125 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "250 Hz"
msgstr "250 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "500 Hz"
msgstr "500 Hz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "1 kHz"
msgstr "1 kHz"
-#: src/libaudgui/equalizer.c:124
+#: src/libaudgui/equalizer.c:120
msgid "2 kHz"
msgstr "2 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "4 kHz"
msgstr "4 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "8 kHz"
msgstr "8 kHz"
-#: src/libaudgui/equalizer.c:125
+#: src/libaudgui/equalizer.c:121
msgid "16 kHz"
msgstr "16 kHz"
-#: src/libaudgui/equalizer.c:130
+#: src/libaudgui/equalizer.c:124
msgid "Equalizer"
msgstr "等挖晹"
-#: src/libaudgui/equalizer.c:146
+#: src/libaudgui/equalizer.c:138
msgid "Preamp"
msgstr "ć‰çœźæ”Ÿć€§"
-#: src/libaudgui/infopopup.c:154
+#: src/libaudgui/infopopup.c:155
msgid "Track"
msgstr "éŸłè»Œ"
-#: src/libaudgui/infopopup.c:155
+#: src/libaudgui/infopopup.c:156
msgid "Length"
msgstr "長ćșŠ"
-#: src/libaudgui/infowin.c:73
+#: src/libaudgui/infowin.c:46
+msgid "Format:"
+msgstr "æš™éĄŒæ ŒćŒïŒš"
+
+#: src/libaudgui/infowin.c:47
+msgid "Quality:"
+msgstr "擁èłȘ"
+
+#: src/libaudgui/infowin.c:48
+msgid "Bitrate:"
+msgstr "äœć…ƒçŽ‡ïŒš"
+
+#: src/libaudgui/infowin.c:76
msgid "Acid Jazz"
msgstr "èż·ćč»çˆ”棫"
-#: src/libaudgui/infowin.c:74
+#: src/libaudgui/infowin.c:77
msgid "Acid Rock"
msgstr "èż·ćč»æ–滟"
-#: src/libaudgui/infowin.c:75
+#: src/libaudgui/infowin.c:78
msgid "Ambient"
msgstr "æ°›ćœéŸłæš‚"
-#: src/libaudgui/infowin.c:76
+#: src/libaudgui/infowin.c:79
msgid "Bebop"
msgstr "Bebop"
-#: src/libaudgui/infowin.c:77
+#: src/libaudgui/infowin.c:80
msgid "Bluegrass"
msgstr "藍草"
-#: src/libaudgui/infowin.c:78
+#: src/libaudgui/infowin.c:81
msgid "Blues"
msgstr "藍èȘż"
-#: src/libaudgui/infowin.c:79
+#: src/libaudgui/infowin.c:82
msgid "Chamber Music"
msgstr "ćź€ć…§æš‚"
-#: src/libaudgui/infowin.c:80
+#: src/libaudgui/infowin.c:83
msgid "Classical"
msgstr "ć€ć…ž"
-#: src/libaudgui/infowin.c:81
+#: src/libaudgui/infowin.c:84
msgid "Country"
msgstr "鄉村"
-#: src/libaudgui/infowin.c:82
+#: src/libaudgui/infowin.c:85
msgid "Death Metal"
msgstr "æ­»äșĄé‡‘汏"
-#: src/libaudgui/infowin.c:83
+#: src/libaudgui/infowin.c:86
msgid "Disco"
msgstr "èżȘæ–ŻćŻ"
-#: src/libaudgui/infowin.c:84
+#: src/libaudgui/infowin.c:87
msgid "Easy Listening"
msgstr "èŒ•éŸłæš‚"
-#: src/libaudgui/infowin.c:85
+#: src/libaudgui/infowin.c:88
msgid "Folk"
msgstr "æ°‘èŹ "
-#: src/libaudgui/infowin.c:86
+#: src/libaudgui/infowin.c:89
msgid "Funk"
msgstr "æ”Ÿćźą"
-#: src/libaudgui/infowin.c:87
+#: src/libaudgui/infowin.c:90
msgid "Gangsta Rap"
msgstr "黑ćč«èȘȘć”±"
-#: src/libaudgui/infowin.c:88
+#: src/libaudgui/infowin.c:91
msgid "Gospel"
msgstr "çŠéŸłéŸłæš‚"
-#: src/libaudgui/infowin.c:89
+#: src/libaudgui/infowin.c:92
msgid "Grunge"
msgstr "ćžƒćœŸæ–æ»Ÿ"
-#: src/libaudgui/infowin.c:90
+#: src/libaudgui/infowin.c:93
msgid "Hard Rock"
msgstr "çĄŹćŒæ–æ»Ÿ"
-#: src/libaudgui/infowin.c:91
+#: src/libaudgui/infowin.c:94
msgid "Heavy Metal"
msgstr "é‡é‡‘ć±Ź"
-#: src/libaudgui/infowin.c:92
+#: src/libaudgui/infowin.c:95
msgid "Hip-hop"
msgstr "ć˜»ć“ˆ"
-#: src/libaudgui/infowin.c:93
+#: src/libaudgui/infowin.c:96
msgid "House"
msgstr "House"
-#: src/libaudgui/infowin.c:94
+#: src/libaudgui/infowin.c:97
msgid "Jazz"
msgstr "爔棫"
-#: src/libaudgui/infowin.c:95
+#: src/libaudgui/infowin.c:98
msgid "Jungle"
msgstr "ćąæž—"
-#: src/libaudgui/infowin.c:96
+#: src/libaudgui/infowin.c:99
msgid "Metal"
msgstr "金汏"
-#: src/libaudgui/infowin.c:97
+#: src/libaudgui/infowin.c:100
msgid "New Age"
msgstr "新䞖玀"
-#: src/libaudgui/infowin.c:98
+#: src/libaudgui/infowin.c:101
msgid "New Wave"
msgstr "新æ”Șæœź"
-#: src/libaudgui/infowin.c:99
+#: src/libaudgui/infowin.c:102
msgid "Noise"
msgstr "ć™Ș音"
-#: src/libaudgui/infowin.c:100
+#: src/libaudgui/infowin.c:103
msgid "Pop"
msgstr "æ”èĄŒ"
-#: src/libaudgui/infowin.c:101
+#: src/libaudgui/infowin.c:104
msgid "Punk Rock"
msgstr "éŸć…‹æ–æ»Ÿ"
-#: src/libaudgui/infowin.c:102
+#: src/libaudgui/infowin.c:105
msgid "Rap"
msgstr "èȘȘć”±"
-#: src/libaudgui/infowin.c:103
+#: src/libaudgui/infowin.c:106
msgid "Reggae"
msgstr "é›·éŹŒ"
-#: src/libaudgui/infowin.c:104
+#: src/libaudgui/infowin.c:107
msgid "Rock"
msgstr "搖滟 (Rock)"
-#: src/libaudgui/infowin.c:105
+#: src/libaudgui/infowin.c:108
msgid "Rock and Roll"
msgstr "搖滟 (Rock&Roll)"
-#: src/libaudgui/infowin.c:106
+#: src/libaudgui/infowin.c:109
msgid "Rhythm and Blues"
msgstr "R&B"
-#: src/libaudgui/infowin.c:107
+#: src/libaudgui/infowin.c:110
msgid "Ska"
msgstr "Ska"
-#: src/libaudgui/infowin.c:108
+#: src/libaudgui/infowin.c:111
msgid "Soul"
msgstr "靈魂"
-#: src/libaudgui/infowin.c:109
+#: src/libaudgui/infowin.c:112
msgid "Swing"
msgstr "搖æ“șæš‚"
-#: src/libaudgui/infowin.c:110
+#: src/libaudgui/infowin.c:113
msgid "Techno"
msgstr "敞䜍"
-#: src/libaudgui/infowin.c:111
+#: src/libaudgui/infowin.c:114
msgid "Trip-hop"
msgstr "èż·ćč»èˆžæ›Č"
-#: src/libaudgui/infowin.c:175 src/libaudgui/infowin.c:348
-#: src/libaudgui/infowin.c:351 src/libaudgui/infowin.c:354
-msgid "<span size=\"small\">n/a</span>"
-msgstr "<span size=\"small\">n/a</span>"
-
-#: src/libaudgui/infowin.c:223
-msgid "Metadata updated successfully"
-msgstr "æˆćŠŸćœ°æ›Žæ–°äș†è©źé‡‹èł‡æ–™"
-
-#: src/libaudgui/infowin.c:227
-msgid "Metadata updating failed"
-msgstr "è©źé‡‹èł‡æ–™æ›Žæ–°ć€±æ•—"
-
-#: src/libaudgui/infowin.c:302
-msgid "Track Information"
-msgstr "éŸłè»Œèł‡èšŠ"
+#: src/libaudgui/infowin.c:220
+msgid "Save successful"
+msgstr "ć„Čć­˜æˆćŠŸ"
-#: src/libaudgui/infowin.c:337
-msgid "<span size=\"small\">Format:</span>"
-msgstr "<span size=\"small\">æ ŒćŒïŒš</span>"
+#: src/libaudgui/infowin.c:224
+msgid "Save error"
+msgstr "ć„Čć­˜ć€±æ•—"
-#: src/libaudgui/infowin.c:341
-msgid "<span size=\"small\">Quality:</span>"
-msgstr "<span size=\"small\">擁èłȘ</span>"
-
-#: src/libaudgui/infowin.c:344
-msgid "<span size=\"small\">Bitrate:</span>"
-msgstr "<span size=\"small\">äœć…ƒçŽ‡ïŒš</span>"
-
-#: src/libaudgui/infowin.c:368
-msgid "<span size=\"small\">Title</span>"
-msgstr "<span size=\"small\">æš™éĄŒ</span>"
-
-#: src/libaudgui/infowin.c:380
-msgid "<span size=\"small\">Artist</span>"
-msgstr "<span size=\"small\">藝äșș</span>"
-
-#: src/libaudgui/infowin.c:392
-msgid "<span size=\"small\">Album</span>"
-msgstr "<span size=\"small\">ć°ˆèŒŻ</span>"
-
-#: src/libaudgui/infowin.c:404
-msgid "<span size=\"small\">Comment</span>"
-msgstr "<span size=\"small\">ć‚™èš»</span>"
-
-#: src/libaudgui/infowin.c:416
-msgid "<span size=\"small\">Genre</span>"
-msgstr "<span size=\"small\">類枋</span>"
-
-#: src/libaudgui/infowin.c:438
-msgid "<span size=\"small\">Year</span>"
-msgstr "<span size=\"small\">ćčŽä»œ</span>"
+#: src/libaudgui/infowin.c:359
+msgid "Track Number"
+msgstr "éŸłè»Œç·šè™Ÿ"
-#: src/libaudgui/infowin.c:447
-msgid "<span size=\"small\">Track Number</span>"
-msgstr "<span size=\"small\">éŸłè»Œç·šè™Ÿ</span>"
+#: src/libaudgui/infowin.c:367
+msgid "_Save"
+msgstr "ć„Č歘(_S)"
-#: src/libaudgui/infowin.c:521
+#: src/libaudgui/infowin.c:418
#, c-format
msgid "%d kb/s"
msgstr "%d kb/s"
-#: src/libaudgui/infowin.c:548
+#: src/libaudgui/infowin.c:423
+msgid "N/A"
+msgstr "無"
+
+#: src/libaudgui/infowin.c:453
#, c-format
msgid "No info available for %s.\n"
msgstr "ç„Ąé—œæ–Œ %s çš„èł‡èšŠă€‚\n"
-#: src/libaudgui/jump-to-time.c:51
+#: src/libaudgui/jump-to-time.c:48 src/libaudgui/ui_jumptotrack.c:305
+msgid "_Jump"
+msgstr "è·łèœ‰(_J)"
+
+#: src/libaudgui/jump-to-time.c:52
msgid "Jump to Time"
-msgstr "è·łè‡łæ™‚é–“"
+msgstr "è·łèœ‰ćˆ°æŒ‡ćźšæ™‚é–“"
-#: src/libaudgui/jump-to-time.c:60
+#: src/libaudgui/jump-to-time.c:52
msgid "Enter time (minutes:seconds):"
msgstr "è«‹èŒžć…„æ™‚é–“ (戆:秒)"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:86
+#, c-format
+msgid "Overwrite %s?"
+msgstr "èŠ†ćŻ« %s"
+
+#: src/libaudgui/playlists.c:88
+msgid "_Overwrite"
+msgstr "èŠ†ćŻ«(_O)"
+
+#: src/libaudgui/playlists.c:92
+msgid "Confirm Overwrite"
+msgstr "çąșèȘæ˜ŻćŠèŠ†ćŻ«"
+
+#: src/libaudgui/playlists.c:121
msgid "Export Playlist"
msgstr "振ć‡șæ’­æ”Ÿæž…ć–ź"
-#: src/libaudgui/playlists.c:32
+#: src/libaudgui/playlists.c:122
+msgid "_Export"
+msgstr "振ć‡ș(_E)"
+
+#: src/libaudgui/playlists.c:128
msgid "Import Playlist"
msgstr "ćŒŻć…„æ’­æ”Ÿæž…ć–ź"
-#: src/libaudgui/playlists.c:65
-#, c-format
-msgid "Overwrite %s?"
-msgstr "èŠ†ćŻ« %s"
+#: src/libaudgui/playlists.c:129
+msgid "_Import"
+msgstr "ćŒŻć…„(_I)"
-#: src/libaudgui/queue-manager.c:195
+#: src/libaudgui/queue-manager.c:172
msgid "Queue Manager"
msgstr "äœ‡ćˆ—çźĄç†"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/queue-manager.c:188
+msgid "_Unqueue"
+msgstr "移ć‡șäœ‡ćˆ—(_U)"
+
+#: src/libaudgui/ui_fileopener.c:79
msgid "Open Files"
msgstr "開敟æȘ”æĄˆ"
-#: src/libaudgui/ui_fileopener.c:106
+#: src/libaudgui/ui_fileopener.c:80 src/libaudgui/url-opener.c:50
+msgid "_Open"
+msgstr "開敟(_O)"
+
+#: src/libaudgui/ui_fileopener.c:82
+msgid "Close _dialog on open"
+msgstr "é–‹ć•ŸćŸŒé—œé–‰ć°è©±èŠ–çȘ—(_D)"
+
+#: src/libaudgui/ui_fileopener.c:87
msgid "Add Files"
msgstr "抠慄æȘ”æĄˆ"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Open"
-msgstr "é–‹ć•ŸćŸŒé—œé–‰ć°è©±èŠ–çȘ—"
+#: src/libaudgui/ui_fileopener.c:88 src/libaudgui/url-opener.c:56
+msgid "_Add"
+msgstr "抠慄(_A)"
-#: src/libaudgui/ui_fileopener.c:108
-msgid "Close dialog on Add"
-msgstr "ćŠ ć…„ćŸŒé—œé–‰ć°è©±èŠ–çȘ—"
+#: src/libaudgui/ui_fileopener.c:90
+msgid "Close _dialog on add"
+msgstr "ćŠ ć…„ćŸŒé—œé–‰ć°è©±èŠ–çȘ—(_D)"
-#: src/libaudgui/ui_jumptotrack.c:104 src/libaudgui/ui_jumptotrack.c:112
-#: src/libaudgui/ui_jumptotrack.c:331
+#: src/libaudgui/ui_jumptotrack.c:101 src/libaudgui/ui_jumptotrack.c:109
+#: src/libaudgui/ui_jumptotrack.c:301
msgid "_Queue"
msgstr "æŽ’ć…„äœ‡ćˆ—(_Q)"
-#: src/libaudgui/ui_jumptotrack.c:110
+#: src/libaudgui/ui_jumptotrack.c:107
msgid "Un_queue"
msgstr "移ć‡șäœ‡ćˆ—(_Q)"
-#: src/libaudgui/ui_jumptotrack.c:261
+#: src/libaudgui/ui_jumptotrack.c:245
msgid "Jump to Song"
-msgstr "è·łè‡łæ­Œæ›Č"
+msgstr "è·łèœ‰ćˆ°æŒ‡ćźšæ­Œæ›Č"
-#: src/libaudgui/ui_jumptotrack.c:286
+#: src/libaudgui/ui_jumptotrack.c:270
msgid "Filter: "
msgstr "éŽæżŸć™šïŒš"
-#: src/libaudgui/ui_jumptotrack.c:287
+#: src/libaudgui/ui_jumptotrack.c:271
msgid "_Filter:"
msgstr "éŽæżŸć™š(_F)"
-#: src/libaudgui/ui_jumptotrack.c:297
-msgid "Remember"
-msgstr "蚘䜏"
+#: src/libaudgui/ui_jumptotrack.c:294
+msgid "C_lose on jump"
+msgstr "ćˆ‡æ›ćŸŒé—œé–‰(_C)"
-#: src/libaudgui/ui_jumptotrack.c:304
-msgid "Clea_r"
-msgstr "枅陀(_R)"
-
-#: src/libaudgui/ui_jumptotrack.c:324
-msgid "Close on Jump"
-msgstr "ćˆ‡æ›ćŸŒé—œé–‰"
-
-#: src/libaudgui/ui_playlist_manager.c:260
+#: src/libaudgui/ui_playlist_manager.c:223
msgid "Playlist Manager"
msgstr "æ’­æ”Ÿæž…ć–źçźĄç†"
-#: src/libaudgui/ui_playlist_manager.c:287
+#: src/libaudgui/ui_playlist_manager.c:236
msgid "Entries"
msgstr "敞量"
-#: src/libaudgui/ui_playlist_manager.c:307
-msgid "_Rename"
-msgstr "é‡æ–°ć‘œć(_R)"
+#: src/libaudgui/ui_playlist_manager.c:254
+msgid "_New"
+msgstr "æ–°ćąž(_N)"
-#: src/libaudgui/ui_playlist_manager.c:327
+#: src/libaudgui/ui_playlist_manager.c:256
+msgid "Ren_ame"
+msgstr "é‡æ–°ć‘œć(_A)"
+
+#: src/libaudgui/ui_playlist_manager.c:257
+msgid "_Play"
+msgstr "播攟(_P)"
+
+#: src/libaudgui/ui_playlist_manager.c:269
msgid "_Close dialog on activating playlist"
msgstr "ć•Ÿç”šæ’­æ”Ÿæž…ć–źćŸŒé—œé–‰ć°è©±èŠ–çȘ—(_C)"
-#: src/libaudgui/url-opener.c:55
+#: src/libaudgui/url-opener.c:49
msgid "Open URL"
msgstr "開敟ç¶Č杀"
@@ -985,11 +1022,11 @@ msgstr "開敟ç¶Č杀"
msgid "Add URL"
msgstr "抠慄ç¶Č杀"
-#: src/libaudgui/url-opener.c:64
+#: src/libaudgui/url-opener.c:74
msgid "Enter URL:"
msgstr "è«‹èŒžć…„ç¶Čć€ïŒš"
-#: src/libaudgui/util.c:142
+#: src/libaudgui/util.c:148
msgid ""
"\n"
"(Further messages have been hidden.)"
diff --git a/src/Makefile b/src/Makefile
index 3b0ed74..482f7c0 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,9 +1,16 @@
-SUBDIRS = libaudcore libaudgui libaudtag audacious
-
include ../extra.mk
+SUBDIRS := audacious libaudcore libaudgui libaudtag
+
ifeq ($(USE_DBUS),yes)
-SUBDIRS := libaudclient audtool ${SUBDIRS}
+SUBDIRS := dbus audtool ${SUBDIRS}
endif
include ../buildsys.mk
+
+audacious libaudgui libaudtag: libaudcore
+audacious: libaudgui libaudtag
+
+ifeq ($(USE_DBUS),yes)
+audacious audtool: dbus
+endif
diff --git a/src/audacious/Makefile b/src/audacious/Makefile
index c87881e..bccf836 100644
--- a/src/audacious/Makefile
+++ b/src/audacious/Makefile
@@ -14,7 +14,6 @@ SRCS = adder.c \
history.c \
interface.c \
main.c \
- mpris-signals.c \
output.c \
playback.c \
playlist-files.c \
@@ -25,6 +24,7 @@ SRCS = adder.c \
plugin-registry.c \
plugin-init.c \
plugin-view.c \
+ preferences.c \
probe.c \
probe-buffer.c \
scanner.c \
@@ -36,10 +36,6 @@ SRCS = adder.c \
visualization.c \
ui_albumart.c
-ifeq ($(USE_DBUS),yes)
-SRCS += dbus.c
-endif
-
ifeq ($(HAVE_MSWINDOWS),yes)
SRCS += audacious.rc
endif
@@ -49,12 +45,12 @@ INCLUDES = api.h \
api-alias-end.h \
api-define-begin.h \
api-define-end.h \
- dbus.h \
- dbus-service.h \
debug.h \
drct.h \
drct-api.h \
i18n.h \
+ input.h \
+ input-api.h \
misc.h \
misc-api.h \
playlist.h \
@@ -67,39 +63,43 @@ INCLUDES = api.h \
DATA = images/about-logo.png \
images/album.png \
- images/audacious.png \
+ images/appearance.png \
images/audio.png \
images/connectivity.png \
images/info.png \
- images/menu_playlist.png \
- images/menu_plugin.png \
- images/menu_queue_toggle.png \
images/playlist.png \
images/plugins.png
-CLEAN = build_stamp.c dbus-client-bindings.h dbus-server-bindings.h
+CLEAN = build_stamp.c
+
+ifeq ($(USE_DBUS),yes)
+SRCS += dbus-server.c
+EXT_DEPS += ../dbus/aud-dbus.a
+endif
include ../../buildsys.mk
ifeq ($(USE_DBUS),yes)
-DBUS_BINDINGS = dbus-server-bindings.h dbus-client-bindings.h
-LIBS := -L../libaudclient -laudclient ${LIBS}
+CPPFLAGS := -I../dbus ${CPPFLAGS} ${GIO_CFLAGS}
+LIBS := ../dbus/aud-dbus.a ${LIBS} ${GIO_LIBS}
endif
-pre-depend: ${DBUS_BINDINGS}
-
CPPFLAGS := -I.. -I../.. \
${CPPFLAGS} \
${GLIB_CFLAGS} \
${GMODULE_CFLAGS} \
- ${GTHREAD_CFLAGS} \
${GTK_CFLAGS} \
- ${AUDACIOUS_DEFINES} \
- ${DBUS_CFLAGS} \
- ${REGEX_CFLAGS} \
- -D_AUDACIOUS_CORE \
${LIBGUESS_CFLAGS}
+CPPFLAGS := ${CPPFLAGS} \
+ -D_AUDACIOUS_CORE \
+ -DHARDCODE_BINDIR=\"${bindir}\" \
+ -DHARDCODE_DATADIR=\"${datadir}/audacious\" \
+ -DHARDCODE_PLUGINDIR=\"${plugindir}\" \
+ -DHARDCODE_LOCALEDIR=\"${localedir}\" \
+ -DHARDCODE_DESKTOPFILE=\"${datarootdir}/applications/audacious.desktop\" \
+ -DHARDCODE_ICONFILE=\"${datarootdir}/pixmaps/audacious.png\"
+
LIBS := -L../libaudcore -laudcore \
-L../libaudgui -laudgui \
-L../libaudtag -laudtag \
@@ -107,25 +107,7 @@ LIBS := -L../libaudcore -laudcore \
${LIBINTL} \
${GLIB_LIBS} \
${GMODULE_LIBS} \
- ${GTHREAD_LIBS} \
- ${GTK_LIBS} \
- ${DBUS_LIBS} \
- ${REGEX_LIBS} \
- ${LIBGUESS_LIBS}
-
-DBUS_BINDINGS_SOURCES = objects.xml \
- mpris_root.xml \
- mpris_tracklist.xml \
- mpris_player.xml
+ ${GTK_LIBS}
desktop_DATA = audacious.desktop
desktopdir = ${datarootdir}/applications
-
-dbus-server-bindings.h: ${DBUS_BINDINGS_SOURCES}
- ${DBUS_BINDING_TOOL} --mode=glib-server --prefix=audacious_rc objects.xml > $@
- ${DBUS_BINDING_TOOL} --mode=glib-server --prefix=mpris_root mpris_root.xml >> $@
- ${DBUS_BINDING_TOOL} --mode=glib-server --prefix=mpris_tracklist mpris_tracklist.xml >> $@
- ${DBUS_BINDING_TOOL} --mode=glib-server --prefix=mpris_player mpris_player.xml >> $@
-
-dbus-client-bindings.h: ${DBUS_BINDINGS_SOURCES}
- ${DBUS_BINDING_TOOL} --mode=glib-client --prefix=audacious_rc objects.xml > $@
diff --git a/src/audacious/adder.c b/src/audacious/adder.c
index 5d3a138..509f363 100644
--- a/src/audacious/adder.c
+++ b/src/audacious/adder.c
@@ -1,6 +1,6 @@
/*
* adder.c
- * Copyright 2011 John Lindgren
+ * Copyright 2011-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,11 +17,11 @@
* the use of this software.
*/
-#include <dirent.h>
#include <pthread.h>
#include <string.h>
#include <sys/stat.h>
+#include <glib/gstdio.h>
#include <gtk/gtk.h>
#include <libaudcore/audstrings.h>
@@ -33,6 +33,7 @@
#include "plugins.h"
#include "main.h"
#include "misc.h"
+#include "util.h"
typedef struct {
int playlist_id, at;
@@ -45,6 +46,7 @@ typedef struct {
typedef struct {
int playlist_id, at;
bool_t play;
+ char * title;
Index * filenames, * tuples, * decoders;
} AddResult;
@@ -66,7 +68,7 @@ static GtkWidget * status_window = NULL, * status_path_label,
static bool_t status_cb (void * unused)
{
- if (! headless && ! status_window)
+ if (! headless_mode () && ! status_window)
{
status_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_type_hint ((GtkWindow *) status_window,
@@ -102,7 +104,7 @@ static bool_t status_cb (void * unused)
snprintf (scratch, sizeof scratch, dngettext (PACKAGE, "%d file found",
"%d files found", status_count), status_count);
- if (headless)
+ if (headless_mode ())
{
printf ("Searching, %s ...\r", scratch);
fflush (stdout);
@@ -138,34 +140,12 @@ static void status_done_locked (void)
status_source = 0;
}
- if (headless)
+ if (headless_mode ())
printf ("\n");
else if (status_window)
gtk_widget_destroy (status_window);
}
-static void index_free_filenames (Index * filenames)
-{
- int count = index_count (filenames);
- for (int i = 0; i < count; i ++)
- str_unref (index_get (filenames, i));
-
- index_free (filenames);
-}
-
-static void index_free_tuples (Index * tuples)
-{
- int count = index_count (tuples);
- for (int i = 0; i < count; i ++)
- {
- Tuple * tuple = index_get (tuples, i);
- if (tuple)
- tuple_unref (tuple);
- }
-
- index_free (tuples);
-}
-
static AddTask * add_task_new (int playlist_id, int at, bool_t play,
Index * filenames, Index * tuples, PlaylistFilterFunc filter,
void * user)
@@ -184,9 +164,9 @@ static AddTask * add_task_new (int playlist_id, int at, bool_t play,
static void add_task_free (AddTask * task)
{
if (task->filenames)
- index_free_filenames (task->filenames);
+ index_free_full (task->filenames, (IndexFreeFunc) str_unref);
if (task->tuples)
- index_free_tuples (task->tuples);
+ index_free_full (task->tuples, (IndexFreeFunc) tuple_unref);
g_slice_free (AddTask, task);
}
@@ -197,6 +177,7 @@ static AddResult * add_result_new (int playlist_id, int at, bool_t play)
result->playlist_id = playlist_id;
result->at = at;
result->play = play;
+ result->title = NULL;
result->filenames = index_new ();
result->tuples = index_new ();
result->decoders = index_new ();
@@ -205,10 +186,12 @@ static AddResult * add_result_new (int playlist_id, int at, bool_t play)
static void add_result_free (AddResult * result)
{
+ str_unref (result->title);
+
if (result->filenames)
- index_free_filenames (result->filenames);
+ index_free_full (result->filenames, (IndexFreeFunc) str_unref);
if (result->tuples)
- index_free_tuples (result->tuples);
+ index_free_full (result->tuples, (IndexFreeFunc) tuple_unref);
if (result->decoders)
index_free (result->decoders);
@@ -257,86 +240,79 @@ static void add_file (char * filename, Tuple * tuple, PluginHandle * decoder,
return;
}
- index_append (result->filenames, filename);
- index_append (result->tuples, tuple);
- index_append (result->decoders, decoder);
+ index_insert (result->filenames, -1, filename);
+ index_insert (result->tuples, -1, tuple);
+ index_insert (result->decoders, -1, decoder);
}
static void add_folder (char * filename, PlaylistFilterFunc filter,
- void * user, AddResult * result)
+ void * user, AddResult * result, bool_t is_single)
{
+ char * path = NULL;
+
g_return_if_fail (filename);
+
if (filter && ! filter (filename, user))
- {
- str_unref (filename);
- return;
- }
+ goto DONE;
status_update (filename, index_count (result->filenames));
- char * unix_name = uri_to_filename (filename);
- if (! unix_name)
- {
- str_unref (filename);
- return;
- }
+ if (! (path = uri_to_filename (filename)))
+ goto DONE;
GList * files = NULL;
- DIR * folder = opendir (unix_name);
+ GDir * folder = g_dir_open (path, 0, NULL);
if (! folder)
- goto FREE;
+ goto DONE;
+
+ const char * name;
+ while ((name = g_dir_read_name (folder)))
+ {
+ char * filepath = filename_build (path, name);
+ files = g_list_prepend (files, filepath);
+ }
+
+ g_dir_close (folder);
- struct dirent * entry;
- while ((entry = readdir (folder)))
+ if (files && is_single)
{
- if (entry->d_name[0] != '.')
- files = g_list_prepend (files, g_build_filename (unix_name, entry->d_name, NULL));
+ char * last = last_path_element (path);
+ result->title = str_get (last ? last : path);
}
- closedir (folder);
- files = g_list_sort (files, (GCompareFunc) string_compare);
+ files = g_list_sort (files, (GCompareFunc) str_compare);
while (files)
{
- struct stat info;
-#ifdef S_ISLNK
- if (lstat (files->data, & info) < 0)
-#else
- if (stat (files->data, & info) < 0)
-#endif
+ GStatBuf info;
+ if (g_lstat (files->data, & info) < 0)
goto NEXT;
if (S_ISREG (info.st_mode))
{
char * item_name = filename_to_uri (files->data);
if (item_name)
- {
- add_file (str_get (item_name), NULL, NULL, filter, user, result, TRUE);
- g_free (item_name);
- }
+ add_file (item_name, NULL, NULL, filter, user, result, TRUE);
}
else if (S_ISDIR (info.st_mode))
{
char * item_name = filename_to_uri (files->data);
if (item_name)
- {
- add_folder (str_get (item_name), filter, user, result);
- g_free (item_name);
- }
+ add_folder (item_name, filter, user, result, FALSE);
}
NEXT:
- g_free (files->data);
+ str_unref (files->data);
files = g_list_delete_link (files, files);
}
-FREE:
+DONE:
str_unref (filename);
- g_free (unix_name);
+ str_unref (path);
}
static void add_playlist (char * filename, PlaylistFilterFunc filter,
- void * user, AddResult * result)
+ void * user, AddResult * result, bool_t is_single)
{
g_return_if_fail (filename);
if (filter && ! filter (filename, user))
@@ -355,29 +331,33 @@ static void add_playlist (char * filename, PlaylistFilterFunc filter,
return;
}
+ if (is_single)
+ result->title = title;
+ else
+ str_unref (title);
+
int count = index_count (filenames);
for (int i = 0; i < count; i ++)
add_file (index_get (filenames, i), tuples ? index_get (tuples, i) :
NULL, NULL, filter, user, result, FALSE);
str_unref (filename);
- str_unref (title);
index_free (filenames);
if (tuples)
index_free (tuples);
}
static void add_generic (char * filename, Tuple * tuple,
- PlaylistFilterFunc filter, void * user, AddResult * result)
+ PlaylistFilterFunc filter, void * user, AddResult * result, bool_t is_single)
{
g_return_if_fail (filename);
if (tuple)
add_file (filename, tuple, NULL, filter, user, result, FALSE);
else if (vfs_file_test (filename, G_FILE_TEST_IS_DIR))
- add_folder (filename, filter, user, result);
+ add_folder (filename, filter, user, result, is_single);
else if (filename_is_playlist (filename))
- add_playlist (filename, filter, user, result);
+ add_playlist (filename, filter, user, result, is_single);
else
add_file (filename, NULL, NULL, filter, user, result, FALSE);
}
@@ -399,6 +379,16 @@ static bool_t add_finish (void * unused)
if (result->at < 0 || result->at > count)
result->at = count;
+ if (result->title && ! count)
+ {
+ char * old_title = playlist_get_title (playlist);
+
+ if (! strcmp (old_title, N_("New Playlist")))
+ playlist_set_title (playlist, result->title);
+
+ str_unref (old_title);
+ }
+
playlist_entry_insert_batch_raw (playlist, result->at,
result->filenames, result->tuples, result->decoders);
result->filenames = NULL;
@@ -461,7 +451,7 @@ static void * add_worker (void * unused)
{
add_generic (index_get (task->filenames, i), task->tuples ?
index_get (task->tuples, i) : NULL, task->filter, task->user,
- result);
+ result, (count == 1));
index_set (task->filenames, i, NULL);
if (task->tuples)
@@ -518,8 +508,8 @@ void playlist_entry_insert (int playlist, int at, const char * filename,
{
Index * filenames = index_new ();
Index * tuples = index_new ();
- index_append (filenames, str_get (filename));
- index_append (tuples, tuple);
+ index_insert (filenames, -1, str_get (filename));
+ index_insert (tuples, -1, tuple);
playlist_entry_insert_batch (playlist, at, filenames, tuples, play);
}
diff --git a/src/audacious/api-alias-begin.h b/src/audacious/api-alias-begin.h
index 3a947fa..457d29d 100644
--- a/src/audacious/api-alias-begin.h
+++ b/src/audacious/api-alias-begin.h
@@ -1,6 +1,6 @@
/*
* api-alias-begin.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api-alias-end.h b/src/audacious/api-alias-end.h
index ac0a2bd..a003cde 100644
--- a/src/audacious/api-alias-end.h
+++ b/src/audacious/api-alias-end.h
@@ -1,6 +1,6 @@
/*
* api-alias-end.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api-declare-begin.h b/src/audacious/api-declare-begin.h
index d6c3d34..defc557 100644
--- a/src/audacious/api-declare-begin.h
+++ b/src/audacious/api-declare-begin.h
@@ -1,6 +1,6 @@
/*
* api-declare-begin.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api-declare-end.h b/src/audacious/api-declare-end.h
index 8ac6135..fa73092 100644
--- a/src/audacious/api-declare-end.h
+++ b/src/audacious/api-declare-end.h
@@ -1,6 +1,6 @@
/*
* api-declare-end.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api-define-begin.h b/src/audacious/api-define-begin.h
index 9904761..5fe32cd 100644
--- a/src/audacious/api-define-begin.h
+++ b/src/audacious/api-define-begin.h
@@ -1,6 +1,6 @@
/*
* api-define-begin.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api-define-end.h b/src/audacious/api-define-end.h
index 25d874f..91bd85f 100644
--- a/src/audacious/api-define-end.h
+++ b/src/audacious/api-define-end.h
@@ -1,6 +1,6 @@
/*
* api-define-end.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api-local-begin.h b/src/audacious/api-local-begin.h
index 88b780d..b32eeb1 100644
--- a/src/audacious/api-local-begin.h
+++ b/src/audacious/api-local-begin.h
@@ -1,6 +1,6 @@
/*
* api-local-begin.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api-local-end.h b/src/audacious/api-local-end.h
index 1aff447..81ec43d 100644
--- a/src/audacious/api-local-end.h
+++ b/src/audacious/api-local-end.h
@@ -1,6 +1,6 @@
/*
* api-local-end.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/api.h b/src/audacious/api.h
index 523c2b9..f68987a 100644
--- a/src/audacious/api.h
+++ b/src/audacious/api.h
@@ -1,6 +1,6 @@
/*
* api.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -20,9 +20,26 @@
#ifndef AUDACIOUS_API_H
#define AUDACIOUS_API_H
+/* API version. Plugins are marked with this number at compile time.
+ *
+ * _AUD_PLUGIN_VERSION is the current version; _AUD_PLUGIN_VERSION_MIN is
+ * the oldest one we are backward compatible with. Plugins marked older than
+ * _AUD_PLUGIN_VERSION_MIN or newer than _AUD_PLUGIN_VERSION are not loaded.
+ *
+ * Before releases that add new pointers to the end of the API tables, increment
+ * _AUD_PLUGIN_VERSION but leave _AUD_PLUGIN_VERSION_MIN the same.
+ *
+ * Before releases that break backward compatibility (e.g. remove pointers from
+ * the API tables), increment _AUD_PLUGIN_VERSION *and* set
+ * _AUD_PLUGIN_VERSION_MIN to the same value. */
+
+#define _AUD_PLUGIN_VERSION_MIN 45 /* 3.5-devel */
+#define _AUD_PLUGIN_VERSION 45 /* 3.5-devel */
+
typedef const struct {
const struct ConfigDBAPI * configdb_api;
const struct DRCTAPI * drct_api;
+ const struct InputAPI * input_api;
const struct MiscAPI * misc_api;
const struct PlaylistAPI * playlist_api;
const struct PluginsAPI * plugins_api;
diff --git a/src/audacious/art.c b/src/audacious/art.c
index f09fcc5..24658a0 100644
--- a/src/audacious/art.c
+++ b/src/audacious/art.c
@@ -19,13 +19,14 @@
#include <assert.h>
#include <errno.h>
-#include <glib.h>
#include <pthread.h>
-#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
@@ -47,12 +48,11 @@ typedef struct {
int64_t len;
/* album art as (possibly a temporary) file */
- char * art_file;
+ char * art_file; /* pooled */
bool_t is_temp;
} ArtItem;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
static GHashTable * art_items; /* of ArtItem */
static char * current_ref; /* pooled */
@@ -66,13 +66,13 @@ static void art_item_free (ArtItem * item)
char * unixname = uri_to_filename (item->art_file);
if (unixname)
{
- unlink (unixname);
- free (unixname);
+ g_unlink (unixname);
+ str_unref (unixname);
}
}
- free (item->data);
- free (item->art_file);
+ g_free (item->data);
+ str_unref (item->art_file);
g_slice_free (ArtItem, item);
}
@@ -140,17 +140,16 @@ static void request_callback (ScanRequest * request)
assert (item != NULL && ! item->flag);
scan_request_get_image_data (request, & item->data, & item->len);
- item->art_file = scan_request_get_image_file (request);
+ item->art_file = str_get (scan_request_get_image_file (request));
item->flag = FLAG_DONE;
if (! send_source)
send_source = g_idle_add (send_requests, NULL);
- pthread_cond_broadcast (& cond);
pthread_mutex_unlock (& mutex);
}
-static ArtItem * art_item_get (const char * file, bool_t blocking)
+static ArtItem * art_item_get (const char * file)
{
ArtItem * item = g_hash_table_lookup (art_items, file);
@@ -169,15 +168,7 @@ static ArtItem * art_item_get (const char * file, bool_t blocking)
scan_request (file, SCAN_IMAGE, NULL, request_callback);
}
- if (! blocking)
- return NULL;
-
- item->refcount ++;
-
- while (! item->flag)
- pthread_cond_wait (& cond, & mutex);
-
- return item;
+ return NULL;
}
static void art_item_unref (const char * file, ArtItem * item)
@@ -222,15 +213,14 @@ void art_cleanup (void)
art_items = NULL;
}
-void art_get_data_real (const char * file, const void * * data, int64_t * len,
- bool_t blocking)
+void art_request_data (const char * file, const void * * data, int64_t * len)
{
* data = NULL;
* len = 0;
pthread_mutex_lock (& mutex);
- ArtItem * item = art_item_get (file, blocking);
+ ArtItem * item = art_item_get (file);
if (! item)
goto UNLOCK;
@@ -250,12 +240,12 @@ UNLOCK:
pthread_mutex_unlock (& mutex);
}
-const char * art_get_file_real (const char * file, bool_t blocking)
+const char * art_request_file (const char * file)
{
const char * art_file = NULL;
pthread_mutex_lock (& mutex);
- ArtItem * item = art_item_get (file, blocking);
+ ArtItem * item = art_item_get (file);
if (! item)
goto UNLOCK;
@@ -267,7 +257,7 @@ const char * art_get_file_real (const char * file, bool_t blocking)
{
item->art_file = filename_to_uri (unixname);
item->is_temp = TRUE;
- free (unixname);
+ str_unref (unixname);
}
}
@@ -281,30 +271,6 @@ UNLOCK:
return art_file;
}
-void art_request_data (const char * file, const void * * data, int64_t * len)
-{
- return art_get_data_real (file, data, len, FALSE);
-}
-
-const char * art_request_file (const char * file)
-{
- return art_get_file_real (file, FALSE);
-}
-
-void art_get_data (const char * file, const void * * data, int64_t * len)
-{
- fprintf (stderr, "aud_art_get_data() is deprecated. Use "
- "aud_art_request_data() instead.\n");
- return art_get_data_real (file, data, len, TRUE);
-}
-
-const char * art_get_file (const char * file)
-{
- fprintf (stderr, "aud_art_get_file() is deprecated. Use "
- "aud_art_request_file() instead.\n");
- return art_get_file_real (file, TRUE);
-}
-
void art_unref (const char * file)
{
pthread_mutex_lock (& mutex);
diff --git a/src/audacious/chardet.c b/src/audacious/chardet.c
index 145ec3f..08fe97e 100644
--- a/src/audacious/chardet.c
+++ b/src/audacious/chardet.c
@@ -1,6 +1,6 @@
/*
* chardet.c
- * Copyright 2006-2010 Yoshiki Yazawa, Matti HÀmÀlÀinen, and John Lindgren
+ * Copyright 2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,196 +17,36 @@
* the use of this software.
*/
-#include <glib.h>
-#include <string.h>
#include <libaudcore/audstrings.h>
+#include <libaudcore/hook.h>
-#include "debug.h"
-#include "i18n.h"
#include "main.h"
#include "misc.h"
-#ifdef USE_CHARDET
-# include <libguess.h>
-#endif
-
-static char * cd_chardet_to_utf8 (const char * str, int len,
- int * arg_bytes_read, int * arg_bytes_written);
-
-static char * str_to_utf8_fallback (const char * str)
+static void chardet_update (void)
{
- char * out = g_strconcat (str, _(" (invalid UTF-8)"), NULL);
+ char * region = get_str (NULL, "chardet_detector");
+ char * fallbacks = get_str (NULL, "chardet_fallback");
- for (char * c = out; * c; c ++)
- {
- if (* c & 0x80)
- * c = '?';
- }
+ Index * list = str_list_to_index (fallbacks, ", ");
+ str_set_charsets (region[0] ? region : NULL, list);
- return out;
+ str_unref (region);
+ str_unref (fallbacks);
}
-static char * cd_str_to_utf8 (const char * str)
+void chardet_init (void)
{
- char *out_str;
-
- if (str == NULL)
- return NULL;
-
- /* Note: Currently, playlist calls this function repeatedly, even
- * if the string is already converted into utf-8.
- * chardet_to_utf8() would convert a valid utf-8 string into a
- * different utf-8 string, if fallback encodings were supplied and
- * the given string could be treated as a string in one of
- * fallback encodings. To avoid this, g_utf8_validate() had been
- * used at the top of evaluation.
- */
-
- /* Note 2: g_utf8_validate() has so called encapsulated utf-8
- * problem, thus chardet_to_utf8() took the place of that.
- */
-
- /* Note 3: As introducing madplug, the problem of conversion from
- * ISO-8859-1 to UTF-8 arose. This may be coped with g_convert()
- * located near the end of chardet_to_utf8(), but it requires utf8
- * validation guard where g_utf8_validate() was. New
- * dfa_validate_utf8() employs libguess' DFA engine to validate
- * utf-8 and can properly distinguish examples of encapsulated
- * utf-8. It is considered to be safe to use as a guard.
- */
-
- /* Already UTF-8? */
-#ifdef USE_CHARDET
- if (libguess_validate_utf8(str, strlen(str)))
- return g_strdup(str);
-#else
- if (g_utf8_validate(str, strlen(str), NULL))
- return g_strdup(str);
-#endif
+ chardet_update ();
- /* chardet encoding detector */
- if ((out_str = cd_chardet_to_utf8 (str, strlen (str), NULL, NULL)))
- return out_str;
-
- /* all else fails, we mask off character codes >= 128, replace with '?' */
- return str_to_utf8_fallback(str);
+ hook_associate ("set chardet_detector", (HookFunction) chardet_update, NULL);
+ hook_associate ("set chardet_fallback", (HookFunction) chardet_update, NULL);
}
-static char * cd_chardet_to_utf8 (const char * str, int len,
- int * arg_bytes_read, int * arg_bytes_write)
+void chardet_cleanup (void)
{
- char *ret = NULL;
- int * bytes_read, * bytes_write;
- int my_bytes_read, my_bytes_write;
-
- bytes_read = arg_bytes_read != NULL ? arg_bytes_read : &my_bytes_read;
- bytes_write = arg_bytes_write != NULL ? arg_bytes_write : &my_bytes_write;
-
- g_return_val_if_fail(str != NULL, NULL);
-
-#ifdef USE_CHARDET
- if (libguess_validate_utf8(str, len))
-#else
- if (g_utf8_validate(str, len, NULL))
-#endif
- {
- if (len < 0)
- len = strlen (str);
-
- ret = g_malloc (len + 1);
- memcpy (ret, str, len);
- ret[len] = 0;
-
- if (arg_bytes_read != NULL)
- * arg_bytes_read = len;
- if (arg_bytes_write != NULL)
- * arg_bytes_write = len;
-
- return ret;
- }
+ hook_dissociate ("set chardet_detector", (HookFunction) chardet_update);
+ hook_dissociate ("set chardet_fallback", (HookFunction) chardet_update);
-#ifdef USE_CHARDET
- char * det = get_string (NULL, "chardet_detector");
-
- if (det[0])
- {
- AUDDBG("guess encoding (%s) %s\n", det, str);
- const char * encoding = libguess_determine_encoding (str, len, det);
- AUDDBG("encoding = %s\n", encoding);
- if (encoding)
- {
- gsize read_gsize = 0, written_gsize = 0;
- ret = g_convert (str, len, "UTF-8", encoding, & read_gsize, & written_gsize, NULL);
- * bytes_read = read_gsize;
- * bytes_write = written_gsize;
- }
- }
-
- g_free (det);
-#endif
-
- /* If detection failed or was not enabled, try fallbacks (if there are any) */
- if (! ret)
- {
- char * fallbacks = get_string (NULL, "chardet_fallback");
- char * * split = g_strsplit_set (fallbacks, " ,:;|/", -1);
-
- for (char * * enc = split; * enc; enc ++)
- {
- gsize read_gsize = 0, written_gsize = 0;
- ret = g_convert (str, len, "UTF-8", * enc, & read_gsize, & written_gsize, NULL);
- * bytes_read = read_gsize;
- * bytes_write = written_gsize;
-
- if (len == *bytes_read)
- break;
- else {
- g_free(ret);
- ret = NULL;
- }
- }
-
- g_strfreev (split);
- g_free (fallbacks);
- }
-
- /* First fallback: locale (duh!) */
- if (ret == NULL)
- {
- gsize read_gsize = 0, written_gsize = 0;
- ret = g_locale_to_utf8 (str, len, & read_gsize, & written_gsize, NULL);
- * bytes_read = read_gsize;
- * bytes_write = written_gsize;
- }
-
- /* The final fallback is ISO-8859-1, if no other is specified or conversions fail */
- if (ret == NULL)
- {
- gsize read_gsize = 0, written_gsize = 0;
- ret = g_convert (str, len, "UTF-8", "ISO-8859-1", & read_gsize, & written_gsize, NULL);
- * bytes_read = read_gsize;
- * bytes_write = written_gsize;
- }
-
- if (ret != NULL)
- {
- if (g_utf8_validate(ret, -1, NULL))
- return ret;
- else
- {
- g_warning("g_utf8_validate() failed for converted string in cd_chardet_to_utf8: '%s'", ret);
- g_free(ret);
- return NULL;
- }
- }
-
- return NULL; /* If we have no idea, return NULL. */
-}
-
-void chardet_init (void)
-{
-#ifdef USE_CHARDET
- libguess_determine_encoding(NULL, -1, "");
-#endif
- str_set_utf8_impl (cd_str_to_utf8, cd_chardet_to_utf8);
+ str_set_charsets (NULL, NULL);
}
diff --git a/src/audacious/config.c b/src/audacious/config.c
index c40de94..0bc4966 100644
--- a/src/audacious/config.c
+++ b/src/audacious/config.c
@@ -1,6 +1,6 @@
/*
* config.c
- * Copyright 2011 John Lindgren
+ * Copyright 2011-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -18,12 +18,12 @@
*/
#include <glib.h>
-#include <pthread.h>
-#include <stdio.h>
#include <string.h>
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
+#include <libaudcore/inifile.h>
+#include <libaudcore/multihash.h>
#include "main.h"
#include "misc.h"
@@ -81,6 +81,7 @@ static const char * const core_defaults[] = {
"stop_after_current_song", "FALSE",
/* playlist */
+ "chardet_fallback", "ISO-8859-1",
#ifdef _WIN32
"convert_backslash", "TRUE",
#else
@@ -93,111 +94,270 @@ static const char * const core_defaults[] = {
NULL};
-static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-static GHashTable * defaults;
-static GKeyFile * keyfile;
-static bool_t modified;
+typedef enum {
+ OP_IS_DEFAULT,
+ OP_GET,
+ OP_SET,
+ OP_SET_NO_FLAG,
+ OP_CLEAR,
+ OP_CLEAR_NO_FLAG
+} OpType;
+
+typedef struct {
+ const char * section;
+ const char * key;
+ const char * value;
+} ConfigItem;
+
+typedef struct {
+ MultihashNode node;
+ ConfigItem item;
+} ConfigNode;
+
+typedef struct {
+ OpType type;
+ ConfigItem item;
+ unsigned hash;
+ bool_t result;
+} ConfigOp;
+
+typedef struct {
+ char * section;
+} LoadState;
+
+typedef struct {
+ GArray * list;
+} SaveState;
+
+static unsigned item_hash (const ConfigItem * item)
+{
+ return g_str_hash (item->section) + g_str_hash (item->key);
+}
-void config_load (void)
+/* assumes pooled strings */
+static int item_compare (const ConfigItem * a, const ConfigItem * b)
{
- g_return_if_fail (! defaults && ! keyfile);
- pthread_mutex_lock (& mutex);
+ if (str_equal (a->section, b->section))
+ return strcmp (a->key, b->key);
+ else
+ return strcmp (a->section, b->section);
+}
- defaults = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
- (GDestroyNotify) g_hash_table_destroy);
- keyfile = g_key_file_new ();
+/* assumes pooled strings */
+static void item_clear (ConfigItem * item)
+{
+ str_unref ((char *) item->section);
+ str_unref ((char *) item->key);
+ str_unref ((char *) item->value);
+}
- char * path = g_strdup_printf ("%s/config", get_path (AUD_PATH_USER_DIR));
- if (g_file_test (path, G_FILE_TEST_EXISTS))
- {
- GError * error = NULL;
- if (! g_key_file_load_from_file (keyfile, path, 0, & error))
- {
- fprintf (stderr, "Error loading config: %s\n", error->message);
- g_error_free (error);
- }
- }
- g_free (path);
+static unsigned config_node_hash (const MultihashNode * node0)
+{
+ const ConfigNode * node = (const ConfigNode *) node0;
- modified = FALSE;
- pthread_mutex_unlock (& mutex);
+ return item_hash (& node->item);
+}
- config_set_defaults (NULL, core_defaults);
+static bool_t config_node_match (const MultihashNode * node0, const void * data, unsigned hash)
+{
+ const ConfigNode * node = (const ConfigNode *) node0;
+ const ConfigItem * item = data;
+
+ return ! strcmp (node->item.section, item->section) && ! strcmp (node->item.key, item->key);
}
-void config_save (void)
+static MultihashTable defaults = {
+ .hash_func = config_node_hash,
+ .match_func = config_node_match
+};
+
+static MultihashTable config = {
+ .hash_func = config_node_hash,
+ .match_func = config_node_match
+};
+
+static volatile bool_t modified;
+
+static MultihashNode * add_cb (const void * data, unsigned hash, void * state)
{
- g_return_if_fail (defaults && keyfile);
- pthread_mutex_lock (& mutex);
+ ConfigOp * op = state;
- if (! modified)
+ switch (op->type)
{
- pthread_mutex_unlock (& mutex);
- return;
+ case OP_IS_DEFAULT:
+ op->result = ! op->item.value[0]; /* empty string is default */
+ return NULL;
+
+ case OP_SET:
+ op->result = TRUE;
+ modified = TRUE;
+
+ case OP_SET_NO_FLAG:;
+ ConfigNode * node = g_slice_new (ConfigNode);
+ node->item.section = str_get (op->item.section);
+ node->item.key = str_get (op->item.key);
+ node->item.value = str_get (op->item.value);
+ return (MultihashNode *) node;
+
+ default:
+ return NULL;
}
+}
- char * path = g_strdup_printf ("%s/config", get_path (AUD_PATH_USER_DIR));
- char * data = g_key_file_to_data (keyfile, NULL, NULL);
+static bool_t action_cb (MultihashNode * node0, void * state)
+{
+ ConfigNode * node = (ConfigNode *) node0;
+ ConfigOp * op = state;
- GError * error = NULL;
- if (! g_file_set_contents (path, data, -1, & error))
+ switch (op->type)
{
- fprintf (stderr, "Error saving config: %s\n", error->message);
- g_error_free (error);
- }
+ case OP_IS_DEFAULT:
+ op->result = ! strcmp (node->item.value, op->item.value);
+ return FALSE;
+
+ case OP_GET:
+ op->item.value = str_ref (node->item.value);
+ return FALSE;
+
+ case OP_SET:
+ op->result = !! strcmp (node->item.value, op->item.value);
+ if (op->result)
+ modified = TRUE;
+
+ case OP_SET_NO_FLAG:
+ str_unref ((char *) node->item.value);
+ node->item.value = str_get (op->item.value);
+ return FALSE;
+
+ case OP_CLEAR:
+ op->result = TRUE;
+ modified = TRUE;
- g_free (data);
- g_free (path);
+ case OP_CLEAR_NO_FLAG:
+ item_clear (& node->item);
+ g_slice_free (ConfigNode, node);
+ return TRUE;
- modified = FALSE;
- pthread_mutex_unlock (& mutex);
+ default:
+ return FALSE;
+ }
}
-void config_cleanup (void)
+static bool_t config_op_run (ConfigOp * op, OpType type, MultihashTable * table)
{
- g_return_if_fail (defaults && keyfile);
- pthread_mutex_lock (& mutex);
+ if (! op->hash)
+ op->hash = item_hash (& op->item);
+
+ op->type = type;
+ op->result = FALSE;
+ multihash_lookup (table, & op->item, op->hash, add_cb, action_cb, op);
+ return op->result;
+}
- g_key_file_free (keyfile);
- keyfile = NULL;
- g_hash_table_destroy (defaults);
- defaults = NULL;
+static void load_heading (const char * section, void * data)
+{
+ LoadState * state = data;
- pthread_mutex_unlock (& mutex);
+ str_unref (state->section);
+ state->section = str_get (section);
}
-void config_clear_section (const char * section)
+static void load_entry (const char * key, const char * value, void * data)
{
- g_return_if_fail (defaults && keyfile);
- pthread_mutex_lock (& mutex);
+ LoadState * state = data;
+ g_return_if_fail (state->section);
- if (! section)
- section = DEFAULT_SECTION;
+ ConfigOp op = {.item = {state->section, key, value}};
+ config_op_run (& op, OP_SET_NO_FLAG, & config);
+}
+
+void config_load (void)
+{
+ char * folder = filename_to_uri (get_path (AUD_PATH_USER_DIR));
+ SCONCAT2 (path, folder, "/config");
+ str_unref (folder);
- if (g_key_file_has_group (keyfile, section))
+ if (vfs_file_test (path, VFS_EXISTS))
{
- g_key_file_remove_group (keyfile, section, NULL);
- modified = TRUE;
+ VFSFile * file = vfs_fopen (path, "r");
+
+ if (file)
+ {
+ LoadState state = {0};
+
+ inifile_parse (file, load_heading, load_entry, & state);
+
+ str_unref (state.section);
+ vfs_fclose (file);
+ }
}
- pthread_mutex_unlock (& mutex);
+ config_set_defaults (NULL, core_defaults);
}
-void config_set_defaults (const char * section, const char * const * entries)
+static bool_t add_to_save_list (MultihashNode * node0, void * state0)
{
- g_return_if_fail (defaults && keyfile);
- pthread_mutex_lock (& mutex);
+ ConfigNode * node = (ConfigNode *) node0;
+ SaveState * state = state0;
- if (! section)
- section = DEFAULT_SECTION;
+ int pos = state->list->len;
+ g_array_set_size (state->list, pos + 1);
+
+ ConfigItem * copy = & g_array_index (state->list, ConfigItem, pos);
+ copy->section = str_ref (node->item.section);
+ copy->key = str_ref (node->item.key);
+ copy->value = str_ref (node->item.value);
+
+ modified = FALSE;
+
+ return FALSE;
+}
+
+void config_save (void)
+{
+ if (! modified)
+ return;
+
+ SaveState state = {.list = g_array_new (FALSE, FALSE, sizeof (ConfigItem))};
+
+ multihash_iterate (& config, add_to_save_list, & state);
+ g_array_sort (state.list, (GCompareFunc) item_compare);
- GHashTable * table = g_hash_table_lookup (defaults, section);
- if (! table)
+ char * folder = filename_to_uri (get_path (AUD_PATH_USER_DIR));
+ SCONCAT2 (path, folder, "/config");
+ str_unref (folder);
+
+ VFSFile * file = vfs_fopen (path, "w");
+
+ if (file)
{
- table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) str_unref);
- g_hash_table_replace (defaults, g_strdup (section), table);
+ const char * current_heading = NULL;
+
+ for (int i = 0; i < state.list->len; i ++)
+ {
+ ConfigItem * item = & g_array_index (state.list, ConfigItem, i);
+
+ if (! str_equal (item->section, current_heading))
+ {
+ inifile_write_heading (file, item->section);
+ current_heading = item->section;
+ }
+
+ inifile_write_entry (file, item->key, item->value);
+ }
+
+ vfs_fclose (file);
}
+ g_array_set_clear_func (state.list, (GDestroyNotify) item_clear);
+ g_array_free (state.list, TRUE);
+}
+
+void config_set_defaults (const char * section, const char * const * entries)
+{
+ if (! section)
+ section = DEFAULT_SECTION;
+
while (1)
{
const char * name = * entries ++;
@@ -205,130 +365,89 @@ void config_set_defaults (const char * section, const char * const * entries)
if (! name || ! value)
break;
- g_hash_table_replace (table, g_strdup (name), str_get (value));
+ ConfigOp op = {.item = {section, name, value}};
+ config_op_run (& op, OP_SET_NO_FLAG, & defaults);
}
-
- pthread_mutex_unlock (& mutex);
}
-static const char * get_default (const char * section, const char * name)
+void config_cleanup (void)
{
- GHashTable * table = g_hash_table_lookup (defaults, section);
- const char * def = table ? g_hash_table_lookup (table, name) : NULL;
- return def ? def : "";
+ ConfigOp op = {.type = OP_CLEAR_NO_FLAG};
+ multihash_iterate (& config, action_cb, & op);
+ multihash_iterate (& defaults, action_cb, & op);
}
-void set_string (const char * section, const char * name, const char * value)
+void set_str (const char * section, const char * name, const char * value)
{
- g_return_if_fail (defaults && keyfile);
g_return_if_fail (name && value);
- pthread_mutex_lock (& mutex);
-
- if (! section)
- section = DEFAULT_SECTION;
-
- const char * def = get_default (section, name);
- bool_t changed = FALSE;
-
- if (! strcmp (value, def))
- {
- if (g_key_file_has_key (keyfile, section, name, NULL))
- {
- g_key_file_remove_key (keyfile, section, name, NULL);
- changed = TRUE;
- }
- }
- else
- {
- char * old = g_key_file_has_key (keyfile, section, name, NULL) ?
- g_key_file_get_value (keyfile, section, name, NULL) : NULL;
- if (! old || strcmp (value, old))
- {
- g_key_file_set_value (keyfile, section, name, value);
- changed = TRUE;
- }
+ ConfigOp op = {.item = {section ? section : DEFAULT_SECTION, name, value}};
- g_free (old);
- }
+ bool_t is_default = config_op_run (& op, OP_IS_DEFAULT, & defaults);
+ bool_t changed = config_op_run (& op, is_default ? OP_CLEAR : OP_SET, & config);
- if (changed)
+ if (changed && ! section)
{
- modified = TRUE;
-
- if (! strcmp (section, DEFAULT_SECTION))
- {
- char * event = g_strdup_printf ("set %s", name);
- event_queue (event, NULL);
- g_free (event);
- }
+ SCONCAT2 (event, "set ", name);
+ event_queue (event, NULL);
}
-
- pthread_mutex_unlock (& mutex);
}
-char * get_string (const char * section, const char * name)
+char * get_str (const char * section, const char * name)
{
- g_return_val_if_fail (defaults && keyfile, g_strdup (""));
- g_return_val_if_fail (name, g_strdup (""));
- pthread_mutex_lock (& mutex);
+ g_return_val_if_fail (name, NULL);
- if (! section)
- section = DEFAULT_SECTION;
+ ConfigOp op = {.item = {section ? section : DEFAULT_SECTION, name, NULL}};
- char * value = g_key_file_has_key (keyfile, section, name, NULL) ?
- g_key_file_get_value (keyfile, section, name, NULL) : NULL;
+ config_op_run (& op, OP_GET, & config);
- if (! value)
- value = g_strdup (get_default (section, name));
+ if (! op.item.value)
+ config_op_run (& op, OP_GET, & defaults);
- pthread_mutex_unlock (& mutex);
- return value;
+ return op.item.value ? (char *) op.item.value : str_get ("");
}
void set_bool (const char * section, const char * name, bool_t value)
{
- set_string (section, name, value ? "TRUE" : "FALSE");
+ set_str (section, name, value ? "TRUE" : "FALSE");
}
bool_t get_bool (const char * section, const char * name)
{
- char * string = get_string (section, name);
+ char * string = get_str (section, name);
bool_t value = ! strcmp (string, "TRUE");
- g_free (string);
+ str_unref (string);
return value;
}
void set_int (const char * section, const char * name, int value)
{
- char * string = int_to_string (value);
+ char * string = int_to_str (value);
g_return_if_fail (string);
- set_string (section, name, string);
- g_free (string);
+ set_str (section, name, string);
+ str_unref (string);
}
int get_int (const char * section, const char * name)
{
- int value = 0;
- char * string = get_string (section, name);
- string_to_int (string, & value);
- g_free (string);
+ char * string = get_str (section, name);
+ int value = str_to_int (string);
+ str_unref (string);
return value;
}
void set_double (const char * section, const char * name, double value)
{
- char * string = double_to_string (value);
+ char * string = double_to_str (value);
g_return_if_fail (string);
- set_string (section, name, string);
- g_free (string);
+ set_str (section, name, string);
+ str_unref (string);
}
double get_double (const char * section, const char * name)
{
- double value = 0;
- char * string = get_string (section, name);
- string_to_double (string, & value);
- g_free (string);
+ char * string = get_str (section, name);
+ double value = str_to_double (string);
+ str_unref (string);
return value;
}
diff --git a/src/audacious/dbus-server.c b/src/audacious/dbus-server.c
new file mode 100644
index 0000000..af55f20
--- /dev/null
+++ b/src/audacious/dbus-server.c
@@ -0,0 +1,779 @@
+/*
+ * dbus-server.c
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include <stdio.h>
+
+#include <libaudgui/libaudgui.h>
+
+#include "aud-dbus.h"
+#include "drct.h"
+#include "main.h"
+#include "misc.h"
+#include "playlist.h"
+#include "ui_preferences.h"
+
+typedef ObjAudacious Obj;
+typedef GDBusMethodInvocation Invoc;
+
+#define FINISH(name) \
+ obj_audacious_complete_##name (obj, invoc)
+
+#define FINISH2(name, ...) \
+ obj_audacious_complete_##name (obj, invoc, __VA_ARGS__)
+
+static Index * strv_to_index (const char * const * strv)
+{
+ Index * index = index_new ();
+ while (* strv)
+ index_insert (index, -1, str_get (* strv ++));
+
+ return index;
+}
+
+static bool_t do_add (Obj * obj, Invoc * invoc, const char * file)
+{
+ playlist_entry_insert (playlist_get_active (), -1, file, NULL, FALSE);
+ FINISH (add);
+ return TRUE;
+}
+
+static bool_t do_add_list (Obj * obj, Invoc * invoc, const char * const * filenames)
+{
+ playlist_entry_insert_batch (playlist_get_active (), -1,
+ strv_to_index (filenames), NULL, FALSE);
+ FINISH (add_list);
+ return TRUE;
+}
+
+static bool_t do_add_url (Obj * obj, Invoc * invoc, const char * url)
+{
+ playlist_entry_insert (playlist_get_active (), -1, url, NULL, FALSE);
+ FINISH (add_url);
+ return TRUE;
+}
+
+static bool_t do_advance (Obj * obj, Invoc * invoc)
+{
+ drct_pl_next ();
+ FINISH (advance);
+ return TRUE;
+}
+
+static bool_t do_auto_advance (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (auto_advance, ! get_bool (NULL, "no_playlist_advance"));
+ return TRUE;
+}
+
+static bool_t do_balance (Obj * obj, Invoc * invoc)
+{
+ int balance;
+ drct_get_volume_balance (& balance);
+ FINISH2 (balance, balance);
+ return TRUE;
+}
+
+static bool_t do_clear (Obj * obj, Invoc * invoc)
+{
+ int playlist = playlist_get_active ();
+ playlist_entry_delete (playlist, 0, playlist_entry_count (playlist));
+ FINISH (clear);
+ return TRUE;
+}
+
+static bool_t do_delete (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ playlist_entry_delete (playlist_get_active (), pos, 1);
+ FINISH (delete);
+ return TRUE;
+}
+
+static bool_t do_delete_active_playlist (Obj * obj, Invoc * invoc)
+{
+ playlist_delete (playlist_get_active ());
+ FINISH (delete_active_playlist);
+ return TRUE;
+}
+
+static bool_t do_eject (Obj * obj, Invoc * invoc)
+{
+ if (! headless_mode ())
+ audgui_run_filebrowser (TRUE);
+
+ FINISH (eject);
+ return TRUE;
+}
+
+static bool_t do_equalizer_activate (Obj * obj, Invoc * invoc, bool_t active)
+{
+ set_bool (NULL, "equalizer_active", active);
+ FINISH (equalizer_activate);
+ return TRUE;
+}
+
+static bool_t do_get_active_playlist (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (get_active_playlist, playlist_get_active ());
+ return TRUE;
+}
+
+static bool_t do_get_active_playlist_name (Obj * obj, Invoc * invoc)
+{
+ char * title = playlist_get_title (playlist_get_active ());
+ FINISH2 (get_active_playlist_name, title ? title : "");
+ str_unref (title);
+ return TRUE;
+}
+
+static bool_t do_get_eq (Obj * obj, Invoc * invoc)
+{
+ double preamp = get_double (NULL, "equalizer_preamp");
+ double bands[AUD_EQUALIZER_NBANDS];
+ eq_get_bands (bands);
+
+ GVariant * var = g_variant_new_fixed_array (G_VARIANT_TYPE_DOUBLE, bands,
+ AUD_EQUALIZER_NBANDS, sizeof (double));
+ FINISH2 (get_eq, preamp, var);
+ return TRUE;
+}
+
+static bool_t do_get_eq_band (Obj * obj, Invoc * invoc, int band)
+{
+ FINISH2 (get_eq_band, eq_get_band (band));
+ return TRUE;
+}
+
+static bool_t do_get_eq_preamp (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (get_eq_preamp, get_double (NULL, "equalizer_preamp"));
+ return TRUE;
+}
+
+static bool_t do_get_info (Obj * obj, Invoc * invoc)
+{
+ int bitrate, samplerate, channels;
+ drct_get_info (& bitrate, & samplerate, & channels);
+ FINISH2 (get_info, bitrate, samplerate, channels);
+ return TRUE;
+}
+
+static bool_t do_get_playqueue_length (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (get_playqueue_length, playlist_queue_count (playlist_get_active ()));
+ return TRUE;
+}
+
+static bool_t do_get_tuple_fields (Obj * obj, Invoc * invoc)
+{
+ const char * fields[TUPLE_FIELDS + 1];
+
+ for (int i = 0; i < TUPLE_FIELDS; i ++)
+ fields[i] = tuple_field_get_name (i);
+
+ fields[TUPLE_FIELDS] = NULL;
+
+ FINISH2 (get_tuple_fields, fields);
+ return TRUE;
+}
+
+static bool_t do_info (Obj * obj, Invoc * invoc)
+{
+ int bitrate, samplerate, channels;
+ drct_get_info (& bitrate, & samplerate, & channels);
+ FINISH2 (info, bitrate, samplerate, channels);
+ return TRUE;
+}
+
+static bool_t do_jump (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ playlist_set_position (playlist_get_active (), pos);
+ FINISH (jump);
+ return TRUE;
+}
+
+static bool_t do_length (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (length, playlist_entry_count (playlist_get_active ()));
+ return TRUE;
+}
+
+static bool_t do_main_win_visible (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (main_win_visible, ! headless_mode () && interface_is_shown ());
+ return TRUE;
+}
+
+static bool_t do_new_playlist (Obj * obj, Invoc * invoc)
+{
+ playlist_insert (-1);
+ playlist_set_active (playlist_count () - 1);
+ FINISH (new_playlist);
+ return TRUE;
+}
+
+static bool_t do_number_of_playlists (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (number_of_playlists, playlist_count ());
+ return TRUE;
+}
+
+static bool_t do_open_list (Obj * obj, Invoc * invoc, const char * const * filenames)
+{
+ drct_pl_open_list (strv_to_index (filenames));
+ FINISH (open_list);
+ return TRUE;
+}
+
+static bool_t do_open_list_to_temp (Obj * obj, Invoc * invoc, const char * const * filenames)
+{
+ drct_pl_open_temp_list (strv_to_index (filenames));
+ FINISH (open_list_to_temp);
+ return TRUE;
+}
+
+static bool_t do_pause (Obj * obj, Invoc * invoc)
+{
+ drct_pause ();
+ FINISH (pause);
+ return TRUE;
+}
+
+static bool_t do_paused (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (paused, drct_get_paused ());
+ return TRUE;
+}
+
+static bool_t do_play (Obj * obj, Invoc * invoc)
+{
+ drct_play ();
+ FINISH (play);
+ return TRUE;
+}
+
+static bool_t do_play_active_playlist (Obj * obj, Invoc * invoc)
+{
+ drct_play_playlist (playlist_get_active ());
+ FINISH (play_active_playlist);
+ return TRUE;
+}
+
+static bool_t do_play_pause (Obj * obj, Invoc * invoc)
+{
+ drct_play_pause ();
+ FINISH (play_pause);
+ return TRUE;
+}
+
+static bool_t do_playing (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (playing, drct_get_playing ());
+ return TRUE;
+}
+
+static bool_t do_playlist_add (Obj * obj, Invoc * invoc, const char * list)
+{
+ playlist_entry_insert (playlist_get_active (), -1, list, NULL, FALSE);
+ FINISH (playlist_add);
+ return TRUE;
+}
+
+static bool_t do_playlist_enqueue_to_temp (Obj * obj, Invoc * invoc, const char * url)
+{
+ drct_pl_open_temp (url);
+ FINISH (playlist_enqueue_to_temp);
+ return TRUE;
+}
+
+static bool_t do_playlist_ins_url_string (Obj * obj, Invoc * invoc, const char * url, int pos)
+{
+ playlist_entry_insert (playlist_get_active (), pos, url, NULL, FALSE);
+ FINISH (playlist_ins_url_string);
+ return TRUE;
+}
+
+static bool_t do_playqueue_add (Obj * obj, Invoc * invoc, int pos)
+{
+ playlist_queue_insert (playlist_get_active (), -1, pos);
+ FINISH (playqueue_add);
+ return TRUE;
+}
+
+static bool_t do_playqueue_clear (Obj * obj, Invoc * invoc)
+{
+ int playlist = playlist_get_active ();
+ playlist_queue_delete (playlist, 0, playlist_queue_count (playlist));
+ FINISH (playqueue_clear);
+ return TRUE;
+}
+
+static bool_t do_playqueue_is_queued (Obj * obj, Invoc * invoc, int pos)
+{
+ bool_t queued = (playlist_queue_find_entry (playlist_get_active (), pos) >= 0);
+ FINISH2 (playqueue_is_queued, queued);
+ return TRUE;
+}
+
+static bool_t do_playqueue_remove (Obj * obj, Invoc * invoc, int pos)
+{
+ int playlist = playlist_get_active ();
+ int qpos = playlist_queue_find_entry (playlist, pos);
+
+ if (qpos >= 0)
+ playlist_queue_delete (playlist, qpos, 1);
+
+ FINISH (playqueue_remove);
+ return TRUE;
+}
+
+static bool_t do_position (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (position, playlist_get_position (playlist_get_active ()));
+ return TRUE;
+}
+
+static bool_t do_queue_get_list_pos (Obj * obj, Invoc * invoc, unsigned qpos)
+{
+ FINISH2 (queue_get_list_pos, playlist_queue_get_entry (playlist_get_active (), qpos));
+ return TRUE;
+}
+
+static bool_t do_queue_get_queue_pos (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ FINISH2 (queue_get_queue_pos, playlist_queue_find_entry (playlist_get_active (), pos));
+ return TRUE;
+}
+
+static bool_t do_quit (Obj * obj, Invoc * invoc)
+{
+ drct_quit ();
+ FINISH (quit);
+ return TRUE;
+}
+
+static bool_t do_repeat (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (repeat, get_bool (NULL, "repeat"));
+ return TRUE;
+}
+
+static bool_t do_reverse (Obj * obj, Invoc * invoc)
+{
+ drct_pl_prev ();
+ FINISH (reverse);
+ return TRUE;
+}
+
+static bool_t do_seek (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ drct_seek (pos);
+ FINISH (seek);
+ return TRUE;
+}
+
+static bool_t do_set_active_playlist (Obj * obj, Invoc * invoc, int playlist)
+{
+ playlist_set_active (playlist);
+ FINISH (set_active_playlist);
+ return TRUE;
+}
+
+static bool_t do_set_active_playlist_name (Obj * obj, Invoc * invoc, const char * title)
+{
+ playlist_set_title (playlist_get_active (), title);
+ FINISH (set_active_playlist_name);
+ return TRUE;
+}
+
+static bool_t do_set_eq (Obj * obj, Invoc * invoc, double preamp, GVariant * var)
+{
+ if (! g_variant_is_of_type (var, G_VARIANT_TYPE ("ad")))
+ return FALSE;
+
+ size_t nbands = 0;
+ const double * bands = g_variant_get_fixed_array (var, & nbands, sizeof (double));
+
+ if (nbands != AUD_EQUALIZER_NBANDS)
+ return FALSE;
+
+ set_double (NULL, "equalizer_preamp", preamp);
+ eq_set_bands (bands);
+ FINISH (set_eq);
+ return TRUE;
+}
+
+static bool_t do_set_eq_band (Obj * obj, Invoc * invoc, int band, double value)
+{
+ eq_set_band (band, value);
+ FINISH (set_eq_band);
+ return TRUE;
+}
+
+static bool_t do_set_eq_preamp (Obj * obj, Invoc * invoc, double preamp)
+{
+ set_double (NULL, "equalizer_preamp", preamp);
+ FINISH (set_eq_preamp);
+ return TRUE;
+}
+
+static bool_t do_set_volume (Obj * obj, Invoc * invoc, int vl, int vr)
+{
+ drct_set_volume (vl, vr);
+ FINISH (set_volume);
+ return TRUE;
+}
+
+static bool_t do_show_about_box (Obj * obj, Invoc * invoc, bool_t show)
+{
+ if (! headless_mode ())
+ {
+ if (show)
+ audgui_show_about_window ();
+ else
+ audgui_hide_about_window ();
+ }
+
+ FINISH (show_about_box);
+ return TRUE;
+}
+
+static bool_t do_show_filebrowser (Obj * obj, Invoc * invoc, bool_t show)
+{
+ if (! headless_mode ())
+ {
+ if (show)
+ audgui_run_filebrowser (FALSE);
+ else
+ audgui_hide_filebrowser ();
+ }
+
+ FINISH (show_filebrowser);
+ return TRUE;
+}
+
+static bool_t do_show_jtf_box (Obj * obj, Invoc * invoc, bool_t show)
+{
+ if (! headless_mode ())
+ {
+ if (show)
+ audgui_jump_to_track ();
+ else
+ audgui_jump_to_track_hide ();
+ }
+
+ FINISH (show_jtf_box);
+ return TRUE;
+}
+
+static bool_t do_show_main_win (Obj * obj, Invoc * invoc, bool_t show)
+{
+ if (! headless_mode ())
+ interface_show (show);
+
+ FINISH (show_main_win);
+ return TRUE;
+}
+
+static bool_t do_show_prefs_box (Obj * obj, Invoc * invoc, bool_t show)
+{
+ if (! headless_mode ())
+ {
+ if (show)
+ show_prefs_window ();
+ else
+ hide_prefs_window ();
+ }
+
+ FINISH (show_prefs_box);
+ return TRUE;
+}
+
+static bool_t do_shuffle (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (shuffle, get_bool (NULL, "shuffle"));
+ return TRUE;
+}
+
+static bool_t do_song_filename (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ char * filename = playlist_entry_get_filename (playlist_get_active (), pos);
+ FINISH2 (song_filename, filename ? filename : "");
+ str_unref (filename);
+ return TRUE;
+}
+
+static bool_t do_song_frames (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ FINISH2 (song_frames, playlist_entry_get_length (playlist_get_active (), pos, FALSE));
+ return TRUE;
+}
+
+static bool_t do_song_length (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ int length = playlist_entry_get_length (playlist_get_active (), pos, FALSE);
+ FINISH2 (song_length, length >= 0 ? length / 1000 : -1);
+ return TRUE;
+}
+
+static bool_t do_song_title (Obj * obj, Invoc * invoc, unsigned pos)
+{
+ char * title = playlist_entry_get_title (playlist_get_active (), pos, FALSE);
+ FINISH2 (song_title, title ? title : "");
+ str_unref (title);
+ return TRUE;
+}
+
+static bool_t do_song_tuple (Obj * obj, Invoc * invoc, unsigned pos, const char * key)
+{
+ int field = tuple_field_by_name (key);
+ Tuple * tuple = NULL;
+ GVariant * var = NULL;
+
+ if (field >= 0)
+ tuple = playlist_entry_get_tuple (playlist_get_active (), pos, FALSE);
+
+ if (tuple)
+ {
+ char * str;
+
+ switch (tuple_get_value_type (tuple, field))
+ {
+ case TUPLE_STRING:
+ str = tuple_get_str (tuple, field);
+ var = g_variant_new_string (str);
+ str_unref (str);
+ break;
+
+ case TUPLE_INT:
+ var = g_variant_new_int32 (tuple_get_int (tuple, field));
+ break;
+
+ default:
+ break;
+ }
+
+ tuple_unref (tuple);
+ }
+
+ if (! var)
+ var = g_variant_new_string ("");
+
+ FINISH2 (song_tuple, g_variant_new_variant (var));
+ return TRUE;
+}
+
+static bool_t do_status (Obj * obj, Invoc * invoc)
+{
+ const char * status = "stopped";
+ if (drct_get_playing ())
+ status = drct_get_paused () ? "paused" : "playing";
+
+ FINISH2 (status, status);
+ return TRUE;
+}
+
+static bool_t do_stop (Obj * obj, Invoc * invoc)
+{
+ drct_stop ();
+ FINISH (stop);
+ return TRUE;
+}
+
+static bool_t do_stop_after (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (stop_after, get_bool (NULL, "stop_after_current_song"));
+ return TRUE;
+}
+
+static bool_t do_stopped (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (stopped, ! drct_get_playing ());
+ return TRUE;
+}
+
+static bool_t do_time (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (time, drct_get_time ());
+ return TRUE;
+}
+
+static bool_t do_toggle_auto_advance (Obj * obj, Invoc * invoc)
+{
+ set_bool (NULL, "no_playlist_advance", ! get_bool (NULL, "no_playlist_advance"));
+ FINISH (toggle_auto_advance);
+ return TRUE;
+}
+
+static bool_t do_toggle_repeat (Obj * obj, Invoc * invoc)
+{
+ set_bool (NULL, "repeat", ! get_bool (NULL, "repeat"));
+ FINISH (toggle_repeat);
+ return TRUE;
+}
+
+static bool_t do_toggle_shuffle (Obj * obj, Invoc * invoc)
+{
+ set_bool (NULL, "shuffle", ! get_bool (NULL, "shuffle"));
+ FINISH (toggle_shuffle);
+ return TRUE;
+}
+
+static bool_t do_toggle_stop_after (Obj * obj, Invoc * invoc)
+{
+ set_bool (NULL, "stop_after_current_song", ! get_bool (NULL, "stop_after_current_song"));
+ FINISH (toggle_stop_after);
+ return TRUE;
+}
+
+static bool_t do_version (Obj * obj, Invoc * invoc)
+{
+ FINISH2 (version, VERSION);
+ return TRUE;
+}
+
+static bool_t do_volume (Obj * obj, Invoc * invoc)
+{
+ int left, right;
+ drct_get_volume (& left, & right);
+ FINISH2 (volume, left, right);
+ return TRUE;
+}
+
+static const struct
+{
+ const char * signal;
+ GCallback callback;
+}
+handlers[] =
+{
+ {"handle-add", (GCallback) do_add},
+ {"handle-add-list", (GCallback) do_add_list},
+ {"handle-add-url", (GCallback) do_add_url},
+ {"handle-advance", (GCallback) do_advance},
+ {"handle-auto-advance", (GCallback) do_auto_advance},
+ {"handle-balance", (GCallback) do_balance},
+ {"handle-clear", (GCallback) do_clear},
+ {"handle-delete", (GCallback) do_delete},
+ {"handle-delete-active-playlist", (GCallback) do_delete_active_playlist},
+ {"handle-eject", (GCallback) do_eject},
+ {"handle-equalizer-activate", (GCallback) do_equalizer_activate},
+ {"handle-get-active-playlist", (GCallback) do_get_active_playlist},
+ {"handle-get-active-playlist-name", (GCallback) do_get_active_playlist_name},
+ {"handle-get-eq", (GCallback) do_get_eq},
+ {"handle-get-eq-band", (GCallback) do_get_eq_band},
+ {"handle-get-eq-preamp", (GCallback) do_get_eq_preamp},
+ {"handle-get-info", (GCallback) do_get_info},
+ {"handle-get-playqueue-length", (GCallback) do_get_playqueue_length},
+ {"handle-get-tuple-fields", (GCallback) do_get_tuple_fields},
+ {"handle-info", (GCallback) do_info},
+ {"handle-jump", (GCallback) do_jump},
+ {"handle-length", (GCallback) do_length},
+ {"handle-main-win-visible", (GCallback) do_main_win_visible},
+ {"handle-new-playlist", (GCallback) do_new_playlist},
+ {"handle-number-of-playlists", (GCallback) do_number_of_playlists},
+ {"handle-open-list", (GCallback) do_open_list},
+ {"handle-open-list-to-temp", (GCallback) do_open_list_to_temp},
+ {"handle-pause", (GCallback) do_pause},
+ {"handle-paused", (GCallback) do_paused},
+ {"handle-play", (GCallback) do_play},
+ {"handle-play-active-playlist", (GCallback) do_play_active_playlist},
+ {"handle-play-pause", (GCallback) do_play_pause},
+ {"handle-playing", (GCallback) do_playing},
+ {"handle-playlist-add", (GCallback) do_playlist_add},
+ {"handle-playlist-enqueue-to-temp", (GCallback) do_playlist_enqueue_to_temp},
+ {"handle-playlist-ins-url-string", (GCallback) do_playlist_ins_url_string},
+ {"handle-playqueue-add", (GCallback) do_playqueue_add},
+ {"handle-playqueue-clear", (GCallback) do_playqueue_clear},
+ {"handle-playqueue-is-queued", (GCallback) do_playqueue_is_queued},
+ {"handle-playqueue-remove", (GCallback) do_playqueue_remove},
+ {"handle-position", (GCallback) do_position},
+ {"handle-queue-get-list-pos", (GCallback) do_queue_get_list_pos},
+ {"handle-queue-get-queue-pos", (GCallback) do_queue_get_queue_pos},
+ {"handle-quit", (GCallback) do_quit},
+ {"handle-repeat", (GCallback) do_repeat},
+ {"handle-reverse", (GCallback) do_reverse},
+ {"handle-seek", (GCallback) do_seek},
+ {"handle-set-active-playlist", (GCallback) do_set_active_playlist},
+ {"handle-set-active-playlist-name", (GCallback) do_set_active_playlist_name},
+ {"handle-set-eq", (GCallback) do_set_eq},
+ {"handle-set-eq-band", (GCallback) do_set_eq_band},
+ {"handle-set-eq-preamp", (GCallback) do_set_eq_preamp},
+ {"handle-set-volume", (GCallback) do_set_volume},
+ {"handle-show-about-box", (GCallback) do_show_about_box},
+ {"handle-show-filebrowser", (GCallback) do_show_filebrowser},
+ {"handle-show-jtf-box", (GCallback) do_show_jtf_box},
+ {"handle-show-main-win", (GCallback) do_show_main_win},
+ {"handle-show-prefs-box", (GCallback) do_show_prefs_box},
+ {"handle-shuffle", (GCallback) do_shuffle},
+ {"handle-song-filename", (GCallback) do_song_filename},
+ {"handle-song-frames", (GCallback) do_song_frames},
+ {"handle-song-length", (GCallback) do_song_length},
+ {"handle-song-title", (GCallback) do_song_title},
+ {"handle-song-tuple", (GCallback) do_song_tuple},
+ {"handle-status", (GCallback) do_status},
+ {"handle-stop", (GCallback) do_stop},
+ {"handle-stop-after", (GCallback) do_stop_after},
+ {"handle-stopped", (GCallback) do_stopped},
+ {"handle-time", (GCallback) do_time},
+ {"handle-toggle-auto-advance", (GCallback) do_toggle_auto_advance},
+ {"handle-toggle-repeat", (GCallback) do_toggle_repeat},
+ {"handle-toggle-shuffle", (GCallback) do_toggle_shuffle},
+ {"handle-toggle-stop-after", (GCallback) do_toggle_stop_after},
+ {"handle-version", (GCallback) do_version},
+ {"handle-volume", (GCallback) do_volume}
+};
+
+static GDBusInterfaceSkeleton * skeleton = NULL;
+
+void dbus_server_init (void)
+{
+ GError * error = NULL;
+ GDBusConnection * bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, & error);
+
+ if (! bus)
+ goto ERROR;
+
+ g_bus_own_name_on_connection (bus, "org.atheme.audacious", 0, NULL, NULL, NULL, NULL);
+
+ skeleton = (GDBusInterfaceSkeleton *) obj_audacious_skeleton_new ();
+
+ for (int i = 0; i < ARRAY_LEN (handlers); i ++)
+ g_signal_connect (skeleton, handlers[i].signal, handlers[i].callback, NULL);
+
+ if (! g_dbus_interface_skeleton_export (skeleton, bus, "/org/atheme/audacious", & error))
+ goto ERROR;
+
+ return;
+
+ERROR:
+ if (error)
+ {
+ fprintf (stderr, "D-Bus error: %s\n", error->message);
+ g_error_free (error);
+ }
+}
+
+void dbus_server_cleanup (void)
+{
+ if (skeleton)
+ {
+ g_object_unref (skeleton);
+ skeleton = NULL;
+ }
+}
diff --git a/src/audacious/dbus-service.h b/src/audacious/dbus-service.h
deleted file mode 100644
index 8d773fa..0000000
--- a/src/audacious/dbus-service.h
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * dbus-service.h
- * Copyright 2007-2011 Ben Tucker, Yoshiki Yazawa, Matti HÀmÀlÀinen,
- * John Lindgren, and William Pitcock
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#ifndef AUDACIOUS_DBUS_SERVICE_H
-#define AUDACIOUS_DBUS_SERVICE_H
-
-#include <glib.h>
-#include <libaudcore/core.h>
-
-#define DBUS_API_SUBJECT_TO_CHANGE
-#include <dbus/dbus-glib.h>
-
-typedef struct {
- GObject parent;
- DBusGProxy *proxy;
-} RemoteObject, MprisRoot, MprisPlayer, MprisTrackList;
-
-typedef struct {
- GObjectClass parent_class;
-} RemoteObjectClass, MprisRootClass, MprisPlayerClass, MprisTrackListClass;
-
-/* MPRIS API */
-// Capabilities
-enum {
- MPRIS_CAPS_NONE = 0,
- MPRIS_CAPS_CAN_GO_NEXT = 1 << 0,
- MPRIS_CAPS_CAN_GO_PREV = 1 << 1,
- MPRIS_CAPS_CAN_PAUSE = 1 << 2,
- MPRIS_CAPS_CAN_PLAY = 1 << 3,
- MPRIS_CAPS_CAN_SEEK = 1 << 4,
- MPRIS_CAPS_CAN_PROVIDE_METADATA = 1 << 5,
- MPRIS_CAPS_PROVIDES_TIMING = 1 << 6,
-};
-
-// Status
-typedef enum {
- MPRIS_STATUS_INVALID = -1,
- MPRIS_STATUS_PLAY = 0,
- MPRIS_STATUS_PAUSE = 1,
- MPRIS_STATUS_STOP = 2,
-} PlaybackStatus;
-
-extern MprisPlayer * mpris;
-
-// MPRIS /
-bool_t mpris_root_identity(MprisRoot *obj, char **identity,
- GError **error);
-bool_t mpris_root_quit(MprisPlayer *obj, GError **error);
-
-// MPRIS /Player
-bool_t mpris_player_next(MprisPlayer *obj, GError **error);
-bool_t mpris_player_prev(MprisPlayer *obj, GError **error);
-bool_t mpris_player_pause(MprisPlayer *obj, GError **error);
-bool_t mpris_player_stop(MprisPlayer *obj, GError **error);
-bool_t mpris_player_play(MprisPlayer *obj, GError **error);
-bool_t mpris_player_repeat(MprisPlayer *obj, bool_t rpt, GError **error);
-bool_t mpris_player_get_status(MprisPlayer *obj, GValueArray **status,
- GError **error);
-bool_t mpris_player_get_metadata(MprisPlayer *obj, GHashTable **metadata,
- GError **error);
-bool_t mpris_player_get_caps(MprisPlayer *obj, int *capabilities,
- GError **error);
-bool_t mpris_player_volume_set(MprisPlayer *obj, int vol, GError **error);
-bool_t mpris_player_volume_get(MprisPlayer *obj, int *vol,
- GError **error);
-bool_t mpris_player_position_set(MprisPlayer *obj, int pos, GError **error);
-bool_t mpris_player_position_get(MprisPlayer *obj, int *pos,
- GError **error);
-enum {
- TRACK_CHANGE_SIG,
- STATUS_CHANGE_SIG,
- CAPS_CHANGE_SIG,
- LAST_SIG
-};
-
-enum {
- TRACKLIST_CHANGE_SIG,
- LAST_TRACKLIST_SIG
-};
-
-bool_t mpris_emit_track_change(MprisPlayer *obj);
-bool_t mpris_emit_status_change(MprisPlayer *obj, PlaybackStatus status);
-bool_t mpris_emit_caps_change(MprisPlayer *obj);
-bool_t mpris_emit_tracklist_change(MprisTrackList *obj, int playlist);
-
-// MPRIS /TrackList
-bool_t mpris_tracklist_get_metadata(MprisTrackList *obj, int pos,
- GHashTable **metadata, GError **error);
-bool_t mpris_tracklist_get_current_track(MprisTrackList *obj, int *pos,
- GError **error);
-bool_t mpris_tracklist_get_length(MprisTrackList *obj, int *length,
- GError **error);
-bool_t mpris_tracklist_add_track(MprisTrackList *obj, char *uri,
- bool_t play, GError **error);
-bool_t mpris_tracklist_del_track(MprisTrackList *obj, int pos,
- GError **error);
-bool_t mpris_tracklist_loop(MprisTrackList *obj, bool_t loop,
- GError **error);
-bool_t mpris_tracklist_random(MprisTrackList *obj, bool_t random,
- GError **error);
-
-/* Legacy API */
-// Audacious General Information
-bool_t audacious_rc_version(RemoteObject *obj, char **version, GError **error);
-bool_t audacious_rc_quit(RemoteObject *obj, GError **error);
-bool_t audacious_rc_eject(RemoteObject *obj, GError **error);
-bool_t audacious_rc_main_win_visible(RemoteObject *obj,
- bool_t *is_main_win, GError **error);
-bool_t audacious_rc_show_main_win(RemoteObject *obj, bool_t show,
- GError **error);
-bool_t audacious_rc_equalizer_visible(RemoteObject *obj, bool_t *is_eq_win,
- GError **error);
-bool_t audacious_rc_show_equalizer(RemoteObject *obj, bool_t show,
- GError **error);
-bool_t audacious_rc_playlist_visible(RemoteObject *obj,
- bool_t *is_pl_win,
- GError **error);
-bool_t audacious_rc_show_playlist(RemoteObject *obj, bool_t show,
- GError **error);
-bool_t audacious_rc_get_tuple_fields(RemoteObject *obj, char ***fields,
- GError **error);
-
-// Playback Information/Manipulation
-bool_t audacious_rc_play(RemoteObject *obj, GError **error);
-bool_t audacious_rc_pause(RemoteObject *obj, GError **error);
-bool_t audacious_rc_stop(RemoteObject *obj, GError **error);
-bool_t audacious_rc_playing(RemoteObject *obj, bool_t *is_playing,
- GError **error);
-bool_t audacious_rc_paused(RemoteObject *obj, bool_t *is_paused,
- GError **error);
-bool_t audacious_rc_stopped(RemoteObject *obj, bool_t *is_stopped,
- GError **error);
-bool_t audacious_rc_status(RemoteObject *obj, char **status,
- GError **error);
-bool_t audacious_rc_info(RemoteObject *obj, int *rate, int *freq,
- int *nch, GError **error);
-bool_t audacious_rc_time(RemoteObject *obj, int *time, GError **error);
-bool_t audacious_rc_seek(RemoteObject *obj, unsigned int pos, GError **error);
-bool_t audacious_rc_volume(RemoteObject *obj, int *vl, int *vr,
- GError **error);
-bool_t audacious_rc_set_volume(RemoteObject *obj, int vl, int vr,
- GError **error);
-bool_t audacious_rc_balance(RemoteObject *obj, int *balance,
- GError **error);
-
-// Playlist Information/Manipulation
-bool_t audacious_rc_position(RemoteObject *obj, int *pos, GError **error);
-bool_t audacious_rc_advance(RemoteObject *obj, GError **error);
-bool_t audacious_rc_reverse(RemoteObject *obj, GError **error);
-bool_t audacious_rc_length(RemoteObject *obj, int *length,
- GError **error);
-bool_t audacious_rc_song_title(RemoteObject *obj, unsigned int pos,
- char **title, GError **error);
-bool_t audacious_rc_song_filename(RemoteObject *obj, unsigned int pos,
- char **filename, GError **error);
-bool_t audacious_rc_song_length(RemoteObject *obj, unsigned int pos, int *length,
- GError **error);
-bool_t audacious_rc_song_frames(RemoteObject *obj, unsigned int pos, int *length,
- GError **error);
-bool_t audacious_rc_song_tuple(RemoteObject *obj, unsigned int pos, char *tuple,
- GValue *value, GError **error);
-bool_t audacious_rc_jump(RemoteObject *obj, unsigned int pos, GError **error);
-bool_t audacious_rc_add(RemoteObject *obj, char *file, GError **error);
-bool_t audacious_rc_add_url(RemoteObject *obj, char *url,
- GError **error);
-bool_t audacious_rc_add_list (RemoteObject * obj, char * * filenames,
- GError * * error);
-bool_t audacious_rc_open_list (RemoteObject * obj, char * * filenames,
- GError * * error);
-bool_t audacious_rc_open_list_to_temp (RemoteObject * obj, char * *
- filenames, GError * * error);
-bool_t audacious_rc_delete(RemoteObject *obj, unsigned int pos, GError **error);
-bool_t audacious_rc_clear(RemoteObject *obj, GError **error);
-bool_t audacious_rc_auto_advance(RemoteObject *obj, bool_t *is_advance,
- GError **error);
-bool_t audacious_rc_toggle_auto_advance(RemoteObject *obj, GError **error);
-bool_t audacious_rc_repeat(RemoteObject *obj, bool_t *is_repeat,
- GError **error);
-bool_t audacious_rc_toggle_repeat(RemoteObject *obj, GError **error);
-bool_t audacious_rc_shuffle(RemoteObject *obj, bool_t *is_shuffle,
- GError **error);
-bool_t audacious_rc_toggle_shuffle(RemoteObject *obj, GError **error);
-
-/* new */
-bool_t audacious_rc_show_prefs_box(RemoteObject *obj, bool_t show, GError **error);
-bool_t audacious_rc_show_about_box(RemoteObject *obj, bool_t show, GError **error);
-bool_t audacious_rc_show_jtf_box(RemoteObject *obj, bool_t show, GError **error);
-bool_t audacious_rc_show_filebrowser(RemoteObject *obj, bool_t show, GError **error); //new Nov 8
-bool_t audacious_rc_play_pause(RemoteObject *obj, GError **error);
-bool_t audacious_rc_activate(RemoteObject *obj, GError **error);
-bool_t audacious_rc_queue_get_list_pos(RemoteObject *obj, int qpos, int *pos, GError **error);
-bool_t audacious_rc_queue_get_queue_pos(RemoteObject *obj, int pos, int *qpos, GError **error);
-bool_t audacious_rc_get_info(RemoteObject *obj, int *rate, int *freq, int *nch, GError **error);
-bool_t audacious_rc_toggle_aot(RemoteObject *obj, bool_t ontop, GError **error);
-bool_t audacious_rc_get_playqueue_length(RemoteObject *obj, int *length, GError **error);
-bool_t audacious_rc_playqueue_add(RemoteObject *obj, int pos, GError **error);
-bool_t audacious_rc_playqueue_remove(RemoteObject *obj, int pos, GError **error);
-bool_t audacious_rc_playqueue_clear(RemoteObject *obj, GError **error);
-bool_t audacious_rc_playqueue_is_queued(RemoteObject *obj, int pos, bool_t *is_queued, GError **error);
-bool_t audacious_rc_playlist_ins_url_string(RemoteObject *obj, char *url, int pos, GError **error);
-bool_t audacious_rc_playlist_enqueue_to_temp(RemoteObject *obj, char *url, GError **error);
-bool_t audacious_rc_playlist_add(RemoteObject *obj, void * list, GError **error);
-
-/* new on nov 7 */
-bool_t audacious_rc_get_eq(RemoteObject *obj, double *preamp, GArray **bands, GError **error);
-bool_t audacious_rc_get_eq_preamp(RemoteObject *obj, double *preamp, GError **error);
-bool_t audacious_rc_get_eq_band(RemoteObject *obj, int band, double *value, GError **error);
-bool_t audacious_rc_set_eq(RemoteObject *obj, double preamp, GArray *bands, GError **error);
-bool_t audacious_rc_set_eq_preamp(RemoteObject *obj, double preamp, GError **error);
-bool_t audacious_rc_set_eq_band(RemoteObject *obj, int band, double value, GError **error);
-bool_t audacious_rc_equalizer_activate(RemoteObject *obj, bool_t active, GError **error);
-
-/* new in 2.4 */
-bool_t audacious_rc_get_active_playlist_name(RemoteObject *obj, char **title, GError **error);
-
-/* new in 3.1 */
-bool_t audacious_rc_stop_after (RemoteObject * obj, bool_t * is_stopping, GError * * error);
-bool_t audacious_rc_toggle_stop_after (RemoteObject * obj, GError * * error);
-
-#endif /* AUDACIOUS_DBUS_SERVICE_H */
diff --git a/src/audacious/dbus.c b/src/audacious/dbus.c
deleted file mode 100644
index 950c4cc..0000000
--- a/src/audacious/dbus.c
+++ /dev/null
@@ -1,1049 +0,0 @@
-/*
- * dbus.c
- * Copyright 2007-2011 Ben Tucker, Yoshiki Yazawa, William Pitcock,
- * Matti HÀmÀlÀinen, Andrew Shadoura, John Lindgren, and
- * Tomasz MoƄ
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#include <glib.h>
-#include <string.h>
-
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-bindings.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include "dbus.h"
-#include "dbus-service.h"
-#include "dbus-server-bindings.h"
-
-#include <math.h>
-
-#include <libaudcore/hook.h>
-
-#include "debug.h"
-#include "drct.h"
-#include "playlist.h"
-#include "interface.h"
-#include "misc.h"
-
-static DBusGConnection *dbus_conn = NULL;
-static unsigned int signals[LAST_SIG] = { 0 };
-static unsigned int tracklist_signals[LAST_TRACKLIST_SIG] = { 0 };
-
-MprisPlayer * mpris = NULL;
-MprisTrackList * mpris_tracklist = NULL;
-
-G_DEFINE_TYPE (RemoteObject, audacious_rc, G_TYPE_OBJECT)
-G_DEFINE_TYPE (MprisRoot, mpris_root, G_TYPE_OBJECT)
-G_DEFINE_TYPE (MprisPlayer, mpris_player, G_TYPE_OBJECT)
-G_DEFINE_TYPE (MprisTrackList, mpris_tracklist, G_TYPE_OBJECT)
-
-#define DBUS_TYPE_G_STRING_VALUE_HASHTABLE (dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE))
-
-static void mpris_playlist_update_hook(void * unused, MprisTrackList *obj);
-
-void audacious_rc_class_init(RemoteObjectClass * klass)
-{
-}
-
-void mpris_root_class_init(MprisRootClass * klass)
-{
-}
-
-void mpris_player_class_init(MprisPlayerClass * klass)
-{
- signals[CAPS_CHANGE_SIG] = g_signal_new("caps_change", G_OBJECT_CLASS_TYPE(klass), G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
- signals[TRACK_CHANGE_SIG] =
- g_signal_new("track_change",
- G_OBJECT_CLASS_TYPE(klass), G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, DBUS_TYPE_G_STRING_VALUE_HASHTABLE);
-
- GType status_type = dbus_g_type_get_struct ("GValueArray", G_TYPE_INT,
- G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INVALID);
- signals[STATUS_CHANGE_SIG] =
- g_signal_new ("status_change", G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0, NULL, NULL,
- g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, status_type);
-}
-
-void mpris_tracklist_class_init(MprisTrackListClass * klass)
-{
- tracklist_signals[TRACKLIST_CHANGE_SIG] = g_signal_new("track_list_change", G_OBJECT_CLASS_TYPE(klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
-}
-
-void audacious_rc_init(RemoteObject * object)
-{
- GError *error = NULL;
- DBusGProxy *driver_proxy;
- unsigned int request_ret;
-
- AUDDBG ("Registering remote D-Bus interfaces.\n");
-
- dbus_g_object_type_install_info(audacious_rc_get_type(), &dbus_glib_audacious_rc_object_info);
-
- // Register DBUS path
- dbus_g_connection_register_g_object(dbus_conn, AUDACIOUS_DBUS_PATH, G_OBJECT(object));
-
- // Register the service name, the constants here are defined in
- // dbus-glib-bindings.h
- driver_proxy = dbus_g_proxy_new_for_name(dbus_conn, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
-
- if (!org_freedesktop_DBus_request_name(driver_proxy, AUDACIOUS_DBUS_SERVICE, 0, &request_ret, &error))
- {
- g_warning("Unable to register service: %s", error->message);
- g_error_free(error);
- }
-
- if (!org_freedesktop_DBus_request_name(driver_proxy, AUDACIOUS_DBUS_SERVICE_MPRIS, 0, &request_ret, &error))
- {
- g_warning("Unable to register service: %s", error->message);
- g_error_free(error);
- }
-
- g_object_unref(driver_proxy);
-}
-
-void mpris_root_init(MprisRoot * object)
-{
- dbus_g_object_type_install_info(mpris_root_get_type(), &dbus_glib_mpris_root_object_info);
-
- // Register DBUS path
- dbus_g_connection_register_g_object(dbus_conn, AUDACIOUS_DBUS_PATH_MPRIS_ROOT, G_OBJECT(object));
-}
-
-void mpris_player_init(MprisPlayer * object)
-{
- dbus_g_object_type_install_info(mpris_player_get_type(), &dbus_glib_mpris_player_object_info);
-
- // Register DBUS path
- dbus_g_connection_register_g_object(dbus_conn, AUDACIOUS_DBUS_PATH_MPRIS_PLAYER, G_OBJECT(object));
-
- // Add signals
- DBusGProxy *proxy = object->proxy;
- if (proxy != NULL)
- {
- dbus_g_proxy_add_signal (proxy, "StatusChange", dbus_g_type_get_struct
- ("GValueArray", G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT,
- G_TYPE_INVALID), G_TYPE_INVALID);
- dbus_g_proxy_add_signal (proxy, "CapsChange", G_TYPE_INT, G_TYPE_INVALID);
- dbus_g_proxy_add_signal(proxy, "TrackChange", DBUS_TYPE_G_STRING_VALUE_HASHTABLE, G_TYPE_INVALID);
- }
- else
- {
- /* XXX / FIXME: Why does this happen? -- ccr */
- AUDDBG ("object->proxy == NULL; not adding some signals.\n");
- }
-}
-
-void mpris_tracklist_init(MprisTrackList * object)
-{
- dbus_g_object_type_install_info(mpris_tracklist_get_type(), &dbus_glib_mpris_tracklist_object_info);
-
- // Register DBUS path
- dbus_g_connection_register_g_object(dbus_conn, AUDACIOUS_DBUS_PATH_MPRIS_TRACKLIST, G_OBJECT(object));
-
- // Add signals
- DBusGProxy *proxy = object->proxy;
- if (proxy != NULL)
- {
- dbus_g_proxy_add_signal(proxy, "TrackListChange", G_TYPE_INT, G_TYPE_INVALID);
- }
- else
- {
- /* XXX / FIXME: Why does this happen? -- ccr */
- AUDDBG ("object->proxy == NULL, not adding some signals.\n");
- }
-}
-
-void init_dbus()
-{
- GError *error = NULL;
- DBusConnection *local_conn;
-
- AUDDBG ("Trying to initialize D-Bus.\n");
- dbus_conn = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
- if (dbus_conn == NULL)
- {
- g_warning("Unable to connect to dbus: %s", error->message);
- g_error_free(error);
- return;
- }
-
- g_object_new(audacious_rc_get_type(), NULL);
- g_object_new(mpris_root_get_type(), NULL);
- mpris = g_object_new(mpris_player_get_type(), NULL);
- mpris_tracklist = g_object_new(mpris_tracklist_get_type(), NULL);
-
- local_conn = dbus_g_connection_get_connection(dbus_conn);
- dbus_connection_set_exit_on_disconnect(local_conn, FALSE);
-
- hook_associate ("playlist update",
- (HookFunction) mpris_playlist_update_hook, mpris_tracklist);
-}
-
-void cleanup_dbus (void)
-{
- hook_dissociate ("playlist update", (HookFunction) mpris_playlist_update_hook);
-}
-
-static GValue *tuple_value_to_gvalue(const Tuple * tuple, const char * key)
-{
- GValue *val;
- TupleValueType type = tuple_get_value_type (tuple, -1, key);
-
- if (type == TUPLE_STRING)
- {
- val = g_new0(GValue, 1);
- g_value_init(val, G_TYPE_STRING);
- char * str = tuple_get_str (tuple, -1, key);
- g_value_set_string (val, str);
- str_unref (str);
- return val;
- }
- else if (type == TUPLE_INT)
- {
- val = g_new0(GValue, 1);
- g_value_init(val, G_TYPE_INT);
- int x = tuple_get_int (tuple, -1, key);
- g_value_set_int (val, x);
- return val;
- }
- return NULL;
-}
-
-/**
- * Retrieves value named tuple_key and inserts it inside hash table.
- *
- * @param[in,out] md GHashTable to insert into
- * @param[in] tuple Tuple to read data from
- * @param[in] tuple_key Tuple field key
- * @param[in] key key used for inserting into hash table.
- */
-static void tuple_insert_to_hash_full(GHashTable * md, const Tuple * tuple,
- const char * tuple_key, const char *key)
-{
- GValue *value = tuple_value_to_gvalue(tuple, tuple_key);
- if (value != NULL)
- g_hash_table_insert (md, (void *) key, value);
-}
-
-static void tuple_insert_to_hash(GHashTable * md, const Tuple * tuple,
- const char *key)
-{
- tuple_insert_to_hash_full(md, tuple, key, key);
-}
-
-static void remove_metadata_value(void * value)
-{
- g_value_unset((GValue *) value);
- g_free((GValue *) value);
-}
-
-static GHashTable *make_mpris_metadata(const char * filename, const Tuple * tuple)
-{
- GHashTable *md = NULL;
- void * value;
-
- md = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, remove_metadata_value);
-
- value = g_malloc(sizeof(GValue));
- memset(value, 0, sizeof(GValue));
- g_value_init(value, G_TYPE_STRING);
- g_value_take_string(value, g_strdup(filename));
- g_hash_table_insert(md, "location", value);
-
- if (tuple != NULL)
- {
- tuple_insert_to_hash_full(md, tuple, "length", "mtime");
- tuple_insert_to_hash(md, tuple, "title");
- tuple_insert_to_hash(md, tuple, "artist");
- tuple_insert_to_hash(md, tuple, "album");
- tuple_insert_to_hash(md, tuple, "comment");
- tuple_insert_to_hash(md, tuple, "genre");
- tuple_insert_to_hash(md, tuple, "year");
- tuple_insert_to_hash(md, tuple, "codec");
- tuple_insert_to_hash(md, tuple, "quality");
- tuple_insert_to_hash_full(md, tuple, "track-number", "tracknumber");
- tuple_insert_to_hash_full(md, tuple, "bitrate", "audio-bitrate");
- }
-
- return md;
-}
-
-static GValue * get_field (int playlist, int entry, const char * field)
-{
- Tuple * tuple = playlist_entry_get_tuple (playlist, entry, FALSE);
- GValue * value = tuple ? tuple_value_to_gvalue (tuple, field) : NULL;
-
- if (tuple)
- tuple_unref (tuple);
-
- return value;
-}
-
-static GHashTable * get_mpris_metadata (int playlist, int entry)
-{
- char * filename = playlist_entry_get_filename (playlist, entry);
- Tuple * tuple = playlist_entry_get_tuple (playlist, entry, FALSE);
-
- GHashTable * metadata = NULL;
- if (filename && tuple)
- metadata = make_mpris_metadata (filename, tuple);
-
- str_unref (filename);
- if (tuple)
- tuple_unref (tuple);
-
- return metadata;
-}
-
-/* MPRIS API */
-// MPRIS /
-bool_t mpris_root_identity(MprisRoot * obj, char ** identity, GError ** error)
-{
- *identity = g_strdup_printf("Audacious %s", VERSION);
- return TRUE;
-}
-
-bool_t mpris_root_quit(MprisPlayer * obj, GError ** error)
-{
- event_queue("quit", NULL);
- return TRUE;
-}
-
-// MPRIS /Player
-
-bool_t mpris_player_next (MprisPlayer * obj, GError * * error)
-{
- drct_pl_next ();
- return TRUE;
-}
-
-bool_t mpris_player_prev (MprisPlayer * obj, GError * * error)
-{
- drct_pl_prev ();
- return TRUE;
-}
-
-bool_t mpris_player_pause (MprisPlayer * obj, GError * * error)
-{
- drct_pause ();
- return TRUE;
-}
-
-bool_t mpris_player_stop (MprisPlayer * obj, GError * * error)
-{
- drct_stop ();
- return TRUE;
-}
-
-bool_t mpris_player_play (MprisPlayer * obj, GError * * error)
-{
- drct_play ();
- return TRUE;
-}
-
-bool_t mpris_player_repeat(MprisPlayer * obj, bool_t rpt, GError ** error)
-{
- set_bool (NULL, "repeat", rpt);
- return TRUE;
-}
-
-static void append_int_value(GValueArray * ar, int tmp)
-{
- GValue value;
- memset(&value, 0, sizeof(value));
- g_value_init(&value, G_TYPE_INT);
- g_value_set_int(&value, tmp);
- g_value_array_append(ar, &value);
-}
-
-static int get_playback_status (void)
-{
- if (! drct_get_playing ())
- return MPRIS_STATUS_STOP;
-
- return drct_get_paused () ? MPRIS_STATUS_PAUSE : MPRIS_STATUS_PLAY;
-}
-
-bool_t mpris_player_get_status(MprisPlayer * obj, GValueArray * *status, GError * *error)
-{
- *status = g_value_array_new(4);
-
- append_int_value(*status, (int) get_playback_status());
- append_int_value (* status, get_bool (NULL, "shuffle"));
- append_int_value (* status, get_bool (NULL, "no_playlist_advance"));
- append_int_value (* status, get_bool (NULL, "repeat"));
- return TRUE;
-}
-
-bool_t mpris_player_get_metadata (MprisPlayer * obj, GHashTable * * metadata,
- GError * * error)
-{
- int playlist = playlist_get_playing ();
- int entry = (playlist >= 0) ? playlist_get_position (playlist) : -1;
-
- * metadata = (entry >= 0) ? get_mpris_metadata (playlist, entry) : NULL;
- if (! * metadata)
- * metadata = g_hash_table_new (g_str_hash, g_str_equal);
-
- return TRUE;
-}
-
-bool_t mpris_player_get_caps(MprisPlayer * obj, int * capabilities, GError ** error)
-{
- *capabilities = MPRIS_CAPS_CAN_GO_NEXT | MPRIS_CAPS_CAN_GO_PREV | MPRIS_CAPS_CAN_PAUSE | MPRIS_CAPS_CAN_PLAY | MPRIS_CAPS_CAN_SEEK | MPRIS_CAPS_CAN_PROVIDE_METADATA | MPRIS_CAPS_PROVIDES_TIMING;
- return TRUE;
-}
-
-bool_t mpris_player_volume_set(MprisPlayer * obj, int vol, GError ** error)
-{
- drct_set_volume_main (vol);
- return TRUE;
-}
-
-bool_t mpris_player_volume_get(MprisPlayer * obj, int * vol, GError ** error)
-{
- drct_get_volume_main (vol);
- return TRUE;
-}
-
-bool_t mpris_player_position_set (MprisPlayer * obj, int pos, GError * * error)
-{
- drct_seek (pos);
- return TRUE;
-}
-
-bool_t mpris_player_position_get (MprisPlayer * obj, int * pos, GError * * error)
-{
- * pos = drct_get_time ();
- return TRUE;
-}
-
-// MPRIS /Player signals
-bool_t mpris_emit_caps_change(MprisPlayer * obj)
-{
- g_signal_emit(obj, signals[CAPS_CHANGE_SIG], 0, 0);
- return TRUE;
-}
-
-bool_t mpris_emit_track_change(MprisPlayer * obj)
-{
- int playlist, entry;
- GHashTable *metadata;
-
- playlist = playlist_get_playing();
- entry = playlist_get_position(playlist);
- char * filename = playlist_entry_get_filename (playlist, entry);
- Tuple * tuple = playlist_entry_get_tuple (playlist, entry, FALSE);
-
- if (filename && tuple)
- {
- metadata = make_mpris_metadata (filename, tuple);
- g_signal_emit (obj, signals[TRACK_CHANGE_SIG], 0, metadata);
- g_hash_table_destroy (metadata);
- }
-
- str_unref (filename);
- if (tuple)
- tuple_unref (tuple);
-
- return (filename && tuple);
-}
-
-bool_t mpris_emit_status_change(MprisPlayer * obj, PlaybackStatus status)
-{
- GValueArray *ar = g_value_array_new(4);
-
- if (status == MPRIS_STATUS_INVALID)
- status = get_playback_status ();
-
- append_int_value(ar, (int) status);
- append_int_value (ar, get_bool (NULL, "shuffle"));
- append_int_value (ar, get_bool (NULL, "no_playlist_advance"));
- append_int_value (ar, get_bool (NULL, "repeat"));
-
- g_signal_emit(obj, signals[STATUS_CHANGE_SIG], 0, ar);
- g_value_array_free(ar);
- return TRUE;
-}
-
-// MPRIS /TrackList
-bool_t mpris_emit_tracklist_change(MprisTrackList * obj, int playlist)
-{
- g_signal_emit(obj, tracklist_signals[TRACKLIST_CHANGE_SIG], 0, playlist_entry_count(playlist));
- return TRUE;
-}
-
-static void mpris_playlist_update_hook(void * unused, MprisTrackList * obj)
-{
- int playlist = playlist_get_active();
-
- mpris_emit_tracklist_change(obj, playlist);
-}
-
-bool_t mpris_tracklist_get_metadata (MprisTrackList * obj, int pos,
- GHashTable * * metadata, GError * * error)
-{
- * metadata = get_mpris_metadata (playlist_get_active (), pos);
- if (! * metadata)
- * metadata = g_hash_table_new (g_str_hash, g_str_equal);
-
- return TRUE;
-}
-
-bool_t mpris_tracklist_get_current_track (MprisTrackList * obj, int * pos,
- GError * * error)
-{
- * pos = playlist_get_position (playlist_get_active ());
- return TRUE;
-}
-
-bool_t mpris_tracklist_get_length (MprisTrackList * obj, int * length, GError * * error)
-{
- * length = playlist_entry_count (playlist_get_active ());
- return TRUE;
-}
-
-bool_t mpris_tracklist_add_track (MprisTrackList * obj, char * uri, bool_t play,
- GError * * error)
-{
- playlist_entry_insert (playlist_get_active (), -1, uri, NULL, play);
- return TRUE;
-}
-
-bool_t mpris_tracklist_del_track (MprisTrackList * obj, int pos, GError * * error)
-{
- playlist_entry_delete (playlist_get_active (), pos, 1);
- return TRUE;
-}
-
-bool_t mpris_tracklist_loop (MprisTrackList * obj, bool_t loop, GError * *
- error)
-{
- set_bool (NULL, "repeat", loop);
- return TRUE;
-}
-
-bool_t mpris_tracklist_random (MprisTrackList * obj, bool_t random,
- GError * * error)
-{
- set_bool (NULL, "shuffle", random);
- return TRUE;
-}
-
-// Audacious General Information
-bool_t audacious_rc_version(RemoteObject * obj, char ** version, GError ** error)
-{
- *version = g_strdup(VERSION);
- return TRUE;
-}
-
-bool_t audacious_rc_quit(RemoteObject * obj, GError * *error)
-{
- event_queue("quit", NULL);
- return TRUE;
-}
-
-bool_t audacious_rc_eject(RemoteObject * obj, GError ** error)
-{
- interface_show_filebrowser (TRUE);
- return TRUE;
-}
-
-bool_t audacious_rc_main_win_visible (RemoteObject * obj,
- bool_t * visible, GError ** error)
-{
- * visible = interface_is_shown ();
- return TRUE;
-}
-
-bool_t audacious_rc_show_main_win (RemoteObject * obj, bool_t show,
- GError * * error)
-{
- interface_show (show);
- return TRUE;
-}
-
-bool_t audacious_rc_get_tuple_fields(RemoteObject * obj, char *** fields, GError ** error)
-{
- * fields = g_new (char *, TUPLE_FIELDS);
-
- for (int i = 0; i < TUPLE_FIELDS; i ++)
- (* fields)[i] = g_strdup (tuple_field_get_name (i));
-
- (* fields)[TUPLE_FIELDS] = NULL;
- return TRUE;
-}
-
-
-// Playback Information/Manipulation
-
-bool_t audacious_rc_play (RemoteObject * obj, GError * * error)
-{
- drct_play ();
- return TRUE;
-}
-
-bool_t audacious_rc_pause (RemoteObject * obj, GError * * error)
-{
- drct_pause ();
- return TRUE;
-}
-
-bool_t audacious_rc_stop (RemoteObject * obj, GError * * error)
-{
- drct_stop ();
- return TRUE;
-}
-
-bool_t audacious_rc_playing (RemoteObject * obj, bool_t * is_playing, GError * * error)
-{
- * is_playing = drct_get_playing ();
- return TRUE;
-}
-
-bool_t audacious_rc_paused (RemoteObject * obj, bool_t * is_paused, GError * * error)
-{
- * is_paused = drct_get_paused ();
- return TRUE;
-}
-
-bool_t audacious_rc_stopped (RemoteObject * obj, bool_t * is_stopped, GError * * error)
-{
- * is_stopped = ! drct_get_playing ();
- return TRUE;
-}
-
-bool_t audacious_rc_status (RemoteObject * obj, char * * status, GError * * error)
-{
- if (drct_get_playing ())
- * status = strdup (drct_get_paused () ? "paused" : "playing");
- else
- * status = strdup ("stopped");
-
- return TRUE;
-}
-
-bool_t audacious_rc_info (RemoteObject * obj, int * rate, int * freq, int * nch,
- GError * * error)
-{
- drct_get_info (rate, freq, nch);
- return TRUE;
-}
-
-bool_t audacious_rc_time (RemoteObject * obj, int * time, GError * * error)
-{
- * time = drct_get_time ();
- return TRUE;
-}
-
-bool_t audacious_rc_seek (RemoteObject * obj, unsigned int pos, GError * * error)
-{
- drct_seek (pos);
- return TRUE;
-}
-
-bool_t audacious_rc_volume(RemoteObject * obj, int * vl, int * vr, GError ** error)
-{
- drct_get_volume (vl, vr);
- return TRUE;
-}
-
-bool_t audacious_rc_set_volume(RemoteObject * obj, int vl, int vr, GError ** error)
-{
- drct_set_volume (vl, vr);
- return TRUE;
-}
-
-bool_t audacious_rc_balance(RemoteObject * obj, int * balance, GError ** error)
-{
- drct_get_volume_balance (balance);
- return TRUE;
-}
-
-// Playlist Information/Manipulation
-
-bool_t audacious_rc_position (RemoteObject * obj, int * pos, GError * * error)
-{
- * pos = playlist_get_position (playlist_get_active ());
- return TRUE;
-}
-
-bool_t audacious_rc_advance(RemoteObject * obj, GError * *error)
-{
- drct_pl_next ();
- return TRUE;
-}
-
-bool_t audacious_rc_reverse (RemoteObject * obj, GError * * error)
-{
- drct_pl_prev ();
- return TRUE;
-}
-
-bool_t audacious_rc_length (RemoteObject * obj, int * length, GError * * error)
-{
- * length = playlist_entry_count (playlist_get_active ());
- return TRUE;
-}
-
-bool_t audacious_rc_song_title (RemoteObject * obj, unsigned int pos, char * *
- title, GError * * error)
-{
- char * title2 = playlist_entry_get_title (playlist_get_active (), pos, FALSE);
- if (! title2)
- return FALSE;
-
- * title = strdup (title2);
- str_unref (title2);
- return TRUE;
-}
-
-bool_t audacious_rc_song_filename (RemoteObject * obj, unsigned int pos,
- char * * filename, GError * * error)
-{
- char * filename2 = playlist_entry_get_filename (playlist_get_active (), pos);
- if (! filename2)
- return FALSE;
-
- * filename = strdup (filename2);
- str_unref (filename2);
- return TRUE;
-}
-
-bool_t audacious_rc_song_length(RemoteObject * obj, unsigned int pos, int * length, GError * *error)
-{
- audacious_rc_song_frames(obj, pos, length, error);
- *length /= 1000;
- return TRUE;
-}
-
-bool_t audacious_rc_song_frames (RemoteObject * obj, unsigned int pos, int *
- length, GError * * error)
-{
- * length = playlist_entry_get_length (playlist_get_active (), pos, FALSE);
- return TRUE;
-}
-
-bool_t audacious_rc_song_tuple (RemoteObject * obj, unsigned int pos, char *
- field, GValue * value, GError * * error)
-{
- GValue * value2 = get_field (playlist_get_active (), pos, field);
- if (! value2)
- return FALSE;
-
- memset (value, 0, sizeof (GValue));
- g_value_init (value, G_VALUE_TYPE (value2));
- g_value_copy (value2, value);
- g_value_unset (value2);
- g_free (value2);
- return TRUE;
-}
-
-bool_t audacious_rc_jump (RemoteObject * obj, unsigned int pos, GError * * error)
-{
- playlist_set_position (playlist_get_active (), pos);
- return TRUE;
-}
-
-bool_t audacious_rc_add(RemoteObject * obj, char * file, GError * *error)
-{
- return audacious_rc_playlist_ins_url_string(obj, file, -1, error);
-}
-
-bool_t audacious_rc_add_url(RemoteObject * obj, char * file, GError * *error)
-{
- return audacious_rc_playlist_ins_url_string(obj, file, -1, error);
-}
-
-static Index * strings_to_index (char * * strings)
-{
- Index * index = index_new ();
-
- while (* strings)
- index_append (index, str_get (* strings ++));
-
- return index;
-}
-
-bool_t audacious_rc_add_list (RemoteObject * obj, char * * filenames,
- GError * * error)
-{
- drct_pl_add_list (strings_to_index (filenames), -1);
- return TRUE;
-}
-
-bool_t audacious_rc_open_list (RemoteObject * obj, char * * filenames,
- GError * * error)
-{
- drct_pl_open_list (strings_to_index (filenames));
- return TRUE;
-}
-
-bool_t audacious_rc_open_list_to_temp (RemoteObject * obj, char * *
- filenames, GError * * error)
-{
- drct_pl_open_temp_list (strings_to_index (filenames));
- return TRUE;
-}
-
-bool_t audacious_rc_delete (RemoteObject * obj, unsigned int pos, GError * * error)
-{
- playlist_entry_delete (playlist_get_active (), pos, 1);
- return TRUE;
-}
-
-bool_t audacious_rc_clear (RemoteObject * obj, GError * * error)
-{
- int playlist = playlist_get_active ();
- playlist_entry_delete (playlist, 0, playlist_entry_count (playlist));
- return TRUE;
-}
-
-bool_t audacious_rc_auto_advance(RemoteObject * obj, bool_t * is_advance, GError ** error)
-{
- * is_advance = ! get_bool (NULL, "no_playlist_advance");
- return TRUE;
-}
-
-bool_t audacious_rc_toggle_auto_advance(RemoteObject * obj, GError ** error)
-{
- set_bool (NULL, "no_playlist_advance", ! get_bool (NULL, "no_playlist_advance"));
- return TRUE;
-}
-
-bool_t audacious_rc_repeat(RemoteObject * obj, bool_t * is_repeating, GError ** error)
-{
- *is_repeating = get_bool (NULL, "repeat");
- return TRUE;
-}
-
-bool_t audacious_rc_toggle_repeat (RemoteObject * obj, GError * * error)
-{
- set_bool (NULL, "repeat", ! get_bool (NULL, "repeat"));
- return TRUE;
-}
-
-bool_t audacious_rc_shuffle(RemoteObject * obj, bool_t * is_shuffling, GError ** error)
-{
- *is_shuffling = get_bool (NULL, "shuffle");
- return TRUE;
-}
-
-bool_t audacious_rc_toggle_shuffle (RemoteObject * obj, GError * * error)
-{
- set_bool (NULL, "shuffle", ! get_bool (NULL, "shuffle"));
- return TRUE;
-}
-
-bool_t audacious_rc_stop_after (RemoteObject * obj, bool_t * is_stopping, GError * * error)
-{
- * is_stopping = get_bool (NULL, "stop_after_current_song");
- return TRUE;
-}
-
-bool_t audacious_rc_toggle_stop_after (RemoteObject * obj, GError * * error)
-{
- set_bool (NULL, "stop_after_current_song", ! get_bool (NULL, "stop_after_current_song"));
- return TRUE;
-}
-
-/* New on Oct 5 */
-bool_t audacious_rc_show_prefs_box(RemoteObject * obj, bool_t show, GError ** error)
-{
- event_queue("prefswin show", GINT_TO_POINTER(show));
- return TRUE;
-}
-
-bool_t audacious_rc_show_about_box(RemoteObject * obj, bool_t show, GError ** error)
-{
- event_queue("aboutwin show", GINT_TO_POINTER(show));
- return TRUE;
-}
-
-bool_t audacious_rc_show_jtf_box(RemoteObject * obj, bool_t show, GError ** error)
-{
- if (show)
- interface_show_jump_to_track ();
-
- return TRUE;
-}
-
-bool_t audacious_rc_show_filebrowser(RemoteObject * obj, bool_t show, GError ** error)
-{
- if (show)
- interface_show_filebrowser (FALSE);
-
- return TRUE;
-}
-
-bool_t audacious_rc_play_pause (RemoteObject * obj, GError * * error)
-{
- drct_play_pause ();
- return TRUE;
-}
-
-bool_t audacious_rc_get_info (RemoteObject * obj, int * rate, int * freq,
- int * nch, GError * * error)
-{
- drct_get_info (rate, freq, nch);
- return TRUE;
-}
-
-bool_t audacious_rc_toggle_aot(RemoteObject * obj, bool_t ontop, GError ** error)
-{
- hook_call("mainwin set always on top", &ontop);
- return TRUE;
-}
-
-bool_t audacious_rc_playqueue_add (RemoteObject * obj, int pos, GError * * error)
-{
- playlist_queue_insert (playlist_get_active (), -1, pos);
- return TRUE;
-}
-
-bool_t audacious_rc_playqueue_remove (RemoteObject * obj, int pos, GError * * error)
-{
- int playlist = playlist_get_active ();
- int at = playlist_queue_find_entry (playlist, pos);
-
- if (at >= 0)
- playlist_queue_delete (playlist, at, 1);
-
- return TRUE;
-}
-
-bool_t audacious_rc_playqueue_clear (RemoteObject * obj, GError * * error)
-{
- int playlist = playlist_get_active ();
- playlist_queue_delete (playlist, 0, playlist_queue_count (playlist));
- return TRUE;
-}
-
-bool_t audacious_rc_get_playqueue_length (RemoteObject * obj, int * length,
- GError * * error)
-{
- * length = playlist_queue_count (playlist_get_active ());
- return TRUE;
-}
-
-bool_t audacious_rc_queue_get_list_pos (RemoteObject * obj, int qpos, int * pos,
- GError * * error)
-{
- * pos = playlist_queue_get_entry (playlist_get_active (), qpos);
- return TRUE;
-}
-
-bool_t audacious_rc_queue_get_queue_pos (RemoteObject * obj, int pos, int *
- qpos, GError * * error)
-{
- * qpos = playlist_queue_find_entry (playlist_get_active (), pos);
- return TRUE;
-}
-
-bool_t audacious_rc_playqueue_is_queued (RemoteObject * obj, int pos, bool_t *
- is_queued, GError * * error)
-{
- * is_queued = (playlist_queue_find_entry (playlist_get_active (), pos) >= 0);
- return TRUE;
-}
-
-bool_t audacious_rc_playlist_ins_url_string (RemoteObject * obj, char * url, int
- pos, GError * * error)
-{
- playlist_entry_insert (playlist_get_active (), pos, url, NULL, FALSE);
- return TRUE;
-}
-
-bool_t audacious_rc_playlist_add(RemoteObject * obj, void *list, GError * *error)
-{
- return audacious_rc_playlist_ins_url_string(obj, list, -1, error);
-}
-
-bool_t audacious_rc_playlist_enqueue_to_temp (RemoteObject * obj, char * url,
- GError * * error)
-{
- drct_pl_open_temp (url);
- return TRUE;
-}
-
-/* New on Nov 7: Equalizer */
-bool_t audacious_rc_get_eq(RemoteObject * obj, double * preamp, GArray ** bands, GError ** error)
-{
- * preamp = get_double (NULL, "equalizer_preamp");
- * bands = g_array_new (FALSE, FALSE, sizeof (double));
- g_array_set_size (* bands, AUD_EQUALIZER_NBANDS);
- eq_get_bands ((double *) (* bands)->data);
-
- return TRUE;
-}
-
-bool_t audacious_rc_get_eq_preamp(RemoteObject * obj, double * preamp, GError ** error)
-{
- * preamp = get_double (NULL, "equalizer_preamp");
- return TRUE;
-}
-
-bool_t audacious_rc_get_eq_band(RemoteObject * obj, int band, double * value, GError ** error)
-{
- * value = eq_get_band (band);
- return TRUE;
-}
-
-bool_t audacious_rc_set_eq(RemoteObject * obj, double preamp, GArray * bands, GError ** error)
-{
- set_double (NULL, "equalizer_preamp", preamp);
- eq_set_bands ((double *) bands->data);
- return TRUE;
-}
-
-bool_t audacious_rc_set_eq_preamp(RemoteObject * obj, double preamp, GError ** error)
-{
- set_double (NULL, "equalizer_preamp", preamp);
- return TRUE;
-}
-
-bool_t audacious_rc_set_eq_band(RemoteObject * obj, int band, double value, GError ** error)
-{
- eq_set_band (band, value);
- return TRUE;
-}
-
-bool_t audacious_rc_equalizer_activate(RemoteObject * obj, bool_t active, GError ** error)
-{
- set_bool (NULL, "equalizer_active", active);
- return TRUE;
-}
-
-bool_t audacious_rc_get_active_playlist_name (RemoteObject * obj, char * *
- title, GError * * error)
-{
- char * title2 = playlist_get_title (playlist_get_active ());
- * title = strdup (title2);
- str_unref (title2);
- return TRUE;
-}
-
-DBusGProxy *audacious_get_dbus_proxy(void)
-{
- DBusGConnection *connection = NULL;
- GError *error = NULL;
- connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
- g_clear_error(&error);
- return dbus_g_proxy_new_for_name(connection, AUDACIOUS_DBUS_SERVICE, AUDACIOUS_DBUS_PATH, AUDACIOUS_DBUS_INTERFACE);
-}
diff --git a/src/audacious/dbus.h b/src/audacious/dbus.h
deleted file mode 100644
index 3a3300d..0000000
--- a/src/audacious/dbus.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * dbus.h
- * Copyright 2007 Ben Tucker
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#ifndef AUDACIOUS_DBUS_H
-#define AUDACIOUS_DBUS_H
-
-#include <dbus/dbus-glib.h>
-
-#define AUDACIOUS_DBUS_SERVICE "org.atheme.audacious"
-#define AUDACIOUS_DBUS_PATH "/org/atheme/audacious"
-#define AUDACIOUS_DBUS_INTERFACE "org.atheme.audacious"
-#define AUDACIOUS_DBUS_SERVICE_MPRIS "org.mpris.audacious"
-#define AUDACIOUS_DBUS_INTERFACE_MPRIS "org.freedesktop.MediaPlayer"
-#define AUDACIOUS_DBUS_PATH_MPRIS_ROOT "/"
-#define AUDACIOUS_DBUS_PATH_MPRIS_PLAYER "/Player"
-#define AUDACIOUS_DBUS_PATH_MPRIS_TRACKLIST "/TrackList"
-
-#define NONE = 0
-#define CAN_GO_NEXT = 1 << 0
-#define CAN_GO_PREV = 1 << 1
-#define CAN_PAUSE = 1 << 2
-#define CAN_PLAY = 1 << 3
-#define CAN_SEEK = 1 << 4
-#define CAN_RESTORE_CONTEXT = 1 << 5
-#define CAN_PROVIDE_METADATA = 1 << 6
-#define PROVIDES_TIMING = 1 << 7
-
-void init_dbus (void);
-void cleanup_dbus (void);
-DBusGProxy * audacious_get_dbus_proxy (void);
-
-#endif /* AUDACIOUS_DBUS_H */
diff --git a/src/audacious/debug.h b/src/audacious/debug.h
index b10fd6c..2b372ad 100644
--- a/src/audacious/debug.h
+++ b/src/audacious/debug.h
@@ -1,6 +1,6 @@
/*
* debug.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/drct-api.h b/src/audacious/drct-api.h
index 1a259f0..cffaf4b 100644
--- a/src/audacious/drct-api.h
+++ b/src/audacious/drct-api.h
@@ -1,6 +1,6 @@
/*
* drct-api.h
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -31,6 +31,7 @@ AUD_VFUNC0 (drct_quit)
* and must be freed with str_unref(). */
AUD_VFUNC0 (drct_play)
+AUD_VFUNC0 (drct_play_pause)
AUD_VFUNC1 (drct_play_playlist, int, playlist)
AUD_VFUNC0 (drct_pause)
AUD_VFUNC0 (drct_stop)
@@ -44,6 +45,13 @@ AUD_FUNC0 (int, drct_get_time)
AUD_FUNC0 (int, drct_get_length)
AUD_VFUNC1 (drct_seek, int, time)
+/* "A-B repeat": when playback reaches point B, it returns to point A (where A
+ * and B are in milliseconds). The value -1 is interpreted as the beginning of
+ * the song (for A) or the end of the song (for B). A-B repeat is disabled
+ * entirely by setting both A and B to -1. */
+AUD_VFUNC2 (drct_set_ab_repeat, int, a, int, b)
+AUD_VFUNC2 (drct_get_ab_repeat, int *, a, int *, b)
+
/* --- VOLUME CONTROL --- */
AUD_VFUNC2 (drct_get_volume, int *, left, int *, right)
@@ -68,17 +76,3 @@ AUD_VFUNC1 (drct_pl_open, const char *, filename)
AUD_VFUNC1 (drct_pl_open_list, Index *, filenames)
AUD_VFUNC1 (drct_pl_open_temp, const char *, filename)
AUD_VFUNC1 (drct_pl_open_temp_list, Index *, filenames)
-
-/* deprecated; use playlist_delete_selected() */
-AUD_VFUNC1 (drct_pl_delete_selected, int, playlist)
-
-/* added in Audacious 3.4 */
-
-/* "A-B repeat": when playback reaches point B, it returns to point A (where A
- * and B are in milliseconds). The value -1 is interpreted as the beginning of
- * the song (for A) or the end of the song (for B). A-B repeat is disabled
- * entirely by setting both A and B to -1. */
-AUD_VFUNC2 (drct_set_ab_repeat, int, a, int, b)
-AUD_VFUNC2 (drct_get_ab_repeat, int *, a, int *, b)
-
-AUD_VFUNC0 (drct_play_pause)
diff --git a/src/audacious/drct.c b/src/audacious/drct.c
index 40e3151..5fbef8f 100644
--- a/src/audacious/drct.c
+++ b/src/audacious/drct.c
@@ -1,6 +1,6 @@
/*
* drct.c
- * Copyright 2009-2011 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,7 +17,6 @@
* the use of this software.
*/
-#include <glib.h>
#include <libaudcore/hook.h>
#include <libaudcore/vfs.h>
@@ -26,13 +25,6 @@
#include "misc.h"
#include "playlist.h"
-/* --- PROGRAM CONTROL --- */
-
-void drct_quit (void)
-{
- hook_call ("quit", NULL);
-}
-
/* --- PLAYBACK CONTROL --- */
void drct_play (void)
@@ -169,7 +161,7 @@ static void add_list (Index * filenames, int at, bool_t to_temp, bool_t play)
void drct_pl_add (const char * filename, int at)
{
Index * filenames = index_new ();
- index_append (filenames, str_get (filename));
+ index_insert (filenames, -1, str_get (filename));
add_list (filenames, at, FALSE, FALSE);
}
@@ -181,7 +173,7 @@ void drct_pl_add_list (Index * filenames, int at)
void drct_pl_open (const char * filename)
{
Index * filenames = index_new ();
- index_append (filenames, str_get (filename));
+ index_insert (filenames, -1, str_get (filename));
add_list (filenames, -1, get_bool (NULL, "open_to_temporary"), TRUE);
}
@@ -193,7 +185,7 @@ void drct_pl_open_list (Index * filenames)
void drct_pl_open_temp (const char * filename)
{
Index * filenames = index_new ();
- index_append (filenames, str_get (filename));
+ index_insert (filenames, -1, str_get (filename));
add_list (filenames, -1, TRUE, TRUE);
}
@@ -201,8 +193,3 @@ void drct_pl_open_temp_list (Index * filenames)
{
add_list (filenames, -1, TRUE, TRUE);
}
-
-void drct_pl_delete_selected (int list)
-{
- playlist_delete_selected (list);
-}
diff --git a/src/audacious/effect.c b/src/audacious/effect.c
index 23f12ea..c344e06 100644
--- a/src/audacious/effect.c
+++ b/src/audacious/effect.c
@@ -1,6 +1,6 @@
/*
* effect.c
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -50,7 +50,7 @@ static bool_t effect_start_cb (PluginHandle * plugin, EffectStartState * state)
g_return_val_if_fail (header != NULL, TRUE);
header->start (state->channels, state->rate);
- RunningEffect * effect = g_malloc (sizeof (RunningEffect));
+ RunningEffect * effect = g_slice_new (RunningEffect);
effect->plugin = plugin;
effect->header = header;
effect->channels_returned = * state->channels;
@@ -66,7 +66,10 @@ void effect_start (int * channels, int * rate)
pthread_mutex_lock (& mutex);
AUDDBG ("Starting effects.\n");
- g_list_foreach (running_effects, (GFunc) g_free, NULL);
+
+ for (GList * node = running_effects; node; node = node->next)
+ g_slice_free (RunningEffect, node->data);
+
g_list_free (running_effects);
running_effects = NULL;
@@ -96,7 +99,7 @@ static void effect_process_cb (RunningEffect * effect, EffectProcessState *
effect->header->finish (state->data, state->samples);
running_effects = g_list_remove (running_effects, effect);
- g_free (effect);
+ g_slice_free (RunningEffect, effect);
}
else
effect->header->process (state->data, state->samples);
@@ -166,7 +169,7 @@ static void effect_insert (PluginHandle * plugin, EffectPlugin * header)
return;
AUDDBG ("Adding %s without reset.\n", plugin_get_name (plugin));
- RunningEffect * effect = g_malloc (sizeof (RunningEffect));
+ RunningEffect * effect = g_slice_new (RunningEffect);
effect->plugin = plugin;
effect->header = header;
effect->remove_flag = FALSE;
diff --git a/src/audacious/effect.h b/src/audacious/effect.h
index c663eb7..2a0add9 100644
--- a/src/audacious/effect.h
+++ b/src/audacious/effect.h
@@ -1,6 +1,6 @@
/*
* effect.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/equalizer.c b/src/audacious/equalizer.c
index ef67b89..1b74f31 100644
--- a/src/audacious/equalizer.c
+++ b/src/audacious/equalizer.c
@@ -182,18 +182,18 @@ void eq_cleanup (void)
void eq_set_bands (const double *values)
{
- char *string = double_array_to_string (values, EQ_BANDS);
+ char *string = double_array_to_str (values, EQ_BANDS);
g_return_if_fail (string);
- set_string (NULL, "equalizer_bands", string);
- g_free (string);
+ set_str (NULL, "equalizer_bands", string);
+ str_unref (string);
}
void eq_get_bands (double *values)
{
memset (values, 0, sizeof (double) * EQ_BANDS);
- char *string = get_string (NULL, "equalizer_bands");
- string_to_double_array (string, values, EQ_BANDS);
- g_free (string);
+ char *string = get_str (NULL, "equalizer_bands");
+ str_to_double_array (string, values, EQ_BANDS);
+ str_unref (string);
}
void eq_set_band (int band, double value)
diff --git a/src/audacious/equalizer_preset.c b/src/audacious/equalizer_preset.c
index dce62f9..6c70eb8 100644
--- a/src/audacious/equalizer_preset.c
+++ b/src/audacious/equalizer_preset.c
@@ -1,6 +1,7 @@
/*
* equalizer_preset.c
- * Copyright 2003-2011 Eugene Zagidullin, William Pitcock, and John Lindgren
+ * Copyright 2003-2013 Eugene Zagidullin, William Pitcock, John Lindgren, and
+ * Thomas Lange
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -18,235 +19,224 @@
*/
#include <glib.h>
+#include <math.h>
#include <string.h>
+#include <libaudcore/audstrings.h>
+
#include "debug.h"
#include "i18n.h"
-#include "interface.h"
#include "misc.h"
-static EqualizerPreset * equalizer_preset_new (const char * name)
+EqualizerPreset * equalizer_preset_new (const char * name)
{
- EqualizerPreset *preset = g_new0(EqualizerPreset, 1);
- preset->name = g_strdup(name);
+ EqualizerPreset * preset = g_slice_new0 (EqualizerPreset);
+ preset->name = str_get (name);
return preset;
}
+void equalizer_preset_free (EqualizerPreset * preset)
+{
+ str_unref (preset->name);
+ g_slice_free (EqualizerPreset, preset);
+}
+
Index * equalizer_read_presets (const char * basename)
{
- char *filename, *name;
- GKeyFile *rcfile;
- int i, p = 0;
- EqualizerPreset *preset;
+ GKeyFile * rcfile = g_key_file_new ();
- filename = g_build_filename (get_path (AUD_PATH_USER_DIR), basename, NULL);
+ char * filename = filename_build (get_path (AUD_PATH_USER_DIR), basename);
- rcfile = g_key_file_new();
- if (!g_key_file_load_from_file(rcfile, filename, G_KEY_FILE_NONE, NULL))
+ if (! g_key_file_load_from_file (rcfile, filename, G_KEY_FILE_NONE, NULL))
{
- g_free(filename);
- filename = g_build_filename (get_path (AUD_PATH_DATA_DIR), basename,
- NULL);
+ str_unref (filename);
+ filename = filename_build (get_path (AUD_PATH_DATA_DIR), basename);
- if (!g_key_file_load_from_file(rcfile, filename, G_KEY_FILE_NONE, NULL))
+ if (! g_key_file_load_from_file (rcfile, filename, G_KEY_FILE_NONE, NULL))
{
- g_free(filename);
- return NULL;
+ str_unref (filename);
+ g_key_file_free (rcfile);
+ return NULL;
}
}
- g_free(filename);
+ str_unref (filename);
Index * list = index_new ();
- for (;;)
+ for (int p = 0;; p ++)
{
- char section[32];
+ SPRINTF (section, "Preset%d", p);
- g_snprintf(section, sizeof(section), "Preset%d", p++);
+ char * name = g_key_file_get_string (rcfile, "Presets", section, NULL);
+ if (! name)
+ break;
- if ((name = g_key_file_get_string(rcfile, "Presets", section, NULL)) != NULL)
- {
- preset = g_new0(EqualizerPreset, 1);
- preset->name = name;
- preset->preamp = g_key_file_get_double(rcfile, name, "Preamp", NULL);
+ EqualizerPreset * preset = equalizer_preset_new (name);
+ preset->preamp = g_key_file_get_double (rcfile, name, "Preamp", NULL);
- for (i = 0; i < AUD_EQUALIZER_NBANDS; i++)
- {
- char band[16];
- g_snprintf(band, sizeof(band), "Band%d", i);
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i++)
+ {
+ SPRINTF (band, "Band%d", i);
+ preset->bands[i] = g_key_file_get_double (rcfile, name, band, NULL);
+ }
- preset->bands[i] = g_key_file_get_double(rcfile, name, band, NULL);
- }
+ index_insert (list, -1, preset);
- index_append (list, preset);
- }
- else
- break;
+ g_free (name);
}
- g_key_file_free(rcfile);
+ g_key_file_free (rcfile);
return list;
}
-bool_t equalizer_write_preset_file (Index * list, const char * basename)
+bool_t equalizer_write_presets (Index * list, const char * basename)
{
- char *filename;
- int i;
- GKeyFile *rcfile;
- char *data;
- gsize len;
-
- rcfile = g_key_file_new();
+ GKeyFile * rcfile = g_key_file_new ();
for (int p = 0; p < index_count (list); p ++)
{
EqualizerPreset * preset = index_get (list, p);
- char * tmp = g_strdup_printf ("Preset%d", p);
- g_key_file_set_string(rcfile, "Presets", tmp, preset->name);
- g_free(tmp);
-
- g_key_file_set_double(rcfile, preset->name, "Preamp", preset->preamp);
+ SPRINTF (tmp, "Preset%d", p);
+ g_key_file_set_string (rcfile, "Presets", tmp, preset->name);
+ g_key_file_set_double (rcfile, preset->name, "Preamp", preset->preamp);
- for (i = 0; i < 10; i++)
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
{
- tmp = g_strdup_printf("Band%d", i);
- g_key_file_set_double(rcfile, preset->name, tmp,
- preset->bands[i]);
- g_free(tmp);
+ SPRINTF (tmp, "Band%d", i);
+ g_key_file_set_double (rcfile, preset->name, tmp, preset->bands[i]);
}
}
- filename = g_build_filename (get_path (AUD_PATH_USER_DIR), basename, NULL);
+ size_t len;
+ char * data = g_key_file_to_data (rcfile, & len, NULL);
- data = g_key_file_to_data(rcfile, &len, NULL);
+ char * filename = filename_build (get_path (AUD_PATH_USER_DIR), basename);
bool_t success = g_file_set_contents (filename, data, len, NULL);
- g_free(data);
+ str_unref (filename);
+
+ g_key_file_free (rcfile);
+ g_free (data);
- g_key_file_free(rcfile);
- g_free(filename);
return success;
}
-Index * import_winamp_eqf (VFSFile * file)
+/* Note: Winamp 2.x had a +/- 20 dB range.
+ * Winamp 5.x had a +/- 12 dB range, which we use here. */
+#define FROM_WINAMP_VAL(x) ((31.5 - (x)) * (12.0 / 31.5))
+#define TO_WINAMP_VAL(x) (round (31.5 - (x) * (31.5 / 12.0)))
+
+Index * import_winamp_presets (VFSFile * file)
{
char header[31];
char bands[11];
- int i = 0;
- EqualizerPreset *preset = NULL;
- char *markup;
- char preset_name[0xb4];
+ char preset_name[181];
- if (vfs_fread (header, 1, sizeof header, file) != sizeof header || strncmp
- (header, "Winamp EQ library file v1.1", 27))
- goto error;
+ if (vfs_fread (header, 1, sizeof header, file) != sizeof header ||
+ strncmp (header, "Winamp EQ library file v1.1", 27))
+ return NULL;
- AUDDBG("The EQF header is OK\n");
+ Index * list = index_new ();
- if (vfs_fseek(file, 0x1f, SEEK_SET) == -1) goto error;
+ while (vfs_fread (preset_name, 1, 180, file) == 180)
+ {
+ preset_name[180] = 0; /* protect against buffer overflow */
- Index * list = index_new ();
+ if (vfs_fseek (file, 77, SEEK_CUR)) /* unknown crap --asphyx */
+ break;
- while (vfs_fread(preset_name, 1, 0xb4, file) == 0xb4) {
- AUDDBG("The preset name is '%s'\n", preset_name);
- if (vfs_fseek (file, 0x4d, SEEK_CUR)) /* unknown crap --asphyx */
+ if (vfs_fread (bands, 1, 11, file) != 11)
break;
- if (vfs_fread(bands, 1, 11, file) != 11) break;
- preset = equalizer_preset_new(preset_name);
- /*this was divided by 63, but shouldn't it be 64? --majeru*/
- preset->preamp = EQUALIZER_MAX_GAIN - ((bands[10] * EQUALIZER_MAX_GAIN * 2) / 64.0);
+ EqualizerPreset * preset = equalizer_preset_new (preset_name);
+ preset->preamp = FROM_WINAMP_VAL (bands[10]);
- for (i = 0; i < 10; i++)
- preset->bands[i] = EQUALIZER_MAX_GAIN - ((bands[i] * EQUALIZER_MAX_GAIN * 2) / 64.0);
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
+ preset->bands[i] = FROM_WINAMP_VAL (bands[i]);
- index_append (list, preset);
+ index_insert (list, -1, preset);
}
return list;
+}
+
+bool_t export_winamp_preset (EqualizerPreset * preset, VFSFile * file)
+{
+ char name[257];
+ char bands[11];
-error:
- markup = g_strdup_printf (_("Error importing Winamp EQF file '%s'"),
- vfs_get_filename (file));
- interface_show_error(markup);
+ if (vfs_fwrite ("Winamp EQ library file v1.1\x1a!--", 1, 31, file) != 31)
+ return FALSE;
- g_free(markup);
- return NULL;
+ strncpy (name, preset->name, 257);
+
+ if (vfs_fwrite (name, 1, 257, file) != 257)
+ return FALSE;
+
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
+ bands[i] = TO_WINAMP_VAL (preset->bands[i]);
+
+ bands[10] = TO_WINAMP_VAL (preset->preamp);
+
+ if (vfs_fwrite (bands, 1, 11, file) != 11)
+ return FALSE;
+
+ return TRUE;
}
bool_t save_preset_file (EqualizerPreset * preset, const char * filename)
{
- GKeyFile *rcfile;
- int i;
- char *data;
- gsize len;
-
- rcfile = g_key_file_new();
- g_key_file_set_double(rcfile, "Equalizer preset", "Preamp", preset->preamp);
-
- for (i = 0; i < 10; i++) {
- char tmp[7];
- g_snprintf(tmp, sizeof(tmp), "Band%d", i);
- g_key_file_set_double(rcfile, "Equalizer preset", tmp,
- preset->bands[i]);
+ GKeyFile * rcfile = g_key_file_new ();
+
+ g_key_file_set_double (rcfile, "Equalizer preset", "Preamp", preset->preamp);
+
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
+ {
+ SPRINTF (tmp, "Band%d", i);
+ g_key_file_set_double (rcfile, "Equalizer preset", tmp, preset->bands[i]);
}
- data = g_key_file_to_data(rcfile, &len, NULL);
+ size_t len;
+ char * data = g_key_file_to_data (rcfile, & len, NULL);
+ VFSFile * file = vfs_fopen (filename, "w");
bool_t success = FALSE;
- VFSFile * file = vfs_fopen (filename, "w");
- if (file == NULL)
- goto DONE;
- if (vfs_fwrite (data, 1, strlen (data), file) == strlen (data))
- success = TRUE;
- vfs_fclose (file);
-
-DONE:
- g_free(data);
- g_key_file_free(rcfile);
+ if (file)
+ {
+ success = (vfs_fwrite (data, 1, len, file) == len);
+ vfs_fclose (file);
+ }
+
+ g_key_file_free (rcfile);
+ g_free (data);
+
return success;
}
-static EqualizerPreset * equalizer_read_aud_preset (const char * filename)
+EqualizerPreset * load_preset_file (const char * filename)
{
- int i;
- EqualizerPreset *preset;
- GKeyFile *rcfile;
-
- preset = g_new0(EqualizerPreset, 1);
- preset->name = g_strdup("");
+ GKeyFile * rcfile = g_key_file_new ();
- rcfile = g_key_file_new();
- if (!g_key_file_load_from_file(rcfile, filename, G_KEY_FILE_NONE, NULL))
+ if (! g_key_file_load_from_file (rcfile, filename, G_KEY_FILE_NONE, NULL))
{
- g_key_file_free(rcfile);
- g_free(preset->name);
- g_free(preset);
+ g_key_file_free (rcfile);
return NULL;
}
- preset->preamp = g_key_file_get_double(rcfile, "Equalizer preset", "Preamp", NULL);
- for (i = 0; i < 10; i++)
- {
- char tmp[7];
- g_snprintf(tmp, sizeof(tmp), "Band%d", i);
+ EqualizerPreset * preset = equalizer_preset_new ("");
+
+ preset->preamp = g_key_file_get_double (rcfile, "Equalizer preset", "Preamp", NULL);
- preset->bands[i] = g_key_file_get_double(rcfile, "Equalizer preset", tmp, NULL);
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
+ {
+ SPRINTF (tmp, "Band%d", i);
+ preset->bands[i] = g_key_file_get_double (rcfile, "Equalizer preset", tmp, NULL);
}
- g_key_file_free(rcfile);
- return preset;
-}
+ g_key_file_free (rcfile);
-EqualizerPreset *
-load_preset_file(const char *filename)
-{
- if (filename) {
- EqualizerPreset *preset = equalizer_read_aud_preset(filename);
- return preset;
- }
- return NULL;
+ return preset;
}
diff --git a/src/audacious/fft.c b/src/audacious/fft.c
index d967396..09a6602 100644
--- a/src/audacious/fft.c
+++ b/src/audacious/fft.c
@@ -22,12 +22,6 @@
#include "fft.h"
-#ifndef HAVE_CEXPF
-/* e^(a+bi) = (e^a)(cos(b)+sin(b)i) */
-#define cexpf(x) (expf(crealf(x))*(cosf(cimagf(x))+sinf(cimagf(x))*I))
-#warning Your C library does not have cexpf(). Please update it.
-#endif
-
#define N 512 /* size of the DFT */
#define LOGN 9 /* log N (base 2) */
diff --git a/src/audacious/history.c b/src/audacious/history.c
index b09903f..4dde368 100644
--- a/src/audacious/history.c
+++ b/src/audacious/history.c
@@ -36,8 +36,6 @@ static void history_save (void)
if (! modified)
return;
- config_clear_section ("history");
-
GList * node = history.head;
for (int i = 0; i < MAX_ENTRIES; i ++)
{
@@ -46,7 +44,7 @@ static void history_save (void)
char name[32];
snprintf (name, sizeof name, "entry%d", i);
- set_string ("history", name, node->data);
+ set_str ("history", name, node->data);
node = node->next;
}
@@ -63,11 +61,11 @@ static void history_load (void)
{
char name[32];
snprintf (name, sizeof name, "entry%d", i);
- char * path = get_string ("history", name);
+ char * path = get_str ("history", name);
if (! path[0])
{
- g_free (path);
+ str_unref (path);
break;
}
@@ -85,7 +83,7 @@ void history_cleanup (void)
hook_dissociate ("config save", (HookFunction) history_save);
- g_queue_foreach (& history, (GFunc) g_free, NULL);
+ g_queue_foreach (& history, (GFunc) str_unref, NULL);
g_queue_clear (& history);
loaded = FALSE;
@@ -108,11 +106,11 @@ void history_add (const char * path)
next = node->next;
if (! strcmp (node->data, path))
{
- g_free (node->data);
+ str_unref (node->data);
g_queue_delete_link (& history, node);
}
}
- g_queue_push_head (& history, g_strdup (path));
+ g_queue_push_head (& history, str_get (path));
modified = TRUE;
}
diff --git a/src/audacious/images/appearance.png b/src/audacious/images/appearance.png
new file mode 100644
index 0000000..f73239a
--- /dev/null
+++ b/src/audacious/images/appearance.png
Binary files differ
diff --git a/src/audacious/images/audacious.png b/src/audacious/images/audacious.png
deleted file mode 100644
index 5de1b7f..0000000
--- a/src/audacious/images/audacious.png
+++ /dev/null
Binary files differ
diff --git a/src/audacious/images/menu_playlist.png b/src/audacious/images/menu_playlist.png
deleted file mode 100644
index 2bd5af9..0000000
--- a/src/audacious/images/menu_playlist.png
+++ /dev/null
Binary files differ
diff --git a/src/audacious/images/menu_plugin.png b/src/audacious/images/menu_plugin.png
deleted file mode 100644
index d90ab66..0000000
--- a/src/audacious/images/menu_plugin.png
+++ /dev/null
Binary files differ
diff --git a/src/audacious/images/menu_queue_toggle.png b/src/audacious/images/menu_queue_toggle.png
deleted file mode 100644
index 6cf6443..0000000
--- a/src/audacious/images/menu_queue_toggle.png
+++ /dev/null
Binary files differ
diff --git a/src/audacious/input-api.h b/src/audacious/input-api.h
new file mode 100644
index 0000000..7c49b0e
--- /dev/null
+++ b/src/audacious/input-api.h
@@ -0,0 +1,60 @@
+/*
+ * input-api.h
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+/* Do not include this file directly; use input.h instead. */
+
+/* These functions are to be used only from the play() function of an input plugin. */
+
+/* Prepares the output system for playback in the specified format. Returns
+ * TRUE on success, FALSE if the selected format is not supported. */
+AUD_FUNC3 (bool_t, input_open_audio, int, format, int, rate, int, channels)
+
+/* Informs the output system of replay gain values for the current song so
+ * that volume levels can be adjusted accordingly, if the user so desires.
+ * This may be called at any time during playback should the values change. */
+AUD_VFUNC1 (input_set_gain, const ReplayGainInfo *, info)
+
+/* Passes audio data to the output system for playback. The data must be in
+ * the format passed to open_audio, and the length (in bytes) must be an
+ * integral number of frames. This function blocks until all the data has
+ * been written (though it may not yet be heard by the user). */
+AUD_VFUNC2 (input_write_audio, void *, data, int, length)
+
+/* Returns the time counter. Note that this represents the amount of audio
+ * data passed to the output system, not the amount actually heard by the
+ * user. */
+AUD_FUNC0 (int, input_written_time)
+
+/* Returns a reference to the current tuple for the stream. */
+AUD_FUNC0 (Tuple *, input_get_tuple)
+
+/* Updates the tuple for the stream. The caller gives up ownership of one
+ * reference to the tuple. */
+AUD_VFUNC1 (input_set_tuple, Tuple *, tuple)
+
+/* Updates the displayed bitrate, in bits per second. */
+AUD_VFUNC1 (input_set_bitrate, int, bitrate)
+
+/* Checks whether playback is to be stopped. The play() function should poll
+ * check_stop() periodically and return as soon as check_stop() returns TRUE. */
+AUD_FUNC0 (bool_t, input_check_stop)
+
+/* Checks whether a seek has been requested. If so, discards any buffered audio
+ * and returns the position to seek to, in milliseconds. Otherwise, returns -1. */
+AUD_FUNC0 (int, input_check_seek)
diff --git a/src/audacious/input.h b/src/audacious/input.h
new file mode 100644
index 0000000..4935483
--- /dev/null
+++ b/src/audacious/input.h
@@ -0,0 +1,69 @@
+/*
+ * input.h
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef AUDACIOUS_INPUT_H
+#define AUDACIOUS_INPUT_H
+
+#include <audacious/api.h>
+#include <audacious/types.h>
+#include <libaudcore/tuple.h>
+
+#define AUD_API_NAME InputAPI
+#define AUD_API_SYMBOL input_api
+
+#ifdef _AUDACIOUS_CORE
+
+#include "api-local-begin.h"
+#include "input-api.h"
+#include "api-local-end.h"
+
+#else
+
+#include <audacious/api-define-begin.h>
+#include <audacious/input-api.h>
+#include <audacious/api-define-end.h>
+
+#include <audacious/api-alias-begin.h>
+#include <audacious/input-api.h>
+#include <audacious/api-alias-end.h>
+
+#endif
+
+#undef AUD_API_NAME
+#undef AUD_API_SYMBOL
+
+#endif
+
+#ifdef AUD_API_DECLARE
+
+#define AUD_API_NAME InputAPI
+#define AUD_API_SYMBOL input_api
+
+#include "api-define-begin.h"
+#include "input-api.h"
+#include "api-define-end.h"
+
+#include "api-declare-begin.h"
+#include "input-api.h"
+#include "api-declare-end.h"
+
+#undef AUD_API_NAME
+#undef AUD_API_SYMBOL
+
+#endif
diff --git a/src/audacious/interface.c b/src/audacious/interface.c
index 066b0ef..5c8045f 100644
--- a/src/audacious/interface.c
+++ b/src/audacious/interface.c
@@ -1,6 +1,6 @@
/*
* interface.c
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -21,21 +21,23 @@
#include <pthread.h>
#include <libaudcore/hook.h>
+#include <libaudgui/libaudgui-gtk.h>
#include "debug.h"
#include "general.h"
+#include "i18n.h"
#include "interface.h"
-#include "main.h"
#include "misc.h"
#include "plugin.h"
#include "plugins.h"
#include "visualization.h"
-static IfacePlugin *current_interface = NULL;
+static IfacePlugin * current_interface = NULL;
static pthread_mutex_t error_mutex = PTHREAD_MUTEX_INITIALIZER;
static GQueue error_queue = G_QUEUE_INIT;
static int error_source;
+static GtkWidget * error_win;
bool_t interface_load (PluginHandle * plugin)
{
@@ -73,18 +75,7 @@ bool_t interface_is_shown (void)
{
g_return_val_if_fail (current_interface, FALSE);
- if (PLUGIN_HAS_FUNC (current_interface, is_shown))
- return current_interface->is_shown ();
- return TRUE;
-}
-
-bool_t interface_is_focused (void)
-{
- g_return_val_if_fail (current_interface, FALSE);
-
- if (PLUGIN_HAS_FUNC (current_interface, is_focused))
- return current_interface->is_focused ();
- return TRUE;
+ return get_bool (NULL, "show_interface");
}
static bool_t error_idle_func (void * unused)
@@ -96,12 +87,12 @@ static bool_t error_idle_func (void * unused)
{
pthread_mutex_unlock (& error_mutex);
- if (current_interface && PLUGIN_HAS_FUNC (current_interface, show_error))
- current_interface->show_error (message);
- else
+ if (headless_mode ())
fprintf (stderr, "ERROR: %s\n", message);
+ else
+ audgui_simple_message (& error_win, GTK_MESSAGE_ERROR, _("Error"), message);
- g_free (message);
+ str_unref (message);
pthread_mutex_lock (& error_mutex);
}
@@ -116,7 +107,7 @@ void interface_show_error (const char * message)
{
pthread_mutex_lock (& error_mutex);
- g_queue_push_tail (& error_queue, g_strdup (message));
+ g_queue_push_tail (& error_queue, str_get (message));
if (! error_source)
error_source = g_idle_add (error_idle_func, NULL);
@@ -124,27 +115,6 @@ void interface_show_error (const char * message)
pthread_mutex_unlock (& error_mutex);
}
-/*
- * bool_t play_button
- * TRUE - open files
- * FALSE - add files
- */
-void interface_show_filebrowser (bool_t play_button)
-{
- g_return_if_fail (current_interface);
-
- if (PLUGIN_HAS_FUNC (current_interface, show_filebrowser))
- current_interface->show_filebrowser (play_button);
-}
-
-void interface_show_jump_to_track (void)
-{
- g_return_if_fail (current_interface);
-
- if (PLUGIN_HAS_FUNC (current_interface, show_jump_to_track))
- current_interface->show_jump_to_track ();
-}
-
static bool_t delete_cb (GtkWidget * window, GdkEvent * event, PluginHandle *
plugin)
{
@@ -180,26 +150,6 @@ void interface_remove_plugin_widget (PluginHandle * plugin, GtkWidget * widget)
gtk_widget_destroy (gtk_widget_get_parent (widget));
}
-void interface_install_toolbar (void * widget)
-{
- g_return_if_fail (current_interface);
-
- if (PLUGIN_HAS_FUNC (current_interface, install_toolbar))
- current_interface->install_toolbar (widget);
- else
- g_object_ref (widget);
-}
-
-void interface_uninstall_toolbar (void * widget)
-{
- g_return_if_fail (current_interface);
-
- if (PLUGIN_HAS_FUNC (current_interface, uninstall_toolbar))
- current_interface->uninstall_toolbar (widget);
- else
- g_object_unref (widget);
-}
-
static bool_t probe_cb (PluginHandle * p, PluginHandle * * pp)
{
* pp = p;
diff --git a/src/audacious/main.c b/src/audacious/main.c
index 1e245fb..8440969 100644
--- a/src/audacious/main.c
+++ b/src/audacious/main.c
@@ -1,6 +1,6 @@
/*
* main.c
- * Copyright 2007-2011 William Pitcock and John Lindgren
+ * Copyright 2007-2013 William Pitcock and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -29,11 +29,11 @@
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
+#include <libaudgui/libaudgui.h>
#include <libaudtag/audtag.h>
#ifdef USE_DBUS
-#include "../libaudclient/audctrl.h"
-#include "dbus.h"
+#include "aud-dbus.h"
#endif
#include "debug.h"
@@ -50,20 +50,40 @@
#define AUTOSAVE_INTERVAL 300 /* seconds */
-bool_t headless;
-
static struct {
- char **filenames;
- int session;
- bool_t play, stop, pause, fwd, rew, play_pause, show_jump_box;
- bool_t enqueue, mainwin, remote;
- bool_t enqueue_to_temp;
- bool_t quit_after_play;
- bool_t version;
+ bool_t help, version;
+ bool_t play, pause, play_pause, stop, fwd, rew;
+ bool_t enqueue, enqueue_to_temp;
+ bool_t mainwin, show_jump_box;
+ bool_t headless, quit_after_play;
bool_t verbose;
- char *previous_session_id;
} options;
+static Index * filenames;
+
+static const struct {
+ const char * long_arg;
+ char short_arg;
+ bool_t * value;
+ const char * desc;
+} arg_map[] = {
+ {"help", 'h', & options.help, N_("Show command-line help")},
+ {"version", 'v', & options.version, N_("Show version")},
+ {"play", 'p', & options.play, N_("Start playback")},
+ {"pause", 'u', & options.pause, N_("Pause playback")},
+ {"play-pause", 't', & options.play_pause, N_("Pause if playing, play otherwise")},
+ {"stop", 's', & options.stop, N_("Stop playback")},
+ {"rew", 'r', & options.rew, N_("Skip to previous song")},
+ {"fwd", 'f', & options.fwd, N_("Skip to next song")},
+ {"enqueue", 'e', & options.enqueue, N_("Add files to the playlist")},
+ {"enqueue-to-temp", 'E', & options.enqueue_to_temp, N_("Add files to a temporary playlist")},
+ {"show-main-window", 'm', & options.mainwin, N_("Display the main window")},
+ {"show-jump-box", 'j', & options.show_jump_box, N_("Display the jump-to-song window")},
+ {"headless", 'H', & options.headless, N_("Start without a graphical interface")},
+ {"quit-after-play", 'q', & options.quit_after_play, N_("Quit on playback stop")},
+ {"verbose", 'V', & options.verbose, N_("Print debugging messages")},
+};
+
static char * aud_paths[AUD_PATH_COUNT];
static void make_dirs(void)
@@ -78,41 +98,8 @@ static void make_dirs(void)
make_directory(aud_paths[AUD_PATH_PLAYLISTS_DIR], mode755);
}
-static void normalize_path (char * path)
-{
-#ifdef _WIN32
- string_replace_char (path, '/', '\\');
-#endif
- int len = strlen (path);
-#ifdef _WIN32
- if (len > 3 && path[len - 1] == '\\') /* leave "C:\" */
-#else
- if (len > 1 && path[len - 1] == '/') /* leave leading "/" */
-#endif
- path[len - 1] = 0;
-}
-
-static char * last_path_element (char * path)
-{
- char * slash = strrchr (path, G_DIR_SEPARATOR);
- return (slash && slash[1]) ? slash + 1 : NULL;
-}
-
-static void strip_path_element (char * path, char * elem)
-{
-#ifdef _WIN32
- if (elem > path + 3)
-#else
- if (elem > path + 1)
-#endif
- elem[-1] = 0; /* overwrite slash */
- else
- elem[0] = 0; /* leave [drive letter and] leading slash */
-}
-
-static void relocate_path (char * * pathp, const char * old, const char * new)
+static char * relocate_path (const char * path, const char * old, const char * new)
{
- char * path = * pathp;
int oldlen = strlen (old);
int newlen = strlen (new);
@@ -122,79 +109,87 @@ static void relocate_path (char * * pathp, const char * old, const char * new)
newlen --;
#ifdef _WIN32
- if (strncasecmp (path, old, oldlen) || (path[oldlen] && path[oldlen] != G_DIR_SEPARATOR))
+ if (g_ascii_strncasecmp (path, old, oldlen) || (path[oldlen] && path[oldlen] != G_DIR_SEPARATOR))
#else
if (strncmp (path, old, oldlen) || (path[oldlen] && path[oldlen] != G_DIR_SEPARATOR))
#endif
{
fprintf (stderr, "Failed to relocate a data path. Falling back to "
"compile-time path: %s\n", path);
- return;
+ return str_get (path);
}
- * pathp = g_strdup_printf ("%.*s%s", newlen, new, path + oldlen);
- g_free (path);
+ return str_printf ("%.*s%s", newlen, new, path + oldlen);
}
static void relocate_paths (void)
{
- /* Start with the paths hard coded at compile time. */
- aud_paths[AUD_PATH_BIN_DIR] = g_strdup (HARDCODE_BINDIR);
- aud_paths[AUD_PATH_DATA_DIR] = g_strdup (HARDCODE_DATADIR);
- aud_paths[AUD_PATH_PLUGIN_DIR] = g_strdup (HARDCODE_PLUGINDIR);
- aud_paths[AUD_PATH_LOCALE_DIR] = g_strdup (HARDCODE_LOCALEDIR);
- aud_paths[AUD_PATH_DESKTOP_FILE] = g_strdup (HARDCODE_DESKTOPFILE);
- aud_paths[AUD_PATH_ICON_FILE] = g_strdup (HARDCODE_ICONFILE);
- normalize_path (aud_paths[AUD_PATH_BIN_DIR]);
- normalize_path (aud_paths[AUD_PATH_DATA_DIR]);
- normalize_path (aud_paths[AUD_PATH_PLUGIN_DIR]);
- normalize_path (aud_paths[AUD_PATH_LOCALE_DIR]);
- normalize_path (aud_paths[AUD_PATH_DESKTOP_FILE]);
- normalize_path (aud_paths[AUD_PATH_ICON_FILE]);
+ char bindir[] = HARDCODE_BINDIR;
+ char datadir[] = HARDCODE_DATADIR;
+ char plugindir[] = HARDCODE_PLUGINDIR;
+ char localedir[] = HARDCODE_LOCALEDIR;
+ char desktopfile[] = HARDCODE_DESKTOPFILE;
+ char iconfile[] = HARDCODE_ICONFILE;
+
+ filename_normalize (bindir);
+ filename_normalize (datadir);
+ filename_normalize (plugindir);
+ filename_normalize (localedir);
+ filename_normalize (desktopfile);
+ filename_normalize (iconfile);
/* Compare the compile-time path to the executable and the actual path to
* see if we have been moved. */
- char * old = g_strdup (aud_paths[AUD_PATH_BIN_DIR]);
- char * new = get_path_to_self ();
- if (! new)
+ char * self = get_path_to_self ();
+ if (! self)
{
-ERR:
- g_free (old);
- g_free (new);
+FALLBACK:
+ /* Fall back to compile-time paths. */
+ aud_paths[AUD_PATH_BIN_DIR] = str_get (bindir);
+ aud_paths[AUD_PATH_DATA_DIR] = str_get (datadir);
+ aud_paths[AUD_PATH_PLUGIN_DIR] = str_get (plugindir);
+ aud_paths[AUD_PATH_LOCALE_DIR] = str_get (localedir);
+ aud_paths[AUD_PATH_DESKTOP_FILE] = str_get (desktopfile);
+ aud_paths[AUD_PATH_ICON_FILE] = str_get (iconfile);
+
return;
}
- normalize_path (new);
+
+ SCOPY (old, bindir);
+ SCOPY (new, self);
+
+ str_unref (self);
+
+ filename_normalize (new);
/* Strip the name of the executable file, leaving the path. */
char * base = last_path_element (new);
if (! base)
- goto ERR;
- strip_path_element (new, base);
+ goto FALLBACK;
+
+ cut_path_element (new, base);
/* Strip innermost folder names from both paths as long as they match. This
* leaves a compile-time prefix and a run-time one to replace it with. */
char * a, * b;
while ((a = last_path_element (old)) && (b = last_path_element (new)) &&
#ifdef _WIN32
- ! strcasecmp (a, b))
+ ! g_ascii_strcasecmp (a, b))
#else
! strcmp (a, b))
#endif
{
- strip_path_element (old, a);
- strip_path_element (new, b);
+ cut_path_element (old, a);
+ cut_path_element (new, b);
}
/* Do the replacements. */
- relocate_path (& aud_paths[AUD_PATH_BIN_DIR], old, new);
- relocate_path (& aud_paths[AUD_PATH_DATA_DIR], old, new);
- relocate_path (& aud_paths[AUD_PATH_PLUGIN_DIR], old, new);
- relocate_path (& aud_paths[AUD_PATH_LOCALE_DIR], old, new);
- relocate_path (& aud_paths[AUD_PATH_DESKTOP_FILE], old, new);
- relocate_path (& aud_paths[AUD_PATH_ICON_FILE], old, new);
-
- g_free (old);
- g_free (new);
+ aud_paths[AUD_PATH_BIN_DIR] = relocate_path (bindir, old, new);
+ aud_paths[AUD_PATH_DATA_DIR] = relocate_path (datadir, old, new);
+ aud_paths[AUD_PATH_PLUGIN_DIR] = relocate_path (plugindir, old, new);
+ aud_paths[AUD_PATH_LOCALE_DIR] = relocate_path (localedir, old, new);
+ aud_paths[AUD_PATH_DESKTOP_FILE] = relocate_path (desktopfile, old, new);
+ aud_paths[AUD_PATH_ICON_FILE] = relocate_path (iconfile, old, new);
}
static void init_paths (void)
@@ -202,24 +197,18 @@ static void init_paths (void)
relocate_paths ();
const char * xdg_config_home = g_get_user_config_dir ();
- const char * xdg_data_home = g_get_user_data_dir ();
+
+ aud_paths[AUD_PATH_USER_DIR] = filename_build (xdg_config_home, "audacious");
+ aud_paths[AUD_PATH_PLAYLISTS_DIR] = filename_build (aud_paths[AUD_PATH_USER_DIR], "playlists");
#ifdef _WIN32
/* Some libraries (libmcs) and plugins (filewriter) use these variables,
* which are generally not set on Windows. */
g_setenv ("HOME", g_get_home_dir (), TRUE);
g_setenv ("XDG_CONFIG_HOME", xdg_config_home, TRUE);
- g_setenv ("XDG_DATA_HOME", xdg_data_home, TRUE);
+ g_setenv ("XDG_DATA_HOME", g_get_user_data_dir (), TRUE);
g_setenv ("XDG_CACHE_HOME", g_get_user_cache_dir (), TRUE);
#endif
-
- aud_paths[AUD_PATH_USER_DIR] = g_build_filename(xdg_config_home, "audacious", NULL);
- aud_paths[AUD_PATH_USER_PLUGIN_DIR] = g_build_filename(xdg_data_home, "audacious", "Plugins", NULL);
- aud_paths[AUD_PATH_PLAYLISTS_DIR] = g_build_filename(aud_paths[AUD_PATH_USER_DIR], "playlists", NULL);
- aud_paths[AUD_PATH_GTKRC_FILE] = g_build_filename(aud_paths[AUD_PATH_USER_DIR], "gtkrc", NULL);
-
- for (int i = 0; i < AUD_PATH_COUNT; i ++)
- AUDDBG ("Data path: %s\n", aud_paths[i]);
}
const char * get_path (int id)
@@ -228,181 +217,202 @@ const char * get_path (int id)
return aud_paths[id];
}
-static GOptionEntry cmd_entries[] = {
- {"rew", 'r', 0, G_OPTION_ARG_NONE, &options.rew, N_("Skip backwards in playlist"), NULL},
- {"play", 'p', 0, G_OPTION_ARG_NONE, &options.play, N_("Start playing current playlist"), NULL},
- {"pause", 'u', 0, G_OPTION_ARG_NONE, &options.pause, N_("Pause current song"), NULL},
- {"stop", 's', 0, G_OPTION_ARG_NONE, &options.stop, N_("Stop current song"), NULL},
- {"play-pause", 't', 0, G_OPTION_ARG_NONE, &options.play_pause, N_("Pause if playing, play otherwise"), NULL},
- {"fwd", 'f', 0, G_OPTION_ARG_NONE, &options.fwd, N_("Skip forward in playlist"), NULL},
- {"show-jump-box", 'j', 0, G_OPTION_ARG_NONE, &options.show_jump_box, N_("Display Jump to File dialog"), NULL},
- {"enqueue", 'e', 0, G_OPTION_ARG_NONE, &options.enqueue, N_("Add files to the playlist"), NULL},
- {"enqueue-to-temp", 'E', 0, G_OPTION_ARG_NONE, &options.enqueue_to_temp, N_("Add new files to a temporary playlist"), NULL},
- {"show-main-window", 'm', 0, G_OPTION_ARG_NONE, &options.mainwin, N_("Display the main window"), NULL},
- {"headless", 'h', 0, G_OPTION_ARG_NONE, & headless, N_("Headless mode"), NULL},
- {"quit-after-play", 'q', 0, G_OPTION_ARG_NONE, &options.quit_after_play, N_("Quit on playback stop"), NULL},
- {"version", 'v', 0, G_OPTION_ARG_NONE, &options.version, N_("Show version"), NULL},
- {"verbose", 'V', 0, G_OPTION_ARG_NONE, &options.verbose, N_("Print debugging messages"), NULL},
- {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &options.filenames, N_("FILE..."), NULL},
- {NULL},
-};
-
-static void parse_options (int * argc, char *** argv)
+static bool_t parse_options (int argc, char * * argv)
{
- GOptionContext *context;
- GError *error = NULL;
-
- memset (& options, 0, sizeof options);
- options.session = -1;
+ char * cur = g_get_current_dir ();
+ bool_t success = TRUE;
- context = g_option_context_new(_("- play multimedia files"));
- g_option_context_add_main_entries(context, cmd_entries, PACKAGE);
- g_option_context_add_group(context, gtk_get_option_group(FALSE));
+#ifdef _WIN32
+ get_argv_utf8 (& argc, & argv);
+#endif
- if (!g_option_context_parse(context, argc, argv, &error))
+ for (int n = 1; n < argc; n ++)
{
- fprintf (stderr,
- _("%s: %s\nTry `%s --help' for more information.\n"), (* argv)[0],
- error->message, (* argv)[0]);
- g_error_free (error);
- exit (EXIT_FAILURE);
- }
+ if (argv[n][0] != '-') /* filename */
+ {
+ char * uri = NULL;
- g_option_context_free (context);
+ if (strstr (argv[n], "://"))
+ uri = str_get (argv[n]);
+ else if (g_path_is_absolute (argv[n]))
+ uri = filename_to_uri (argv[n]);
+ else
+ {
+ char * tmp = filename_build (cur, argv[n]);
+ uri = filename_to_uri (tmp);
+ str_unref (tmp);
+ }
+
+ if (uri)
+ {
+ if (! filenames)
+ filenames = index_new ();
+
+ index_insert (filenames, -1, uri);
+ }
+ }
+ else if (argv[n][1] == '-') /* long option */
+ {
+ int i;
+
+ for (i = 0; i < ARRAY_LEN (arg_map); i ++)
+ {
+ if (! strcmp (argv[n] + 2, arg_map[i].long_arg))
+ {
+ * arg_map[i].value = TRUE;
+ break;
+ }
+ }
+
+ if (i == ARRAY_LEN (arg_map))
+ {
+ fprintf (stderr, _("Unknown option: %s\n"), argv[n]);
+ success = FALSE;
+ goto OUT;
+ }
+ }
+ else /* short form */
+ {
+ for (int c = 1; argv[n][c]; c ++)
+ {
+ int i;
+
+ for (i = 0; i < ARRAY_LEN (arg_map); i ++)
+ {
+ if (argv[n][c] == arg_map[i].short_arg)
+ {
+ * arg_map[i].value = TRUE;
+ break;
+ }
+ }
+
+ if (i == ARRAY_LEN (arg_map))
+ {
+ fprintf (stderr, _("Unknown option: -%c\n"), argv[n][c]);
+ success = FALSE;
+ goto OUT;
+ }
+ }
+ }
+ }
verbose = options.verbose;
+
+OUT:
+#ifdef _WIN32
+ free_argv_utf8 (& argc, & argv);
+#endif
+
+ g_free (cur);
+ return success;
}
-static bool_t get_lock (void)
+static void print_help (void)
{
- char * path = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "lock", aud_paths[AUD_PATH_USER_DIR]);
- int handle = open (path, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+ static const char pad[20] = " ";
- if (handle < 0)
- {
- if (errno != EEXIST)
- fprintf (stderr, "Cannot create %s: %s.\n", path, strerror (errno));
+ fprintf (stderr, _("Usage: audacious [OPTION] ... [FILE] ...\n\n"));
- g_free (path);
- return FALSE;
- }
+ for (int i = 0; i < ARRAY_LEN (arg_map); i ++)
+ fprintf (stderr, " -%c, --%s%.*s%s\n", arg_map[i].short_arg,
+ arg_map[i].long_arg, (int) (20 - strlen (arg_map[i].long_arg)), pad,
+ _(arg_map[i].desc));
- close (handle);
- g_free (path);
- return TRUE;
+ fprintf (stderr, "\n");
}
-static void release_lock (void)
+bool_t headless_mode (void)
{
- char * path = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "lock", aud_paths[AUD_PATH_USER_DIR]);
- unlink (path);
- g_free (path);
+ return options.headless;
}
-static Index * convert_filenames (void)
+#ifdef USE_DBUS
+static void do_remote (void)
{
- if (! options.filenames)
- return NULL;
+ GDBusConnection * bus = NULL;
+ ObjAudacious * obj = NULL;
+ GError * error = NULL;
- Index * filenames = index_new ();
- char * * f = options.filenames;
- char * cur = g_get_current_dir ();
+ if (! (bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, & error)))
+ goto ERR;
- for (int i = 0; f[i]; i ++)
- {
- char * uri = NULL;
+ if (! (obj = obj_audacious_proxy_new_sync (bus, 0, "org.atheme.audacious",
+ "/org/atheme/audacious", NULL, & error)))
+ goto ERR;
- if (strstr (f[i], "://"))
- uri = str_get (f[i]);
- else if (g_path_is_absolute (f[i]))
- {
- char * tmp = filename_to_uri (f[i]);
- uri = str_get (tmp);
- free (tmp);
- }
- else
- {
- char * tmp = g_build_filename (cur, f[i], NULL);
- char * tmp2 = filename_to_uri (tmp);
- uri = str_get (tmp2);
- free (tmp);
- free (tmp2);
- }
+ /* check whether remote is running */
+ char * version = NULL;
+ obj_audacious_call_version_sync (obj, & version, NULL, NULL);
- if (uri)
- index_append (filenames, uri);
- }
+ if (! version)
+ goto DONE;
- g_free (cur);
- return filenames;
-}
+ AUDDBG ("Connected to remote version %s.\n", version);
-static void do_remote (void)
-{
-#ifdef USE_DBUS
- DBusGProxy * session = audacious_get_dbus_proxy ();
+ /* if no command line options, then present running instance */
+ if (! (filenames || options.play || options.pause || options.play_pause ||
+ options.stop || options.rew || options.fwd || options.show_jump_box ||
+ options.mainwin))
+ options.mainwin = TRUE;
- if (session && audacious_remote_is_running (session))
+ if (filenames)
{
- Index * filenames = convert_filenames ();
+ int n_filenames = index_count (filenames);
+ const char * * list = g_new (const char *, n_filenames + 1);
- /* if no command line options, then present running instance */
- if (! (filenames || options.play || options.pause || options.play_pause ||
- options.stop || options.rew || options.fwd || options.show_jump_box ||
- options.mainwin))
- options.mainwin = TRUE;
+ for (int i = 0; i < n_filenames; i ++)
+ list[i] = index_get (filenames, i);
- if (filenames)
- {
- GList * list = NULL;
+ list[n_filenames] = NULL;
+
+ if (options.enqueue_to_temp)
+ obj_audacious_call_open_list_to_temp_sync (obj, list, NULL, NULL);
+ else if (options.enqueue)
+ obj_audacious_call_add_list_sync (obj, list, NULL, NULL);
+ else
+ obj_audacious_call_open_list_sync (obj, list, NULL, NULL);
- for (int f = index_count (filenames); f --; )
- list = g_list_prepend (list, index_get (filenames, f));
+ g_free (list);
+ }
- if (options.enqueue_to_temp)
- audacious_remote_playlist_open_list_to_temp (session, list);
- else if (options.enqueue)
- audacious_remote_playlist_add (session, list);
- else
- audacious_remote_playlist_open_list (session, list);
+ if (options.play)
+ obj_audacious_call_play_sync (obj, NULL, NULL);
+ if (options.pause)
+ obj_audacious_call_pause_sync (obj, NULL, NULL);
+ if (options.play_pause)
+ obj_audacious_call_play_pause_sync (obj, NULL, NULL);
+ if (options.stop)
+ obj_audacious_call_stop_sync (obj, NULL, NULL);
+ if (options.rew)
+ obj_audacious_call_reverse_sync (obj, NULL, NULL);
+ if (options.fwd)
+ obj_audacious_call_advance_sync (obj, NULL, NULL);
+ if (options.show_jump_box)
+ obj_audacious_call_show_jtf_box_sync (obj, TRUE, NULL, NULL);
+ if (options.mainwin)
+ obj_audacious_call_show_main_win_sync (obj, TRUE, NULL, NULL);
- g_list_free (list);
+ g_free (version);
+ g_object_unref (obj);
- for (int f = 0; f < index_count (filenames); f ++)
- str_unref (index_get (filenames, f));
+ exit (EXIT_SUCCESS);
- index_free (filenames);
- }
+ERR:
+ fprintf (stderr, "D-Bus error: %s\n", error->message);
+ g_error_free (error);
- if (options.play)
- audacious_remote_play (session);
- if (options.pause)
- audacious_remote_pause (session);
- if (options.play_pause)
- audacious_remote_play_pause (session);
- if (options.stop)
- audacious_remote_stop (session);
- if (options.rew)
- audacious_remote_playlist_prev (session);
- if (options.fwd)
- audacious_remote_playlist_next (session);
- if (options.show_jump_box)
- audacious_remote_show_jtf_box (session);
- if (options.mainwin)
- audacious_remote_main_win_toggle (session, TRUE);
-
- exit (EXIT_SUCCESS);
- }
-#endif
+DONE:
+ if (obj)
+ g_object_unref (obj);
- fprintf (stderr, "WARNING: Audacious seems to be already running but is not responding.\n");
+ return;
}
+#endif
static void do_commands (void)
{
bool_t resume = get_bool (NULL, "resume_playback_on_startup");
- Index * filenames = convert_filenames ();
if (filenames)
{
if (options.enqueue_to_temp)
@@ -417,6 +427,8 @@ static void do_commands (void)
drct_pl_open_list (filenames);
resume = FALSE;
}
+
+ filenames = NULL;
}
if (resume)
@@ -430,14 +442,31 @@ static void do_commands (void)
drct_pause ();
}
- if (options.show_jump_box)
- interface_show_jump_to_track ();
- if (options.mainwin)
+ if (options.show_jump_box && ! options.headless)
+ audgui_jump_to_track ();
+ if (options.mainwin && ! options.headless)
interface_show (TRUE);
}
+static void main_cleanup (void)
+{
+ for (int i = 0; i < AUD_PATH_COUNT; i ++)
+ str_unref (aud_paths[i]);
+
+ if (filenames)
+ index_free_full (filenames, (IndexFreeFunc) str_unref);
+
+ strpool_shutdown ();
+}
+
static void init_one (void)
{
+ atexit (main_cleanup);
+
+#ifdef HAVE_SIGWAIT
+ signals_init_one ();
+#endif
+
init_paths ();
make_dirs ();
@@ -447,17 +476,20 @@ static void init_one (void)
bindtextdomain (PACKAGE "-plugins", aud_paths[AUD_PATH_LOCALE_DIR]);
bind_textdomain_codeset (PACKAGE "-plugins", "UTF-8");
textdomain (PACKAGE);
+
+#if ! GLIB_CHECK_VERSION (2, 36, 0)
+ g_type_init ();
+#endif
}
-static void init_two (int * p_argc, char * * * p_argv)
+static void init_two (void)
{
- if (! headless)
- {
-#if ! GLIB_CHECK_VERSION (2, 32, 0)
- g_thread_init (NULL);
+ if (! options.headless)
+ gtk_init (NULL, NULL);
+
+#ifdef HAVE_SIGWAIT
+ signals_init_two ();
#endif
- gtk_init (p_argc, p_argv);
- }
AUDDBG ("Loading configuration.\n");
config_load ();
@@ -468,10 +500,6 @@ static void init_two (int * p_argc, char * * * p_argv)
eq_init ();
playlist_init ();
-#ifdef HAVE_SIGWAIT
- signals_init ();
-#endif
-
tag_set_verbose (verbose);
vfs_set_verbose (verbose);
@@ -491,16 +519,12 @@ static void init_two (int * p_argc, char * * * p_argv)
start_plugins_two ();
#ifdef USE_DBUS
- init_dbus ();
+ dbus_server_init ();
#endif
-
- mpris_signals_init ();
}
static void shut_down (void)
{
- mpris_signals_cleanup ();
-
AUDDBG ("Saving playlist state.\n");
save_playlists (TRUE);
@@ -508,7 +532,7 @@ static void shut_down (void)
stop_plugins_two ();
#ifdef USE_DBUS
- cleanup_dbus ();
+ dbus_server_cleanup ();
#endif
AUDDBG ("Stopping playback.\n");
@@ -522,17 +546,18 @@ static void shut_down (void)
AUDDBG ("Unloading lowlevel plugins.\n");
stop_plugins_one ();
+ event_queue_cancel_all ();
+
AUDDBG ("Saving configuration.\n");
config_save ();
config_cleanup ();
AUDDBG ("Cleaning up.\n");
art_cleanup ();
+ chardet_cleanup ();
eq_cleanup ();
history_cleanup ();
playlist_end ();
-
- strpool_shutdown ();
}
bool_t do_autosave (void)
@@ -555,10 +580,21 @@ static void maybe_quit (void)
gtk_main_quit ();
}
-int main(int argc, char ** argv)
+int main (int argc, char * * argv)
{
init_one ();
- parse_options (& argc, & argv);
+
+ if (! parse_options (argc, argv))
+ {
+ print_help ();
+ return EXIT_FAILURE;
+ }
+
+ if (options.help)
+ {
+ print_help ();
+ return EXIT_SUCCESS;
+ }
if (options.version)
{
@@ -566,11 +602,12 @@ int main(int argc, char ** argv)
return EXIT_SUCCESS;
}
- if (! get_lock ())
- do_remote (); /* may exit */
+#if USE_DBUS
+ do_remote (); /* may exit */
+#endif
AUDDBG ("No remote session; starting up.\n");
- init_two (& argc, & argv);
+ init_two ();
AUDDBG ("Startup complete.\n");
g_timeout_add_seconds (AUTOSAVE_INTERVAL, (GSourceFunc) do_autosave, NULL);
@@ -580,16 +617,18 @@ int main(int argc, char ** argv)
hook_associate ("playback stop", (HookFunction) maybe_quit, NULL);
hook_associate ("playlist add complete", (HookFunction) maybe_quit, NULL);
- hook_associate ("quit", (HookFunction) gtk_main_quit, NULL);
gtk_main ();
hook_dissociate ("playback stop", (HookFunction) maybe_quit);
hook_dissociate ("playlist add complete", (HookFunction) maybe_quit);
- hook_dissociate ("quit", (HookFunction) gtk_main_quit);
QUIT:
shut_down ();
- release_lock ();
return EXIT_SUCCESS;
}
+
+void drct_quit (void)
+{
+ gtk_main_quit ();
+}
diff --git a/src/audacious/main.h b/src/audacious/main.h
index 81f9a14..0fa3432 100644
--- a/src/audacious/main.h
+++ b/src/audacious/main.h
@@ -1,6 +1,6 @@
/*
* main.h
- * Copyright 2011 John Lindgren
+ * Copyright 2011-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -32,8 +32,15 @@ void adder_cleanup (void);
void art_init (void);
void art_cleanup (void);
+/* dbus-server.c */
+#ifdef USE_DBUS
+void dbus_server_init (void);
+void dbus_server_cleanup (void);
+#endif
+
/* chardet.c */
void chardet_init (void);
+void chardet_cleanup (void);
/* config.c */
void config_load (void);
@@ -44,17 +51,15 @@ void config_cleanup (void);
void history_cleanup (void);
/* main.c */
-extern bool_t headless;
bool_t do_autosave (void);
-/* mpris-signals.c */
-void mpris_signals_init (void);
-void mpris_signals_cleanup (void);
-
/* signals.c */
-void signals_init (void);
+#ifdef HAVE_SIGWAIT
+void signals_init_one (void);
+void signals_init_two (void);
+#endif
/* ui_albumart.c */
-char * get_associated_image_file (const char * filename);
+char * get_associated_image_file (const char * filename); /* pooled */
#endif
diff --git a/src/audacious/misc-api.h b/src/audacious/misc-api.h
index 5ebff3d..b9ea2a5 100644
--- a/src/audacious/misc-api.h
+++ b/src/audacious/misc-api.h
@@ -1,6 +1,6 @@
/*
* misc-api.h
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -19,22 +19,30 @@
/* Do not include this file directly; use misc.h instead. */
+/* all (char *) return values must be freed with str_unref() */
+
/* art.c (thread-safe) */
-/* deprecated; use the non-blocking art_request_* functions instead */
-AUD_VFUNC3 (art_get_data, const char *, file, const void * *, data, int64_t *, len)
-AUD_FUNC1 (const char *, art_get_file, const char *, file)
+/* Gets album art for <file> (the URI of a song file) as JPEG or PNG data. If
+ * the album art is not yet loaded, sets <data> to NULL and begins to load the
+ * album art in the background. On completion, the "art ready" hook is called,
+ * with <file> as a parameter. The "current art ready" hook is also called if
+ * <file> is the currently playing song. */
+AUD_VFUNC3 (art_request_data, const char *, file, const void * *, data, int64_t *, len)
+
+/* Similar to art_request_data() but returns the URI of an image file.
+ * (A temporary file will be created if necessary.) */
+AUD_FUNC1 (const char *, art_request_file, const char *, file)
/* Releases album art returned by art_request_data() or art_request_file(). */
AUD_VFUNC1 (art_unref, const char *, file)
-/* config.c */
+/* config.c (thread-safe) */
-AUD_VFUNC1 (config_clear_section, const char *, section)
AUD_VFUNC2 (config_set_defaults, const char *, section, const char * const *, entries)
-AUD_VFUNC3 (set_string, const char *, section, const char *, name, const char *, value)
-AUD_FUNC2 (char *, get_string, const char *, section, const char *, name)
+AUD_VFUNC3 (set_str, const char *, section, const char *, name, const char *, value)
+AUD_FUNC2 (char *, get_str, const char *, section, const char *, name)
AUD_VFUNC3 (set_bool, const char *, section, const char *, name, bool_t, value)
AUD_FUNC2 (bool_t, get_bool, const char *, section, const char *, name)
AUD_VFUNC3 (set_int, const char *, section, const char *, name, int, value)
@@ -49,11 +57,17 @@ AUD_VFUNC2 (eq_set_band, int, band, double, value)
AUD_FUNC1 (double, eq_get_band, int, band)
/* equalizer_preset.c */
+AUD_FUNC1 (EqualizerPreset *, equalizer_preset_new, const char *, name)
+AUD_VFUNC1 (equalizer_preset_free, EqualizerPreset *, preset)
AUD_FUNC1 (Index *, equalizer_read_presets, const char *, basename)
-AUD_FUNC2 (bool_t, equalizer_write_preset_file, Index *, list, const char *, basename)
+AUD_FUNC2 (bool_t, equalizer_write_presets, Index *, list, const char *, basename)
+
+/* note: legacy code! these are local filenames, not URIs */
AUD_FUNC1 (EqualizerPreset *, load_preset_file, const char *, filename)
AUD_FUNC2 (bool_t, save_preset_file, EqualizerPreset *, preset, const char *, filename)
-AUD_FUNC1 (Index *, import_winamp_eqf, VFSFile *, file)
+
+AUD_FUNC1 (Index *, import_winamp_presets, VFSFile *, file)
+AUD_FUNC2 (bool_t, export_winamp_preset, EqualizerPreset *, preset, VFSFile *, file)
/* history.c */
AUD_FUNC1 (const char *, history_get, int, entry)
@@ -62,19 +76,13 @@ AUD_VFUNC1 (history_add, const char *, path)
/* interface.c */
AUD_VFUNC1 (interface_show, bool_t, show)
AUD_FUNC0 (bool_t, interface_is_shown)
-AUD_FUNC0 (bool_t, interface_is_focused)
/* interface_show_error() is safe to call from any thread */
AUD_VFUNC1 (interface_show_error, const char *, message)
-AUD_VFUNC1 (interface_show_filebrowser, bool_t, play)
-AUD_VFUNC0 (interface_show_jump_to_track)
-
-AUD_VFUNC1 (interface_install_toolbar, void *, button)
-AUD_VFUNC1 (interface_uninstall_toolbar, void *, button)
-
/* main.c */
AUD_FUNC1 (const char *, get_path, int, path)
+AUD_FUNC0 (bool_t, headless_mode)
/* output.c */
AUD_VFUNC1 (output_reset, int, type)
@@ -103,23 +111,18 @@ AUD_VFUNC2 (plugin_menu_remove, int, id, MenuFunc, func)
AUD_VFUNC4 (create_widgets_with_domain, /* GtkWidget * */ void *, box,
const PreferencesWidget *, widgets, int, n_widgets, const char *, domain)
AUD_VFUNC0 (show_prefs_window)
+AUD_VFUNC1 (show_prefs_for_plugin_type, int, type)
/* util.c */
-AUD_FUNC2 (char *, construct_uri, const char *, base, const char *, reference)
+
+/* Constructs a full URI given:
+ * 1. path: one of the following:
+ * a. a full URI (returned unchanged)
+ * b. an absolute filename (in the system locale)
+ * c. a relative path (character set detected according to user settings)
+ * 2. reference: the full URI of the playlist containing <path> */
+AUD_FUNC2 (char *, construct_uri, const char *, path, const char *, reference)
/* visualization.c */
AUD_VFUNC2 (vis_func_add, int, type, VisFunc, func)
AUD_VFUNC1 (vis_func_remove, VisFunc, func)
-
-/* added in Audacious 3.4 */
-
-/* Gets album art for <file> (the URI of a song file) as JPEG or PNG data. If
- * the album art is not yet loaded, sets <data> to NULL and begins to load the
- * album art in the background. On completion, the "art ready" hook is called,
- * with <file> as a parameter. The "current art ready" hook is also called if
- * <file> is the currently playing song. */
-AUD_VFUNC3 (art_request_data, const char *, file, const void * *, data, int64_t *, len)
-
-/* Similar to art_request_data() but returns the URI of an image file.
- * (A temporary file will be created if necessary.) */
-AUD_FUNC1 (const char *, art_request_file, const char *, file)
diff --git a/src/audacious/misc.h b/src/audacious/misc.h
index c214eb6..3d25517 100644
--- a/src/audacious/misc.h
+++ b/src/audacious/misc.h
@@ -1,6 +1,6 @@
/*
* misc.h
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -34,27 +34,17 @@ enum {
AUD_PATH_DESKTOP_FILE,
AUD_PATH_ICON_FILE,
AUD_PATH_USER_DIR,
- AUD_PATH_USER_PLUGIN_DIR,
AUD_PATH_PLAYLISTS_DIR,
- AUD_PATH_GTKRC_FILE, /* deprecated */
AUD_PATH_COUNT
};
-typedef struct {
- char * name;
- float preamp, bands[10];
-} EqualizerPreset;
-
enum {OUTPUT_RESET_EFFECTS_ONLY, OUTPUT_RESET_SOFT, OUTPUT_RESET_HARD};
enum {
AUD_MENU_MAIN,
AUD_MENU_PLAYLIST,
- AUD_MENU_PLAYLIST_RCLICK,
AUD_MENU_PLAYLIST_ADD,
AUD_MENU_PLAYLIST_REMOVE,
- AUD_MENU_PLAYLIST_SELECT,
- AUD_MENU_PLAYLIST_MISC,
AUD_MENU_COUNT};
typedef void (* MenuFunc) (void);
diff --git a/src/audacious/mpris-signals.c b/src/audacious/mpris-signals.c
deleted file mode 100644
index a5d55fb..0000000
--- a/src/audacious/mpris-signals.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * mpris-signals.c
- * Copyright 2011 John Lindgren
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#ifdef USE_DBUS
-
-#include <libaudcore/hook.h>
-
-#include "dbus-service.h"
-#include "main.h"
-
-static void mpris_status_cb (void * hook_data, void * user_data)
-{
- mpris_emit_status_change (mpris, GPOINTER_TO_INT (user_data));
-}
-#endif
-
-void mpris_signals_init (void)
-{
-#ifdef USE_DBUS
- hook_associate ("playback begin", mpris_status_cb, GINT_TO_POINTER
- (MPRIS_STATUS_PLAY));
- hook_associate ("playback pause", mpris_status_cb, GINT_TO_POINTER
- (MPRIS_STATUS_PAUSE));
- hook_associate ("playback unpause", mpris_status_cb, GINT_TO_POINTER
- (MPRIS_STATUS_PLAY));
- hook_associate ("playback stop", mpris_status_cb, GINT_TO_POINTER
- (MPRIS_STATUS_STOP));
-
- hook_associate ("set shuffle", mpris_status_cb, GINT_TO_POINTER (MPRIS_STATUS_INVALID));
- hook_associate ("set repeat", mpris_status_cb, GINT_TO_POINTER (MPRIS_STATUS_INVALID));
- hook_associate ("set no_playlist_advance", mpris_status_cb, GINT_TO_POINTER
- (MPRIS_STATUS_INVALID));
-#endif
-}
-
-void mpris_signals_cleanup (void)
-{
-#ifdef USE_DBUS
- hook_dissociate ("playback begin", mpris_status_cb);
- hook_dissociate ("playback pause", mpris_status_cb);
- hook_dissociate ("playback unpause", mpris_status_cb);
- hook_dissociate ("playback stop", mpris_status_cb);
-
- hook_dissociate ("set shuffle", mpris_status_cb);
- hook_dissociate ("set repeat", mpris_status_cb);
- hook_dissociate ("set no_playlist_advance", mpris_status_cb);
-#endif
-}
diff --git a/src/audacious/mpris_player.xml b/src/audacious/mpris_player.xml
deleted file mode 100644
index c954f8b..0000000
--- a/src/audacious/mpris_player.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!--
- * mpris_player.xml
- * Copyright 2007 William Pitcock and Ben Tucker
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- -->
-
-<node name="/Player">
- <interface name="org.freedesktop.MediaPlayer">
- <method name="Next">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
- <method name="Prev">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
- <method name="Pause">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
- <method name="Stop">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
- <method name="Play">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
- <method name="Repeat">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" direction="in" />
- </method>
- <method name="GetStatus">
- <arg type="(iiii)" direction="out" />
- </method>
- <method name="GetMetadata">
- <arg type="a{sv}" direction="out" />
- </method>
- <method name="GetCaps">
- <arg type="i" direction="out" />
- </method>
- <method name="VolumeSet">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="i" direction="in" />
- </method>
- <method name="VolumeGet">
- <arg type="i" direction="out" />
- </method>
- <method name="PositionSet">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="i" direction="in" />
- </method>
- <method name="PositionGet">
- <arg type="i" direction="out" />
- </method>
-
- <signal name="TrackChange">
- <arg type="a{sv}" />
- </signal>
- <signal name="StatusChange">
- <arg type="(iiii)" />
- </signal>
- <signal name="CapsChange">
- <arg type="i" />
- </signal>
- </interface>
-</node>
diff --git a/src/audacious/mpris_root.xml b/src/audacious/mpris_root.xml
deleted file mode 100644
index 7d84ded..0000000
--- a/src/audacious/mpris_root.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!--
- * mpris_root.xml
- * Copyright 2007 William Pitcock
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- -->
-
-<node name="/">
- <interface name="org.freedesktop.MediaPlayer">
- <method name="Identity">
- <arg type="s" direction="out" />
- </method>
- <method name="Quit">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
- </interface>
-</node>
diff --git a/src/audacious/mpris_tracklist.xml b/src/audacious/mpris_tracklist.xml
deleted file mode 100644
index 46859a2..0000000
--- a/src/audacious/mpris_tracklist.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!--
- * mpris_tracklist.xml
- * Copyright 2007 William Pitcock and Ben Tucker
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- -->
-
-<node name="/TrackList">
- <interface name="org.freedesktop.MediaPlayer">
- <method name="GetMetadata">
- <arg type="i" direction="in" />
- <arg type="a{sv}" direction="out" />
- </method>
- <method name="GetCurrentTrack">
- <arg type="i" direction="out" />
- </method>
- <method name="GetLength">
- <arg type="i" direction="out" />
- </method>
- <method name="AddTrack">
- <arg type="s" direction="in" />
- <arg type="b" direction="in" />
- </method>
- <method name="DelTrack">
- <arg type="i" direction="in" />
- </method>
- <method name="Loop">
- <arg type="b" direction="in" />
- </method>
- <method name="Random">
- <arg type="b" direction="in" />
- </method>
-
- <signal name="TrackListChange">
- <arg type="i" />
- </signal>
- </interface>
-</node>
diff --git a/src/audacious/output.c b/src/audacious/output.c
index dda7300..b6f862a 100644
--- a/src/audacious/output.c
+++ b/src/audacious/output.c
@@ -1,6 +1,6 @@
/*
* output.c
- * Copyright 2009-2012 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -24,8 +24,6 @@
#include <glib.h> /* for g_usleep */
-#include <libaudcore/hook.h>
-
#include "debug.h"
#include "effect.h"
#include "equalizer.h"
@@ -68,8 +66,13 @@ static ReplayGainInfo gain_info;
static bool_t change_op;
static OutputPlugin * new_op;
+static void * buffer1, * buffer2;
+static int buffer1_size, buffer2_size;
+
static inline int FR2MS (int64_t f, int r)
{ return (f > 0) ? (f * 1000 + r / 2) / r : (f * 1000 - r / 2) / r; }
+static inline int MS2FR (int64_t ms, int r)
+ { return (ms > 0) ? (ms * r + 500) / 1000 : (ms * r - 500) / 1000; }
static inline int get_format (void)
{
@@ -82,6 +85,16 @@ static inline int get_format (void)
}
}
+static void ensure_buffer (void * * buffer, int * size, int newsize)
+{
+ if (newsize > * size)
+ {
+ g_free (* buffer);
+ * buffer = g_malloc (newsize);
+ * size = newsize;
+ }
+}
+
/* assumes LOCK_ALL, s_output */
static void cleanup_output (void)
{
@@ -94,6 +107,13 @@ static void cleanup_output (void)
s_output = FALSE;
+ g_free (buffer1);
+ g_free (buffer2);
+ buffer1 = NULL;
+ buffer2 = NULL;
+ buffer1_size = 0;
+ buffer2_size = 0;
+
if (PLUGIN_HAS_FUNC (cop, close_audio))
cop->close_audio ();
@@ -217,8 +237,6 @@ static void apply_software_volume (float * data, int channels, int samples)
/* assumes LOCK_ALL, s_output */
static void write_output_raw (void * data, int samples)
{
- void * buffer = NULL;
-
vis_runner_pass_audio (FR2MS (out_frames, out_rate), data, samples,
out_channels, out_rate);
out_frames += samples / out_channels;
@@ -231,9 +249,9 @@ static void write_output_raw (void * data, int samples)
if (out_format != FMT_FLOAT)
{
- buffer = malloc (FMT_SIZEOF (out_format) * samples);
- audio_to_int (data, buffer, out_format, samples);
- data = buffer;
+ ensure_buffer (& buffer2, & buffer2_size, FMT_SIZEOF (out_format) * samples);
+ audio_to_int (data, buffer2, out_format, samples);
+ data = buffer2;
}
while (! (s_aborted || s_resetting))
@@ -270,26 +288,39 @@ static void write_output_raw (void * data, int samples)
LOCK_MINOR;
}
-
- free (buffer);
}
/* assumes LOCK_ALL, s_input, s_output */
-static void write_output (void * data, int size)
+static bool_t write_output (void * data, int size, int stop_time)
{
- void * buffer = NULL;
+ bool_t stopped = FALSE;
+ int64_t cur_frame = in_frames;
int samples = size / FMT_SIZEOF (in_format);
+
+ /* always update in_frames, whether we use all the decoded frames or not */
in_frames += samples / in_channels;
+ if (stop_time != -1)
+ {
+ int64_t frames_left = MS2FR (stop_time - seek_time, in_rate) - cur_frame;
+ int64_t samples_left = in_channels * MAX (0, frames_left);
+
+ if (samples >= samples_left)
+ {
+ samples = samples_left;
+ stopped = TRUE;
+ }
+ }
+
if (s_aborted)
- return;
+ return ! stopped;
if (in_format != FMT_FLOAT)
{
- buffer = malloc (sizeof (float) * samples);
- audio_from_int (data, in_format, buffer, samples);
- data = buffer;
+ ensure_buffer (& buffer1, & buffer1_size, sizeof (float) * samples);
+ audio_from_int (data, in_format, buffer1, samples);
+ data = buffer1;
}
float * fdata = data;
@@ -297,7 +328,7 @@ static void write_output (void * data, int size)
effect_process (& fdata, & samples);
write_output_raw (fdata, samples);
- free (buffer);
+ return ! stopped;
}
/* assumes LOCK_ALL, s_output */
@@ -359,9 +390,11 @@ void output_set_replaygain_info (const ReplayGainInfo * info)
UNLOCK_ALL;
}
-void output_write_audio (void * data, int size)
+/* returns FALSE if stop_time is reached */
+bool_t output_write_audio (void * data, int size, int stop_time)
{
LOCK_ALL;
+ bool_t good = FALSE;
if (s_input)
{
@@ -372,10 +405,11 @@ void output_write_audio (void * data, int size)
LOCK_ALL;
}
- write_output (data, size);
+ good = write_output (data, size, stop_time);
}
UNLOCK_ALL;
+ return good;
}
void output_abort_write (void)
@@ -432,9 +466,6 @@ void output_set_time (int time)
}
UNLOCK_ALL;
-
- /* See comment in playback_seek(). */
- event_queue ("playback seek", NULL);
}
bool_t output_is_open (void)
diff --git a/src/audacious/output.h b/src/audacious/output.h
index 8d8ffe1..ac9ee48 100644
--- a/src/audacious/output.h
+++ b/src/audacious/output.h
@@ -1,6 +1,6 @@
/*
* output.h
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -25,7 +25,7 @@
bool_t output_open_audio (int format, int rate, int channels);
void output_set_replaygain_info (const ReplayGainInfo * info);
-void output_write_audio (void * data, int length);
+bool_t output_write_audio (void * data, int size, int stop_time);
void output_abort_write (void);
void output_pause (bool_t pause);
int output_written_time (void);
diff --git a/src/audacious/playback.c b/src/audacious/playback.c
index 2f1a1b3..7d9c56f 100644
--- a/src/audacious/playback.c
+++ b/src/audacious/playback.c
@@ -1,6 +1,6 @@
/*
* playback.c
- * Copyright 2009-2012 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -23,9 +23,11 @@
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
+#include <libaudgui/libaudgui.h>
#include "drct.h"
#include "i18n.h"
+#include "input.h"
#include "interface.h"
#include "misc.h"
#include "output.h"
@@ -33,38 +35,31 @@
#include "playlist.h"
#include "plugin.h"
-static void playback_restart (int seek_time, bool_t pause);
-
-static const struct OutputAPI output_api = {
- .open_audio = output_open_audio,
- .set_replaygain_info = output_set_replaygain_info,
- .write_audio = output_write_audio,
- .abort_write = output_abort_write,
- .pause = output_pause,
- .written_time = output_written_time,
- .flush = output_set_time};
-
-static InputPlayback playback_api;
-
static pthread_t playback_thread_handle;
static int end_source = 0;
static pthread_mutex_t ready_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t ready_cond = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t control_mutex = PTHREAD_MUTEX_INITIALIZER;
+
/* level 1 data (persists to end of song) */
static bool_t playing = FALSE;
-static bool_t restart_flag = FALSE;
-static int time_offset = 0, initial_seek = 0;
+static int time_offset = 0;
+static int stop_time = -1;
static bool_t paused = FALSE;
static bool_t ready_flag = FALSE;
static bool_t playback_error = FALSE;
static bool_t song_finished = FALSE;
-static void * current_data = NULL;
+static int seek_request = -1; /* under control_mutex */
+static int repeat_a = -1; /* under control_mutex */
+
+static volatile int repeat_b = -1; /* atomic */
+static volatile int stop_flag = FALSE; /* atomic */
+
static int current_bitrate = -1, current_samplerate = -1, current_channels = -1;
-/* level 2 data (persists when restarting same song) */
static int current_entry = -1;
static char * current_filename = NULL; /* pooled */
static char * current_title = NULL; /* pooled */
@@ -72,39 +67,37 @@ static int current_length = -1;
static InputPlugin * current_decoder = NULL;
static VFSFile * current_file = NULL;
-static ReplayGainInfo gain_from_playlist;
-
-static int repeat_a = -1, repeat_b = -1;
+static ReplayGainInfo current_gain;
-/* level 3 data (persists to end of playlist) */
+/* level 2 data (persists to end of playlist) */
static bool_t stopped = TRUE;
static int failed_entries = 0;
/* clears gain info if tuple == NULL */
static void read_gain_from_tuple (const Tuple * tuple)
{
- memset (& gain_from_playlist, 0, sizeof gain_from_playlist);
+ memset (& current_gain, 0, sizeof current_gain);
if (tuple == NULL)
return;
- int album_gain = tuple_get_int (tuple, FIELD_GAIN_ALBUM_GAIN, NULL);
- int album_peak = tuple_get_int (tuple, FIELD_GAIN_ALBUM_PEAK, NULL);
- int track_gain = tuple_get_int (tuple, FIELD_GAIN_TRACK_GAIN, NULL);
- int track_peak = tuple_get_int (tuple, FIELD_GAIN_TRACK_PEAK, NULL);
- int gain_unit = tuple_get_int (tuple, FIELD_GAIN_GAIN_UNIT, NULL);
- int peak_unit = tuple_get_int (tuple, FIELD_GAIN_PEAK_UNIT, NULL);
+ int album_gain = tuple_get_int (tuple, FIELD_GAIN_ALBUM_GAIN);
+ int album_peak = tuple_get_int (tuple, FIELD_GAIN_ALBUM_PEAK);
+ int track_gain = tuple_get_int (tuple, FIELD_GAIN_TRACK_GAIN);
+ int track_peak = tuple_get_int (tuple, FIELD_GAIN_TRACK_PEAK);
+ int gain_unit = tuple_get_int (tuple, FIELD_GAIN_GAIN_UNIT);
+ int peak_unit = tuple_get_int (tuple, FIELD_GAIN_PEAK_UNIT);
if (gain_unit)
{
- gain_from_playlist.album_gain = album_gain / (float) gain_unit;
- gain_from_playlist.track_gain = track_gain / (float) gain_unit;
+ current_gain.album_gain = album_gain / (float) gain_unit;
+ current_gain.track_gain = track_gain / (float) gain_unit;
}
if (peak_unit)
{
- gain_from_playlist.album_peak = album_peak / (float) peak_unit;
- gain_from_playlist.track_peak = track_peak / (float) peak_unit;
+ current_gain.album_peak = album_peak / (float) peak_unit;
+ current_gain.track_peak = track_peak / (float) peak_unit;
}
}
@@ -114,8 +107,7 @@ static bool_t update_from_playlist (void)
char * title = playback_entry_get_title ();
int length = playback_entry_get_length ();
- /* pointer comparison works for pooled strings */
- if (entry == current_entry && title == current_title && length == current_length)
+ if (entry == current_entry && str_equal (title, current_title) && length == current_length)
{
str_unref (title);
return FALSE;
@@ -134,26 +126,19 @@ bool_t drct_get_ready (void)
return FALSE;
pthread_mutex_lock (& ready_mutex);
-
- /* on restart, always report ready */
- bool_t ready = ready_flag || restart_flag;
-
+ bool_t ready = ready_flag;
pthread_mutex_unlock (& ready_mutex);
return ready;
}
-static void set_pb_ready (InputPlayback * p)
+static void set_ready (void)
{
g_return_if_fail (playing);
- pthread_mutex_lock (& ready_mutex);
- /* on restart, don't update or send "playback ready" */
- if (! restart_flag)
- {
- update_from_playlist ();
- event_queue ("playback ready", NULL);
- }
+ pthread_mutex_lock (& ready_mutex);
+ update_from_playlist ();
+ event_queue ("playback ready", NULL);
ready_flag = TRUE;
pthread_cond_signal (& ready_cond);
@@ -190,15 +175,7 @@ int drct_get_time (void)
wait_until_ready ();
- int time = -1;
-
- if (current_decoder && current_decoder->get_time)
- time = current_decoder->get_time (& playback_api);
-
- if (time < 0)
- time = output_get_time ();
-
- return time - time_offset;
+ return output_get_time () - time_offset;
}
void drct_pause (void)
@@ -208,11 +185,9 @@ void drct_pause (void)
wait_until_ready ();
- if (! current_decoder || ! current_decoder->pause)
- return;
-
paused = ! paused;
- current_decoder->pause (& playback_api, paused);
+
+ output_pause (paused);
if (paused)
hook_call ("playback pause", NULL);
@@ -220,21 +195,27 @@ void drct_pause (void)
hook_call ("playback unpause", NULL);
}
-static void playback_finish (void)
+static void playback_cleanup (void)
{
g_return_if_fail (playing);
wait_until_ready ();
- /* calling stop() is unnecessary if the song finished on its own;
- * also, it might flush the output buffer, breaking gapless playback */
- if (current_decoder && ! song_finished)
- current_decoder->stop (& playback_api);
+ if (! song_finished)
+ {
+ g_atomic_int_set (& stop_flag, TRUE);
+ output_abort_write ();
+ }
pthread_join (playback_thread_handle, NULL);
output_close_audio ();
hook_dissociate ("playlist update", update_cb);
+ event_queue_cancel ("playback ready", NULL);
+ event_queue_cancel ("playback seek", NULL);
+ event_queue_cancel ("info change", NULL);
+ event_queue_cancel ("title change", NULL);
+
if (end_source)
{
g_source_remove (end_source);
@@ -243,30 +224,21 @@ static void playback_finish (void)
/* level 1 data cleanup */
playing = FALSE;
- restart_flag = FALSE;
- time_offset = initial_seek = 0;
+ time_offset = 0;
+ stop_time = -1;
paused = FALSE;
ready_flag = FALSE;
playback_error = FALSE;
song_finished = FALSE;
- current_data = NULL;
- current_bitrate = current_samplerate = current_channels = -1;
-}
-
-static void playback_cleanup (void)
-{
- g_return_if_fail (current_filename);
- playback_finish ();
+ seek_request = -1;
+ repeat_a = -1;
- event_queue_cancel ("playback ready", NULL);
- event_queue_cancel ("playback seek", NULL);
- event_queue_cancel ("info change", NULL);
- event_queue_cancel ("title change", NULL);
+ g_atomic_int_set (& repeat_b, -1);
+ g_atomic_int_set (& stop_flag, FALSE);
- set_bool (NULL, "stop_after_current_song", FALSE);
+ current_bitrate = current_samplerate = current_channels = -1;
- /* level 2 data cleanup */
current_entry = -1;
str_unref (current_filename);
current_filename = NULL;
@@ -284,7 +256,7 @@ static void playback_cleanup (void)
read_gain_from_tuple (NULL);
- repeat_a = repeat_b = -1;
+ set_bool (NULL, "stop_after_current_song", FALSE);
}
void playback_stop (void)
@@ -292,12 +264,12 @@ void playback_stop (void)
if (stopped)
return;
- if (current_filename)
+ if (playing)
playback_cleanup ();
output_drain ();
- /* level 3 data cleanup */
+ /* level 2 data cleanup */
stopped = TRUE;
failed_entries = 0;
@@ -342,17 +314,10 @@ static bool_t end_cb (void * unused)
if (! get_bool (NULL, "no_playlist_advance"))
do_next (playlist);
}
- else if (repeat_a >= 0 || repeat_b >= 0)
- {
- if (! failed_entries)
- playback_restart (MAX (repeat_a, 0), FALSE);
- else
- do_stop (playlist);
- }
else if (get_bool (NULL, "no_playlist_advance"))
{
if (get_bool (NULL, "repeat") && ! failed_entries)
- playback_restart (0, FALSE);
+ playback_play (0, FALSE);
else
do_stop (playlist);
}
@@ -367,6 +332,16 @@ static bool_t end_cb (void * unused)
return FALSE;
}
+static bool_t open_file (void)
+{
+ /* no need to open a handle for custom URI schemes */
+ if (current_decoder->schemes && current_decoder->schemes[0])
+ return TRUE;
+
+ current_file = vfs_fopen (current_filename, "r");
+ return (current_file != NULL);
+}
+
static void * playback_thread (void * unused)
{
if (! current_decoder)
@@ -384,87 +359,66 @@ static void * playback_thread (void * unused)
}
Tuple * tuple = playback_entry_get_tuple ();
- read_gain_from_tuple (tuple);
+ int length = playback_entry_get_length ();
- int start_time = time_offset = 0;
- int end_time = -1;
+ if (length < 1)
+ seek_request = -1;
- if (tuple && playback_entry_get_length () > 0)
+ if (tuple && length > 0)
{
- if (tuple_get_value_type (tuple, FIELD_SEGMENT_START, NULL) == TUPLE_INT)
- time_offset = tuple_get_int (tuple, FIELD_SEGMENT_START, NULL);
-
- start_time = time_offset + MAX (initial_seek, 0);
+ if (tuple_get_value_type (tuple, FIELD_SEGMENT_START) == TUPLE_INT)
+ {
+ time_offset = tuple_get_int (tuple, FIELD_SEGMENT_START);
+ if (time_offset)
+ seek_request = time_offset + MAX (seek_request, 0);
+ }
- if (repeat_b >= 0)
- end_time = time_offset + repeat_b;
- else if (tuple_get_value_type (tuple, FIELD_SEGMENT_END, NULL) == TUPLE_INT)
- end_time = tuple_get_int (tuple, FIELD_SEGMENT_END, NULL);
+ if (tuple_get_value_type (tuple, FIELD_SEGMENT_END) == TUPLE_INT)
+ stop_time = tuple_get_int (tuple, FIELD_SEGMENT_END);
}
+ read_gain_from_tuple (tuple);
+
if (tuple)
tuple_unref (tuple);
- if (! current_decoder->schemes || ! current_decoder->schemes[0])
+ if (! open_file ())
{
- if (current_file)
- vfs_rewind (current_file);
- else
- current_file = vfs_fopen (current_filename, "r");
-
- if (! current_file)
- {
- SPRINTF (error, _("%s could not be opened."), current_filename);
- interface_show_error (error);
- playback_error = TRUE;
- goto DONE;
- }
+ SPRINTF (error, _("%s could not be opened."), current_filename);
+ interface_show_error (error);
+ playback_error = TRUE;
+ goto DONE;
}
- playback_error = ! current_decoder->play (& playback_api, current_filename,
- current_file, start_time, end_time, paused);
+ playback_error = ! current_decoder->play (current_filename, current_file);
DONE:
if (! ready_flag)
- set_pb_ready (& playback_api);
+ set_ready ();
end_source = g_timeout_add (0, end_cb, NULL);
return NULL;
}
-static void playback_start (int seek_time, bool_t pause)
+void playback_play (int seek_time, bool_t pause)
{
- playing = TRUE;
- initial_seek = seek_time;
- paused = pause;
- stopped = FALSE;
+ char * new_filename = playback_entry_get_filename ();
+ g_return_if_fail (new_filename);
- hook_associate ("playlist update", update_cb, NULL);
- pthread_create (& playback_thread_handle, NULL, playback_thread, NULL);
-}
-
-static void playback_restart (int seek_time, bool_t pause)
-{
if (playing)
- playback_finish ();
-
- restart_flag = TRUE;
+ playback_cleanup ();
- playback_start (seek_time, pause);
+ current_filename = new_filename;
- /* on restart, send "playback seek" instead of "playback begin" */
- hook_call ("playback seek", NULL);
-}
+ playing = TRUE;
+ paused = pause;
-void playback_play (int seek_time, bool_t pause)
-{
- if (current_filename)
- playback_cleanup ();
+ seek_request = (seek_time > 0) ? seek_time : -1;
- current_filename = playback_entry_get_filename ();
- g_return_if_fail (current_filename);
+ stopped = FALSE;
- playback_start (seek_time, pause);
+ hook_associate ("playlist update", update_cb, NULL);
+ pthread_create (& playback_thread_handle, NULL, playback_thread, NULL);
hook_call ("playback begin", NULL);
}
@@ -486,67 +440,121 @@ void drct_seek (int time)
wait_until_ready ();
- if (! current_decoder || ! current_decoder->mseek || current_length < 1)
+ if (current_length < 1)
return;
- current_decoder->mseek (& playback_api, time_offset + CLAMP (time, 0,
- current_length));
+ pthread_mutex_lock (& control_mutex);
+
+ seek_request = time_offset + CLAMP (time, 0, current_length);
+ output_abort_write ();
- /* If the plugin is using our output system, don't call "playback seek"
- * immediately but wait for output_set_time() to be called. This ensures
- * that a "playback seek" handler can call playback_get_time() and get the
- * new time. */
- if (! output_is_open ())
- hook_call ("playback seek", NULL);
+ pthread_mutex_unlock (& control_mutex);
}
-static void set_data (InputPlayback * p, void * data)
+bool_t input_open_audio (int format, int rate, int channels)
{
- g_return_if_fail (playing);
- current_data = data;
+ g_return_val_if_fail (playing, FALSE);
+
+ if (! output_open_audio (format, rate, channels))
+ return FALSE;
+
+ output_set_replaygain_info (& current_gain);
+
+ if (paused)
+ output_pause (TRUE);
+
+ current_samplerate = rate;
+ current_channels = channels;
+
+ if (ready_flag)
+ event_queue ("info change", NULL);
+
+ return TRUE;
}
-static void * get_data (InputPlayback * p)
+void input_set_gain (const ReplayGainInfo * info)
{
- g_return_val_if_fail (playing, NULL);
- return current_data;
+ g_return_if_fail (playing);
+ memcpy (& current_gain, info, sizeof current_gain);
+ output_set_replaygain_info (& current_gain);
}
-static void set_params (InputPlayback * p, int bitrate, int samplerate,
- int channels)
+void input_write_audio (void * data, int length)
{
g_return_if_fail (playing);
- current_bitrate = bitrate;
- current_samplerate = samplerate;
- current_channels = channels;
+ if (! ready_flag)
+ set_ready ();
- if (drct_get_ready ())
- event_queue ("info change", NULL);
+ int b = g_atomic_int_get (& repeat_b);
+
+ if (b >= 0)
+ {
+ if (! output_write_audio (data, length, b))
+ {
+ pthread_mutex_lock (& control_mutex);
+ seek_request = MAX (repeat_a, time_offset);
+ pthread_mutex_unlock (& control_mutex);
+ }
+ }
+ else
+ {
+ if (! output_write_audio (data, length, stop_time))
+ g_atomic_int_set (& stop_flag, TRUE);
+ }
+}
+
+int input_written_time (void)
+{
+ g_return_val_if_fail (playing, -1);
+ return output_written_time ();
}
-static void set_tuple (InputPlayback * p, Tuple * tuple)
+Tuple * input_get_tuple (void)
+{
+ g_return_val_if_fail (playing, NULL);
+ return playback_entry_get_tuple ();
+}
+
+void input_set_tuple (Tuple * tuple)
{
g_return_if_fail (playing);
- read_gain_from_tuple (tuple);
playback_entry_set_tuple (tuple);
}
-static void set_gain_from_playlist (InputPlayback * p)
+void input_set_bitrate (int bitrate)
{
g_return_if_fail (playing);
- p->output->set_replaygain_info (& gain_from_playlist);
+ current_bitrate = bitrate;
+
+ if (ready_flag)
+ event_queue ("info change", NULL);
}
-static InputPlayback playback_api = {
- .output = & output_api,
- .set_data = set_data,
- .get_data = get_data,
- .set_pb_ready = set_pb_ready,
- .set_params = set_params,
- .set_tuple = set_tuple,
- .set_gain_from_playlist = set_gain_from_playlist,
-};
+bool_t input_check_stop (void)
+{
+ g_return_val_if_fail (playing, TRUE);
+ return g_atomic_int_get (& stop_flag);
+}
+
+int input_check_seek (void)
+{
+ g_return_val_if_fail (playing, -1);
+
+ pthread_mutex_lock (& control_mutex);
+ int seek = seek_request;
+
+ if (seek != -1)
+ {
+ output_set_time (seek);
+ seek_request = -1;
+
+ event_queue ("playback seek", NULL);
+ }
+
+ pthread_mutex_unlock (& control_mutex);
+ return seek;
+}
char * drct_get_filename (void)
{
@@ -567,14 +575,9 @@ char * drct_get_title (void)
if (current_length > 0)
{
- int len = current_length / 1000;
-
- if (len < 3600)
- snprintf (s, sizeof s, get_bool (NULL, "leading_zero") ?
- " (%02d:%02d)" : " (%d:%02d)", len / 60, len % 60);
- else
- snprintf (s, sizeof s, " (%d:%02d:%02d)", len / 3600, (len / 60) %
- 60, len % 60);
+ char t[16];
+ audgui_format_time (t, sizeof t, current_length);
+ snprintf (s, sizeof s, " (%s)", t);
}
else
s[0] = 0;
@@ -605,23 +608,12 @@ void drct_get_info (int * bitrate, int * samplerate, int * channels)
void drct_get_volume (int * l, int * r)
{
- if (playing && drct_get_ready () && current_decoder &&
- current_decoder->get_volume && current_decoder->get_volume (l, r))
- return;
-
output_get_volume (l, r);
}
void drct_set_volume (int l, int r)
{
- l = CLAMP (l, 0, 100);
- r = CLAMP (r, 0, 100);
-
- if (playing && drct_get_ready () && current_decoder &&
- current_decoder->set_volume && current_decoder->set_volume (l, r))
- return;
-
- output_set_volume (l, r);
+ output_set_volume (CLAMP (l, 0, 100), CLAMP (r, 0, 100));
}
void drct_set_ab_repeat (int a, int b)
@@ -634,27 +626,27 @@ void drct_set_ab_repeat (int a, int b)
if (current_length < 1)
return;
- repeat_a = a;
+ if (a >= 0)
+ a += time_offset;
+ if (b >= 0)
+ b += time_offset;
- if (repeat_b != b)
- {
- repeat_b = b;
+ pthread_mutex_lock (& control_mutex);
- /* Restart playback so the new setting takes effect. We could add
- * something like InputPlugin::set_stop_time(), but this is the only
- * place it would be used. */
- int seek_time = drct_get_time ();
- bool_t was_paused = paused;
-
- if (repeat_b >= 0 && seek_time >= repeat_b)
- seek_time = MAX (repeat_a, 0);
+ repeat_a = a;
+ g_atomic_int_set (& repeat_b, b);
- playback_restart (seek_time, was_paused);
+ if (b != -1 && output_get_time () >= b)
+ {
+ seek_request = MAX (a, time_offset);
+ output_abort_write ();
}
+
+ pthread_mutex_unlock (& control_mutex);
}
void drct_get_ab_repeat (int * a, int * b)
{
- * a = playing ? repeat_a : -1;
- * b = playing ? repeat_b : -1;
+ * a = (playing && repeat_a != -1) ? repeat_a - time_offset : -1;
+ * b = (playing && repeat_b != -1) ? repeat_b - time_offset : -1;
}
diff --git a/src/audacious/playback.h b/src/audacious/playback.h
index fb84b01..2937791 100644
--- a/src/audacious/playback.h
+++ b/src/audacious/playback.h
@@ -1,6 +1,6 @@
/*
* playback.h
- * Copyright 2006-2011 William Pitcock and John Lindgren
+ * Copyright 2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/audacious/playlist-api.h b/src/audacious/playlist-api.h
index 08d71a8..634fd05 100644
--- a/src/audacious/playlist-api.h
+++ b/src/audacious/playlist-api.h
@@ -1,6 +1,6 @@
/*
* playlist-api.h
- * Copyright 2010-2012 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -124,8 +124,9 @@ AUD_VFUNC5 (playlist_entry_insert_batch, int, playlist, int, at,
/* Similar to playlist_entry_insert_batch, but allows the caller to prevent some
* items from being added by returning false from the <filter> callback. Useful
- * for searching a folder and adding only new files to the playlist. <user> is
- * an untyped pointer passed to the <filter> callback. */
+ * for searching a folder and adding only new files to the playlist. Filenames
+ * passed to the callback can be used with str_ref(), str_equal(), etc. <user>
+ * is an additional, untyped pointer passed to the callback. */
AUD_VFUNC7 (playlist_entry_insert_filtered, int, playlist, int, at,
Index *, filenames, Index *, tuples, PlaylistFilterFunc, filter,
void *, user, bool_t, play)
diff --git a/src/audacious/playlist-files.c b/src/audacious/playlist-files.c
index 795042e..8ebe521 100644
--- a/src/audacious/playlist-files.c
+++ b/src/audacious/playlist-files.c
@@ -1,6 +1,6 @@
/*
* playlist-files.c
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -27,80 +27,98 @@
#include "plugin.h"
#include "plugins.h"
-static PluginHandle * get_plugin_silent (const char * filename)
+typedef struct
{
- char buf[32];
- if (! uri_get_extension (filename, buf, sizeof buf))
- return NULL;
-
- return playlist_plugin_for_extension (buf);
+ const char * filename;
+ char * title;
+ Index * filenames;
+ Index * tuples;
+ bool_t plugin_found;
+ bool_t success;
}
+PlaylistData;
-bool_t filename_is_playlist (const char * filename)
+static void plugin_for_filename (const char * filename, PluginForEachFunc func, void * data)
{
- return (get_plugin_silent (filename) != NULL);
+ char ext[32];
+ if (uri_get_extension (filename, ext, sizeof ext))
+ playlist_plugin_for_ext (ext, func, data);
}
-static PluginHandle * get_plugin (const char * filename, bool_t saving)
+static bool_t plugin_found_cb (PluginHandle * plugin, void * data)
{
- PluginHandle * plugin = get_plugin_silent (filename);
-
- if (! plugin)
- {
- SPRINTF (error, _("Cannot %s %s: unsupported file extension."),
- saving ? _("save") : _("load"), filename);
- interface_show_error (error);
- return NULL;
- }
-
- return plugin;
+ * (PluginHandle * *) data = plugin;
+ return FALSE; /* stop when first plugin is found */
}
-bool_t playlist_load (const char * filename, char * * title,
- Index * * filenames_p, Index * * tuples_p)
+bool_t filename_is_playlist (const char * filename)
{
- AUDDBG ("Loading playlist %s.\n", filename);
+ PluginHandle * plugin = NULL;
+ plugin_for_filename (filename, plugin_found_cb, & plugin);
+ return (plugin != NULL);
+}
- PluginHandle * plugin = get_plugin (filename, FALSE);
- if (! plugin)
- return FALSE;
+static bool_t playlist_load_cb (PluginHandle * plugin, void * data_)
+{
+ PlaylistData * data = (PlaylistData *) data_;
PlaylistPlugin * pp = plugin_get_header (plugin);
- g_return_val_if_fail (pp && PLUGIN_HAS_FUNC (pp, load), FALSE);
+ if (! pp || ! PLUGIN_HAS_FUNC (pp, load))
+ return TRUE; /* try another plugin */
+
+ data->plugin_found = TRUE;
- VFSFile * file = vfs_fopen (filename, "r");
+ VFSFile * file = vfs_fopen (data->filename, "r");
if (! file)
- return FALSE;
+ return FALSE; /* stop if we can't open file */
- Index * filenames = index_new ();
- Index * tuples = index_new ();
- bool_t success = pp->load (filename, file, title, filenames, tuples);
+ data->success = pp->load (data->filename, file, & data->title, data->filenames, data->tuples);
vfs_fclose (file);
+ return ! data->success; /* stop when playlist is loaded */
+}
+
+bool_t playlist_load (const char * filename, char * * title, Index * * filenames, Index * * tuples)
+{
+ PlaylistData data =
+ {
+ .filename = filename,
+ .filenames = index_new (),
+ .tuples = index_new ()
+ };
+
+ AUDDBG ("Loading playlist %s.\n", filename);
+ plugin_for_filename (filename, playlist_load_cb, & data);
+
+ if (! data.plugin_found)
+ {
+ SPRINTF (error, _("Cannot load %s: unsupported file extension."), filename);
+ interface_show_error (error);
+ }
- if (! success)
+ if (! data.success)
{
- index_free (filenames);
- index_free (tuples);
+ str_unref (data.title);
+ index_free_full (data.filenames, (IndexFreeFunc) str_unref);
+ index_free_full (data.tuples, (IndexFreeFunc) tuple_unref);
return FALSE;
}
- if (index_count (tuples))
- g_return_val_if_fail (index_count (tuples) == index_count (filenames),
- FALSE);
+ if (index_count (data.tuples))
+ g_return_val_if_fail (index_count (data.tuples) == index_count (data.filenames), FALSE);
else
{
- index_free (tuples);
- tuples = NULL;
+ index_free (data.tuples);
+ data.tuples = NULL;
}
- * filenames_p = filenames;
- * tuples_p = tuples;
+ * title = data.title;
+ * filenames = data.filenames;
+ * tuples = data.tuples;
return TRUE;
}
-bool_t playlist_insert_playlist_raw (int list, int at,
- const char * filename)
+bool_t playlist_insert_playlist_raw (int list, int at, const char * filename)
{
char * title = NULL;
Index * filenames, * tuples;
@@ -117,59 +135,60 @@ bool_t playlist_insert_playlist_raw (int list, int at,
return TRUE;
}
-bool_t playlist_save (int list, const char * filename)
+static bool_t playlist_save_cb (PluginHandle * plugin, void * data_)
{
- AUDDBG ("Saving playlist %s.\n", filename);
-
- PluginHandle * plugin = get_plugin (filename, TRUE);
- if (! plugin)
- return FALSE;
+ PlaylistData * data = data_;
PlaylistPlugin * pp = plugin_get_header (plugin);
- g_return_val_if_fail (pp, FALSE);
+ if (! pp || ! PLUGIN_HAS_FUNC (pp, save))
+ return TRUE; /* try another plugin */
- if (! PLUGIN_HAS_FUNC (pp, save))
- {
- SPRINTF (error, _("Cannot save %s: plugin does not support saving."), filename);
- interface_show_error (error);
- return FALSE;
- }
+ data->plugin_found = TRUE;
- bool_t fast = get_bool (NULL, "metadata_on_play");
-
- VFSFile * file = vfs_fopen (filename, "w");
+ VFSFile * file = vfs_fopen (data->filename, "w");
if (! file)
- return FALSE;
+ return FALSE; /* stop if we can't open file */
- char * title = playlist_get_title (list);
+ data->success = pp->save (data->filename, file, data->title, data->filenames, data->tuples);
+
+ vfs_fclose (file);
+ return FALSE; /* stop after first attempt (successful or not) */
+}
+
+bool_t playlist_save (int list, const char * filename)
+{
+ PlaylistData data =
+ {
+ .filename = filename,
+ .title = playlist_get_title (list),
+ .filenames = index_new (),
+ .tuples = index_new ()
+ };
int entries = playlist_entry_count (list);
- Index * filenames = index_new ();
- index_allocate (filenames, entries);
- Index * tuples = index_new ();
- index_allocate (tuples, entries);
+ bool_t fast = get_bool (NULL, "metadata_on_play");
+
+ index_allocate (data.filenames, entries);
+ index_allocate (data.tuples, entries);
for (int i = 0; i < entries; i ++)
{
- index_append (filenames, playlist_entry_get_filename (list, i));
- index_append (tuples, playlist_entry_get_tuple (list, i, fast));
+ index_insert (data.filenames, -1, playlist_entry_get_filename (list, i));
+ index_insert (data.tuples, -1, playlist_entry_get_tuple (list, i, fast));
}
- bool_t success = pp->save (filename, file, title, filenames, tuples);
-
- vfs_fclose (file);
- str_unref (title);
+ AUDDBG ("Saving playlist %s.\n", filename);
+ plugin_for_filename (filename, playlist_save_cb, & data);
- for (int i = 0; i < entries; i ++)
+ if (! data.plugin_found)
{
- str_unref (index_get (filenames, i));
- Tuple * tuple = index_get (tuples, i);
- if (tuple)
- tuple_unref (tuple);
+ SPRINTF (error, _("Cannot save %s: unsupported file extension."), filename);
+ interface_show_error (error);
}
- index_free (filenames);
- index_free (tuples);
+ str_unref (data.title);
+ index_free_full (data.filenames, (IndexFreeFunc) str_unref);
+ index_free_full (data.tuples, (IndexFreeFunc) tuple_unref);
- return success;
+ return data.success;
}
diff --git a/src/audacious/playlist-new.c b/src/audacious/playlist-new.c
index 29aab8f..23696b0 100644
--- a/src/audacious/playlist-new.c
+++ b/src/audacious/playlist-new.c
@@ -1,6 +1,6 @@
/*
* playlist-new.c
- * Copyright 2009-2012 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -24,6 +24,7 @@
#include <time.h>
#include <glib.h>
+#include <glib/gstdio.h>
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
@@ -126,22 +127,13 @@ static void scan_restart (void);
static bool_t next_song_locked (Playlist * playlist, bool_t repeat, int hint);
-static char * title_format;
-
-static char * title_from_tuple (Tuple * tuple)
-{
- if (! title_format)
- title_format = get_string (NULL, "generic_title_format");
-
- return tuple_format_title (tuple, title_format);
-}
+static TupleFormatter * title_formatter;
static void entry_set_tuple_real (Entry * entry, Tuple * tuple)
{
/* Hack: We cannot refresh segmented entries (since their info is read from
* the cue sheet when it is first loaded), so leave them alone. -jlindgren */
- if (entry->tuple && tuple_get_value_type (entry->tuple, FIELD_SEGMENT_START,
- NULL) == TUPLE_INT)
+ if (entry->tuple && tuple_get_value_type (entry->tuple, FIELD_SEGMENT_START) == TUPLE_INT)
{
if (tuple)
tuple_unref (tuple);
@@ -168,8 +160,8 @@ static void entry_set_tuple_real (Entry * entry, Tuple * tuple)
}
else
{
- entry->formatted = title_from_tuple (tuple);
- entry->length = tuple_get_int (tuple, FIELD_LENGTH, NULL);
+ entry->formatted = tuple_format_title (title_formatter, tuple);
+ entry->length = tuple_get_int (tuple, FIELD_LENGTH);
if (entry->length < 0)
entry->length = 0;
}
@@ -286,11 +278,7 @@ static void playlist_free (Playlist * playlist)
str_unref (playlist->filename);
str_unref (playlist->title);
-
- for (int count = 0; count < index_count (playlist->entries); count ++)
- entry_free (index_get (playlist->entries, count));
-
- index_free (playlist->entries);
+ index_free_full (playlist->entries, (IndexFreeFunc) entry_free);
g_list_free (playlist->queued);
g_slice_free (Playlist, playlist);
}
@@ -655,6 +643,9 @@ void playlist_init (void)
scan_playlist = scan_row = 0;
LEAVE;
+
+ /* initialize title formatter */
+ playlist_reformat_titles ();
}
void playlist_end (void)
@@ -670,17 +661,14 @@ void playlist_end (void)
active_playlist = playing_playlist = NULL;
resume_playlist = -1;
- for (int i = 0; i < index_count (playlists); i ++)
- playlist_free (index_get (playlists, i));
-
- index_free (playlists);
+ index_free_full (playlists, (IndexFreeFunc) playlist_free);
playlists = NULL;
g_hash_table_destroy (unique_id_table);
unique_id_table = NULL;
- g_free (title_format);
- title_format = NULL;
+ tuple_formatter_free (title_formatter);
+ title_formatter = NULL;
LEAVE;
}
@@ -722,11 +710,11 @@ void playlist_reorder (int from, int to, int count)
Index * displaced = index_new ();
if (to < from)
- index_copy_append (playlists, to, displaced, from - to);
+ index_copy_insert (playlists, to, displaced, -1, from - to);
else
- index_copy_append (playlists, from + count, displaced, to - from);
+ index_copy_insert (playlists, from + count, displaced, -1, to - from);
- index_move (playlists, from, to, count);
+ index_copy_set (playlists, from, playlists, to, count);
if (to < from)
{
@@ -751,8 +739,7 @@ void playlist_delete (int playlist_num)
bool_t was_playing = (playlist == playing_playlist);
- index_delete (playlists, playlist_num, 1);
- playlist_free (playlist);
+ index_delete_full (playlists, playlist_num, 1, (IndexFreeFunc) playlist_free);
if (! index_count (playlists))
index_insert (playlists, 0, playlist_new (-1));
@@ -1010,7 +997,7 @@ void playlist_entry_insert_batch_raw (int playlist_num, int at,
char * filename = index_get (filenames, i);
Tuple * tuple = tuples ? index_get (tuples, i) : NULL;
PluginHandle * decoder = decoders ? index_get (decoders, i) : NULL;
- index_append (add, entry_new (filename, tuple, decoder));
+ index_insert (add, -1, entry_new (filename, tuple, decoder));
}
index_free (filenames);
@@ -1020,7 +1007,7 @@ void playlist_entry_insert_batch_raw (int playlist_num, int at,
index_free (tuples);
number = index_count (add);
- index_merge_insert (playlist->entries, at, add);
+ index_copy_insert (add, 0, playlist->entries, at, -1);
index_free (add);
number_entries (playlist, at, entries + number - at);
@@ -1083,10 +1070,9 @@ void playlist_entry_delete (int playlist_num, int at, int number)
}
playlist->total_length -= entry->length;
- entry_free (entry);
}
- index_delete (playlist->entries, at, number);
+ index_delete_full (playlist->entries, at, number, (IndexFreeFunc) entry_free);
number_entries (playlist, at, entries - at - number);
if (position_changed && get_bool (NULL, "advance_on_delete"))
@@ -1352,21 +1338,21 @@ int playlist_shift (int playlist_num, int entry_num, int distance)
{
entry = index_get (playlist->entries, i);
if (! entry->selected)
- index_append (temp, entry);
+ index_insert (temp, -1, entry);
}
for (int i = top; i < bottom; i ++)
{
entry = index_get (playlist->entries, i);
if (entry->selected)
- index_append (temp, entry);
+ index_insert (temp, -1, entry);
}
for (int i = center; i < bottom; i ++)
{
entry = index_get (playlist->entries, i);
if (! entry->selected)
- index_append (temp, entry);
+ index_insert (temp, -1, entry);
}
index_copy_set (temp, 0, playlist->entries, top, bottom - top);
@@ -1446,7 +1432,7 @@ void playlist_delete_selected (int playlist_num)
}
else
{
- index_append (others, entry);
+ index_insert (others, -1, entry);
if (found)
after ++;
@@ -1486,7 +1472,7 @@ void playlist_reverse (int playlist_num)
index_allocate (reversed, entries);
for (int count = entries; count --; )
- index_append (reversed, index_get (playlist->entries, count));
+ index_insert (reversed, -1, index_get (playlist->entries, count));
index_free (playlist->entries);
playlist->entries = reversed;
@@ -1509,7 +1495,7 @@ void playlist_reverse_selected (int playlist_num)
{
Entry * entry = index_get (playlist->entries, count);
if (entry->selected)
- index_append (reversed, index_get (playlist->entries, count));
+ index_insert (reversed, -1, index_get (playlist->entries, count));
}
int count2 = 0;
@@ -1560,7 +1546,7 @@ void playlist_randomize_selected (int playlist_num)
{
Entry * entry = index_get (playlist->entries, count);
if (entry->selected)
- index_append (selected, entry);
+ index_insert (selected, -1, entry);
}
for (int i = 0; i < playlist->selected_count; i ++)
@@ -1637,7 +1623,7 @@ static void sort_selected (Playlist * playlist, CompareData * data)
{
Entry * entry = index_get (playlist->entries, count);
if (entry->selected)
- index_append (selected, entry);
+ index_insert (selected, -1, entry);
}
index_sort_with_data (selected, compare_cb, data);
@@ -1750,11 +1736,14 @@ void playlist_reformat_titles (void)
{
ENTER;
- g_free (title_format);
- title_format = NULL;
+ if (title_formatter)
+ tuple_formatter_free (title_formatter);
- for (int playlist_num = 0; playlist_num < index_count (playlists);
- playlist_num ++)
+ char * format = get_str (NULL, "generic_title_format");
+ title_formatter = tuple_formatter_new (format);
+ str_unref (format);
+
+ for (int playlist_num = 0; playlist_num < index_count (playlists); playlist_num ++)
{
Playlist * playlist = index_get (playlists, playlist_num);
int entries = index_count (playlist->entries);
@@ -1763,7 +1752,11 @@ void playlist_reformat_titles (void)
{
Entry * entry = index_get (playlist->entries, count);
str_unref (entry->formatted);
- entry->formatted = entry->tuple ? title_from_tuple (entry->tuple) : NULL;
+
+ if (entry->tuple)
+ entry->formatted = tuple_format_title (title_formatter, entry->tuple);
+ else
+ entry->formatted = NULL;
}
queue_update (PLAYLIST_UPDATE_METADATA, playlist_num, 0, entries);
@@ -2251,9 +2244,10 @@ void playlist_save_state (void)
ENTER;
- char * path = g_strdup_printf ("%s/" STATE_FILE, get_path (AUD_PATH_USER_DIR));
- FILE * handle = fopen (path, "w");
- g_free (path);
+ const char * user_dir = get_path (AUD_PATH_USER_DIR);
+ SCONCAT2 (path, user_dir, "/" STATE_FILE);
+
+ FILE * handle = g_fopen (path, "w");
if (! handle)
RETURN ();
@@ -2323,9 +2317,10 @@ void playlist_load_state (void)
ENTER;
int playlist_num;
- char * path = g_strdup_printf ("%s/" STATE_FILE, get_path (AUD_PATH_USER_DIR));
- FILE * handle = fopen (path, "r");
- g_free (path);
+ const char * user_dir = get_path (AUD_PATH_USER_DIR);
+ SCONCAT2 (path, user_dir, "/" STATE_FILE);
+
+ FILE * handle = g_fopen (path, "r");
if (! handle)
RETURN ();
diff --git a/src/audacious/playlist-utils.c b/src/audacious/playlist-utils.c
index e690c9f..c51dfa2 100644
--- a/src/audacious/playlist-utils.c
+++ b/src/audacious/playlist-utils.c
@@ -17,13 +17,13 @@
* the use of this software.
*/
-#include <dirent.h>
-#include <glib.h>
-#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
@@ -39,13 +39,13 @@ static const char * get_basename (const char * filename)
static int filename_compare_basename (const char * a, const char * b)
{
- return string_compare_encoded (get_basename (a), get_basename (b));
+ return str_compare_encoded (get_basename (a), get_basename (b));
}
static int tuple_compare_string (const Tuple * a, const Tuple * b, int field)
{
- char * string_a = tuple_get_str (a, field, NULL);
- char * string_b = tuple_get_str (b, field, NULL);
+ char * string_a = tuple_get_str (a, field);
+ char * string_b = tuple_get_str (b, field);
int ret;
if (string_a == NULL)
@@ -53,7 +53,7 @@ static int tuple_compare_string (const Tuple * a, const Tuple * b, int field)
else if (string_b == NULL)
ret = 1;
else
- ret = string_compare (string_a, string_b);
+ ret = str_compare (string_a, string_b);
str_unref (string_a);
str_unref (string_b);
@@ -62,13 +62,13 @@ static int tuple_compare_string (const Tuple * a, const Tuple * b, int field)
static int tuple_compare_int (const Tuple * a, const Tuple * b, int field)
{
- if (tuple_get_value_type (a, field, NULL) != TUPLE_INT)
- return (tuple_get_value_type (b, field, NULL) != TUPLE_INT) ? 0 : -1;
- if (tuple_get_value_type (b, field, NULL) != TUPLE_INT)
+ if (tuple_get_value_type (a, field) != TUPLE_INT)
+ return (tuple_get_value_type (b, field) != TUPLE_INT) ? 0 : -1;
+ if (tuple_get_value_type (b, field) != TUPLE_INT)
return 1;
- int int_a = tuple_get_int (a, field, NULL);
- int int_b = tuple_get_int (b, field, NULL);
+ int int_a = tuple_get_int (a, field);
+ int int_b = tuple_get_int (b, field);
return (int_a < int_b) ? -1 : (int_a > int_b);
}
@@ -104,7 +104,7 @@ static int tuple_compare_length (const Tuple * a, const Tuple * b)
}
static const PlaylistStringCompareFunc filename_comparisons[] = {
- [PLAYLIST_SORT_PATH] = string_compare_encoded,
+ [PLAYLIST_SORT_PATH] = str_compare_encoded,
[PLAYLIST_SORT_FILENAME] = filename_compare_basename,
[PLAYLIST_SORT_TITLE] = NULL,
[PLAYLIST_SORT_ALBUM] = NULL,
@@ -133,7 +133,7 @@ static const PlaylistStringCompareFunc title_comparisons[] = {
[PLAYLIST_SORT_ARTIST] = NULL,
[PLAYLIST_SORT_DATE] = NULL,
[PLAYLIST_SORT_TRACK] = NULL,
- [PLAYLIST_SORT_FORMATTED_TITLE] = string_compare,
+ [PLAYLIST_SORT_FORMATTED_TITLE] = str_compare,
[PLAYLIST_SORT_LENGTH] = NULL};
void playlist_sort_by_scheme (int playlist, int scheme)
@@ -248,12 +248,13 @@ void playlist_select_by_patterns (int playlist, const Tuple * patterns)
playlist_select_all (playlist, TRUE);
- for (field = 0; field < G_N_ELEMENTS (fields); field ++)
+ for (field = 0; field < ARRAY_LEN (fields); field ++)
{
- char * pattern = tuple_get_str (patterns, fields[field], NULL);
- regex_t regex;
+ char * pattern = tuple_get_str (patterns, fields[field]);
+ GRegex * regex;
- if (! pattern || ! pattern[0] || regcomp (& regex, pattern, REG_ICASE))
+ if (! pattern || ! pattern[0] || ! (regex = g_regex_new (pattern,
+ G_REGEX_CASELESS, 0, NULL)))
{
str_unref (pattern);
continue;
@@ -265,9 +266,9 @@ void playlist_select_by_patterns (int playlist, const Tuple * patterns)
continue;
Tuple * tuple = playlist_entry_get_tuple (playlist, entry, FALSE);
- char * string = tuple ? tuple_get_str (tuple, fields[field], NULL) : NULL;
+ char * string = tuple ? tuple_get_str (tuple, fields[field]) : NULL;
- if (! string || regexec (& regex, string, 0, NULL, 0))
+ if (! string || ! g_regex_match (regex, string, 0, NULL))
playlist_entry_set_selected (playlist, entry, FALSE);
str_unref (string);
@@ -275,7 +276,7 @@ void playlist_select_by_patterns (int playlist, const Tuple * patterns)
tuple_unref (tuple);
}
- regfree (& regex);
+ g_regex_unref (regex);
str_unref (pattern);
}
}
@@ -283,14 +284,16 @@ void playlist_select_by_patterns (int playlist, const Tuple * patterns)
static char * make_playlist_path (int playlist)
{
if (! playlist)
- return g_strdup_printf ("%s/playlist.xspf", get_path (AUD_PATH_USER_DIR));
+ return filename_build (get_path (AUD_PATH_USER_DIR), "playlist.xspf");
- return g_strdup_printf ("%s/playlist_%02d.xspf",
- get_path (AUD_PATH_PLAYLISTS_DIR), 1 + playlist);
+ SPRINTF (name, "playlist_%02d.xspf", 1 + playlist);
+ return filename_build (get_path (AUD_PATH_PLAYLISTS_DIR), name);
}
static void load_playlists_real (void)
{
+ const char * folder = get_path (AUD_PATH_PLAYLISTS_DIR);
+
/* old (v3.1 and earlier) naming scheme */
int count;
@@ -300,7 +303,7 @@ static void load_playlists_real (void)
if (! g_file_test (path, G_FILE_TEST_EXISTS))
{
- g_free (path);
+ str_unref (path);
break;
}
@@ -310,47 +313,52 @@ static void load_playlists_real (void)
playlist_insert_playlist_raw (count, 0, uri);
playlist_set_modified (count, TRUE);
- g_free (path);
- g_free (uri);
+ str_unref (path);
+ str_unref (uri);
}
/* unique ID-based naming scheme */
- char * order_path = g_strdup_printf ("%s/order", get_path (AUD_PATH_PLAYLISTS_DIR));
+ char * order_path = filename_build (folder, "order");
char * order_string;
g_file_get_contents (order_path, & order_string, NULL, NULL);
- g_free (order_path);
+ str_unref (order_path);
if (! order_string)
goto DONE;
- char * * order = g_strsplit (order_string, " ", -1);
+ Index * order = str_list_to_index (order_string, " ");
g_free (order_string);
- for (int i = 0; order[i]; i ++)
+ for (int i = 0; i < index_count (order); i ++)
{
- char * path = g_strdup_printf ("%s/%s.audpl", get_path (AUD_PATH_PLAYLISTS_DIR), order[i]);
+ char * number = index_get (order, i);
+
+ SCONCAT2 (name, number, ".audpl");
+ char * path = filename_build (folder, name);
if (! g_file_test (path, G_FILE_TEST_EXISTS))
{
- g_free (path);
- path = g_strdup_printf ("%s/%s.xspf", get_path (AUD_PATH_PLAYLISTS_DIR), order[i]);
+ str_unref (path);
+
+ SCONCAT2 (name2, number, ".xspf");
+ path = filename_build (folder, name2);
}
char * uri = filename_to_uri (path);
- playlist_insert_with_id (count + i, atoi (order[i]));
+ playlist_insert_with_id (count + i, atoi (number));
playlist_insert_playlist_raw (count + i, 0, uri);
playlist_set_modified (count + i, FALSE);
if (g_str_has_suffix (path, ".xspf"))
playlist_set_modified (count + i, TRUE);
- g_free (path);
- g_free (uri);
+ str_unref (path);
+ str_unref (uri);
}
- g_strfreev (order);
+ index_free_full (order, (IndexFreeFunc) str_unref);
DONE:
if (! playlist_count ())
@@ -366,35 +374,38 @@ static void save_playlists_real (void)
/* save playlists */
- char * * order = g_malloc (sizeof (char *) * (lists + 1));
- GHashTable * saved = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+ Index * order = index_new ();
+ GHashTable * saved = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) str_unref, NULL);
for (int i = 0; i < lists; i ++)
{
int id = playlist_get_unique_id (i);
- order[i] = g_strdup_printf ("%d", id);
+ char * number = int_to_str (id);
+
+ SCONCAT2 (name, number, ".audpl");
if (playlist_get_modified (i))
{
- char * path = g_strdup_printf ("%s/%d.audpl", folder, id);
+ char * path = filename_build (folder, name);
char * uri = filename_to_uri (path);
playlist_save (i, uri);
playlist_set_modified (i, FALSE);
- g_free (path);
- g_free (uri);
+ str_unref (path);
+ str_unref (uri);
}
- g_hash_table_insert (saved, g_strdup_printf ("%d.audpl", id), NULL);
+ index_insert (order, -1, number);
+ g_hash_table_insert (saved, str_get (name), NULL);
}
- order[lists] = NULL;
- char * order_string = g_strjoinv (" ", order);
- g_strfreev (order);
+ char * order_string = index_to_str_list (order, " ");
+ index_free_full (order, (IndexFreeFunc) str_unref);
GError * error = NULL;
- char * order_path = g_strdup_printf ("%s/order", get_path (AUD_PATH_PLAYLISTS_DIR));
+ char * order_path = filename_build (folder, "order");
char * old_order_string;
g_file_get_contents (order_path, & old_order_string, NULL, NULL);
@@ -408,36 +419,35 @@ static void save_playlists_real (void)
}
}
- g_free (order_string);
- g_free (order_path);
+ str_unref (order_string);
+ str_unref (order_path);
g_free (old_order_string);
/* clean up deleted playlists and files from old naming scheme */
char * path = make_playlist_path (0);
- remove (path);
- g_free (path);
+ g_unlink (path);
+ str_unref (path);
- DIR * dir = opendir (folder);
+ GDir * dir = g_dir_open (folder, 0, NULL);
if (! dir)
goto DONE;
- struct dirent * entry;
- while ((entry = readdir (dir)))
+ const char * name;
+ while ((name = g_dir_read_name (dir)))
{
- if (! g_str_has_suffix (entry->d_name, ".audpl")
- && ! g_str_has_suffix (entry->d_name, ".xspf"))
+ if (! g_str_has_suffix (name, ".audpl") && ! g_str_has_suffix (name, ".xspf"))
continue;
- if (! g_hash_table_lookup_extended (saved, entry->d_name, NULL, NULL))
+ if (! g_hash_table_contains (saved, name))
{
- char * path = g_strdup_printf ("%s/%s", folder, entry->d_name);
- remove (path);
- g_free (path);
+ char * path = filename_build (folder, name);
+ g_unlink (path);
+ str_unref (path);
}
}
- closedir (dir);
+ g_dir_close (dir);
DONE:
g_hash_table_destroy (saved);
diff --git a/src/audacious/plugin-init.c b/src/audacious/plugin-init.c
index 0992bf5..10edb28 100644
--- a/src/audacious/plugin-init.c
+++ b/src/audacious/plugin-init.c
@@ -1,6 +1,6 @@
/*
* plugin-init.c
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -27,7 +27,7 @@
#include "effect.h"
#include "general.h"
#include "interface.h"
-#include "main.h"
+#include "misc.h"
#include "output.h"
#include "plugin.h"
#include "plugins.h"
@@ -125,7 +125,7 @@ static bool_t start_multi_cb (PluginHandle * p, void * type)
static void start_plugins (int type)
{
- if (headless && type == PLUGIN_TYPE_IFACE)
+ if (type == PLUGIN_TYPE_IFACE && headless_mode ())
return;
if (table[type].is_single)
@@ -177,7 +177,7 @@ static bool_t stop_multi_cb (PluginHandle * p, void * type)
static void stop_plugins (int type)
{
- if (headless && type == PLUGIN_TYPE_IFACE)
+ if (type == PLUGIN_TYPE_IFACE && headless_mode ())
return;
plugin_for_enabled (type, misc_cleanup_cb, GINT_TO_POINTER (type));
diff --git a/src/audacious/plugin-preferences.c b/src/audacious/plugin-preferences.c
index d064c52..8a0bf81 100644
--- a/src/audacious/plugin-preferences.c
+++ b/src/audacious/plugin-preferences.c
@@ -1,6 +1,6 @@
/*
* plugin-preferences.c
- * Copyright 2012 John Lindgren
+ * Copyright 2012-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,6 +17,7 @@
* the use of this software.
*/
+#include <libaudcore/audstrings.h>
#include <libaudgui/libaudgui-gtk.h>
#include "i18n.h"
@@ -51,9 +52,8 @@ void plugin_make_about_window (PluginHandle * plugin)
text = dgettext (header->domain, text);
}
- char * title = g_strdup_printf (_("About %s"), name);
+ SCONCAT3 (title, _("About"), " ", name);
audgui_simple_message (& misc->about_window, GTK_MESSAGE_INFO, title, text);
- g_free (title);
}
static void response_cb (GtkWidget * window, int response, const PluginPreferences * p)
@@ -89,14 +89,23 @@ void plugin_make_config_window (PluginHandle * plugin)
if (PLUGIN_HAS_FUNC (header, domain))
name = dgettext (header->domain, header->name);
- char * title = g_strdup_printf (_("%s Settings"), name);
+ GtkWidget * window = gtk_dialog_new ();
- GtkWidget * window = p->apply ? gtk_dialog_new_with_buttons (title, NULL, 0,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL)
- : gtk_dialog_new_with_buttons (title, NULL, 0, GTK_STOCK_CLOSE,
- GTK_RESPONSE_CLOSE, NULL);
+ SCONCAT3 (title, name, " ", _("Settings"));
+ gtk_window_set_title ((GtkWindow *) window, title);
- g_free (title);
+ if (p->apply)
+ {
+ GtkWidget * button1 = audgui_button_new (_("_Set"), "system-run", NULL, NULL);
+ GtkWidget * button2 = audgui_button_new (_("_Cancel"), "process-stop", NULL, NULL);
+ gtk_dialog_add_action_widget ((GtkDialog *) window, button2, GTK_RESPONSE_CANCEL);
+ gtk_dialog_add_action_widget ((GtkDialog *) window, button1, GTK_RESPONSE_OK);
+ }
+ else
+ {
+ GtkWidget * button = audgui_button_new (_("_Close"), "window-close", NULL, NULL);
+ gtk_dialog_add_action_widget ((GtkDialog *) window, button, GTK_RESPONSE_CLOSE);
+ }
GtkWidget * content = gtk_dialog_get_content_area ((GtkDialog *) window);
GtkWidget * box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
diff --git a/src/audacious/plugin-registry.c b/src/audacious/plugin-registry.c
index 2b56928..bc0d441 100644
--- a/src/audacious/plugin-registry.c
+++ b/src/audacious/plugin-registry.c
@@ -1,6 +1,6 @@
/*
* plugin-registry.c
- * Copyright 2009-2011 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -24,11 +24,13 @@
* loaded; hence the mutex must be locked before checking that a plugin is
* loaded and while loading it. */
-#include <glib.h>
#include <pthread.h>
#include <stdio.h>
#include <string.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+
#include <libaudcore/audstrings.h>
#include "debug.h"
@@ -99,7 +101,7 @@ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static PluginHandle * plugin_new (char * path, bool_t confirmed, bool_t
loaded, int timestamp, int type, Plugin * header)
{
- PluginHandle * plugin = g_malloc (sizeof (PluginHandle));
+ PluginHandle * plugin = g_slice_new (PluginHandle);
plugin->path = path;
plugin->confirmed = confirmed;
@@ -144,31 +146,31 @@ static void plugin_free (PluginHandle * plugin)
{
plugin_list = g_list_remove (plugin_list, plugin);
- g_list_free_full (plugin->watches, g_free);
+ for (GList * node = plugin->watches; node; node = node->next)
+ g_slice_free (PluginWatch, node->data);
if (plugin->type == PLUGIN_TYPE_TRANSPORT)
- g_list_free_full (plugin->u.t.schemes, g_free);
+ g_list_free_full (plugin->u.t.schemes, (GDestroyNotify) str_unref);
else if (plugin->type == PLUGIN_TYPE_PLAYLIST)
- g_list_free_full (plugin->u.p.exts, g_free);
+ g_list_free_full (plugin->u.p.exts, (GDestroyNotify) str_unref);
else if (plugin->type == PLUGIN_TYPE_INPUT)
{
for (int key = 0; key < INPUT_KEYS; key ++)
- g_list_free_full (plugin->u.i.keys[key], g_free);
+ g_list_free_full (plugin->u.i.keys[key], (GDestroyNotify) str_unref);
}
- g_free (plugin->path);
- g_free (plugin->name);
- g_free (plugin->domain);
+ str_unref (plugin->path);
+ str_unref (plugin->name);
+ str_unref (plugin->domain);
g_free (plugin->misc);
- g_free (plugin);
+ g_slice_free (PluginHandle, plugin);
}
static FILE * open_registry_file (const char * mode)
{
- char * path = g_strdup_printf ("%s/" FILENAME, get_path (AUD_PATH_USER_DIR));
- FILE * file = fopen (path, mode);
- g_free (path);
- return file;
+ const char * user_dir = get_path (AUD_PATH_USER_DIR);
+ SCONCAT2 (path, user_dir, "/" FILENAME);
+ return g_fopen (path, mode);
}
static void transport_plugin_save (PluginHandle * plugin, FILE * handle)
@@ -264,8 +266,7 @@ static bool_t parse_integer (const char * key, int * value)
static char * parse_string (const char * key)
{
- return (parse_value && ! strcmp (parse_key, key)) ? g_strdup (parse_value) :
- NULL;
+ return (parse_value && ! strcmp (parse_key, key)) ? str_get (parse_value) : NULL;
}
static void transport_plugin_parse (PluginHandle * plugin, FILE * handle)
@@ -330,7 +331,7 @@ FOUND:
int timestamp;
if (! parse_integer ("stamp", & timestamp))
{
- g_free (path);
+ str_unref (path);
return FALSE;
}
@@ -405,10 +406,10 @@ int plugin_compare (PluginHandle * a, PluginHandle * b)
return 1;
int diff;
- if ((diff = string_compare (dgettext (a->domain, a->name), dgettext (b->domain, b->name))))
+ if ((diff = str_compare (dgettext (a->domain, a->name), dgettext (b->domain, b->name))))
return diff;
- return string_compare (a->path, b->path);
+ return str_compare (a->path, b->path);
}
void plugin_registry_prune (void)
@@ -432,16 +433,15 @@ PluginHandle * plugin_lookup (const char * path)
static int plugin_lookup_basename_cb (PluginHandle * plugin, const char * basename)
{
- char * test = g_path_get_basename (plugin->path);
-
- char * dot = strrchr (test, '.');
- if (dot)
- * dot = 0;
+ const char * slash = strrchr (plugin->path, G_DIR_SEPARATOR);
+ if (! slash)
+ return TRUE;
- int ret = strcmp (test, basename);
+ const char * dot = strrchr (slash + 1, '.');
+ if (! dot)
+ return TRUE;
- g_free (test);
- return ret;
+ return strncmp (slash + 1, basename, dot - (slash + 1));
}
/* Note: If there are multiple plugins with the same basename, this returns only
@@ -457,10 +457,10 @@ static void plugin_get_info (PluginHandle * plugin, bool_t new)
{
Plugin * header = plugin->header;
- g_free (plugin->name);
- g_free (plugin->domain);
- plugin->name = g_strdup (header->name);
- plugin->domain = PLUGIN_HAS_FUNC (header, domain) ? g_strdup (header->domain) : NULL;
+ str_unref (plugin->name);
+ str_unref (plugin->domain);
+ plugin->name = str_get (header->name);
+ plugin->domain = PLUGIN_HAS_FUNC (header, domain) ? str_get (header->domain) : NULL;
plugin->has_about = PLUGIN_HAS_FUNC (header, about) || PLUGIN_HAS_FUNC (header, about_text);
plugin->has_configure = PLUGIN_HAS_FUNC (header, configure) || PLUGIN_HAS_FUNC (header, prefs);
@@ -468,23 +468,21 @@ static void plugin_get_info (PluginHandle * plugin, bool_t new)
{
TransportPlugin * tp = (TransportPlugin *) header;
- g_list_free_full (plugin->u.t.schemes, g_free);
+ g_list_free_full (plugin->u.t.schemes, (GDestroyNotify) str_unref);
plugin->u.t.schemes = NULL;
for (int i = 0; tp->schemes[i]; i ++)
- plugin->u.t.schemes = g_list_prepend (plugin->u.t.schemes, g_strdup
- (tp->schemes[i]));
+ plugin->u.t.schemes = g_list_prepend (plugin->u.t.schemes, str_get (tp->schemes[i]));
}
else if (header->type == PLUGIN_TYPE_PLAYLIST)
{
PlaylistPlugin * pp = (PlaylistPlugin *) header;
- g_list_free_full (plugin->u.p.exts, g_free);
+ g_list_free_full (plugin->u.p.exts, (GDestroyNotify) str_unref);
plugin->u.p.exts = NULL;
for (int i = 0; pp->extensions[i]; i ++)
- plugin->u.p.exts = g_list_prepend (plugin->u.p.exts, g_strdup
- (pp->extensions[i]));
+ plugin->u.p.exts = g_list_prepend (plugin->u.p.exts, str_get (pp->extensions[i]));
}
else if (header->type == PLUGIN_TYPE_INPUT)
{
@@ -493,7 +491,7 @@ static void plugin_get_info (PluginHandle * plugin, bool_t new)
for (int key = 0; key < INPUT_KEYS; key ++)
{
- g_list_free_full (plugin->u.i.keys[key], g_free);
+ g_list_free_full (plugin->u.i.keys[key], (GDestroyNotify) str_unref);
plugin->u.i.keys[key] = NULL;
}
@@ -501,22 +499,22 @@ static void plugin_get_info (PluginHandle * plugin, bool_t new)
{
for (int i = 0; ip->extensions[i]; i ++)
plugin->u.i.keys[INPUT_KEY_EXTENSION] = g_list_prepend
- (plugin->u.i.keys[INPUT_KEY_EXTENSION], g_strdup
- (ip->extensions[i]));
+ (plugin->u.i.keys[INPUT_KEY_EXTENSION],
+ str_get (ip->extensions[i]));
}
if (PLUGIN_HAS_FUNC (ip, mimes))
{
for (int i = 0; ip->mimes[i]; i ++)
plugin->u.i.keys[INPUT_KEY_MIME] = g_list_prepend
- (plugin->u.i.keys[INPUT_KEY_MIME], g_strdup (ip->mimes[i]));
+ (plugin->u.i.keys[INPUT_KEY_MIME], str_get (ip->mimes[i]));
}
if (PLUGIN_HAS_FUNC (ip, schemes))
{
for (int i = 0; ip->schemes[i]; i ++)
plugin->u.i.keys[INPUT_KEY_SCHEME] = g_list_prepend
- (plugin->u.i.keys[INPUT_KEY_SCHEME], g_strdup (ip->schemes[i]));
+ (plugin->u.i.keys[INPUT_KEY_SCHEME], str_get (ip->schemes[i]));
}
plugin->u.i.has_images = PLUGIN_HAS_FUNC (ip, get_song_image);
@@ -572,7 +570,7 @@ void plugin_register (const char * path, int timestamp)
if (! header)
return;
- plugin = plugin_new (g_strdup (path), TRUE, TRUE, timestamp,
+ plugin = plugin_new (str_get (path), TRUE, TRUE, timestamp,
header->type, header);
plugin_get_info (plugin, TRUE);
@@ -620,6 +618,54 @@ PluginHandle * plugin_by_header (const void * header)
return node ? node->data : NULL;
}
+int plugin_count (int type)
+{
+ int count = 0;
+
+ for (GList * node = plugin_list; node; node = node->next)
+ {
+ PluginHandle * plugin = node->data;
+ if (plugin->type == type)
+ count ++;
+ }
+
+ return count;
+}
+
+int plugin_get_index (PluginHandle * plugin)
+{
+ int index = 0;
+
+ for (GList * node = plugin_list; node; node = node->next)
+ {
+ PluginHandle * plugin2 = node->data;
+ if (plugin2->type == plugin->type)
+ {
+ if (plugin2 == plugin)
+ return index;
+ index ++;
+ }
+ }
+
+ return -1;
+}
+
+PluginHandle * plugin_by_index (int type, int index)
+{
+ for (GList * node = plugin_list; node; node = node->next)
+ {
+ PluginHandle * plugin = node->data;
+ if (plugin->type == type)
+ {
+ if (! index)
+ return plugin;
+ index --;
+ }
+ }
+
+ return NULL;
+}
+
void plugin_for_each (int type, PluginForEachFunc func, void * data)
{
for (GList * node = plugin_list; node; node = node->next)
@@ -660,7 +706,7 @@ static void plugin_call_watches (PluginHandle * plugin)
if (! watch->func (plugin, watch->data))
{
- g_free (watch);
+ g_slice_free (PluginWatch, watch);
plugin->watches = g_list_delete_link (plugin->watches, node);
}
@@ -696,7 +742,7 @@ void plugin_for_enabled (int type, PluginForEachFunc func, void * data)
void plugin_add_watch (PluginHandle * plugin, PluginForEachFunc func, void *
data)
{
- PluginWatch * watch = g_malloc (sizeof (PluginWatch));
+ PluginWatch * watch = g_slice_new (PluginWatch);
watch->func = func;
watch->data = data;
plugin->watches = g_list_prepend (plugin->watches, watch);
@@ -712,7 +758,7 @@ void plugin_remove_watch (PluginHandle * plugin, PluginForEachFunc func, void *
if (watch->func == func && watch->data == data)
{
- g_free (watch);
+ g_slice_free (PluginWatch, watch);
plugin->watches = g_list_delete_link (plugin->watches, node);
}
@@ -754,7 +800,8 @@ PluginHandle * transport_plugin_for_scheme (const char * scheme)
typedef struct {
const char * ext;
- PluginHandle * plugin;
+ PluginForEachFunc func;
+ void * data;
} PlaylistPluginForExtState;
static bool_t playlist_plugin_for_ext_cb (PluginHandle * plugin,
@@ -764,16 +811,14 @@ static bool_t playlist_plugin_for_ext_cb (PluginHandle * plugin,
(GCompareFunc) g_ascii_strcasecmp))
return TRUE;
- state->plugin = plugin;
- return FALSE;
+ return state->func (plugin, state->data);
}
-PluginHandle * playlist_plugin_for_extension (const char * extension)
+void playlist_plugin_for_ext (const char * ext, PluginForEachFunc func, void * data)
{
- PlaylistPluginForExtState state = {extension, NULL};
+ PlaylistPluginForExtState state = {ext, func, data};
plugin_for_enabled (PLUGIN_TYPE_PLAYLIST, (PluginForEachFunc)
playlist_plugin_for_ext_cb, & state);
- return state.plugin;
}
typedef struct {
diff --git a/src/audacious/plugin-view.c b/src/audacious/plugin-view.c
index 7d3a8af..36959af 100644
--- a/src/audacious/plugin-view.c
+++ b/src/audacious/plugin-view.c
@@ -1,6 +1,6 @@
/*
* plugin-view.c
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -19,6 +19,9 @@
#include <gtk/gtk.h>
+#include <libaudgui/libaudgui-gtk.h>
+
+#include "i18n.h"
#include "plugin.h"
#include "plugins.h"
#include "ui_preferences.h"
@@ -27,7 +30,6 @@ enum {
PVIEW_COL_NODE,
PVIEW_COL_ENABLED,
PVIEW_COL_NAME,
- PVIEW_COL_PATH,
PVIEW_COLS
};
@@ -88,8 +90,8 @@ static bool_t fill_cb (PluginHandle * p, GtkTreeModel * model)
GtkTreeIter iter;
gtk_list_store_append ((GtkListStore *) model, & iter);
gtk_list_store_set ((GtkListStore *) model, & iter, PVIEW_COL_NODE, n,
- PVIEW_COL_ENABLED, plugin_get_enabled (p), PVIEW_COL_NAME, plugin_get_name
- (p), PVIEW_COL_PATH, plugin_get_filename (p), -1);
+ PVIEW_COL_ENABLED, plugin_get_enabled (p), PVIEW_COL_NAME,
+ plugin_get_name (p), -1);
n->p = p;
n->model = model;
@@ -103,7 +105,7 @@ static bool_t fill_cb (PluginHandle * p, GtkTreeModel * model)
static void list_fill (GtkTreeView * tree, void * type)
{
GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new (PVIEW_COLS,
- G_TYPE_POINTER, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING);
+ G_TYPE_POINTER, G_TYPE_BOOLEAN, G_TYPE_STRING);
gtk_tree_view_set_model (tree, model);
GtkTreeViewColumn * col = gtk_tree_view_column_new ();
@@ -117,17 +119,15 @@ static void list_fill (GtkTreeView * tree, void * type)
gtk_tree_view_column_set_attributes (col, rend, "active", PVIEW_COL_ENABLED,
NULL);
- for (int i = PVIEW_COL_NAME; i <= PVIEW_COL_PATH; i ++)
- {
- col = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
- gtk_tree_view_column_set_resizable (col, FALSE);
- gtk_tree_view_append_column (tree, col);
-
- rend = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (col, rend, FALSE);
- gtk_tree_view_column_set_attributes (col, rend, "text", i, NULL);
- }
+ col = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED);
+ gtk_tree_view_column_set_expand (col, TRUE);
+ gtk_tree_view_column_set_resizable (col, FALSE);
+ gtk_tree_view_append_column (tree, col);
+
+ rend = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (col, rend, FALSE);
+ gtk_tree_view_column_set_attributes (col, rend, "text", PVIEW_COL_NAME, NULL);
plugin_for_each (GPOINTER_TO_INT (type), (PluginForEachFunc) fill_cb, model);
}
@@ -192,14 +192,14 @@ static void button_update (GtkTreeView * tree, GtkWidget * b)
gtk_widget_set_sensitive (b, FALSE);
}
-static void do_config (GtkTreeView * tree)
+static void do_config (void * tree)
{
PluginHandle * plugin = get_selected_plugin (tree);
g_return_if_fail (plugin != NULL);
plugin_do_configure (plugin);
}
-static void do_about (GtkTreeView * tree)
+static void do_about (void * tree)
{
PluginHandle * plugin = get_selected_plugin (tree);
g_return_if_fail (plugin != NULL);
@@ -239,21 +239,19 @@ GtkWidget * plugin_view_new (int type)
GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
- GtkWidget * config = gtk_button_new_from_stock (GTK_STOCK_PREFERENCES);
+ GtkWidget * config = audgui_button_new (_("_Settings"),
+ "preferences-system", do_config, tree);
gtk_box_pack_start ((GtkBox *) hbox, config, FALSE, FALSE, 0);
gtk_widget_set_sensitive (config, FALSE);
g_object_set_data ((GObject *) config, "watcher", (void *) config_watcher);
g_signal_connect (tree, "cursor-changed", (GCallback) button_update, config);
- g_signal_connect_swapped (config, "clicked", (GCallback)
- do_config, tree);
g_signal_connect (config, "destroy", (GCallback) button_destroy, NULL);
- GtkWidget * about = gtk_button_new_from_stock (GTK_STOCK_ABOUT);
+ GtkWidget * about = audgui_button_new (_("_About"), "help-about", do_about, tree);
gtk_box_pack_start ((GtkBox *) hbox, about, FALSE, FALSE, 0);
gtk_widget_set_sensitive (about, FALSE);
g_object_set_data ((GObject *) about, "watcher", (void *) about_watcher);
g_signal_connect (tree, "cursor-changed", (GCallback) button_update, about);
- g_signal_connect_swapped (about, "clicked", (GCallback) do_about, tree);
g_signal_connect (about, "destroy", (GCallback) button_destroy, NULL);
return vbox;
diff --git a/src/audacious/plugin.h b/src/audacious/plugin.h
index 4591894..49f5f27 100644
--- a/src/audacious/plugin.h
+++ b/src/audacious/plugin.h
@@ -1,6 +1,6 @@
/*
* plugin.h
- * Copyright 2005-2012 William Pitcock, Yoshiki Yazawa, Eugene Zagidullin, and
+ * Copyright 2005-2013 William Pitcock, Yoshiki Yazawa, Eugene Zagidullin, and
* John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -31,22 +31,6 @@
/* "Magic" bytes identifying an Audacious plugin header. */
#define _AUD_PLUGIN_MAGIC 0x8EAC8DE2
-/* API version. Plugins are marked with this number at compile time.
- *
- * _AUD_PLUGIN_VERSION is the current version; _AUD_PLUGIN_VERSION_MIN is
- * the oldest one we are backward compatible with. Plugins marked older than
- * _AUD_PLUGIN_VERSION_MIN or newer than _AUD_PLUGIN_VERSION are not loaded.
- *
- * Before releases that add new pointers to the end of the API tables, increment
- * _AUD_PLUGIN_VERSION but leave _AUD_PLUGIN_VERSION_MIN the same.
- *
- * Before releases that break backward compatibility (e.g. remove pointers from
- * the API tables), increment _AUD_PLUGIN_VERSION *and* set
- * _AUD_PLUGIN_VERSION_MIN to the same value. */
-
-#define _AUD_PLUGIN_VERSION_MIN 40 /* 3.3-devel */
-#define _AUD_PLUGIN_VERSION 43 /* 3.4-devel */
-
/* A NOTE ON THREADS
*
* How thread-safe a plugin must be depends on the type of plugin. Note that
@@ -254,78 +238,6 @@ struct _EffectPlugin
bool_t preserves_format;
};
-struct OutputAPI
-{
- /* Prepares the output system for playback in the specified format. Returns
- * TRUE on success. If the call fails, no other output functions may be
- * called. */
- bool_t (* open_audio) (int format, int rate, int channels);
-
- /* Informs the output system of replay gain values for the current song so
- * that volume levels can be adjusted accordingly, if the user so desires.
- * This may be called at any time during playback should the values change. */
- void (* set_replaygain_info) (const ReplayGainInfo * info);
-
- /* Passes audio data to the output system for playback. The data must be in
- * the format passed to open_audio, and the length (in bytes) must be an
- * integral number of frames. This function blocks until all the data has
- * been written (though it may not yet be heard by the user). */
- void (* write_audio) (void * data, int length);
-
- /* Interrupts a call to write_audio() so that it returns immediately.
- * Buffered audio data is discarded. Until set_written_time() or
- * open_audio() is called, further calls to write_audio() will have no
- * effect and will return immediately. */
- void (* abort_write) (void);
-
- /* Pauses or unpauses playback. If playback is paused during a call to
- * write_audio(), the call will block until playback is unpaused again or
- * abort_write() is called. */
- void (* pause) (bool_t pause);
-
- /* Returns the time counter. Note that this represents the amount of audio
- * data passed to the output system, not the amount actually heard by the
- * user. */
- int (* written_time) (void);
-
- /* Sets the time counter to a new value. Does not perform a flush; the name
- * is kept only for compatibility. */
- void (* flush) (int time);
-};
-
-typedef const struct _InputPlayback InputPlayback;
-
-struct _InputPlayback
-{
- /* Pointer to the output API functions. */
- const struct OutputAPI * output;
-
- /* Allows the plugin to associate data with a playback instance. */
- void (* set_data) (InputPlayback * p, void * data);
-
- /* Returns the pointer passed to set_data. */
- void * (* get_data) (InputPlayback * p);
-
- /* Signifies that the plugin has started playback is ready to accept mseek,
- * pause, and stop calls. */
- void (* set_pb_ready) (InputPlayback * p);
-
- /* Updates attributes of the stream. "bitrate" is in bits per second.
- * "samplerate" is in hertz. */
- void (* set_params) (InputPlayback * p, int bitrate, int samplerate,
- int channels);
-
- /* Updates metadata for the stream. Caller gives up ownership of one
- * reference to the tuple. */
- void (* set_tuple) (InputPlayback * playback, Tuple * tuple);
-
- /* If replay gain settings are stored in the tuple associated with the
- * current song, this function can be called (after opening audio) to apply
- * those settings. If the settings are changed in a call to set_tuple, this
- * function must be called again to apply the updated settings. */
- void (* set_gain_from_playlist) (InputPlayback * playback);
-};
-
struct _InputPlugin
{
PLUGIN_COMMON_FIELDS
@@ -355,8 +267,11 @@ struct _InputPlugin
/* Pointer to an array (terminated with NULL) of MIME types the plugin can
* handle. */
const char * const * mimes;
+
/* Pointer to an array (terminated with NULL) of custom URI schemes the
- * plugin can handle. */
+ * plugin supports. Plugins using custom URI schemes are expected to
+ * handle their own I/O. Hence, any VFSFile pointers passed to play(),
+ * probe_for_tuple(), etc. will be NULL. */
const char * const * schemes;
/* How quickly the plugin should be tried in searching for a plugin to
@@ -364,73 +279,28 @@ struct _InputPlugin
* with priority 0 are tried first, 10 last. */
int priority;
- /* Must return nonzero if the plugin can handle this file. If the file
- * could not be opened, "file" will be NULL. (This is normal in the case of
- * special URI schemes like cdda:// that do not represent actual files.) */
+ /* Returns TRUE if the plugin can handle the file. */
bool_t (* is_our_file_from_vfs) (const char * filename, VFSFile * file);
- /* Must return a tuple containing metadata for this file, or NULL if no
- * metadata could be read. If the file could not be opened, "file" will be
- * NULL. Audacious takes over one reference to the tuple returned. */
+ /* Reads metadata from the file, returning a reference to the tuple produced. */
Tuple * (* probe_for_tuple) (const char * filename, VFSFile * file);
- /* Optional. Must write metadata from a tuple to this file. Must return
- * nonzero on success or zero on failure. "file" will never be NULL. */
- /* Bug: This function does not support special URI schemes like cdda://,
- * since no file name is passed. */
- bool_t (* update_song_tuple) (const Tuple * tuple, VFSFile * file);
+ /* Plays the file. Returns FALSE on error. Also see input-api.h. */
+ bool_t (* play) (const char * filename, VFSFile * file);
- /* Optional, and not recommended. Must show a window with information about
- * this file. If this function is provided, update_song_tuple should not be. */
- /* Bug: Implementing this function duplicates user interface code and code
- * to open the file in each and every plugin. */
- void (* file_info_box) (const char * filename);
+ /* Optional. Writes metadata to the file, returning FALSE on error. */
+ bool_t (* update_song_tuple) (const char * filename, VFSFile * file, const Tuple * tuple);
- /* Optional. Must try to read an "album art" image embedded in this file.
- * Must return nonzero on success or zero on failure. If the file could not
- * be opened, "file" will be NULL. On success, must fill "data" with a
- * pointer to a block of data allocated with g_malloc and "size" with the
- * size in bytes of that block. The data may be in any format supported by
- * GTK. Audacious will free the data when it is no longer needed. */
+ /* Optional. Reads an album art image (JPEG or PNG data) from the file.
+ * Returns a pointer to the data along with its size in bytes. The returned
+ * data will be freed when no longer needed. Returns FALSE on error. */
bool_t (* get_song_image) (const char * filename, VFSFile * file,
void * * data, int64_t * size);
- /* Must try to play this file. "playback" is a structure containing output-
- * related functions which the plugin may make use of. It also contains a
- * "data" pointer which the plugin may use to refer private data associated
- * with the playback state. This pointer can then be used from pause,
- * mseek, and stop. If the file could not be opened, "file" will be NULL.
- * "start_time" is the position in milliseconds at which to start from, or
- * -1 to start from the beginning of the file. "stop_time" is the position
- * in milliseconds at which to end playback, or -1 to play to the end of the
- * file. "paused" specifies whether playback should immediately be paused.
- * Must return nonzero if some of the file was successfully played or zero
- * on failure. */
- bool_t (* play) (InputPlayback * playback, const char * filename,
- VFSFile * file, int start_time, int stop_time, bool_t pause);
-
- /* Must pause or unpause a file currently being played. This function will
- * be called from a different thread than play, but it will not be called
- * before the plugin calls set_pb_ready or after stop is called. */
- void (* pause) (InputPlayback * playback, bool_t paused);
-
- /* Optional. Must seek to the given position in milliseconds within a file
- * currently being played. This function will be called from a different
- * thread than play, but it will not be called before the plugin calls
- * set_pb_ready or after stop is called. */
- void (* mseek) (InputPlayback * playback, int time);
-
- /* Must signal a currently playing song to stop and cause play to return.
- * This function will be called from a different thread than play. It will
- * only be called once. It should not join the thread from which play is
- * called. */
- void (* stop) (InputPlayback * playback);
-
- /* Advanced, for plugins that do not use Audacious's output system. Use at
- * your own risk. */
- int (* get_time) (InputPlayback * playback);
- int (* get_volume) (int * l, int * r);
- int (* set_volume) (int l, int r);
+ /* Optional. Displays a window showing info about the file. In general,
+ * this function should be avoided since Audacious already provides a file
+ * info window. */
+ void (* file_info_box) (const char * filename);
};
struct _GeneralPlugin
@@ -467,25 +337,10 @@ struct _IfacePlugin
{
PLUGIN_COMMON_FIELDS
- /* is_shown() may return nonzero even if the interface is not actually
- * visible; for example, if it is obscured by other windows or minimized.
- * is_focused() only returns nonzero if the interface is actually visible;
- * in X11, this should be determined by whether the interface has the
- * toplevel focus. show() should show and raise the interface, so that both
- * is_shown() and is_focused() will return nonzero. */
void (* show) (bool_t show);
- bool_t (* is_shown) (void);
- bool_t (* is_focused) (void);
-
- void (* show_error) (const char * markup);
- void (* show_filebrowser) (bool_t play_button);
- void (* show_jump_to_track) (void);
void (* run_gtk_plugin) (void /* GtkWidget */ * widget, const char * name);
void (* stop_gtk_plugin) (void /* GtkWidget */ * widget);
-
- void (* install_toolbar) (void /* GtkWidget */ * button);
- void (* uninstall_toolbar) (void /* GtkWidget */ * button);
};
#undef PLUGIN_COMMON_FIELDS
diff --git a/src/audacious/pluginenum.c b/src/audacious/pluginenum.c
index ed8df47..58216a5 100644
--- a/src/audacious/pluginenum.c
+++ b/src/audacious/pluginenum.c
@@ -1,6 +1,6 @@
/*
* pluginenum.c
- * Copyright 2007-2011 William Pitcock and John Lindgren
+ * Copyright 2007-2013 William Pitcock and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -19,12 +19,14 @@
#include <assert.h>
#include <errno.h>
-#include <glib.h>
-#include <gmodule.h>
#include <pthread.h>
#include <string.h>
#include <sys/stat.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gmodule.h>
+
#include <libaudcore/audstrings.h>
#include <libaudgui/init.h>
@@ -34,17 +36,27 @@
#define AUD_API_DECLARE
#include "drct.h"
+#include "input.h"
#include "misc.h"
#include "playlist.h"
#include "plugins.h"
#undef AUD_API_DECLARE
-static const char * plugin_dir_list[] = {PLUGINSUBS, NULL};
+static const char * plugin_dir_list[] = {
+ "Transport",
+ "Container",
+ "Input",
+ "Output",
+ "Effect",
+ "General",
+ "Visualization"
+};
char verbose = 0;
AudAPITable api_table = {
.drct_api = & drct_api,
+ .input_api = & input_api,
.misc_api = & misc_api,
.playlist_api = & playlist_api,
.plugins_api = & plugins_api,
@@ -132,7 +144,9 @@ static void plugin2_unload (LoadedModule * loaded)
}
pthread_mutex_lock (& mutex);
+#ifndef VALGRIND_FRIENDLY
g_module_close (loaded->module);
+#endif
g_slice_free (LoadedModule, loaded);
pthread_mutex_unlock (& mutex);
}
@@ -144,8 +158,8 @@ static bool_t scan_plugin_func(const char * path, const char * basename, void *
if (!str_has_suffix_nocase(basename, PLUGIN_SUFFIX))
return FALSE;
- struct stat st;
- if (stat (path, & st))
+ GStatBuf st;
+ if (g_stat (path, & st) < 0)
{
fprintf (stderr, "Unable to stat %s: %s\n", path, strerror (errno));
return FALSE;
@@ -166,36 +180,17 @@ void plugin_system_init(void)
{
assert (g_module_supported ());
- char *dir;
- int dirsel = 0;
-
- audgui_init (& api_table);
+ audgui_init (& api_table, _AUD_PLUGIN_VERSION);
plugin_registry_load ();
-#ifndef DISABLE_USER_PLUGIN_DIR
- scan_plugins (get_path (AUD_PATH_USER_PLUGIN_DIR));
- /*
- * This is in a separate loop so if the user puts them in the
- * wrong dir we'll still get them in the right order (home dir
- * first) - Zinx
- */
- while (plugin_dir_list[dirsel])
- {
- dir = g_build_filename (get_path (AUD_PATH_USER_PLUGIN_DIR),
- plugin_dir_list[dirsel ++], NULL);
- scan_plugins(dir);
- g_free(dir);
- }
- dirsel = 0;
-#endif
+ const char * path = get_path (AUD_PATH_PLUGIN_DIR);
- while (plugin_dir_list[dirsel])
+ for (int i = 0; i < ARRAY_LEN (plugin_dir_list); i ++)
{
- dir = g_build_filename (get_path (AUD_PATH_PLUGIN_DIR),
- plugin_dir_list[dirsel ++], NULL);
- scan_plugins(dir);
- g_free(dir);
+ char * dir = filename_build (path, plugin_dir_list[i]);
+ scan_plugins (dir);
+ str_unref (dir);
}
plugin_registry_prune ();
diff --git a/src/audacious/plugins-api.h b/src/audacious/plugins-api.h
index 6a1d4de..af4c1b2 100644
--- a/src/audacious/plugins-api.h
+++ b/src/audacious/plugins-api.h
@@ -1,6 +1,6 @@
/*
* plugins-api.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -37,9 +37,12 @@ AUD_FUNC1 (PluginHandle *, plugin_lookup_basename, const char *, basename)
AUD_FUNC1 (const void *, plugin_get_header, PluginHandle *, plugin)
AUD_FUNC1 (PluginHandle *, plugin_by_header, const void *, header)
+AUD_FUNC1 (int, plugin_count, int, type)
+AUD_FUNC1 (int, plugin_get_index, PluginHandle *, plugin)
+AUD_FUNC2 (PluginHandle *, plugin_by_index, int, type, int, index)
+
AUD_FUNC2 (int, plugin_compare, PluginHandle *, a, PluginHandle *, b)
-AUD_VFUNC3 (plugin_for_each, int, type, PluginForEachFunc, func, void *,
- data)
+AUD_VFUNC3 (plugin_for_each, int, type, PluginForEachFunc, func, void *, data)
AUD_FUNC1 (bool_t, plugin_get_enabled, PluginHandle *, plugin)
AUD_VFUNC3 (plugin_for_enabled, int, type, PluginForEachFunc, func,
diff --git a/src/audacious/plugins.h b/src/audacious/plugins.h
index ccda6b1..ea956ee 100644
--- a/src/audacious/plugins.h
+++ b/src/audacious/plugins.h
@@ -1,6 +1,6 @@
/*
* plugins.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -24,6 +24,7 @@
#include <audacious/types.h>
#include <libaudcore/core.h>
+/* returns TRUE to call again for the next plugin, FALSE to stop */
typedef bool_t (* PluginForEachFunc) (PluginHandle * plugin, void * data);
#define AUD_API_NAME PluginsAPI
@@ -58,9 +59,8 @@ void plugin_set_enabled (PluginHandle * plugin, bool_t enabled);
void * plugin_get_misc_data (PluginHandle * plugin, int size);
PluginHandle * transport_plugin_for_scheme (const char * scheme);
-PluginHandle * playlist_plugin_for_extension (const char * extension);
-void input_plugin_for_key (int key, const char * value, PluginForEachFunc
- func, void * data);
+void playlist_plugin_for_ext (const char * ext, PluginForEachFunc func, void * data);
+void input_plugin_for_key (int key, const char * value, PluginForEachFunc func, void * data);
bool_t input_plugin_has_images (PluginHandle * plugin);
bool_t input_plugin_has_subtunes (PluginHandle * plugin);
bool_t input_plugin_can_write_tuple (PluginHandle * plugin);
diff --git a/src/audacious/preferences.c b/src/audacious/preferences.c
new file mode 100644
index 0000000..eb1b651
--- /dev/null
+++ b/src/audacious/preferences.c
@@ -0,0 +1,641 @@
+/*
+ * preferences.c
+ * Copyright 2007-2012 Tomasz MoƄ, William Pitcock, and John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include "preferences.h"
+
+#include <string.h>
+#include <gtk/gtk.h>
+
+#include "i18n.h"
+#include "misc.h"
+
+/* HELPERS */
+
+static bool_t widget_get_bool (const PreferencesWidget * widget)
+{
+ g_return_val_if_fail (widget->cfg_type == VALUE_BOOLEAN, FALSE);
+
+ if (widget->cfg)
+ return * (bool_t *) widget->cfg;
+ else if (widget->cname)
+ return get_bool (widget->csect, widget->cname);
+ else
+ return FALSE;
+}
+
+static void widget_set_bool (const PreferencesWidget * widget, bool_t value)
+{
+ g_return_if_fail (widget->cfg_type == VALUE_BOOLEAN);
+
+ if (widget->cfg)
+ * (bool_t *) widget->cfg = value;
+ else if (widget->cname)
+ set_bool (widget->csect, widget->cname, value);
+
+ if (widget->callback)
+ widget->callback ();
+}
+
+static int widget_get_int (const PreferencesWidget * widget)
+{
+ g_return_val_if_fail (widget->cfg_type == VALUE_INT, 0);
+
+ if (widget->cfg)
+ return * (int *) widget->cfg;
+ else if (widget->cname)
+ return get_int (widget->csect, widget->cname);
+ else
+ return 0;
+}
+
+static void widget_set_int (const PreferencesWidget * widget, int value)
+{
+ g_return_if_fail (widget->cfg_type == VALUE_INT);
+
+ if (widget->cfg)
+ * (int *) widget->cfg = value;
+ else if (widget->cname)
+ set_int (widget->csect, widget->cname, value);
+
+ if (widget->callback)
+ widget->callback ();
+}
+
+static double widget_get_double (const PreferencesWidget * widget)
+{
+ g_return_val_if_fail (widget->cfg_type == VALUE_FLOAT, 0);
+
+ if (widget->cfg)
+ return * (float *) widget->cfg;
+ else if (widget->cname)
+ return get_double (widget->csect, widget->cname);
+ else
+ return 0;
+}
+
+static void widget_set_double (const PreferencesWidget * widget, double value)
+{
+ g_return_if_fail (widget->cfg_type == VALUE_FLOAT);
+
+ if (widget->cfg)
+ * (float *) widget->cfg = value;
+ else if (widget->cname)
+ set_double (widget->csect, widget->cname, value);
+
+ if (widget->callback)
+ widget->callback ();
+}
+
+static char * widget_get_string (const PreferencesWidget * widget)
+{
+ g_return_val_if_fail (widget->cfg_type == VALUE_STRING, NULL);
+
+ if (widget->cfg)
+ return str_get (* (char * *) widget->cfg);
+ else if (widget->cname)
+ return get_str (widget->csect, widget->cname);
+ else
+ return NULL;
+}
+
+static void widget_set_string (const PreferencesWidget * widget, const char * value)
+{
+ g_return_if_fail (widget->cfg_type == VALUE_STRING);
+
+ if (widget->cfg)
+ {
+ g_free (* (char * *) widget->cfg);
+ * (char * *) widget->cfg = g_strdup (value);
+ }
+ else if (widget->cname)
+ set_str (widget->csect, widget->cname, value);
+
+ if (widget->callback)
+ widget->callback ();
+}
+
+/* WIDGET_CHK_BTN */
+
+static void on_toggle_button_toggled (GtkToggleButton * button, const PreferencesWidget * widget)
+{
+ bool_t active = gtk_toggle_button_get_active (button);
+ widget_set_bool (widget, active);
+
+ GtkWidget * child = g_object_get_data ((GObject *) button, "child");
+ if (child)
+ gtk_widget_set_sensitive (child, active);
+}
+
+static void init_toggle_button (GtkWidget * button, const PreferencesWidget * widget)
+{
+ if (widget->cfg_type != VALUE_BOOLEAN)
+ return;
+
+ gtk_toggle_button_set_active ((GtkToggleButton *) button, widget_get_bool (widget));
+ g_signal_connect (button, "toggled", (GCallback) on_toggle_button_toggled, (void *) widget);
+}
+
+/* WIDGET_LABEL */
+
+static void create_label (const PreferencesWidget * widget, GtkWidget * * label,
+ GtkWidget * * icon, const char * domain)
+{
+ if (widget->data.label.stock_id)
+ * icon = gtk_image_new_from_icon_name (widget->data.label.stock_id, GTK_ICON_SIZE_BUTTON);
+
+ * label = gtk_label_new_with_mnemonic (dgettext (domain, widget->label));
+ gtk_label_set_use_markup ((GtkLabel *) * label, TRUE);
+
+ if (widget->data.label.single_line == FALSE)
+ gtk_label_set_line_wrap ((GtkLabel *) * label, TRUE);
+
+ gtk_misc_set_alignment ((GtkMisc *) * label, 0, 0.5);
+}
+
+/* WIDGET_RADIO_BTN */
+
+static void on_radio_button_toggled (GtkWidget * button, const PreferencesWidget * widget)
+{
+ if (gtk_toggle_button_get_active ((GtkToggleButton *) button))
+ widget_set_int (widget, widget->data.radio_btn.value);
+}
+
+static void init_radio_button (GtkWidget * button, const PreferencesWidget * widget)
+{
+ if (widget->cfg_type != VALUE_INT)
+ return;
+
+ if (widget_get_int (widget) == widget->data.radio_btn.value)
+ gtk_toggle_button_set_active ((GtkToggleButton *) button, TRUE);
+
+ g_signal_connect (button, "toggled", (GCallback) on_radio_button_toggled, (void *) widget);
+}
+
+/* WIDGET_SPIN_BTN */
+
+static void on_spin_btn_changed_int (GtkSpinButton * button, const PreferencesWidget * widget)
+{
+ widget_set_int (widget, gtk_spin_button_get_value_as_int (button));
+}
+
+static void on_spin_btn_changed_float (GtkSpinButton * button, const PreferencesWidget * widget)
+{
+ widget_set_double (widget, gtk_spin_button_get_value (button));
+}
+
+static void create_spin_button (const PreferencesWidget * widget,
+ GtkWidget * * label_pre, GtkWidget * * spin_btn, GtkWidget * * label_past,
+ const char * domain)
+{
+ * label_pre = gtk_label_new (dgettext (domain, widget->label));
+ * spin_btn = gtk_spin_button_new_with_range (widget->data.spin_btn.min,
+ widget->data.spin_btn.max, widget->data.spin_btn.step);
+
+ if (widget->tooltip)
+ gtk_widget_set_tooltip_text (* spin_btn, dgettext (domain, widget->tooltip));
+
+ if (widget->data.spin_btn.right_label)
+ * label_past = gtk_label_new (dgettext (domain, widget->data.spin_btn.right_label));
+
+ switch (widget->cfg_type)
+ {
+ case VALUE_INT:
+ gtk_spin_button_set_value ((GtkSpinButton *) * spin_btn, widget_get_int (widget));
+ g_signal_connect (* spin_btn, "value_changed", (GCallback)
+ on_spin_btn_changed_int, (void *) widget);
+ break;
+
+ case VALUE_FLOAT:
+ gtk_spin_button_set_value ((GtkSpinButton *) * spin_btn, widget_get_double (widget));
+ g_signal_connect (* spin_btn, "value_changed", (GCallback)
+ on_spin_btn_changed_float, (void *) widget);
+ break;
+
+ default:
+ break;
+ }
+}
+
+/* WIDGET_FONT_BTN */
+
+static void on_font_btn_font_set (GtkFontButton * button, const PreferencesWidget * widget)
+{
+ widget_set_string (widget, gtk_font_button_get_font_name (button));
+}
+
+void create_font_btn (const PreferencesWidget * widget, GtkWidget * * label,
+ GtkWidget * * font_btn, const char * domain)
+{
+ * font_btn = gtk_font_button_new ();
+ gtk_font_button_set_use_font ((GtkFontButton *) * font_btn, TRUE);
+ gtk_font_button_set_use_size ((GtkFontButton *) * font_btn, TRUE);
+ gtk_widget_set_hexpand (* font_btn, TRUE);
+
+ if (widget->label)
+ {
+ * label = gtk_label_new_with_mnemonic (dgettext (domain, widget->label));
+ gtk_label_set_use_markup ((GtkLabel *) * label, TRUE);
+ gtk_misc_set_alignment ((GtkMisc *) * label, 1, 0.5);
+ gtk_label_set_justify ((GtkLabel *) * label, GTK_JUSTIFY_RIGHT);
+ gtk_label_set_mnemonic_widget ((GtkLabel *) * label, * font_btn);
+ }
+
+ if (widget->data.font_btn.title)
+ gtk_font_button_set_title ((GtkFontButton *) * font_btn,
+ dgettext (domain, widget->data.font_btn.title));
+
+ char * name = widget_get_string (widget);
+ if (name)
+ {
+ gtk_font_button_set_font_name ((GtkFontButton *) * font_btn, name);
+ str_unref (name);
+ }
+
+ g_signal_connect (* font_btn, "font_set", (GCallback) on_font_btn_font_set, (void *) widget);
+}
+
+/* WIDGET_ENTRY */
+
+static void on_entry_changed (GtkEntry * entry, const PreferencesWidget * widget)
+{
+ widget_set_string (widget, gtk_entry_get_text (entry));
+}
+
+static void create_entry (const PreferencesWidget * widget, GtkWidget * * label,
+ GtkWidget * * entry, const char * domain)
+{
+ * entry = gtk_entry_new ();
+ gtk_entry_set_visibility ((GtkEntry *) * entry, ! widget->data.entry.password);
+ gtk_widget_set_hexpand (* entry, TRUE);
+
+ if (widget->label)
+ * label = gtk_label_new (dgettext (domain, widget->label));
+
+ if (widget->tooltip)
+ gtk_widget_set_tooltip_text (* entry, dgettext (domain, widget->tooltip));
+
+ if (widget->cfg_type == VALUE_STRING)
+ {
+ char * value = widget_get_string (widget);
+ if (value)
+ {
+ gtk_entry_set_text ((GtkEntry *) * entry, value);
+ str_unref (value);
+ }
+
+ g_signal_connect (* entry, "changed", (GCallback) on_entry_changed, (void *) widget);
+ }
+}
+
+/* WIDGET_COMBO_BOX */
+
+static void on_cbox_changed_int (GtkComboBox * combobox, const PreferencesWidget * widget)
+{
+ int position = gtk_combo_box_get_active (combobox);
+ const ComboBoxElements * elements = g_object_get_data ((GObject *) combobox, "comboboxelements");
+ widget_set_int (widget, GPOINTER_TO_INT (elements[position].value));
+}
+
+static void on_cbox_changed_string (GtkComboBox * combobox, const PreferencesWidget * widget)
+{
+ int position = gtk_combo_box_get_active (combobox);
+ const ComboBoxElements * elements = g_object_get_data ((GObject *) combobox, "comboboxelements");
+ widget_set_string (widget, elements[position].value);
+}
+
+static void fill_cbox (GtkWidget * combobox, const PreferencesWidget * widget, const char * domain)
+{
+ const ComboBoxElements * elements = widget->data.combo.elements;
+ int n_elements = widget->data.combo.n_elements;
+
+ if (widget->data.combo.fill)
+ elements = widget->data.combo.fill (& n_elements);
+
+ g_object_set_data ((GObject *) combobox, "comboboxelements", (void *) elements);
+
+ for (int i = 0; i < n_elements; i ++)
+ gtk_combo_box_text_append_text ((GtkComboBoxText *) combobox,
+ dgettext (domain, elements[i].label));
+
+ switch (widget->cfg_type)
+ {
+ case VALUE_INT:;
+ int ivalue = widget_get_int (widget);
+
+ for (int i = 0; i < n_elements; i++)
+ {
+ if (GPOINTER_TO_INT (elements[i].value) == ivalue)
+ {
+ gtk_combo_box_set_active ((GtkComboBox *) combobox, i);
+ break;
+ }
+ }
+
+ g_signal_connect (combobox, "changed", (GCallback) on_cbox_changed_int, (void *) widget);
+ break;
+
+ case VALUE_STRING:;
+ char * value = widget_get_string (widget);
+
+ for(int i = 0; i < n_elements; i++)
+ {
+ if (value && ! strcmp (elements[i].value, value))
+ {
+ gtk_combo_box_set_active ((GtkComboBox *) combobox, i);
+ break;
+ }
+ }
+
+ str_unref (value);
+
+ g_signal_connect (combobox, "changed", (GCallback) on_cbox_changed_string, (void *) widget);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void create_cbox (const PreferencesWidget * widget, GtkWidget * * label,
+ GtkWidget * * combobox, const char * domain)
+{
+ * combobox = gtk_combo_box_text_new ();
+
+ if (widget->label)
+ * label = gtk_label_new (dgettext (domain, widget->label));
+
+ fill_cbox (* combobox, widget, domain);
+}
+
+/* WIDGET_TABLE */
+
+static void fill_grid (GtkWidget * grid, const PreferencesWidget * elements,
+ int n_elements, const char * domain)
+{
+ for (int i = 0; i < n_elements; i ++)
+ {
+ GtkWidget * widget_left = NULL, * widget_middle = NULL, * widget_right = NULL;
+
+ switch (elements[i].type)
+ {
+ case WIDGET_SPIN_BTN:
+ create_spin_button (& elements[i], & widget_left,
+ & widget_middle, & widget_right, domain);
+ break;
+
+ case WIDGET_LABEL:
+ create_label (& elements[i], & widget_middle, & widget_left, domain);
+ break;
+
+ case WIDGET_FONT_BTN:
+ create_font_btn (& elements[i], & widget_left, & widget_middle, domain);
+ break;
+
+ case WIDGET_ENTRY:
+ create_entry (& elements[i], & widget_left, & widget_middle, domain);
+ break;
+
+ case WIDGET_COMBO_BOX:
+ create_cbox (& elements[i], & widget_left, & widget_middle, domain);
+ break;
+
+ default:
+ break;
+ }
+
+ if (widget_left)
+ gtk_grid_attach ((GtkGrid *) grid, widget_left, 0, i, 1, 1);
+
+ if (widget_middle)
+ gtk_grid_attach ((GtkGrid *) grid, widget_middle, 1, i, 1, 1);
+
+ if (widget_right)
+ gtk_grid_attach ((GtkGrid *) grid, widget_right, 2, i, 1, 1);
+ }
+}
+
+/* ALL WIDGETS */
+
+/* box: a GtkBox */
+void create_widgets_with_domain (void * box, const PreferencesWidget * widgets,
+ int n_widgets, const char * domain)
+{
+ GtkWidget * widget = NULL, * child_box = NULL;
+ GSList * radio_btn_group = NULL;
+
+ for (int i = 0; i < n_widgets; i ++)
+ {
+ GtkWidget * label = NULL;
+
+ if (widget && widgets[i].child)
+ {
+ if (! child_box)
+ {
+ child_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ g_object_set_data ((GObject *) widget, "child", child_box);
+
+ GtkWidget * alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_box_pack_start (box, alignment, FALSE, FALSE, 0);
+ gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 0, 12, 0);
+ gtk_container_add ((GtkContainer *) alignment, child_box);
+
+ if (GTK_IS_TOGGLE_BUTTON (widget))
+ gtk_widget_set_sensitive (child_box,
+ gtk_toggle_button_get_active ((GtkToggleButton *) widget));
+ }
+ }
+ else
+ child_box = NULL;
+
+ GtkWidget * alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_alignment_set_padding ((GtkAlignment *) alignment, 6, 0, 12, 0);
+ gtk_box_pack_start (child_box ? (GtkBox *) child_box : box, alignment, FALSE, FALSE, 0);
+
+ widget = NULL;
+
+ if (radio_btn_group && widgets[i].type != WIDGET_RADIO_BTN)
+ radio_btn_group = NULL;
+
+ switch (widgets[i].type)
+ {
+ case WIDGET_CHK_BTN:
+ widget = gtk_check_button_new_with_mnemonic (dgettext (domain, widgets[i].label));
+ init_toggle_button (widget, & widgets[i]);
+ break;
+
+ case WIDGET_LABEL:
+ if (strstr (widgets[i].label, "<b>"))
+ gtk_alignment_set_padding ((GtkAlignment *) alignment,
+ (i == 0) ? 0 : 12, 0, 0, 0);
+
+ GtkWidget * icon = NULL;
+ create_label (& widgets[i], & label, & icon, domain);
+
+ if (icon)
+ {
+ widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_box_pack_start ((GtkBox *) widget, icon, FALSE, FALSE, 0);
+ gtk_box_pack_start ((GtkBox *) widget, label, FALSE, FALSE, 0);
+ }
+ else
+ widget = label;
+
+ break;
+
+ case WIDGET_RADIO_BTN:
+ widget = gtk_radio_button_new_with_mnemonic (radio_btn_group,
+ dgettext (domain, widgets[i].label));
+ radio_btn_group = gtk_radio_button_get_group ((GtkRadioButton *) widget);
+ init_radio_button (widget, & widgets[i]);
+ break;
+
+ case WIDGET_SPIN_BTN:
+ widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+
+ GtkWidget * label_pre = NULL, * spin_btn = NULL, * label_past = NULL;
+ create_spin_button (& widgets[i], & label_pre, & spin_btn, & label_past, domain);
+
+ if (label_pre)
+ gtk_box_pack_start ((GtkBox *) widget, label_pre, FALSE, FALSE, 0);
+ if (spin_btn)
+ gtk_box_pack_start ((GtkBox *) widget, spin_btn, FALSE, FALSE, 0);
+ if (label_past)
+ gtk_box_pack_start ((GtkBox *) widget, label_past, FALSE, FALSE, 0);
+
+ break;
+
+ case WIDGET_CUSTOM:
+ if (widgets[i].data.populate)
+ widget = widgets[i].data.populate ();
+
+ break;
+
+ case WIDGET_FONT_BTN:
+ widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+
+ GtkWidget * font_btn = NULL;
+ create_font_btn (& widgets[i], & label, & font_btn, domain);
+
+ if (label)
+ gtk_box_pack_start ((GtkBox *) widget, label, FALSE, FALSE, 0);
+ if (font_btn)
+ gtk_box_pack_start ((GtkBox *) widget, font_btn, FALSE, FALSE, 0);
+
+ break;
+
+ case WIDGET_TABLE:
+ widget = gtk_grid_new ();
+ gtk_grid_set_column_spacing ((GtkGrid *) widget, 6);
+ gtk_grid_set_row_spacing ((GtkGrid *) widget, 6);
+
+ fill_grid (widget, widgets[i].data.table.elem, widgets[i].data.table.rows, domain);
+
+ break;
+
+ case WIDGET_ENTRY:
+ widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+
+ GtkWidget * entry = NULL;
+ create_entry (& widgets[i], & label, & entry, domain);
+
+ if (label)
+ gtk_box_pack_start ((GtkBox *) widget, label, FALSE, FALSE, 0);
+ if (entry)
+ gtk_box_pack_start ((GtkBox *) widget, entry, TRUE, TRUE, 0);
+
+ break;
+
+ case WIDGET_COMBO_BOX:
+ widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+
+ GtkWidget * combo = NULL;
+ create_cbox (& widgets[i], & label, & combo, domain);
+
+ if (label)
+ gtk_box_pack_start ((GtkBox *) widget, label, FALSE, FALSE, 0);
+ if (combo)
+ gtk_box_pack_start ((GtkBox *) widget, combo, FALSE, FALSE, 0);
+
+ break;
+
+ case WIDGET_BOX:
+ if (widgets[i].data.box.horizontal)
+ widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ else
+ widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+
+ create_widgets_with_domain ((GtkBox *) widget,
+ widgets[i].data.box.elem, widgets[i].data.box.n_elem, domain);
+
+ if (widgets[i].data.box.frame)
+ {
+ GtkWidget * frame = gtk_frame_new (dgettext (domain, widgets[i].label));
+ gtk_container_add ((GtkContainer *) frame, widget);
+ widget = frame;
+ }
+
+ break;
+
+ case WIDGET_NOTEBOOK:
+ gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 0, 0, 0);
+
+ widget = gtk_notebook_new ();
+
+ for (int j = 0; j < widgets[i].data.notebook.n_tabs; j ++)
+ {
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_set_border_width ((GtkContainer *) vbox, 6);
+
+ create_widgets_with_domain ((GtkBox *) vbox,
+ widgets[i].data.notebook.tabs[j].widgets,
+ widgets[i].data.notebook.tabs[j].n_widgets, domain);
+
+ gtk_notebook_append_page ((GtkNotebook *) widget, vbox,
+ gtk_label_new (dgettext (domain,
+ widgets[i].data.notebook.tabs[j].name)));
+ }
+
+ break;
+
+ case WIDGET_SEPARATOR:
+ gtk_alignment_set_padding ((GtkAlignment *) alignment, 6, 6, 0, 0);
+
+ widget = gtk_separator_new (widgets[i].data.separator.horizontal
+ ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
+ break;
+
+ default:
+ break;
+ }
+
+ if (widget)
+ {
+ /* use uniform spacing for horizontal boxes */
+ if (gtk_orientable_get_orientation ((GtkOrientable *) box) ==
+ GTK_ORIENTATION_HORIZONTAL)
+ gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 0, 0, 0);
+
+ gtk_container_add ((GtkContainer *) alignment, widget);
+
+ if (widgets[i].tooltip && widgets[i].type != WIDGET_SPIN_BTN)
+ gtk_widget_set_tooltip_text (widget, dgettext (domain,
+ widgets[i].tooltip));
+ }
+ }
+}
diff --git a/src/audacious/preferences.h b/src/audacious/preferences.h
index bff4539..af58567 100644
--- a/src/audacious/preferences.h
+++ b/src/audacious/preferences.h
@@ -1,6 +1,6 @@
/*
* preferences.h
- * Copyright 2007-2011 Tomasz MoƄ, William Pitcock, and John Lindgren
+ * Copyright 2007-2012 Tomasz MoƄ, William Pitcock, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -93,8 +93,12 @@ struct _PreferencesWidget {
} entry;
struct {
+ /* static init */
const ComboBoxElements * elements;
int n_elements;
+
+ /* runtime init */
+ const ComboBoxElements * (* fill) (int * n_elements);
} combo;
struct {
diff --git a/src/audacious/probe-buffer.c b/src/audacious/probe-buffer.c
index 98f65c8..c27995b 100644
--- a/src/audacious/probe-buffer.c
+++ b/src/audacious/probe-buffer.c
@@ -1,6 +1,6 @@
/*
* probe-buffer.c
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,9 +17,10 @@
* the use of this software.
*/
-#include <stdlib.h>
#include <string.h>
+#include <glib.h>
+
#include "debug.h"
#include "probe-buffer.h"
@@ -38,7 +39,7 @@ static int probe_buffer_fclose (VFSFile * file)
ProbeBuffer * p = vfs_get_handle (file);
int ret = vfs_fclose (p->file);
- free (p);
+ g_free (p);
return ret;
}
@@ -73,12 +74,6 @@ static int64_t probe_buffer_fwrite (const void * data, int64_t size, int64_t cou
return 0; /* not allowed */
}
-static int probe_buffer_getc (VFSFile * file)
-{
- unsigned char c;
- return (probe_buffer_fread (& c, 1, 1, file) == 1) ? c : EOF;
-}
-
static int probe_buffer_fseek (VFSFile * file, int64_t offset, int whence)
{
ProbeBuffer * p = vfs_get_handle (file);
@@ -101,16 +96,6 @@ static int probe_buffer_fseek (VFSFile * file, int64_t offset, int whence)
return 0;
}
-static int probe_buffer_ungetc (int c, VFSFile * file)
-{
- return (! probe_buffer_fseek (file, -1, SEEK_CUR)) ? c : EOF;
-}
-
-static void probe_buffer_rewind (VFSFile * file)
-{
- probe_buffer_fseek (file, 0, SEEK_SET);
-}
-
static int64_t probe_buffer_ftell (VFSFile * file)
{
return ((ProbeBuffer *) vfs_get_handle (file))->at;
@@ -152,10 +137,7 @@ static VFSConstructor probe_buffer_table =
.vfs_fclose_impl = probe_buffer_fclose,
.vfs_fread_impl = probe_buffer_fread,
.vfs_fwrite_impl = probe_buffer_fwrite,
- .vfs_getc_impl = probe_buffer_getc,
- .vfs_ungetc_impl = probe_buffer_ungetc,
.vfs_fseek_impl = probe_buffer_fseek,
- .vfs_rewind_impl = probe_buffer_rewind,
.vfs_ftell_impl = probe_buffer_ftell,
.vfs_feof_impl = probe_buffer_feof,
.vfs_ftruncate_impl = probe_buffer_ftruncate,
@@ -170,7 +152,7 @@ VFSFile * probe_buffer_new (const char * filename)
if (! file)
return NULL;
- ProbeBuffer * p = malloc (sizeof (ProbeBuffer));
+ ProbeBuffer * p = g_new (ProbeBuffer, 1);
p->file = file;
p->filled = 0;
p->at = 0;
diff --git a/src/audacious/probe.c b/src/audacious/probe.c
index 8c7fe77..c627abe 100644
--- a/src/audacious/probe.c
+++ b/src/audacious/probe.c
@@ -1,6 +1,6 @@
/*
* probe.c
- * Copyright 2009-2010 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -101,7 +101,7 @@ static bool_t probe_func_fast (PluginHandle * plugin, ProbeState * state)
PluginHandle * prev = state->plugin;
state->plugin = NULL;
- if (prev != NULL && ! probe_func (prev, state))
+ if (! probe_func (prev, state))
return FALSE;
}
@@ -113,15 +113,11 @@ static bool_t probe_func_fast (PluginHandle * plugin, ProbeState * state)
static void probe_by_scheme (ProbeState * state)
{
const char * s = strstr (state->filename, "://");
-
if (s == NULL)
return;
AUDDBG ("Probing by scheme.\n");
- char buf[s - state->filename + 1];
- memcpy (buf, state->filename, s - state->filename);
- buf[s - state->filename] = 0;
-
+ SNCOPY (buf, state->filename, s - state->filename);
input_plugin_for_key (INPUT_KEY_SCHEME, buf, (PluginForEachFunc) probe_func_fast, state);
}
@@ -148,7 +144,7 @@ static void probe_by_mime (ProbeState * state)
AUDDBG ("Probing by MIME type.\n");
input_plugin_for_key (INPUT_KEY_MIME, mime, (PluginForEachFunc)
probe_func_fast, state);
- g_free (mime);
+ str_unref (mime);
}
static void probe_by_content (ProbeState * state)
@@ -196,13 +192,27 @@ DONE:
return state.plugin;
}
+static bool_t open_file (const char * filename, InputPlugin * ip,
+ const char * mode, VFSFile * * handle)
+{
+ /* no need to open a handle for custom URI schemes */
+ if (ip->schemes && ip->schemes[0])
+ return TRUE;
+
+ * handle = vfs_fopen (filename, mode);
+ return (* handle != NULL);
+}
+
Tuple * file_read_tuple (const char * filename, PluginHandle * decoder)
{
InputPlugin * ip = plugin_get_header (decoder);
g_return_val_if_fail (ip, NULL);
g_return_val_if_fail (ip->probe_for_tuple, NULL);
- VFSFile * handle = vfs_fopen (filename, "r");
+ VFSFile * handle = NULL;
+ if (! open_file (filename, ip, "r", & handle))
+ return FALSE;
+
Tuple * tuple = ip->probe_for_tuple (filename, handle);
if (handle)
@@ -214,6 +224,9 @@ Tuple * file_read_tuple (const char * filename, PluginHandle * decoder)
bool_t file_read_image (const char * filename, PluginHandle * decoder,
void * * data, int64_t * size)
{
+ * data = NULL;
+ * size = 0;
+
if (! input_plugin_has_images (decoder))
return FALSE;
@@ -221,18 +234,15 @@ bool_t file_read_image (const char * filename, PluginHandle * decoder,
g_return_val_if_fail (ip, FALSE);
g_return_val_if_fail (ip->get_song_image, FALSE);
- VFSFile * handle = vfs_fopen (filename, "r");
+ VFSFile * handle = NULL;
+ if (! open_file (filename, ip, "r", & handle))
+ return FALSE;
+
bool_t success = ip->get_song_image (filename, handle, data, size);
if (handle)
vfs_fclose (handle);
- if (! success)
- {
- * data = NULL;
- * size = 0;
- }
-
return success;
}
@@ -248,12 +258,11 @@ bool_t file_write_tuple (const char * filename, PluginHandle * decoder,
g_return_val_if_fail (ip, FALSE);
g_return_val_if_fail (ip->update_song_tuple, FALSE);
- VFSFile * handle = vfs_fopen (filename, "r+");
-
- if (! handle)
+ VFSFile * handle = NULL;
+ if (! open_file (filename, ip, "r+", & handle))
return FALSE;
- bool_t success = ip->update_song_tuple (tuple, handle);
+ bool_t success = ip->update_song_tuple (filename, handle, tuple);
if (handle)
vfs_fclose (handle);
diff --git a/src/audacious/scanner.c b/src/audacious/scanner.c
index 2ba3718..e3257da 100644
--- a/src/audacious/scanner.c
+++ b/src/audacious/scanner.c
@@ -36,7 +36,7 @@ struct _ScanRequest {
Tuple * tuple;
void * image_data;
int64_t image_len;
- char * image_file;
+ char * image_file; /* pooled */
};
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -73,8 +73,8 @@ static void scan_request_free (ScanRequest * request)
tuple_unref (request->tuple);
str_unref (request->filename);
- free (request->image_data);
- free (request->image_file);
+ g_free (request->image_data);
+ str_unref (request->image_file);
g_slice_free (ScanRequest, request);
}
@@ -144,11 +144,9 @@ void scan_request_get_image_data (ScanRequest * request, void * * data, int64_t
request->image_len = 0;
}
-char * scan_request_get_image_file (ScanRequest * request)
+const char * scan_request_get_image_file (ScanRequest * request)
{
- char * image_file = request->image_file;
- request->image_file = NULL;
- return image_file;
+ return request->image_file;
}
void scanner_init (void)
diff --git a/src/audacious/scanner.h b/src/audacious/scanner.h
index 488c8d9..3eee728 100644
--- a/src/audacious/scanner.h
+++ b/src/audacious/scanner.h
@@ -40,7 +40,7 @@ const char * scan_request_get_filename (ScanRequest * request);
PluginHandle * scan_request_get_decoder (ScanRequest * request);
Tuple * scan_request_get_tuple (ScanRequest * request);
void scan_request_get_image_data (ScanRequest * request, void * * data, int64_t * len);
-char * scan_request_get_image_file (ScanRequest * request);
+const char * scan_request_get_image_file (ScanRequest * request);
void scanner_init (void);
void scanner_cleanup (void);
diff --git a/src/audacious/signals.c b/src/audacious/signals.c
index 89fc8af..2b5515e 100644
--- a/src/audacious/signals.c
+++ b/src/audacious/signals.c
@@ -17,14 +17,14 @@
* the use of this software.
*/
+#ifdef HAVE_SIGWAIT
+
#include <pthread.h>
#include <signal.h>
-#include <libaudcore/hook.h>
-
+#include "drct.h"
#include "main.h"
-#ifdef HAVE_SIGWAIT
static sigset_t signal_set;
static void * signal_thread (void * data)
@@ -32,16 +32,14 @@ static void * signal_thread (void * data)
int signal;
while (! sigwait (& signal_set, & signal))
- event_queue ("quit", NULL);
+ drct_quit ();
return NULL;
}
-#endif
/* Must be called before any threads are created. */
-void signals_init (void)
+void signals_init_one (void)
{
-#ifdef HAVE_SIGWAIT
sigemptyset (& signal_set);
sigaddset (& signal_set, SIGHUP);
sigaddset (& signal_set, SIGINT);
@@ -49,8 +47,12 @@ void signals_init (void)
sigaddset (& signal_set, SIGTERM);
sigprocmask (SIG_BLOCK, & signal_set, NULL);
+}
+void signals_init_two (void)
+{
pthread_t thread;
pthread_create (& thread, NULL, signal_thread, NULL);
-#endif
}
+
+#endif /* HAVE_SIGWAIT */
diff --git a/src/audacious/types.h b/src/audacious/types.h
index 03cad9a..d160bab 100644
--- a/src/audacious/types.h
+++ b/src/audacious/types.h
@@ -1,6 +1,6 @@
/*
* types.h
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -52,6 +52,12 @@ typedef struct _PluginPreferences PluginPreferences;
typedef struct _PreferencesWidget PreferencesWidget;
typedef struct {
+ char * name;
+ float preamp;
+ float bands[AUD_EQUALIZER_NBANDS];
+} EqualizerPreset;
+
+typedef struct {
float track_gain; /* dB */
float track_peak; /* 0-1 */
float album_gain; /* dB */
diff --git a/src/audacious/ui_albumart.c b/src/audacious/ui_albumart.c
index d8e4a36..a3f14a4 100644
--- a/src/audacious/ui_albumart.c
+++ b/src/audacious/ui_albumart.c
@@ -1,6 +1,6 @@
/*
* ui_albumart.c
- * Copyright 2006 Michael Hanselmann and Yoshiki Yazawa
+ * Copyright 2006-2013 Michael Hanselmann, Yoshiki Yazawa, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -23,187 +23,166 @@
#include <libaudcore/audstrings.h>
#include "i18n.h"
+#include "main.h"
#include "misc.h"
+#include "util.h"
-static bool_t
-has_front_cover_extension(const char *name)
-{
- char *ext;
+typedef struct {
+ const char * basename;
+ Index * include, * exclude;
+} SearchParams;
- ext = strrchr(name, '.');
- if (!ext) {
- /* No file extension */
+static bool_t has_front_cover_extension (const char * name)
+{
+ char * ext = strrchr (name, '.');
+ if (! ext)
return FALSE;
- }
- return g_ascii_strcasecmp(ext, ".jpg") == 0 ||
- g_ascii_strcasecmp(ext, ".jpeg") == 0 ||
- g_ascii_strcasecmp(ext, ".png") == 0;
+ return ! g_ascii_strcasecmp (ext, ".jpg") ||
+ ! g_ascii_strcasecmp (ext, ".jpeg") || ! g_ascii_strcasecmp (ext, ".png");
}
-static bool_t
-cover_name_filter(const char *name, const char *filter, const bool_t ret_on_empty)
+static bool_t cover_name_filter (const char * name, Index * keywords, bool_t ret_on_empty)
{
- bool_t result = FALSE;
- char **splitted;
- char *current;
- char *lname;
- int i;
-
- if (!filter || strlen(filter) == 0) {
+ int count = index_count (keywords);
+ if (! count)
return ret_on_empty;
- }
-
- splitted = g_strsplit(filter, ",", 0);
- lname = g_ascii_strdown (name, -1);
- for (i = 0; ! result && (current = splitted[i]); i ++)
+ for (int i = 0; i < count; i ++)
{
- char * stripped = g_strstrip (g_ascii_strdown (current, -1));
- result = result || strstr(lname, stripped);
- g_free(stripped);
+ if (strstr_nocase (name, index_get (keywords, i)))
+ return TRUE;
}
- g_free(lname);
- g_strfreev(splitted);
-
- return result;
-}
-
-/* Check wether it's an image we want */
-static bool_t is_front_cover_image (const char * file)
-{
- char * include = get_string (NULL, "cover_name_include");
- char * exclude = get_string (NULL, "cover_name_exclude");
- bool_t accept = cover_name_filter (file, include, TRUE) &&
- ! cover_name_filter (file, exclude, FALSE);
- g_free (include);
- g_free (exclude);
- return accept;
+ return FALSE;
}
-static bool_t
-is_file_image(const char *imgfile, const char *file_name)
+static bool_t is_file_image (const char * imgfile, const char * file_name)
{
- char *imgfile_ext, *file_name_ext;
- size_t imgfile_len, file_name_len;
-
- imgfile_ext = strrchr(imgfile, '.');
- if (!imgfile_ext) {
- /* No file extension */
+ char * imgfile_ext = strrchr (imgfile, '.');
+ if (! imgfile_ext)
return FALSE;
- }
- file_name_ext = strrchr(file_name, '.');
- if (!file_name_ext) {
- /* No file extension */
+ char * file_name_ext = strrchr (file_name, '.');
+ if (! file_name_ext)
return FALSE;
- }
- imgfile_len = (imgfile_ext - imgfile);
- file_name_len = (file_name_ext - file_name);
+ size_t imgfile_len = imgfile_ext - imgfile;
+ size_t file_name_len = file_name_ext - file_name;
- if (imgfile_len == file_name_len) {
- return (g_ascii_strncasecmp(imgfile, file_name, imgfile_len) == 0);
- } else {
- return FALSE;
- }
+ return imgfile_len == file_name_len && ! g_ascii_strncasecmp (imgfile, file_name, imgfile_len);
}
-static char * fileinfo_recursive_get_image (const char * path, const char *
- file_name, int depth)
+static char * fileinfo_recursive_get_image (const char * path,
+ const SearchParams * params, int depth)
{
- GDir *d;
-
- if (get_bool (NULL, "recurse_for_cover") && depth > get_int (NULL, "recurse_for_cover_depth"))
+ GDir * d = g_dir_open (path, 0, NULL);
+ if (! d)
return NULL;
- d = g_dir_open(path, 0, NULL);
-
- if (d) {
- const char *f;
+ const char * name;
- if (get_bool (NULL, "use_file_cover") && file_name)
+ if (get_bool (NULL, "use_file_cover") && ! depth)
+ {
+ /* Look for images matching file name */
+ while ((name = g_dir_read_name (d)))
{
- /* Look for images matching file name */
- while((f = g_dir_read_name(d))) {
- char *newpath = g_strconcat(path, "/", f, NULL);
-
- if (!g_file_test(newpath, G_FILE_TEST_IS_DIR) &&
- has_front_cover_extension(f) &&
- is_file_image(f, file_name)) {
- g_dir_close(d);
- return newpath;
- }
-
- g_free(newpath);
- }
- g_dir_rewind(d);
- }
-
- /* Search for files using filter */
- while ((f = g_dir_read_name(d))) {
- char *newpath = g_strconcat(path, "/", f, NULL);
+ char * newpath = filename_build (path, name);
- if (!g_file_test(newpath, G_FILE_TEST_IS_DIR) &&
- has_front_cover_extension(f) &&
- is_front_cover_image(f)) {
- g_dir_close(d);
+ if (! g_file_test (newpath, G_FILE_TEST_IS_DIR) &&
+ has_front_cover_extension (name) &&
+ is_file_image (name, params->basename))
+ {
+ g_dir_close (d);
return newpath;
}
- g_free(newpath);
+ str_unref (newpath);
}
- g_dir_rewind(d);
- /* checks whether recursive or not. */
- if (! get_bool (NULL, "recurse_for_cover"))
+ g_dir_rewind (d);
+ }
+
+ /* Search for files using filter */
+ while ((name = g_dir_read_name (d)))
+ {
+ char * newpath = filename_build (path, name);
+
+ if (! g_file_test (newpath, G_FILE_TEST_IS_DIR) &&
+ has_front_cover_extension (name) &&
+ cover_name_filter (name, params->include, TRUE) &&
+ ! cover_name_filter (name, params->exclude, FALSE))
{
- g_dir_close(d);
- return NULL;
+ g_dir_close (d);
+ return newpath;
}
+ str_unref (newpath);
+ }
+
+ g_dir_rewind (d);
+
+ if (get_bool (NULL, "recurse_for_cover") && depth < get_int (NULL, "recurse_for_cover_depth"))
+ {
/* Descend into directories recursively. */
- while ((f = g_dir_read_name(d))) {
- char *newpath = g_strconcat(path, "/", f, NULL);
-
- if(g_file_test(newpath, G_FILE_TEST_IS_DIR)) {
- char *tmp = fileinfo_recursive_get_image(newpath,
- NULL, depth + 1);
- if(tmp) {
- g_free(newpath);
- g_dir_close(d);
+ while ((name = g_dir_read_name (d)))
+ {
+ char * newpath = filename_build (path, name);
+
+ if (g_file_test (newpath, G_FILE_TEST_IS_DIR))
+ {
+ char * tmp = fileinfo_recursive_get_image (newpath, params, depth + 1);
+
+ if (tmp)
+ {
+ str_unref (newpath);
+ g_dir_close (d);
return tmp;
}
}
- g_free(newpath);
+ str_unref (newpath);
}
-
- g_dir_close(d);
}
+ g_dir_close (d);
return NULL;
}
char * get_associated_image_file (const char * filename)
{
- if (strncmp (filename, "file://", 7))
- return NULL;
+ char * image_uri = NULL;
- char * unesc = uri_to_filename (filename);
- if (! unesc)
- return NULL;
+ char * local = uri_to_filename (filename);
+ char * base = local ? last_path_element (local) : NULL;
+
+ if (local && base)
+ {
+ char * include = get_str (NULL, "cover_name_include");
+ char * exclude = get_str (NULL, "cover_name_exclude");
+
+ SearchParams params = {
+ .basename = base,
+ .include = str_list_to_index (include, ", "),
+ .exclude = str_list_to_index (exclude, ", ")
+ };
- char * path = g_path_get_dirname (unesc);
- char * base = g_path_get_basename (unesc);
- char * image_unesc = fileinfo_recursive_get_image (path, base, 0);
- char * image_file = image_unesc ? filename_to_uri (image_unesc) : NULL;
+ str_unref (include);
+ str_unref (exclude);
+
+ SNCOPY (path, local, base - 1 - local);
+
+ char * image_local = fileinfo_recursive_get_image (path, & params, 0);
+ if (image_local)
+ image_uri = filename_to_uri (image_local);
+
+ str_unref (image_local);
+
+ index_free_full (params.include, (IndexFreeFunc) str_unref);
+ index_free_full (params.exclude, (IndexFreeFunc) str_unref);
+ }
- g_free (unesc);
- g_free (path);
- g_free (base);
- g_free (image_unesc);
+ str_unref (local);
- return image_file;
+ return image_uri;
}
diff --git a/src/audacious/ui_plugin_menu.c b/src/audacious/ui_plugin_menu.c
index 66475ab..9d81b65 100644
--- a/src/audacious/ui_plugin_menu.c
+++ b/src/audacious/ui_plugin_menu.c
@@ -20,27 +20,28 @@
#include <glib.h>
#include <gtk/gtk.h>
-#include "misc.h"
+#include <libaudgui/menu.h>
-struct Item {
- MenuFunc func;
- const char * name;
- const char * icon;
-};
+#include "i18n.h"
+#include "misc.h"
-static GList * items[AUD_MENU_COUNT];
+static GList * items[AUD_MENU_COUNT]; /* of AudguiMenuItem */
static GtkWidget * menus[AUD_MENU_COUNT];
-static void add_to_menu (GtkWidget * menu, struct Item * item)
+static void configure_plugins (void)
{
- GtkWidget * widget = gtk_image_menu_item_new_with_mnemonic (item->name);
- g_object_set_data ((GObject *) widget, "func", (void *) item->func);
- g_signal_connect (widget, "activate", item->func, NULL);
+ show_prefs_for_plugin_type (PLUGIN_TYPE_GENERAL);
+}
- if (item->icon)
- gtk_image_menu_item_set_image ((GtkImageMenuItem *) widget,
- gtk_image_new_from_stock (item->icon, GTK_ICON_SIZE_MENU));
+static const AudguiMenuItem main_items[] = {
+ {N_("_Plugins ..."), .func = configure_plugins},
+ {.sep = TRUE}
+};
+static void add_to_menu (GtkWidget * menu, const AudguiMenuItem * item)
+{
+ GtkWidget * widget = audgui_menu_item_new_with_domain (item, NULL, NULL);
+ g_object_set_data ((GObject *) widget, "func", (void *) item->func);
gtk_widget_show (widget);
gtk_menu_shell_append ((GtkMenuShell *) menu, widget);
}
@@ -54,6 +55,9 @@ void * get_plugin_menu (int id)
g_signal_connect (menus[id], "destroy", (GCallback)
gtk_widget_destroyed, & menus[id]);
+ if (id == AUD_MENU_MAIN)
+ audgui_menu_init (menus[id], main_items, ARRAY_LEN (main_items), NULL);
+
for (GList * node = items[id]; node; node = node->next)
add_to_menu (menus[id], node->data);
}
@@ -64,7 +68,7 @@ void * get_plugin_menu (int id)
void plugin_menu_add (int id, MenuFunc func, const char * name,
const char * icon)
{
- struct Item * item = g_slice_new (struct Item);
+ AudguiMenuItem * item = g_slice_new0 (AudguiMenuItem);
item->name = name;
item->icon = icon;
item->func = func;
@@ -92,9 +96,9 @@ void plugin_menu_remove (int id, MenuFunc func)
{
next = node->next;
- if (((struct Item *) node->data)->func == func)
+ if (((AudguiMenuItem *) node->data)->func == func)
{
- g_slice_free (struct Item, node->data);
+ g_slice_free (AudguiMenuItem, node->data);
items[id] = g_list_delete_link (items[id], node);
}
}
diff --git a/src/audacious/ui_preferences.c b/src/audacious/ui_preferences.c
index 96dab5b..2949fdc 100644
--- a/src/audacious/ui_preferences.c
+++ b/src/audacious/ui_preferences.c
@@ -1,6 +1,6 @@
/*
* ui_preferences.c
- * Copyright 2006-2011 William Pitcock, Tomasz MoƄ, Michael FĂ€rber, and
+ * Copyright 2006-2012 William Pitcock, Tomasz MoƄ, Michael FĂ€rber, and
* John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -23,7 +23,9 @@
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
+#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
+#include <libaudgui/libaudgui-gtk.h>
#include "debug.h"
#include "i18n.h"
@@ -42,36 +44,57 @@
enum CategoryViewCols {
CATEGORY_VIEW_COL_ICON,
CATEGORY_VIEW_COL_NAME,
- CATEGORY_VIEW_COL_ID,
CATEGORY_VIEW_N_COLS
};
typedef struct {
- const char *icon_path;
- const char *name;
+ const char * icon_path;
+ const char * name;
} Category;
typedef struct {
- const char *name;
- const char *tag;
+ int type;
+ const char * name;
+} PluginCategory;
+
+typedef struct {
+ const char * name;
+ const char * tag;
} TitleFieldTag;
-static /* GtkWidget * */ void * prefswin = NULL;
-static GtkWidget *category_treeview = NULL;
-static GtkWidget *category_notebook = NULL;
+static const char aud_version_string[] =
+ "<span size='small'>Audacious " VERSION " (" BUILDSTAMP ")</span>";
-/* prefswin widgets */
-GtkWidget *titlestring_entry;
+static GtkWidget * prefswin;
+static GtkWidget * category_treeview, * category_notebook, * plugin_notebook;
+static GtkWidget * titlestring_entry;
+
+enum {
+ CATEGORY_APPEARANCE = 0,
+ CATEGORY_AUDIO,
+ CATEGORY_NETWORK,
+ CATEGORY_PLAYLIST,
+ CATEGORY_SONG_INFO,
+ CATEGORY_PLUGINS
+};
-static Category categories[] = {
- {"audio.png", N_("Audio")},
- {"connectivity.png", N_("Network")},
- {"playlist.png", N_("Playlist")},
- {"info.png", N_("Song Info")},
- {"plugins.png", N_("Plugins")},
+static const Category categories[] = {
+ { "appearance.png", N_("Appearance") },
+ { "audio.png", N_("Audio") },
+ { "connectivity.png", N_("Network") },
+ { "playlist.png", N_("Playlist")} ,
+ { "info.png", N_("Song Info") },
+ { "plugins.png", N_("Plugins") }
};
-static int n_categories = G_N_ELEMENTS(categories);
+static const PluginCategory plugin_categories[] = {
+ { PLUGIN_TYPE_GENERAL, N_("General") },
+ { PLUGIN_TYPE_EFFECT, N_("Effect") },
+ { PLUGIN_TYPE_VIS, N_("Visualization") },
+ { PLUGIN_TYPE_INPUT, N_("Input") },
+ { PLUGIN_TYPE_PLAYLIST, N_("Playlist") },
+ { PLUGIN_TYPE_TRANSPORT, N_("Transport") }
+};
static TitleFieldTag title_field_tags[] = {
{ N_("Artist") , "${artist}" },
@@ -85,48 +108,76 @@ static TitleFieldTag title_field_tags[] = {
{ N_("Year") , "${year}" },
{ N_("Comment") , "${comment}" },
{ N_("Codec") , "${codec}" },
- { N_("Quality") , "${quality}" },
+ { N_("Quality") , "${quality}" }
};
-static const unsigned int n_title_field_tags = G_N_ELEMENTS(title_field_tags);
#ifdef USE_CHARDET
static ComboBoxElements chardet_detector_presets[] = {
- {"", N_("None")},
- {GUESS_REGION_AR, N_("Arabic")},
- {GUESS_REGION_BL, N_("Baltic")},
- {GUESS_REGION_CN, N_("Chinese")},
- {GUESS_REGION_GR, N_("Greek")},
- {GUESS_REGION_HW, N_("Hebrew")},
- {GUESS_REGION_JP, N_("Japanese")},
- {GUESS_REGION_KR, N_("Korean")},
- {GUESS_REGION_PL, N_("Polish")},
- {GUESS_REGION_RU, N_("Russian")},
- {GUESS_REGION_TW, N_("Taiwanese")},
- {GUESS_REGION_TR, N_("Turkish")}};
+ { "", N_("None")},
+ { GUESS_REGION_AR, N_("Arabic") },
+ { GUESS_REGION_BL, N_("Baltic") },
+ { GUESS_REGION_CN, N_("Chinese") },
+ { GUESS_REGION_GR, N_("Greek") },
+ { GUESS_REGION_HW, N_("Hebrew") },
+ { GUESS_REGION_JP, N_("Japanese") },
+ { GUESS_REGION_KR, N_("Korean") },
+ { GUESS_REGION_PL, N_("Polish") },
+ { GUESS_REGION_RU, N_("Russian") },
+ { GUESS_REGION_TW, N_("Taiwanese") },
+ { GUESS_REGION_TR, N_("Turkish") }
+};
#endif
static ComboBoxElements bitdepth_elements[] = {
- { GINT_TO_POINTER(16), "16" },
- { GINT_TO_POINTER(24), "24" },
- { GINT_TO_POINTER(32), "32" },
- {GINT_TO_POINTER (0), N_("Floating point")},
+ { GINT_TO_POINTER (16), "16" },
+ { GINT_TO_POINTER (24), "24" },
+ { GINT_TO_POINTER (32), "32" },
+ { GINT_TO_POINTER (0), N_("Floating point") }
};
-static void * create_output_plugin_box (void);
+static GArray * iface_combo_elements;
+static int iface_combo_selected;
+static GtkWidget * iface_prefs_box;
+
+static const ComboBoxElements * iface_combo_fill (int * n_elements);
+static void iface_combo_changed (void);
+static void * iface_create_prefs_box (void);
+
+static PreferencesWidget appearance_page_widgets[] = {
+ {WIDGET_LABEL, N_("<b>Interface Settings</b>")},
+ {WIDGET_COMBO_BOX, N_("Interface plugin:"),
+ .cfg_type = VALUE_INT, .cfg = & iface_combo_selected,
+ .data.combo.fill = iface_combo_fill, .callback = iface_combo_changed},
+ {WIDGET_CUSTOM, .data.populate = iface_create_prefs_box}};
+
+static GArray * output_combo_elements;
+static int output_combo_selected;
+static GtkWidget * output_config_button;
+static GtkWidget * output_about_button;
+
+static const ComboBoxElements * output_combo_fill (int * n_elements);
+static void output_combo_changed (void);
+static void * output_create_config_button (void);
+static void * output_create_about_button (void);
static void output_bit_depth_changed (void);
-static PreferencesWidget rg_mode_widgets[] = {
- {WIDGET_CHK_BTN, N_("Album mode"), .cfg_type = VALUE_BOOLEAN, .cname = "replay_gain_album"}};
+static PreferencesWidget output_combo_widgets[] = {
+ {WIDGET_COMBO_BOX, N_("Output plugin:"),
+ .cfg_type = VALUE_INT, .cfg = & output_combo_selected,
+ .data.combo.fill = output_combo_fill, .callback = output_combo_changed},
+ {WIDGET_CUSTOM, .data.populate = output_create_config_button},
+ {WIDGET_CUSTOM, .data.populate = output_create_about_button}};
static PreferencesWidget audio_page_widgets[] = {
{WIDGET_LABEL, N_("<b>Output Settings</b>")},
- {WIDGET_CUSTOM, .data = {.populate = create_output_plugin_box}},
+ {WIDGET_BOX, .data.box = {.elem = output_combo_widgets,
+ .n_elem = ARRAY_LEN (output_combo_widgets), .horizontal = TRUE}},
{WIDGET_COMBO_BOX, N_("Bit depth:"),
.cfg_type = VALUE_INT, .cname = "output_bit_depth", .callback = output_bit_depth_changed,
- .data = {.combo = {bitdepth_elements, G_N_ELEMENTS (bitdepth_elements)}}},
+ .data.combo = {bitdepth_elements, ARRAY_LEN (bitdepth_elements)}},
{WIDGET_SPIN_BTN, N_("Buffer size:"),
.cfg_type = VALUE_INT, .cname = "output_buffer_size",
- .data = {.spin_btn = {100, 10000, 1000, N_("ms")}}},
+ .data.spin_btn = {100, 10000, 1000, N_("ms")}},
{WIDGET_CHK_BTN, N_("Soft clipping"),
.cfg_type = VALUE_BOOLEAN, .cname = "soft_clipping"},
{WIDGET_CHK_BTN, N_("Use software volume control (not recommended)"),
@@ -134,16 +185,17 @@ static PreferencesWidget audio_page_widgets[] = {
{WIDGET_LABEL, N_("<b>Replay Gain</b>")},
{WIDGET_CHK_BTN, N_("Enable Replay Gain"),
.cfg_type = VALUE_BOOLEAN, .cname = "enable_replay_gain"},
- {WIDGET_BOX, .child = TRUE, .data = {.box = {rg_mode_widgets, G_N_ELEMENTS (rg_mode_widgets), TRUE}}},
+ {WIDGET_CHK_BTN, N_("Album mode"), .child = TRUE,
+ .cfg_type = VALUE_BOOLEAN, .cname = "replay_gain_album"},
{WIDGET_CHK_BTN, N_("Prevent clipping (recommended)"), .child = TRUE,
.cfg_type = VALUE_BOOLEAN, .cname = "enable_clipping_prevention"},
{WIDGET_LABEL, N_("<b>Adjust Levels</b>"), .child = TRUE},
{WIDGET_SPIN_BTN, N_("Amplify all files:"), .child = TRUE,
.cfg_type = VALUE_FLOAT, .cname = "replay_gain_preamp",
- .data = {.spin_btn = {-15, 15, 0.1, N_("dB")}}},
+ .data.spin_btn = {-15, 15, 0.1, N_("dB")}},
{WIDGET_SPIN_BTN, N_("Amplify untagged files:"), .child = TRUE,
.cfg_type = VALUE_FLOAT, .cname = "default_gain",
- .data = {.spin_btn = {-15, 15, 0.1, N_("dB")}}}};
+ .data.spin_btn = {-15, 15, 0.1, N_("dB")}}};
static PreferencesWidget proxy_host_port_elements[] = {
{WIDGET_ENTRY, N_("Proxy hostname:"), .cfg_type = VALUE_STRING, .cname = "proxy_host"},
@@ -152,47 +204,44 @@ static PreferencesWidget proxy_host_port_elements[] = {
static PreferencesWidget proxy_auth_elements[] = {
{WIDGET_ENTRY, N_("Proxy username:"), .cfg_type = VALUE_STRING, .cname = "proxy_user"},
{WIDGET_ENTRY, N_("Proxy password:"), .cfg_type = VALUE_STRING, .cname = "proxy_pass",
- .data = {.entry = {.password = TRUE}}}};
+ .data.entry.password = TRUE}};
static PreferencesWidget connectivity_page_widgets[] = {
- {WIDGET_LABEL, N_("<b>Proxy Configuration</b>"), NULL, NULL, NULL, FALSE},
- {WIDGET_CHK_BTN, N_("Enable proxy usage"), .cfg_type = VALUE_BOOLEAN, .cname = "use_proxy"},
- {WIDGET_TABLE, .child = TRUE, .data = {.table = {proxy_host_port_elements,
- G_N_ELEMENTS (proxy_host_port_elements)}}},
- {WIDGET_CHK_BTN, N_("Use authentication with proxy"),
- .cfg_type = VALUE_BOOLEAN, .cname = "use_proxy_auth"},
- {WIDGET_TABLE, .child = TRUE, .data = {.table = {proxy_auth_elements,
- G_N_ELEMENTS (proxy_auth_elements)}}}
-};
+ {WIDGET_LABEL, N_("<b>Proxy Configuration</b>"), NULL, NULL, NULL, FALSE},
+ {WIDGET_CHK_BTN, N_("Enable proxy usage"), .cfg_type = VALUE_BOOLEAN, .cname = "use_proxy"},
+ {WIDGET_TABLE, .child = TRUE, .data.table = {proxy_host_port_elements,
+ ARRAY_LEN (proxy_host_port_elements)}},
+ {WIDGET_CHK_BTN, N_("Use authentication with proxy"),
+ .cfg_type = VALUE_BOOLEAN, .cname = "use_proxy_auth"},
+ {WIDGET_TABLE, .child = TRUE, .data.table = {proxy_auth_elements,
+ ARRAY_LEN (proxy_auth_elements)}}};
static PreferencesWidget chardet_elements[] = {
#ifdef USE_CHARDET
{WIDGET_COMBO_BOX, N_("Auto character encoding detector for:"),
.cfg_type = VALUE_STRING, .cname = "chardet_detector", .child = TRUE,
- .data = {.combo = {chardet_detector_presets, G_N_ELEMENTS (chardet_detector_presets)}}},
+ .data.combo = {chardet_detector_presets, ARRAY_LEN (chardet_detector_presets)}},
#endif
{WIDGET_ENTRY, N_("Fallback character encodings:"), .cfg_type = VALUE_STRING,
.cname = "chardet_fallback", .child = TRUE}};
static PreferencesWidget playlist_page_widgets[] = {
- {WIDGET_LABEL, N_("<b>Behavior</b>"), NULL, NULL, NULL, FALSE},
- {WIDGET_CHK_BTN, N_("Continue playback on startup"),
- .cfg_type = VALUE_BOOLEAN, .cname = "resume_playback_on_startup"},
- {WIDGET_CHK_BTN, N_("Advance when the current song is deleted"),
- .cfg_type = VALUE_BOOLEAN, .cname = "advance_on_delete"},
- {WIDGET_CHK_BTN, N_("Clear the playlist when opening files"),
- .cfg_type = VALUE_BOOLEAN, .cname = "clear_playlist"},
- {WIDGET_CHK_BTN, N_("Open files in a temporary playlist"),
- .cfg_type = VALUE_BOOLEAN, .cname = "open_to_temporary"},
- {WIDGET_CHK_BTN, N_("Do not load metadata for songs until played"),
- .cfg_type = VALUE_BOOLEAN, .cname = "metadata_on_play",
- .callback = playlist_trigger_scan},
- {WIDGET_LABEL, N_("<b>Compatibility</b>"), NULL, NULL, NULL, FALSE},
- {WIDGET_CHK_BTN, N_("Interpret \\ (backward slash) as a folder delimiter"),
- .cfg_type = VALUE_BOOLEAN, .cname = "convert_backslash"},
- {WIDGET_TABLE, .data = {.table = {chardet_elements,
- G_N_ELEMENTS (chardet_elements)}}}
-};
+ {WIDGET_LABEL, N_("<b>Behavior</b>"), NULL, NULL, NULL, FALSE},
+ {WIDGET_CHK_BTN, N_("Continue playback on startup"),
+ .cfg_type = VALUE_BOOLEAN, .cname = "resume_playback_on_startup"},
+ {WIDGET_CHK_BTN, N_("Advance when the current song is deleted"),
+ .cfg_type = VALUE_BOOLEAN, .cname = "advance_on_delete"},
+ {WIDGET_CHK_BTN, N_("Clear the playlist when opening files"),
+ .cfg_type = VALUE_BOOLEAN, .cname = "clear_playlist"},
+ {WIDGET_CHK_BTN, N_("Open files in a temporary playlist"),
+ .cfg_type = VALUE_BOOLEAN, .cname = "open_to_temporary"},
+ {WIDGET_CHK_BTN, N_("Do not load metadata for songs until played"),
+ .cfg_type = VALUE_BOOLEAN, .cname = "metadata_on_play",
+ .callback = playlist_trigger_scan},
+ {WIDGET_LABEL, N_("<b>Compatibility</b>"), NULL, NULL, NULL, FALSE},
+ {WIDGET_CHK_BTN, N_("Interpret \\ (backward slash) as a folder delimiter"),
+ .cfg_type = VALUE_BOOLEAN, .cname = "convert_backslash"},
+ {WIDGET_TABLE, .data.table = {chardet_elements, ARRAY_LEN (chardet_elements)}}};
static PreferencesWidget song_info_page_widgets[] = {
{WIDGET_LABEL, N_("<b>Album Art</b>")},
@@ -206,72 +255,89 @@ static PreferencesWidget song_info_page_widgets[] = {
.cfg_type = VALUE_BOOLEAN, .cname = "recurse_for_cover"},
{WIDGET_SPIN_BTN, N_("Search depth:"), .child = TRUE,
.cfg_type = VALUE_INT, .cname = "recurse_for_cover_depth",
- .data = {.spin_btn = {0, 100, 1}}},
+ .data.spin_btn = {0, 100, 1}},
{WIDGET_LABEL, N_("<b>Popup Information</b>")},
{WIDGET_CHK_BTN, N_("Show popup information"),
.cfg_type = VALUE_BOOLEAN, .cname = "show_filepopup_for_tuple"},
{WIDGET_SPIN_BTN, N_("Popup delay (tenths of a second):"), .child = TRUE,
.cfg_type = VALUE_INT, .cname = "filepopup_delay",
- .data = {.spin_btn = {0, 100, 1}}},
+ .data.spin_btn = {0, 100, 1}},
{WIDGET_CHK_BTN, N_("Show time scale for current song"), .child = TRUE,
.cfg_type = VALUE_BOOLEAN, .cname = "filepopup_showprogressbar"}};
#define TITLESTRING_NPRESETS 6
static const char * const titlestring_presets[TITLESTRING_NPRESETS] = {
- "${title}",
- "${?artist:${artist} - }${title}",
- "${?artist:${artist} - }${?album:${album} - }${title}",
- "${?artist:${artist} - }${?album:${album} - }${?track-number:${track-number}. }${title}",
- "${?artist:${artist} }${?album:[ ${album} ] }${?artist:- }${?track-number:${track-number}. }${title}",
- "${?album:${album} - }${title}"};
+ "${title}",
+ "${?artist:${artist} - }${title}",
+ "${?artist:${artist} - }${?album:${album} - }${title}",
+ "${?artist:${artist} - }${?album:${album} - }${?track-number:${track-number}. }${title}",
+ "${?artist:${artist} }${?album:[ ${album} ] }${?artist:- }${?track-number:${track-number}. }${title}",
+ "${?album:${album} - }${title}"
+};
static const char * const titlestring_preset_names[TITLESTRING_NPRESETS] = {
- N_("TITLE"),
- N_("ARTIST - TITLE"),
- N_("ARTIST - ALBUM - TITLE"),
- N_("ARTIST - ALBUM - TRACK. TITLE"),
- N_("ARTIST [ ALBUM ] - TRACK. TITLE"),
- N_("ALBUM - TITLE")};
-
-static void
-change_category(GtkNotebook * notebook,
- GtkTreeSelection * selection)
+ N_("TITLE"),
+ N_("ARTIST - TITLE"),
+ N_("ARTIST - ALBUM - TITLE"),
+ N_("ARTIST - ALBUM - TRACK. TITLE"),
+ N_("ARTIST [ ALBUM ] - TRACK. TITLE"),
+ N_("ALBUM - TITLE")
+};
+
+static GArray * fill_plugin_combo (int type)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
- int index;
+ GArray * array = g_array_new (FALSE, FALSE, sizeof (ComboBoxElements));
+ g_array_set_size (array, plugin_count (type));
- if (!gtk_tree_selection_get_selected(selection, &model, &iter))
- return;
+ for (int i = 0; i < array->len; i ++)
+ {
+ ComboBoxElements * elem = & g_array_index (array, ComboBoxElements, i);
+ elem->label = plugin_get_name (plugin_by_index (type, i));
+ elem->value = GINT_TO_POINTER (i);
+ }
- gtk_tree_model_get(model, &iter, CATEGORY_VIEW_COL_ID, &index, -1);
- gtk_notebook_set_current_page(notebook, index);
+ return array;
}
-static void
-titlestring_tag_menu_callback(GtkMenuItem * menuitem,
- void * data)
+static void change_category (int category)
{
- const char *separator = " - ";
- int item = GPOINTER_TO_INT(data);
- int pos;
+ GtkTreeSelection * selection = gtk_tree_view_get_selection ((GtkTreeView *) category_treeview);
+ GtkTreePath * path = gtk_tree_path_new_from_indices (category, -1);
+ gtk_tree_selection_select_path (selection, path);
+ gtk_tree_path_free (path);
+}
- pos = gtk_editable_get_position(GTK_EDITABLE(titlestring_entry));
+static void category_changed (GtkTreeSelection * selection)
+{
+ GtkTreeModel * model;
+ GtkTreeIter iter;
+
+ if (gtk_tree_selection_get_selected (selection, & model, & iter))
+ {
+ GtkTreePath * path = gtk_tree_model_get_path (model, & iter);
+ int category = gtk_tree_path_get_indices (path)[0];
+ gtk_notebook_set_current_page ((GtkNotebook *) category_notebook, category);
+ gtk_tree_path_free (path);
+ }
+}
+
+static void titlestring_tag_menu_cb (GtkMenuItem * menuitem, void * data)
+{
+ const char * separator = " - ";
+ int item = GPOINTER_TO_INT (data);
+ int pos = gtk_editable_get_position ((GtkEditable *) titlestring_entry);
/* insert separator as needed */
- if (gtk_entry_get_text(GTK_ENTRY(titlestring_entry))[0])
- gtk_editable_insert_text(GTK_EDITABLE(titlestring_entry), separator, -1, &pos);
+ if (gtk_entry_get_text ((GtkEntry *) titlestring_entry)[0])
+ gtk_editable_insert_text ((GtkEditable *) titlestring_entry, separator, -1, & pos);
- gtk_editable_insert_text(GTK_EDITABLE(titlestring_entry), _(title_field_tags[item].tag), -1, &pos);
- gtk_editable_set_position(GTK_EDITABLE(titlestring_entry), pos);
+ gtk_editable_insert_text ((GtkEditable *) titlestring_entry, _(title_field_tags[item].tag), -1, & pos);
+ gtk_editable_set_position ((GtkEditable *) titlestring_entry, pos);
}
-static void
-on_titlestring_help_button_clicked(GtkButton * button,
- void * data)
+static void on_titlestring_help_button_clicked (GtkButton * button, void * menu)
{
- GtkMenu * menu = data;
gtk_menu_popup (menu, NULL, NULL, NULL, NULL, 0, GDK_CURRENT_TIME);
}
@@ -291,7 +357,7 @@ static void update_titlestring_cbox (GtkComboBox * cbox, const char * format)
static void on_titlestring_entry_changed (GtkEntry * entry, GtkComboBox * cbox)
{
const char * format = gtk_entry_get_text (entry);
- set_string (NULL, "generic_title_format", format);
+ set_str (NULL, "generic_title_format", format);
update_titlestring_cbox (cbox, format);
playlist_reformat_titles ();
}
@@ -303,638 +369,68 @@ static void on_titlestring_cbox_changed (GtkComboBox * cbox, GtkEntry * entry)
gtk_entry_set_text (entry, titlestring_presets[preset]);
}
-static void widget_set_bool (const PreferencesWidget * widget, bool_t value)
-{
- g_return_if_fail (widget->cfg_type == VALUE_BOOLEAN);
-
- if (widget->cfg)
- * (bool_t *) widget->cfg = value;
- else if (widget->cname)
- set_bool (widget->csect, widget->cname, value);
-
- if (widget->callback)
- widget->callback ();
-}
-
-static bool_t widget_get_bool (const PreferencesWidget * widget)
-{
- g_return_val_if_fail (widget->cfg_type == VALUE_BOOLEAN, FALSE);
-
- if (widget->cfg)
- return * (bool_t *) widget->cfg;
- else if (widget->cname)
- return get_bool (widget->csect, widget->cname);
- else
- return FALSE;
-}
-
-static void widget_set_int (const PreferencesWidget * widget, int value)
-{
- g_return_if_fail (widget->cfg_type == VALUE_INT);
-
- if (widget->cfg)
- * (int *) widget->cfg = value;
- else if (widget->cname)
- set_int (widget->csect, widget->cname, value);
-
- if (widget->callback)
- widget->callback ();
-}
-
-static int widget_get_int (const PreferencesWidget * widget)
-{
- g_return_val_if_fail (widget->cfg_type == VALUE_INT, 0);
-
- if (widget->cfg)
- return * (int *) widget->cfg;
- else if (widget->cname)
- return get_int (widget->csect, widget->cname);
- else
- return 0;
-}
-
-static void widget_set_double (const PreferencesWidget * widget, double value)
-{
- g_return_if_fail (widget->cfg_type == VALUE_FLOAT);
-
- if (widget->cfg)
- * (float *) widget->cfg = value;
- else if (widget->cname)
- set_double (widget->csect, widget->cname, value);
-
- if (widget->callback)
- widget->callback ();
-}
-
-static double widget_get_double (const PreferencesWidget * widget)
-{
- g_return_val_if_fail (widget->cfg_type == VALUE_FLOAT, 0);
-
- if (widget->cfg)
- return * (float *) widget->cfg;
- else if (widget->cname)
- return get_double (widget->csect, widget->cname);
- else
- return 0;
-}
-
-static void widget_set_string (const PreferencesWidget * widget, const char * value)
-{
- g_return_if_fail (widget->cfg_type == VALUE_STRING);
-
- if (widget->cfg)
- {
- g_free (* (char * *) widget->cfg);
- * (char * *) widget->cfg = g_strdup (value);
- }
- else if (widget->cname)
- set_string (widget->csect, widget->cname, value);
-
- if (widget->callback)
- widget->callback ();
-}
-
-static char * widget_get_string (const PreferencesWidget * widget)
-{
- g_return_val_if_fail (widget->cfg_type == VALUE_STRING, NULL);
-
- if (widget->cfg)
- return g_strdup (* (char * *) widget->cfg);
- else if (widget->cname)
- return get_string (widget->csect, widget->cname);
- else
- return NULL;
-}
-
-static void on_font_btn_font_set (GtkFontButton * button, const PreferencesWidget * widget)
-{
- widget_set_string (widget, gtk_font_button_get_font_name (button));
-}
-
-static void on_spin_btn_changed_int (GtkSpinButton * button, const PreferencesWidget * widget)
-{
- widget_set_int (widget, gtk_spin_button_get_value_as_int (button));
-}
-
-static void on_spin_btn_changed_float (GtkSpinButton * button, const PreferencesWidget * widget)
-{
- widget_set_double (widget, gtk_spin_button_get_value (button));
-}
-
static void fill_category_list (GtkTreeView * treeview, GtkNotebook * notebook)
{
- GtkListStore *store;
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- GdkPixbuf *img;
- int i;
+ GtkTreeViewColumn * column = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_title (column, _("Category"));
+ gtk_tree_view_append_column (treeview, column);
+ gtk_tree_view_column_set_spacing (column, 2);
- column = gtk_tree_view_column_new();
- gtk_tree_view_column_set_title(column, _("Category"));
- gtk_tree_view_append_column(treeview, column);
- gtk_tree_view_column_set_spacing(column, 2);
+ GtkCellRenderer * renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer, "pixbuf", 0, NULL);
- renderer = gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_column_pack_start(column, renderer, FALSE);
- gtk_tree_view_column_set_attributes(column, renderer, "pixbuf", 0, NULL);
-
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(column, renderer, FALSE);
- gtk_tree_view_column_set_attributes(column, renderer, "text", 1, NULL);
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer, "text", 1, NULL);
g_object_set ((GObject *) renderer, "wrap-width", 96, "wrap-mode",
PANGO_WRAP_WORD_CHAR, NULL);
- store = gtk_list_store_new(CATEGORY_VIEW_N_COLS,
- GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT);
- gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(store));
+ GtkListStore * store = gtk_list_store_new (CATEGORY_VIEW_N_COLS,
+ GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT);
+ gtk_tree_view_set_model (treeview, (GtkTreeModel *) store);
- for (i = 0; i < n_categories; i ++)
- {
- char * path = g_strdup_printf ("%s/images/%s",
- get_path (AUD_PATH_DATA_DIR), categories[i].icon_path);
- img = gdk_pixbuf_new_from_file (path, NULL);
- g_free (path);
-
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter,
- CATEGORY_VIEW_COL_ICON, img,
- CATEGORY_VIEW_COL_NAME,
- gettext(categories[i].name), CATEGORY_VIEW_COL_ID,
- i, -1);
- g_object_unref(img);
- }
-
- selection = gtk_tree_view_get_selection(treeview);
-
- g_signal_connect_swapped(selection, "changed",
- G_CALLBACK(change_category), notebook);
-}
+ const char * data_dir = get_path (AUD_PATH_DATA_DIR);
-static void on_radio_button_toggled (GtkWidget * button, const PreferencesWidget * widget)
-{
- if (gtk_toggle_button_get_active ((GtkToggleButton *) button))
- widget_set_int (widget, widget->data.radio_btn.value);
-}
-
-static void init_radio_button (GtkWidget * button, const PreferencesWidget * widget)
-{
- if (widget->cfg_type != VALUE_INT)
- return;
-
- if (widget_get_int (widget) == widget->data.radio_btn.value)
- gtk_toggle_button_set_active ((GtkToggleButton *) button, TRUE);
-
- g_signal_connect (button, "toggled", (GCallback) on_radio_button_toggled, (void *) widget);
-}
-
-static void on_toggle_button_toggled (GtkToggleButton * button, const PreferencesWidget * widget)
-{
- bool_t active = gtk_toggle_button_get_active (button);
- widget_set_bool (widget, active);
-
- GtkWidget * child = g_object_get_data ((GObject *) button, "child");
- if (child)
- gtk_widget_set_sensitive (child, active);
-}
-
-static void init_toggle_button (GtkWidget * button, const PreferencesWidget * widget)
-{
- if (widget->cfg_type != VALUE_BOOLEAN)
- return;
-
- gtk_toggle_button_set_active ((GtkToggleButton *) button, widget_get_bool (widget));
- g_signal_connect (button, "toggled", (GCallback) on_toggle_button_toggled, (void *) widget);
-}
-
-static void on_entry_changed (GtkEntry * entry, const PreferencesWidget * widget)
-{
- widget_set_string (widget, gtk_entry_get_text (entry));
-}
-
-static void on_cbox_changed_int (GtkComboBox * combobox, const PreferencesWidget * widget)
-{
- int position = gtk_combo_box_get_active (combobox);
- widget_set_int (widget, GPOINTER_TO_INT (widget->data.combo.elements[position].value));
-}
-
-static void on_cbox_changed_string (GtkComboBox * combobox, const PreferencesWidget * widget)
-{
- int position = gtk_combo_box_get_active (combobox);
- widget_set_string (widget, widget->data.combo.elements[position].value);
-}
-
-static void fill_cbox (GtkWidget * combobox, const PreferencesWidget * widget, const char * domain)
-{
- for (int i = 0; i < widget->data.combo.n_elements; i ++)
- gtk_combo_box_text_append_text ((GtkComboBoxText *) combobox,
- dgettext (domain, widget->data.combo.elements[i].label));
-
- switch (widget->cfg_type)
+ for (int i = 0; i < ARRAY_LEN (categories); i ++)
{
- case VALUE_INT:;
- int ivalue = widget_get_int (widget);
+ SCONCAT3 (path, data_dir, "/images/", categories[i].icon_path);
- for (int i = 0; i < widget->data.combo.n_elements; i++)
- {
- if (GPOINTER_TO_INT (widget->data.combo.elements[i].value) == ivalue)
- {
- gtk_combo_box_set_active ((GtkComboBox *) combobox, i);
- break;
- }
- }
+ GtkTreeIter iter;
- g_signal_connect (combobox, "changed", (GCallback) on_cbox_changed_int, (void *) widget);
- break;
+ gtk_list_store_append (store, & iter);
+ gtk_list_store_set (store, & iter, CATEGORY_VIEW_COL_NAME,
+ gettext (categories[i].name), -1);
- case VALUE_STRING:;
- char * value = widget_get_string (widget);
+ GdkPixbuf * img = gdk_pixbuf_new_from_file (path, NULL);
- for(int i = 0; i < widget->data.combo.n_elements; i++)
+ if (img)
{
- if (value && ! strcmp (widget->data.combo.elements[i].value, value))
- {
- gtk_combo_box_set_active ((GtkComboBox *) combobox, i);
- break;
- }
+ gtk_list_store_set (store, & iter, CATEGORY_VIEW_COL_ICON, img, -1);
+ g_object_unref (img);
}
-
- g_free (value);
-
- g_signal_connect (combobox, "changed", (GCallback) on_cbox_changed_string, (void *) widget);
- break;
-
- default:
- break;
}
-}
-static void create_spin_button (const PreferencesWidget * widget, GtkWidget * *
- label_pre, GtkWidget * * spin_btn, GtkWidget * * label_past, const char *
- domain)
-{
- g_return_if_fail(widget->type == WIDGET_SPIN_BTN);
+ g_object_unref (store);
- * label_pre = gtk_label_new (dgettext (domain, widget->label));
-
- *spin_btn = gtk_spin_button_new_with_range(widget->data.spin_btn.min,
- widget->data.spin_btn.max,
- widget->data.spin_btn.step);
-
-
- if (widget->tooltip)
- gtk_widget_set_tooltip_text (* spin_btn, dgettext (domain,
- widget->tooltip));
-
- if (widget->data.spin_btn.right_label) {
- * label_past = gtk_label_new (dgettext (domain,
- widget->data.spin_btn.right_label));
- }
-
- switch (widget->cfg_type)
- {
- case VALUE_INT:
- gtk_spin_button_set_value ((GtkSpinButton *) * spin_btn, widget_get_int (widget));
- g_signal_connect (* spin_btn, "value_changed", (GCallback)
- on_spin_btn_changed_int, (void *) widget);
- break;
- case VALUE_FLOAT:
- gtk_spin_button_set_value ((GtkSpinButton *) * spin_btn, widget_get_double (widget));
- g_signal_connect (* spin_btn, "value_changed", (GCallback)
- on_spin_btn_changed_float, (void *) widget);
- break;
- default:
- break;
- }
+ GtkTreeSelection * selection = gtk_tree_view_get_selection (treeview);
+ g_signal_connect (selection, "changed", (GCallback) category_changed, NULL);
}
-void create_font_btn (const PreferencesWidget * widget, GtkWidget * * label,
- GtkWidget * * font_btn, const char * domain)
+static GtkWidget * create_titlestring_tag_menu (void)
{
- *font_btn = gtk_font_button_new();
- gtk_font_button_set_use_font(GTK_FONT_BUTTON(*font_btn), TRUE);
- gtk_font_button_set_use_size(GTK_FONT_BUTTON(*font_btn), TRUE);
- gtk_widget_set_hexpand(*font_btn, TRUE);
- if (widget->label) {
- * label = gtk_label_new_with_mnemonic (dgettext (domain, widget->label));
- gtk_label_set_use_markup(GTK_LABEL(*label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(*label), 1, 0.5);
- gtk_label_set_justify(GTK_LABEL(*label), GTK_JUSTIFY_RIGHT);
- gtk_label_set_mnemonic_widget(GTK_LABEL(*label), *font_btn);
- }
-
- if (widget->data.font_btn.title)
- gtk_font_button_set_title (GTK_FONT_BUTTON (* font_btn),
- dgettext (domain, widget->data.font_btn.title));
-
- char * name = widget_get_string (widget);
- if (name)
- {
- gtk_font_button_set_font_name ((GtkFontButton *) * font_btn, name);
- g_free (name);
- }
-
- g_signal_connect (* font_btn, "font_set", (GCallback) on_font_btn_font_set, (void *) widget);
-}
-
-static void create_entry (const PreferencesWidget * widget, GtkWidget * * label,
- GtkWidget * * entry, const char * domain)
-{
- *entry = gtk_entry_new();
- gtk_entry_set_visibility(GTK_ENTRY(*entry), !widget->data.entry.password);
- gtk_widget_set_hexpand(*entry, TRUE);
-
- if (widget->label)
- * label = gtk_label_new (dgettext (domain, widget->label));
+ GtkWidget * titlestring_tag_menu = gtk_menu_new ();
- if (widget->tooltip)
- gtk_widget_set_tooltip_text (* entry, dgettext (domain, widget->tooltip));
-
- if (widget->cfg_type == VALUE_STRING)
+ for (int i = 0; i < ARRAY_LEN (title_field_tags); i ++)
{
- char * value = widget_get_string (widget);
- if (value)
- {
- gtk_entry_set_text ((GtkEntry *) * entry, value);
- g_free (value);
- }
-
- g_signal_connect (* entry, "changed", (GCallback) on_entry_changed, (void *) widget);
- }
-}
-
-static void create_label (const PreferencesWidget * widget, GtkWidget * * label,
- GtkWidget * * icon, const char * domain)
-{
- if (widget->data.label.stock_id)
- *icon = gtk_image_new_from_stock(widget->data.label.stock_id, GTK_ICON_SIZE_BUTTON);
-
- * label = gtk_label_new_with_mnemonic (dgettext (domain, widget->label));
- gtk_label_set_use_markup(GTK_LABEL(*label), TRUE);
-
- if (widget->data.label.single_line == FALSE)
- gtk_label_set_line_wrap(GTK_LABEL(*label), TRUE);
-
- gtk_misc_set_alignment(GTK_MISC(*label), 0, 0.5);
-}
-
-static void create_cbox (const PreferencesWidget * widget, GtkWidget * * label,
- GtkWidget * * combobox, const char * domain)
-{
- * combobox = gtk_combo_box_text_new ();
-
- if (widget->label) {
- * label = gtk_label_new (dgettext (domain, widget->label));
- }
-
- fill_cbox (* combobox, widget, domain);
-}
-
-static void fill_grid (GtkWidget * grid, const PreferencesWidget * elements, int
- amt, const char * domain)
-{
- int x;
- GtkWidget *widget_left, *widget_middle, *widget_right;
-
- for (x = 0; x < amt; ++x) {
- widget_left = widget_middle = widget_right = NULL;
- switch (elements[x].type) {
- case WIDGET_SPIN_BTN:
- create_spin_button (& elements[x], & widget_left,
- & widget_middle, & widget_right, domain);
- break;
- case WIDGET_LABEL:
- create_label (& elements[x], & widget_middle, & widget_left,
- domain);
- break;
- case WIDGET_FONT_BTN:
- create_font_btn (& elements[x], & widget_left, & widget_middle,
- domain);
- break;
- case WIDGET_ENTRY:
- create_entry (& elements[x], & widget_left, & widget_middle,
- domain);
- break;
- case WIDGET_COMBO_BOX:
- create_cbox (& elements[x], & widget_left, & widget_middle,
- domain);
- break;
- default:
- g_warning("Unsupported widget type %d in table", elements[x].type);
- }
-
- if (widget_left)
- gtk_grid_attach(GTK_GRID(grid), widget_left, 0, x, 1, 1);
-
- if (widget_middle)
- gtk_grid_attach(GTK_GRID(grid), widget_middle, 1, x, 1, 1);
-
- if (widget_right)
- gtk_grid_attach(GTK_GRID(grid), widget_right, 2, x, 1, 1);
- }
-}
-
-/* box: a GtkBox */
-void create_widgets_with_domain (void * box, const PreferencesWidget * widgets,
- int amt, const char * domain)
-{
- GtkWidget *alignment = NULL, *widget = NULL;
- GtkWidget *child_box = NULL;
- GSList *radio_btn_group = NULL;
-
- for (int x = 0; x < amt; x ++)
- {
- GtkWidget * label = NULL;
-
- if (widget && widgets[x].child)
- {
- if (!child_box) {
- child_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- g_object_set_data(G_OBJECT(widget), "child", child_box);
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start(box, alignment, FALSE, FALSE, 0);
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0);
- gtk_container_add (GTK_CONTAINER (alignment), child_box);
-
- if (GTK_IS_TOGGLE_BUTTON (widget))
- gtk_widget_set_sensitive (child_box, gtk_toggle_button_get_active ((GtkToggleButton *) widget));
- }
- } else
- child_box = NULL;
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 6, 0, 12, 0);
- gtk_box_pack_start(child_box ? GTK_BOX(child_box) : box, alignment, FALSE, FALSE, 0);
-
- if (radio_btn_group && widgets[x].type != WIDGET_RADIO_BTN)
- radio_btn_group = NULL;
-
- switch(widgets[x].type) {
- case WIDGET_CHK_BTN:
- widget = gtk_check_button_new_with_mnemonic (dgettext (domain, widgets[x].label));
- init_toggle_button (widget, & widgets[x]);
- break;
- case WIDGET_LABEL:
- if (strstr (widgets[x].label, "<b>"))
- gtk_alignment_set_padding ((GtkAlignment *) alignment,
- (x == 0) ? 0 : 12, 0, 0, 0);
-
- GtkWidget * icon = NULL;
- create_label (& widgets[x], & label, & icon, domain);
-
- if (icon == NULL)
- widget = label;
- else {
- widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start(GTK_BOX(widget), icon, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(widget), label, FALSE, FALSE, 0);
- }
- break;
- case WIDGET_RADIO_BTN:
- widget = gtk_radio_button_new_with_mnemonic (radio_btn_group,
- dgettext (domain, widgets[x].label));
- radio_btn_group = gtk_radio_button_get_group ((GtkRadioButton *) widget);
- init_radio_button (widget, & widgets[x]);
- break;
- case WIDGET_SPIN_BTN:
- widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-
- GtkWidget *label_pre = NULL, *spin_btn = NULL, *label_past = NULL;
- create_spin_button (& widgets[x], & label_pre, & spin_btn,
- & label_past, domain);
-
- if (label_pre)
- gtk_box_pack_start(GTK_BOX(widget), label_pre, FALSE, FALSE, 0);
- if (spin_btn)
- gtk_box_pack_start(GTK_BOX(widget), spin_btn, FALSE, FALSE, 0);
- if (label_past)
- gtk_box_pack_start(GTK_BOX(widget), label_past, FALSE, FALSE, 0);
-
- break;
- case WIDGET_CUSTOM: /* custom widget. --nenolod */
- if (widgets[x].data.populate)
- widget = widgets[x].data.populate();
- else
- widget = NULL;
-
- break;
- case WIDGET_FONT_BTN:
- widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-
- GtkWidget *font_btn = NULL;
- create_font_btn (& widgets[x], & label, & font_btn, domain);
-
- if (label)
- gtk_box_pack_start(GTK_BOX(widget), label, FALSE, FALSE, 0);
- if (font_btn)
- gtk_box_pack_start(GTK_BOX(widget), font_btn, FALSE, FALSE, 0);
- break;
- case WIDGET_TABLE:
- widget = gtk_grid_new();
- fill_grid(widget, widgets[x].data.table.elem,
- widgets[x].data.table.rows, domain);
- gtk_grid_set_column_spacing(GTK_GRID(widget), 6);
- gtk_grid_set_row_spacing(GTK_GRID(widget), 6);
- break;
- case WIDGET_ENTRY:
- widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-
- GtkWidget *entry = NULL;
- create_entry (& widgets[x], & label, & entry, domain);
-
- if (label)
- gtk_box_pack_start(GTK_BOX(widget), label, FALSE, FALSE, 0);
- if (entry)
- gtk_box_pack_start(GTK_BOX(widget), entry, TRUE, TRUE, 0);
- break;
- case WIDGET_COMBO_BOX:
- widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-
- GtkWidget *combo = NULL;
- create_cbox (& widgets[x], & label, & combo, domain);
-
- if (label)
- gtk_box_pack_start(GTK_BOX(widget), label, FALSE, FALSE, 0);
- if (combo)
- gtk_box_pack_start(GTK_BOX(widget), combo, FALSE, FALSE, 0);
- break;
- case WIDGET_BOX:
- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 0, 0);
-
- if (widgets[x].data.box.horizontal) {
- widget = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- } else {
- widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- }
-
- create_widgets_with_domain ((GtkBox *) widget,
- widgets[x].data.box.elem, widgets[x].data.box.n_elem, domain);
-
- if (widgets[x].data.box.frame) {
- GtkWidget *tmp;
- tmp = widget;
-
- widget = gtk_frame_new (dgettext (domain, widgets[x].label));
- gtk_container_add(GTK_CONTAINER(widget), tmp);
- }
- break;
- case WIDGET_NOTEBOOK:
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
-
- widget = gtk_notebook_new();
-
- int i;
- for (i = 0; i<widgets[x].data.notebook.n_tabs; i++) {
- GtkWidget *vbox;
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
- create_widgets_with_domain ((GtkBox *) vbox,
- widgets[x].data.notebook.tabs[i].widgets,
- widgets[x].data.notebook.tabs[i].n_widgets, domain);
-
- gtk_notebook_append_page (GTK_NOTEBOOK (widget), vbox,
- gtk_label_new (dgettext (domain,
- widgets[x].data.notebook.tabs[i].name)));
- }
- break;
- case WIDGET_SEPARATOR:
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 6, 0, 0);
-
- if (widgets[x].data.separator.horizontal == TRUE) {
- widget = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
- } else {
- widget = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
- }
- break;
- default:
- break;
- }
-
- if (widget && !gtk_widget_get_parent(widget))
- gtk_container_add(GTK_CONTAINER(alignment), widget);
- if (widget && widgets[x].tooltip && widgets[x].type != WIDGET_SPIN_BTN)
- gtk_widget_set_tooltip_text (widget, dgettext (domain,
- widgets[x].tooltip));
- }
-
-}
-
-static GtkWidget *
-create_titlestring_tag_menu(void)
-{
- GtkWidget *titlestring_tag_menu, *menu_item;
- unsigned int i;
-
- titlestring_tag_menu = gtk_menu_new();
- for(i = 0; i < n_title_field_tags; i++) {
- menu_item = gtk_menu_item_new_with_label(_(title_field_tags[i].name));
- gtk_menu_shell_append(GTK_MENU_SHELL(titlestring_tag_menu), menu_item);
+ GtkWidget * menu_item = gtk_menu_item_new_with_label (_(title_field_tags[i].name));
+ gtk_menu_shell_append ((GtkMenuShell *) titlestring_tag_menu, menu_item);
g_signal_connect(menu_item, "activate",
- G_CALLBACK(titlestring_tag_menu_callback),
- GINT_TO_POINTER(i));
+ (GCallback) titlestring_tag_menu_cb, GINT_TO_POINTER (i));
};
- gtk_widget_show_all(titlestring_tag_menu);
+
+ gtk_widget_show_all (titlestring_tag_menu);
return titlestring_tag_menu;
}
@@ -962,106 +458,90 @@ static void create_titlestring_widgets (GtkWidget * * cbox, GtkWidget * * entry)
* entry = gtk_entry_new ();
- char * format = get_string (NULL, "generic_title_format");
+ char * format = get_str (NULL, "generic_title_format");
update_titlestring_cbox ((GtkComboBox *) * cbox, format);
gtk_entry_set_text ((GtkEntry *) * entry, format);
- g_free (format);
+ str_unref (format);
g_signal_connect (* cbox, "changed", (GCallback) on_titlestring_cbox_changed, * entry);
g_signal_connect (* entry, "changed", (GCallback) on_titlestring_entry_changed, * cbox);
}
-static void
-create_playlist_category(void)
+static void create_playlist_category (void)
{
- GtkWidget *vbox5;
- GtkWidget *alignment55;
- GtkWidget *label60;
- GtkWidget *alignment56;
- GtkWidget *grid6;
- GtkWidget *titlestring_help_button;
- GtkWidget *image1;
- GtkWidget *label62;
- GtkWidget *label61;
- GtkWidget *titlestring_tag_menu = create_titlestring_tag_menu();
- GtkWidget * numbers_alignment, * numbers;
-
- vbox5 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add ((GtkContainer *) category_notebook, vbox5);
-
- create_widgets(GTK_BOX(vbox5), playlist_page_widgets, G_N_ELEMENTS(playlist_page_widgets));
-
- alignment55 = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start (GTK_BOX (vbox5), alignment55, FALSE, FALSE, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment55, 12, 3, 0, 0);
-
- label60 = gtk_label_new (_("<b>Song Display</b>"));
- gtk_container_add (GTK_CONTAINER (alignment55), label60);
- gtk_label_set_use_markup (GTK_LABEL (label60), TRUE);
- gtk_misc_set_alignment (GTK_MISC (label60), 0, 0.5);
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add ((GtkContainer *) category_notebook, vbox);
- numbers_alignment = gtk_alignment_new (0, 0, 0, 0);
+ create_widgets ((GtkBox *) vbox, playlist_page_widgets, ARRAY_LEN (playlist_page_widgets));
+
+ GtkWidget * alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_box_pack_start ((GtkBox *) vbox, alignment, FALSE, FALSE, 0);
+ gtk_alignment_set_padding ((GtkAlignment *) alignment, 12, 3, 0, 0);
+
+ GtkWidget * label = gtk_label_new (_("<b>Song Display</b>"));
+ gtk_container_add ((GtkContainer *) alignment, label);
+ gtk_label_set_use_markup ((GtkLabel *) label, TRUE);
+ gtk_misc_set_alignment ((GtkMisc *) label, 0, 0.5);
+
+ GtkWidget * numbers_alignment = gtk_alignment_new (0, 0, 0, 0);
gtk_alignment_set_padding ((GtkAlignment *) numbers_alignment, 0, 0, 12, 0);
- gtk_box_pack_start ((GtkBox *) vbox5, numbers_alignment, 0, 0, 3);
+ gtk_box_pack_start ((GtkBox *) vbox, numbers_alignment, 0, 0, 3);
- numbers = gtk_check_button_new_with_label (_("Show song numbers"));
+ GtkWidget * numbers = gtk_check_button_new_with_label (_("Show song numbers"));
gtk_toggle_button_set_active ((GtkToggleButton *) numbers,
get_bool (NULL, "show_numbers_in_pl"));
- g_signal_connect ((GObject *) numbers, "toggled", (GCallback)
- show_numbers_cb, 0);
+ g_signal_connect (numbers, "toggled", (GCallback) show_numbers_cb, 0);
gtk_container_add ((GtkContainer *) numbers_alignment, numbers);
numbers_alignment = gtk_alignment_new (0, 0, 0, 0);
gtk_alignment_set_padding ((GtkAlignment *) numbers_alignment, 0, 0, 12, 0);
- gtk_box_pack_start ((GtkBox *) vbox5, numbers_alignment, 0, 0, 3);
+ gtk_box_pack_start ((GtkBox *) vbox, numbers_alignment, 0, 0, 3);
- numbers = gtk_check_button_new_with_label (_("Show leading zeroes (02:00 "
- "instead of 2:00)"));
+ numbers = gtk_check_button_new_with_label (
+ _("Show leading zeroes (02:00 instead of 2:00)"));
gtk_toggle_button_set_active ((GtkToggleButton *) numbers, get_bool (NULL, "leading_zero"));
- g_signal_connect ((GObject *) numbers, "toggled", (GCallback)
- leading_zero_cb, 0);
+ g_signal_connect (numbers, "toggled", (GCallback) leading_zero_cb, 0);
gtk_container_add ((GtkContainer *) numbers_alignment, numbers);
- alignment56 = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start (GTK_BOX (vbox5), alignment56, FALSE, FALSE, 0);
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment56), 0, 0, 12, 0);
+ alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
+ gtk_box_pack_start ((GtkBox *) vbox, alignment, FALSE, FALSE, 0);
+ gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 0, 12, 0);
- grid6 = gtk_grid_new ();
- gtk_container_add (GTK_CONTAINER (alignment56), grid6);
- gtk_grid_set_row_spacing (GTK_GRID (grid6), 4);
- gtk_grid_set_column_spacing (GTK_GRID (grid6), 12);
+ GtkWidget * grid = gtk_grid_new ();
+ gtk_container_add ((GtkContainer *) alignment, grid);
+ gtk_grid_set_row_spacing ((GtkGrid *) grid, 4);
+ gtk_grid_set_column_spacing ((GtkGrid *) grid, 12);
- titlestring_help_button = gtk_button_new ();
- gtk_grid_attach (GTK_GRID (grid6), titlestring_help_button, 2, 1, 1, 1);
+ label = gtk_label_new (_("Title format:"));
+ gtk_grid_attach ((GtkGrid *) grid, label, 0, 0, 1, 1);
+ gtk_label_set_justify ((GtkLabel *) label, GTK_JUSTIFY_RIGHT);
+ gtk_misc_set_alignment ((GtkMisc *) label, 1, 0.5);
- gtk_widget_set_can_focus (titlestring_help_button, FALSE);
- gtk_widget_set_tooltip_text (titlestring_help_button, _("Show information about titlestring format"));
- gtk_button_set_relief (GTK_BUTTON (titlestring_help_button), GTK_RELIEF_HALF);
- gtk_button_set_focus_on_click (GTK_BUTTON (titlestring_help_button), FALSE);
-
- image1 = gtk_image_new_from_stock ("gtk-index", GTK_ICON_SIZE_BUTTON);
- gtk_container_add (GTK_CONTAINER (titlestring_help_button), image1);
+ label = gtk_label_new (_("Custom string:"));
+ gtk_grid_attach ((GtkGrid *) grid, label, 0, 1, 1, 1);
+ gtk_label_set_justify ((GtkLabel *) label, GTK_JUSTIFY_RIGHT);
+ gtk_misc_set_alignment ((GtkMisc *) label, 1, 0.5);
GtkWidget * titlestring_cbox;
create_titlestring_widgets (& titlestring_cbox, & titlestring_entry);
gtk_widget_set_hexpand (titlestring_cbox, TRUE);
gtk_widget_set_hexpand (titlestring_entry, TRUE);
- gtk_grid_attach (GTK_GRID (grid6), titlestring_cbox, 1, 0, 1, 1);
- gtk_grid_attach (GTK_GRID (grid6), titlestring_entry, 1, 1, 1, 1);
-
- label62 = gtk_label_new (_("Custom string:"));
- gtk_grid_attach (GTK_GRID (grid6), label62, 0, 1, 1, 1);
- gtk_label_set_justify (GTK_LABEL (label62), GTK_JUSTIFY_RIGHT);
- gtk_misc_set_alignment (GTK_MISC (label62), 1, 0.5);
-
- label61 = gtk_label_new (_("Title format:"));
- gtk_grid_attach (GTK_GRID (grid6), label61, 0, 0, 1, 1);
- gtk_label_set_justify (GTK_LABEL (label61), GTK_JUSTIFY_RIGHT);
- gtk_misc_set_alignment (GTK_MISC (label61), 1, 0.5);
-
- g_signal_connect(titlestring_help_button, "clicked",
- G_CALLBACK(on_titlestring_help_button_clicked),
- titlestring_tag_menu);
+ gtk_grid_attach ((GtkGrid *) grid, titlestring_cbox, 1, 0, 1, 1);
+ gtk_grid_attach ((GtkGrid *) grid, titlestring_entry, 1, 1, 1, 1);
+
+ GtkWidget * titlestring_help_button = gtk_button_new ();
+ gtk_widget_set_can_focus (titlestring_help_button, FALSE);
+ gtk_button_set_focus_on_click ((GtkButton *) titlestring_help_button, FALSE);
+ gtk_button_set_relief ((GtkButton *) titlestring_help_button, GTK_RELIEF_HALF);
+ gtk_grid_attach ((GtkGrid *) grid, titlestring_help_button, 2, 1, 1, 1);
+
+ GtkWidget * titlestring_tag_menu = create_titlestring_tag_menu ();
+
+ g_signal_connect (titlestring_help_button, "clicked",
+ (GCallback) on_titlestring_help_button_clicked, titlestring_tag_menu);
+
+ GtkWidget * image = gtk_image_new_from_icon_name ("list-add", GTK_ICON_SIZE_BUTTON);
+ gtk_container_add ((GtkContainer *) titlestring_help_button, image);
}
static void create_song_info_category (void)
@@ -1069,54 +549,74 @@ static void create_song_info_category (void)
GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add ((GtkContainer *) category_notebook, vbox);
create_widgets ((GtkBox *) vbox, song_info_page_widgets,
- G_N_ELEMENTS (song_info_page_widgets));
+ ARRAY_LEN (song_info_page_widgets));
}
-static GtkWidget * output_config_button, * output_about_button;
-
-static bool_t output_enum_cb (PluginHandle * plugin, GList * * list)
+static void iface_fill_prefs_box (void)
{
- * list = g_list_prepend (* list, plugin);
- return TRUE;
+ Plugin * header = plugin_get_header (plugin_get_current (PLUGIN_TYPE_IFACE));
+ if (header && header->prefs)
+ create_widgets_with_domain (iface_prefs_box, header->prefs->widgets,
+ header->prefs->n_widgets, header->domain);
}
-static GList * output_get_list (void)
+static void iface_combo_changed (void)
{
- static GList * list = NULL;
+ gtk_container_foreach ((GtkContainer *) iface_prefs_box, (GtkCallback) gtk_widget_destroy, NULL);
- if (list == NULL)
+ plugin_enable (plugin_by_index (PLUGIN_TYPE_IFACE, iface_combo_selected), TRUE);
+
+ iface_fill_prefs_box ();
+ gtk_widget_show_all (iface_prefs_box);
+}
+
+static const ComboBoxElements * iface_combo_fill (int * n_elements)
+{
+ if (! iface_combo_elements)
{
- plugin_for_each (PLUGIN_TYPE_OUTPUT, (PluginForEachFunc) output_enum_cb,
- & list);
- list = g_list_reverse (list);
+ iface_combo_elements = fill_plugin_combo (PLUGIN_TYPE_IFACE);
+ iface_combo_selected = plugin_get_index (plugin_get_current (PLUGIN_TYPE_IFACE));
}
- return list;
+ * n_elements = iface_combo_elements->len;
+ return (const ComboBoxElements *) iface_combo_elements->data;
}
-static void output_combo_update (GtkComboBox * combo)
+static void * iface_create_prefs_box (void)
{
- PluginHandle * plugin = plugin_get_current (PLUGIN_TYPE_OUTPUT);
- gtk_combo_box_set_active (combo, g_list_index (output_get_list (), plugin));
- gtk_widget_set_sensitive (output_config_button, plugin_has_configure (plugin));
- gtk_widget_set_sensitive (output_about_button, plugin_has_about (plugin));
+ iface_prefs_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ iface_fill_prefs_box ();
+ return iface_prefs_box;
}
-static void output_combo_changed (GtkComboBox * combo)
+static void create_appearance_category (void)
{
- PluginHandle * plugin = g_list_nth_data (output_get_list (),
- gtk_combo_box_get_active (combo));
- g_return_if_fail (plugin != NULL);
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add ((GtkContainer *) category_notebook, vbox);
+ create_widgets ((GtkBox *) vbox, appearance_page_widgets, ARRAY_LEN (appearance_page_widgets));
+}
- plugin_enable (plugin, TRUE);
- output_combo_update (combo);
+static void output_combo_changed (void)
+{
+ PluginHandle * plugin = plugin_by_index (PLUGIN_TYPE_OUTPUT, output_combo_selected);
+
+ if (plugin_enable (plugin, TRUE))
+ {
+ gtk_widget_set_sensitive (output_config_button, plugin_has_configure (plugin));
+ gtk_widget_set_sensitive (output_about_button, plugin_has_about (plugin));
+ }
}
-static void output_combo_fill (GtkComboBox * combo)
+static const ComboBoxElements * output_combo_fill (int * n_elements)
{
- for (GList * node = output_get_list (); node != NULL; node = node->next)
- gtk_combo_box_text_append_text ((GtkComboBoxText *) combo,
- plugin_get_name (node->data));
+ if (! output_combo_elements)
+ {
+ output_combo_elements = fill_plugin_combo (PLUGIN_TYPE_OUTPUT);
+ output_combo_selected = plugin_get_index (output_plugin_get_current ());
+ }
+
+ * n_elements = output_combo_elements->len;
+ return (const ComboBoxElements *) output_combo_elements->data;
}
static void output_bit_depth_changed (void)
@@ -1124,214 +624,191 @@ static void output_bit_depth_changed (void)
output_reset (OUTPUT_RESET_SOFT);
}
-static void output_do_config (void)
+static void output_do_config (void * unused)
{
- PluginHandle * plugin = output_plugin_get_current ();
- g_return_if_fail (plugin != NULL);
- plugin_do_configure (plugin);
+ plugin_do_configure (output_plugin_get_current ());
}
-static void output_do_about (void)
+static void output_do_about (void * unused)
{
- PluginHandle * plugin = output_plugin_get_current ();
- g_return_if_fail (plugin != NULL);
- plugin_do_about (plugin);
+ plugin_do_about (output_plugin_get_current ());
}
-static void * create_output_plugin_box (void)
+static void * output_create_config_button (void)
{
- GtkWidget * hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start ((GtkBox *) hbox1, gtk_label_new (_("Output plugin:")), FALSE, FALSE, 0);
-
- GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- gtk_box_pack_start ((GtkBox *) hbox1, vbox, FALSE, FALSE, 0);
+ bool_t enabled = plugin_has_configure (output_plugin_get_current ());
- GtkWidget * hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start ((GtkBox *) vbox, hbox2, FALSE, FALSE, 0);
+ output_config_button = audgui_button_new (_("_Settings"),
+ "preferences-system", output_do_config, NULL);
+ gtk_widget_set_sensitive (output_config_button, enabled);
- GtkWidget * output_plugin_cbox = gtk_combo_box_text_new ();
- gtk_box_pack_start ((GtkBox *) hbox2, output_plugin_cbox, FALSE, FALSE, 0);
-
- GtkWidget * hbox3 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start ((GtkBox *) vbox, hbox3, FALSE, FALSE, 0);
-
- output_config_button = gtk_button_new_from_stock (GTK_STOCK_PREFERENCES);
- gtk_box_pack_start ((GtkBox *) hbox3, output_config_button, FALSE, FALSE, 0);
-
- output_about_button = gtk_button_new_from_stock (GTK_STOCK_ABOUT);
- gtk_box_pack_start ((GtkBox *) hbox3, output_about_button, FALSE, FALSE, 0);
+ return output_config_button;
+}
- output_combo_fill ((GtkComboBox *) output_plugin_cbox);
- output_combo_update ((GtkComboBox *) output_plugin_cbox);
+static void * output_create_about_button (void)
+{
+ bool_t enabled = plugin_has_about (output_plugin_get_current ());
- g_signal_connect (output_plugin_cbox, "changed", (GCallback) output_combo_changed, NULL);
- g_signal_connect (output_config_button, "clicked", (GCallback) output_do_config, NULL);
- g_signal_connect (output_about_button, "clicked", (GCallback) output_do_about, NULL);
+ output_about_button = audgui_button_new (_("_About"), "help-about", output_do_about, NULL);
+ gtk_widget_set_sensitive (output_about_button, enabled);
- return hbox1;
+ return output_about_button;
}
static void create_audio_category (void)
{
GtkWidget * audio_page_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- create_widgets ((GtkBox *) audio_page_vbox, audio_page_widgets, G_N_ELEMENTS (audio_page_widgets));
+ create_widgets ((GtkBox *) audio_page_vbox, audio_page_widgets, ARRAY_LEN (audio_page_widgets));
gtk_container_add ((GtkContainer *) category_notebook, audio_page_vbox);
}
-static void
-create_connectivity_category(void)
+static void create_connectivity_category (void)
{
- GtkWidget *connectivity_page_vbox;
- GtkWidget *vbox29;
-
- connectivity_page_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add (GTK_CONTAINER (category_notebook), connectivity_page_vbox);
+ GtkWidget * connectivity_page_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add ((GtkContainer *) category_notebook, connectivity_page_vbox);
- vbox29 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_box_pack_start (GTK_BOX (connectivity_page_vbox), vbox29, TRUE, TRUE, 0);
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_box_pack_start ((GtkBox *) connectivity_page_vbox, vbox, TRUE, TRUE, 0);
- create_widgets(GTK_BOX(vbox29), connectivity_page_widgets, G_N_ELEMENTS(connectivity_page_widgets));
+ create_widgets ((GtkBox *) vbox, connectivity_page_widgets, ARRAY_LEN (connectivity_page_widgets));
}
static void create_plugin_category (void)
{
- GtkWidget * notebook = gtk_notebook_new ();
- gtk_container_add ((GtkContainer *) category_notebook, notebook);
-
- int types[] = {PLUGIN_TYPE_TRANSPORT, PLUGIN_TYPE_PLAYLIST,
- PLUGIN_TYPE_INPUT, PLUGIN_TYPE_EFFECT, PLUGIN_TYPE_VIS, PLUGIN_TYPE_GENERAL};
- const char * names[] = {N_("Transport"), N_("Playlist"), N_("Input"),
- N_("Effect"), N_("Visualization"), N_("General")};
+ plugin_notebook = gtk_notebook_new ();
+ gtk_container_add ((GtkContainer *) category_notebook, plugin_notebook);
- for (int i = 0; i < G_N_ELEMENTS (types); i ++)
- gtk_notebook_append_page ((GtkNotebook *) notebook, plugin_view_new
- (types[i]), gtk_label_new (_(names[i])));
+ for (int i = 0; i < ARRAY_LEN (plugin_categories); i ++)
+ {
+ const PluginCategory * cat = & plugin_categories[i];
+ gtk_notebook_append_page ((GtkNotebook *) plugin_notebook,
+ plugin_view_new (cat->type), gtk_label_new (_(cat->name)));
+ }
}
-static bool_t
-prefswin_destroy(GtkWidget *window, GdkEvent *event, void * data)
+static void destroy_cb (void)
{
prefswin = NULL;
+ category_treeview = NULL;
category_notebook = NULL;
- gtk_widget_destroy(window);
- return TRUE;
+ titlestring_entry = NULL;
+
+ if (iface_combo_elements)
+ {
+ g_array_free (iface_combo_elements, TRUE);
+ iface_combo_elements = NULL;
+ }
+
+ if (output_combo_elements)
+ {
+ g_array_free (output_combo_elements, TRUE);
+ output_combo_elements = NULL;
+ }
}
static void create_prefs_window (void)
{
- char *aud_version_string;
-
- GtkWidget *vbox;
- GtkWidget *hbox1;
- GtkWidget *scrolledwindow6;
- GtkWidget *hseparator1;
- GtkWidget *hbox4;
- GtkWidget *audversionlabel;
- GtkWidget *prefswin_button_box;
- GtkWidget *close;
- GtkAccelGroup *accel_group;
-
- accel_group = gtk_accel_group_new ();
-
prefswin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_type_hint (GTK_WINDOW (prefswin), GDK_WINDOW_TYPE_HINT_DIALOG);
- gtk_container_set_border_width (GTK_CONTAINER (prefswin), 12);
- gtk_window_set_title (GTK_WINDOW (prefswin), _("Audacious Preferences"));
- gtk_window_set_position (GTK_WINDOW (prefswin), GTK_WIN_POS_CENTER);
- gtk_window_set_default_size (GTK_WINDOW (prefswin), 680, 400);
+ gtk_window_set_type_hint ((GtkWindow *) prefswin, GDK_WINDOW_TYPE_HINT_DIALOG);
+ gtk_container_set_border_width ((GtkContainer *) prefswin, 12);
+ gtk_window_set_title ((GtkWindow *) prefswin, _("Audacious Settings"));
+ gtk_window_set_default_size ((GtkWindow *) prefswin, 680, 400);
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add (GTK_CONTAINER (prefswin), vbox);
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add ((GtkContainer *) prefswin, vbox);
- hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
- gtk_box_pack_start (GTK_BOX (vbox), hbox1, TRUE, TRUE, 0);
+ GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
+ gtk_box_pack_start ((GtkBox *) vbox, hbox, TRUE, TRUE, 0);
- scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL);
- gtk_box_pack_start (GTK_BOX (hbox1), scrolledwindow6, FALSE, FALSE, 0);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_SHADOW_IN);
+ GtkWidget * scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
+ gtk_box_pack_start ((GtkBox *) hbox, scrolledwindow, FALSE, FALSE, 0);
+ gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scrolledwindow,
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scrolledwindow, GTK_SHADOW_IN);
category_treeview = gtk_tree_view_new ();
- gtk_container_add (GTK_CONTAINER (scrolledwindow6), category_treeview);
- gtk_widget_set_size_request (scrolledwindow6, 168, -1);
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (category_treeview), FALSE);
+ gtk_container_add ((GtkContainer *) scrolledwindow, category_treeview);
+ gtk_widget_set_size_request (scrolledwindow, 168, -1);
+ gtk_tree_view_set_headers_visible ((GtkTreeView *) category_treeview, FALSE);
category_notebook = gtk_notebook_new ();
- gtk_box_pack_start (GTK_BOX (hbox1), category_notebook, TRUE, TRUE, 0);
+ gtk_box_pack_start ((GtkBox *) hbox, category_notebook, TRUE, TRUE, 0);
gtk_widget_set_can_focus (category_notebook, FALSE);
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (category_notebook), FALSE);
- gtk_notebook_set_show_border (GTK_NOTEBOOK (category_notebook), FALSE);
- gtk_notebook_set_scrollable (GTK_NOTEBOOK (category_notebook), TRUE);
-
- create_audio_category();
- create_connectivity_category();
- create_playlist_category();
- create_song_info_category();
- create_plugin_category();
-
- hseparator1 = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_box_pack_start (GTK_BOX (vbox), hseparator1, FALSE, FALSE, 6);
-
- hbox4 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_pack_start (GTK_BOX (vbox), hbox4, FALSE, FALSE, 0);
-
- audversionlabel = gtk_label_new ("");
- gtk_box_pack_start (GTK_BOX (hbox4), audversionlabel, FALSE, FALSE, 0);
- gtk_label_set_use_markup (GTK_LABEL (audversionlabel), TRUE);
-
- prefswin_button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_box_pack_start (GTK_BOX (hbox4), prefswin_button_box, TRUE, TRUE, 0);
- gtk_button_box_set_layout (GTK_BUTTON_BOX (prefswin_button_box), GTK_BUTTONBOX_END);
- gtk_box_set_spacing (GTK_BOX (prefswin_button_box), 6);
-
- close = gtk_button_new_from_stock ("gtk-close");
- gtk_container_add (GTK_CONTAINER (prefswin_button_box), close);
- gtk_widget_set_can_default(close, TRUE);
- gtk_widget_add_accelerator (close, "clicked", accel_group,
- GDK_KEY_Escape, (GdkModifierType) 0,
- GTK_ACCEL_VISIBLE);
-
-
- gtk_window_add_accel_group (GTK_WINDOW (prefswin), accel_group);
-
- /* connect signals */
- g_signal_connect(G_OBJECT(prefswin), "delete_event",
- G_CALLBACK(prefswin_destroy),
- NULL);
- g_signal_connect_swapped(G_OBJECT(close), "clicked",
- G_CALLBACK(prefswin_destroy),
- prefswin);
-
- /* create category view */
+ gtk_notebook_set_show_tabs ((GtkNotebook *) category_notebook, FALSE);
+ gtk_notebook_set_show_border ((GtkNotebook *) category_notebook, FALSE);
+
+ create_appearance_category ();
+ create_audio_category ();
+ create_connectivity_category ();
+ create_playlist_category ();
+ create_song_info_category ();
+ create_plugin_category ();
+
+ GtkWidget * hseparator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_box_pack_start ((GtkBox *) vbox, hseparator, FALSE, FALSE, 6);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
+
+ GtkWidget * audversionlabel = gtk_label_new (aud_version_string);
+ gtk_box_pack_start ((GtkBox *) hbox, audversionlabel, FALSE, FALSE, 0);
+ gtk_label_set_use_markup ((GtkLabel *) audversionlabel, TRUE);
+
+ GtkWidget * prefswin_button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_box_pack_start ((GtkBox *) hbox, prefswin_button_box, TRUE, TRUE, 0);
+ gtk_button_box_set_layout ((GtkButtonBox *) prefswin_button_box, GTK_BUTTONBOX_END);
+ gtk_box_set_spacing ((GtkBox *) prefswin_button_box, 6);
+
+ GtkWidget * close = audgui_button_new (_("_Close"), "window-close",
+ (AudguiCallback) gtk_widget_destroy, prefswin);
+ gtk_container_add ((GtkContainer *) prefswin_button_box, close);
+ gtk_widget_set_can_default (close, TRUE);
+
fill_category_list ((GtkTreeView *) category_treeview, (GtkNotebook *) category_notebook);
- /* audacious version label */
+ gtk_widget_show_all (vbox);
- aud_version_string = g_strdup_printf
- ("<span size='small'>%s (%s)</span>", "Audacious " VERSION, BUILDSTAMP);
+ g_signal_connect (prefswin, "destroy", (GCallback) destroy_cb, NULL);
- gtk_label_set_markup( GTK_LABEL(audversionlabel) , aud_version_string );
- g_free(aud_version_string);
- gtk_widget_show_all(vbox);
+ audgui_destroy_on_escape (prefswin);
}
-void
-destroy_prefs_window(void)
+void show_prefs_window (void)
{
- prefswin_destroy(prefswin, NULL, NULL);
+ if (! prefswin)
+ create_prefs_window ();
+
+ change_category (CATEGORY_APPEARANCE);
+
+ gtk_window_present ((GtkWindow *) prefswin);
}
-void show_prefs_window (void)
+void show_prefs_for_plugin_type (int type)
{
if (! prefswin)
create_prefs_window ();
+ if (type == PLUGIN_TYPE_IFACE)
+ change_category (CATEGORY_APPEARANCE);
+ else if (type == PLUGIN_TYPE_OUTPUT)
+ change_category (CATEGORY_AUDIO);
+ else
+ {
+ change_category (CATEGORY_PLUGINS);
+
+ for (int i = 0; i < ARRAY_LEN (plugin_categories); i ++)
+ {
+ if (plugin_categories[i].type == type)
+ gtk_notebook_set_current_page ((GtkNotebook *) plugin_notebook, i);
+ }
+ }
+
gtk_window_present ((GtkWindow *) prefswin);
}
void hide_prefs_window (void)
{
- g_return_if_fail(prefswin);
- gtk_widget_hide(GTK_WIDGET(prefswin));
+ if (prefswin)
+ gtk_widget_destroy (prefswin);
}
diff --git a/src/audacious/ui_preferences.h b/src/audacious/ui_preferences.h
index ab91f1b..b9b2707 100644
--- a/src/audacious/ui_preferences.h
+++ b/src/audacious/ui_preferences.h
@@ -1,6 +1,6 @@
/*
* ui_preferences.h
- * Copyright 2006-2010 William Pitcock, Tomasz MoƄ, and John Lindgren
+ * Copyright 2006-2012 William Pitcock, Tomasz MoƄ, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -22,7 +22,7 @@
#include <gtk/gtk.h>
-#include "preferences.h"
+#include "types.h"
void show_prefs_window(void);
void hide_prefs_window(void);
diff --git a/src/audacious/util.c b/src/audacious/util.c
index 37455b5..3556e68 100644
--- a/src/audacious/util.c
+++ b/src/audacious/util.c
@@ -1,6 +1,6 @@
/*
* util.c
- * Copyright 2009-2012 John Lindgren and MichaƂ Lipski
+ * Copyright 2009-2013 John Lindgren and MichaƂ Lipski
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,7 +17,10 @@
* the use of this software.
*/
-#include <dirent.h>
+#include <ctype.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#ifdef _WIN32
@@ -29,11 +32,6 @@
#endif
#include <glib.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <errno.h>
#include <libaudcore/audstrings.h>
@@ -45,64 +43,64 @@
bool_t dir_foreach (const char * path, DirForeachFunc func, void * user)
{
- DIR * dir = opendir (path);
+ GDir * dir = g_dir_open (path, 0, NULL);
if (! dir)
return FALSE;
- struct dirent * entry;
- while ((entry = readdir (dir)))
+ const char * name;
+ while ((name = g_dir_read_name (dir)))
{
- if (entry->d_name[0] == '.')
- continue;
-
- char * full = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "%s", path, entry->d_name);
- bool_t stop = func (full, entry->d_name, user);
- g_free (full);
+ char * full = filename_build (path, name);
+ bool_t stop = func (full, name, user);
+ str_unref (full);
if (stop)
break;
}
- closedir (dir);
+ g_dir_close (dir);
return TRUE;
}
-char * construct_uri (const char * string, const char * playlist_name)
+char * construct_uri (const char * path, const char * reference)
{
/* URI */
- if (strstr (string, "://"))
- return strdup (string);
+ if (strstr (path, "://"))
+ return str_get (path);
- /* absolute filename (assumed UTF-8) */
+ /* absolute filename */
#ifdef _WIN32
- if (string[0] && string[1] == ':' && string[2] == '\\')
+ if (path[0] && path[1] == ':' && path[2] == '\\')
#else
- if (string[0] == '/')
+ if (path[0] == '/')
#endif
- return filename_to_uri (string);
+ return filename_to_uri (path);
- /* relative filename (assumed UTF-8) */
- const char * slash = strrchr (playlist_name, '/');
+ /* relative path */
+ const char * slash = strrchr (reference, '/');
if (! slash)
return NULL;
- int pathlen = slash + 1 - playlist_name;
- int rellen = strlen (string);
+ char * utf8 = str_to_utf8 (path, -1);
+ if (! utf8)
+ return NULL;
+
+ int pathlen = slash + 1 - reference;
- char buf[pathlen + 3 * rellen + 1];
- memcpy (buf, playlist_name, pathlen);
+ char buf[pathlen + 3 * strlen (utf8) + 1];
+ memcpy (buf, reference, pathlen);
if (get_bool (NULL, "convert_backslash"))
{
- char tmp[rellen + 1];
- strcpy (tmp, string);
- string_replace_char (tmp, '\\', '/');
+ SCOPY (tmp, utf8);
+ str_replace_char (tmp, '\\', '/');
str_encode_percent (tmp, -1, buf + pathlen);
}
else
- str_encode_percent (string, -1, buf + pathlen);
+ str_encode_percent (utf8, -1, buf + pathlen);
- return strdup (buf);
+ str_unref (utf8);
+ return str_get (buf);
}
void
@@ -117,13 +115,14 @@ make_directory(const char * path, mode_t mode)
char * write_temp_file (void * data, int64_t len)
{
- char * name = g_strdup_printf ("%s/audacious-temp-XXXXXX", g_get_tmp_dir ());
+ char * temp = filename_build (g_get_tmp_dir (), "audacious-temp-XXXXXX");
+ SCOPY (name, temp);
+ str_unref (temp);
int handle = g_mkstemp (name);
if (handle < 0)
{
fprintf (stderr, "Error creating temporary file: %s\n", strerror (errno));
- g_free (name);
return NULL;
}
@@ -134,7 +133,6 @@ char * write_temp_file (void * data, int64_t len)
{
fprintf (stderr, "Error writing %s: %s\n", name, strerror (errno));
close (handle);
- g_free (name);
return NULL;
}
@@ -145,72 +143,103 @@ char * write_temp_file (void * data, int64_t len)
if (close (handle) < 0)
{
fprintf (stderr, "Error closing %s: %s\n", name, strerror (errno));
- g_free (name);
return NULL;
}
- return name;
+ return str_get (name);
}
char * get_path_to_self (void)
{
-#if defined _WIN32 || defined HAVE_PROC_SELF_EXE
+#ifdef HAVE_PROC_SELF_EXE
int size = 256;
- char * buf = g_malloc (size);
while (1)
{
+ char buf[size];
int len;
-#ifdef _WIN32
- if (! (len = GetModuleFileName (NULL, buf, size)))
- {
- fprintf (stderr, "GetModuleFileName failed.\n");
- g_free (buf);
- return NULL;
- }
-#else
if ((len = readlink ("/proc/self/exe", buf, size)) < 0)
{
fprintf (stderr, "Cannot access /proc/self/exe: %s.\n", strerror (errno));
- g_free (buf);
return NULL;
}
-#endif
if (len < size)
{
buf[len] = 0;
- return buf;
+ return str_get (buf);
+ }
+
+ size += size;
+ }
+#elif defined _WIN32
+ int size = 256;
+
+ while (1)
+ {
+ wchar_t buf[size];
+ int len;
+
+ if (! (len = GetModuleFileNameW (NULL, buf, size)))
+ {
+ fprintf (stderr, "GetModuleFileName failed.\n");
+ return NULL;
+ }
+
+ if (len < size)
+ {
+ char * temp = g_utf16_to_utf8 (buf, len, NULL, NULL, NULL);
+ char * path = str_get (temp);
+ g_free (temp);
+ return path;
}
size += size;
- buf = g_realloc (buf, size);
}
#elif defined __APPLE__
unsigned int size = 256;
- char * buf = g_malloc (size);
while (1)
{
+ char buf[size];
int res;
if (! (res = _NSGetExecutablePath (buf, &size)))
- return buf;
+ return str_get (buf);
- if (res == -1)
- buf = g_realloc (buf, size);
- else
- {
- g_free (buf);
+ if (res != -1)
return NULL;
- }
}
#else
return NULL;
#endif
}
+#ifdef _WIN32
+void get_argv_utf8 (int * argc, char * * * argv)
+{
+ wchar_t * combined = GetCommandLineW ();
+ wchar_t * * split = CommandLineToArgvW (combined, argc);
+
+ * argv = g_new (char *, argc + 1);
+
+ for (int i = 0; i < * argc; i ++)
+ (* argv)[i] = g_utf16_to_utf8 (split[i], -1, NULL, NULL, NULL);
+
+ (* argv)[* argc] = 0;
+
+ LocalFree (split);
+}
+
+void free_argv_utf8 (int * argc, char * * * argv)
+{
+ g_strfreev (* argv);
+ * argc = 0;
+ * argv = NULL;
+}
+#endif
+
/* Strips various common top-level folders from a filename. The string passed
* will not be modified, but the string returned will share the same memory.
* Examples:
@@ -327,7 +356,7 @@ static char * stream_name (char * name)
static char * get_nonblank_field (const Tuple * tuple, int field)
{
- char * str = tuple ? tuple_get_str (tuple, field, NULL) : NULL;
+ char * str = tuple ? tuple_get_str (tuple, field) : NULL;
if (str && ! str[0])
{
@@ -375,13 +404,15 @@ DONE:
if (! filename)
goto DONE;
+ SCOPY (buf, filename);
+
char * base, * first, * second;
- split_filename (skip_top_folders (filename), & base, & first, & second);
+ split_filename (skip_top_folders (buf), & base, & first, & second);
if (! title)
title = str_get (base);
- for (int i = 0; i < G_N_ELEMENTS (skip); i ++)
+ for (int i = 0; i < ARRAY_LEN (skip); i ++)
{
if (first && ! g_ascii_strcasecmp (first, skip[i]))
first = NULL;
@@ -402,12 +433,11 @@ DONE:
album = str_get (first);
}
- free (filename);
+ str_unref (filename);
}
else
{
- char buf[strlen (name) + 1];
- strcpy (buf, name);
+ SCOPY (buf, name);
if (! title)
{
@@ -424,3 +454,21 @@ DONE:
goto DONE;
}
+
+char * last_path_element (char * path)
+{
+ char * slash = strrchr (path, G_DIR_SEPARATOR);
+ return (slash && slash[1]) ? slash + 1 : NULL;
+}
+
+void cut_path_element (char * path, char * elem)
+{
+#ifdef _WIN32
+ if (elem > path + 3)
+#else
+ if (elem > path + 1)
+#endif
+ elem[-1] = 0; /* overwrite slash */
+ else
+ elem[0] = 0; /* leave [drive letter and] leading slash */
+}
diff --git a/src/audacious/util.h b/src/audacious/util.h
index 1c244f5..7f92cb3 100644
--- a/src/audacious/util.h
+++ b/src/audacious/util.h
@@ -1,6 +1,6 @@
/*
* util.h
- * Copyright 2009-2011 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -30,11 +30,19 @@ typedef bool_t(*DirForeachFunc) (const char * path,
bool_t dir_foreach (const char * path, DirForeachFunc func, void * user_data);
void make_directory(const char * path, mode_t mode);
-char * write_temp_file (void * data, int64_t len);
+char * write_temp_file (void * data, int64_t len); /* pooled */
-char * get_path_to_self (void);
+char * get_path_to_self (void); /* pooled */
+
+#ifdef _WIN32
+void get_argv_utf8 (int * argc, char * * * argv);
+void free_argv_utf8 (int * argc, char * * * argv);
+#endif
void describe_song (const char * filename, const Tuple * tuple,
char * * title, char * * artist, char * * album);
+char * last_path_element (char * path);
+void cut_path_element (char * path, char * elem);
+
#endif /* AUDACIOUS_UTIL_H */
diff --git a/src/audacious/vis_runner.c b/src/audacious/vis_runner.c
index 0a6bead..ba8390c 100644
--- a/src/audacious/vis_runner.c
+++ b/src/audacious/vis_runner.c
@@ -1,6 +1,6 @@
/*
* vis_runner.c
- * Copyright 2009-2011 John Lindgren
+ * Copyright 2009-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,35 +17,85 @@
* the use of this software.
*/
-#include <glib.h>
+#include <assert.h>
#include <pthread.h>
#include <stdint.h>
#include <string.h>
+#include <glib.h>
+
#include "output.h"
#include "vis_runner.h"
#include "visualization.h"
#define INTERVAL 30 /* milliseconds */
+#define FRAMES_PER_NODE 512
-typedef struct {
- int time;
- float * data;
+struct _VisNode {
+ struct _VisNode * next;
int channels;
-} VisNode;
+ int time;
+ float data[];
+};
+
+typedef struct _VisNode VisNode;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static bool_t enabled = FALSE;
static bool_t playing = FALSE, paused = FALSE, active = FALSE;
static VisNode * current_node = NULL;
static int current_frames;
-static GQueue vis_list = G_QUEUE_INIT;
+static VisNode * vis_list = NULL;
+static VisNode * vis_list_tail = NULL;
+static VisNode * vis_pool = NULL;
static int send_source = 0, clear_source = 0;
-static void vis_node_free (VisNode * node)
+static VisNode * alloc_node_locked (int channels)
+{
+ VisNode * node;
+
+ if (vis_pool)
+ {
+ node = vis_pool;
+ assert (node->channels == channels);
+ vis_pool = node->next;
+ }
+ else
+ {
+ node = g_malloc (offsetof (VisNode, data) + sizeof (float) * channels * FRAMES_PER_NODE);
+ node->channels = channels;
+ }
+
+ node->next = NULL;
+ return node;
+}
+
+static void free_node_locked (VisNode * node)
+{
+ node->next = vis_pool;
+ vis_pool = node;
+}
+
+static void push_node_locked (VisNode * node)
{
- g_free (node->data);
- g_free (node);
+ if (vis_list)
+ vis_list_tail->next = node;
+ else
+ vis_list = node;
+
+ vis_list_tail = node;
+}
+
+static VisNode * pop_node_locked (void)
+{
+ VisNode * node = vis_list;
+ vis_list = node->next;
+ node->next = NULL;
+
+ if (vis_list_tail == node)
+ vis_list_tail = NULL;
+
+ return node;
}
static bool_t send_audio (void * unused)
@@ -62,21 +112,20 @@ static bool_t send_audio (void * unused)
}
VisNode * vis_node = NULL;
- VisNode * next;
- while ((next = g_queue_peek_head (& vis_list)))
+ while (vis_list)
{
/* If we are considering a node, stop searching and use it if it is the
* most recent (that is, the next one is in the future). Otherwise,
* consider the next node if it is not in the future by more than the
* length of an interval. */
- if (next->time > outputted + (vis_node ? 0 : INTERVAL))
+ if (vis_list->time > outputted + (vis_node ? 0 : INTERVAL))
break;
if (vis_node)
- vis_node_free (vis_node);
+ free_node_locked (vis_node);
- vis_node = g_queue_pop_head (& vis_list);
+ vis_node = pop_node_locked ();
}
pthread_mutex_unlock (& mutex);
@@ -86,7 +135,10 @@ static bool_t send_audio (void * unused)
vis_send_audio (vis_node->data, vis_node->channels);
- vis_node_free (vis_node);
+ pthread_mutex_lock (& mutex);
+ free_node_locked (vis_node);
+ pthread_mutex_unlock (& mutex);
+
return TRUE;
}
@@ -101,16 +153,26 @@ static bool_t send_clear (void * unused)
return FALSE;
}
-static void flush (void)
+static void flush_locked (void)
{
- if (current_node)
+ g_free (current_node);
+ current_node = NULL;
+
+ while (vis_list)
{
- vis_node_free (current_node);
- current_node = NULL;
+ VisNode * node = vis_list;
+ vis_list = node->next;
+ g_free (node);
}
- g_queue_foreach (& vis_list, (GFunc) vis_node_free, NULL);
- g_queue_clear (& vis_list);
+ vis_list_tail = NULL;
+
+ while (vis_pool)
+ {
+ VisNode * node = vis_pool;
+ vis_pool = node->next;
+ g_free (node);
+ }
if (! clear_source)
clear_source = g_timeout_add (0, send_clear, NULL);
@@ -119,11 +181,11 @@ static void flush (void)
void vis_runner_flush (void)
{
pthread_mutex_lock (& mutex);
- flush ();
+ flush_locked ();
pthread_mutex_unlock (& mutex);
}
-static void start_stop (bool_t new_playing, bool_t new_paused)
+static void start_stop_locked (bool_t new_playing, bool_t new_paused)
{
playing = new_playing;
paused = new_paused;
@@ -142,7 +204,7 @@ static void start_stop (bool_t new_playing, bool_t new_paused)
}
if (! active)
- flush ();
+ flush_locked ();
else if (! paused)
send_source = g_timeout_add (INTERVAL, send_audio, NULL);
}
@@ -150,7 +212,7 @@ static void start_stop (bool_t new_playing, bool_t new_paused)
void vis_runner_start_stop (bool_t new_playing, bool_t new_paused)
{
pthread_mutex_lock (& mutex);
- start_stop (new_playing, new_paused);
+ start_stop_locked (new_playing, new_paused);
pthread_mutex_unlock (& mutex);
}
@@ -166,20 +228,15 @@ void vis_runner_pass_audio (int time, float * data, int samples, int
* multiple nodes from the same call. If current_node is present, it was
* partly built in the last call and needs to be finished. */
- if (current_node && current_node->channels != channels)
- {
- vis_node_free (current_node);
- current_node = NULL;
- }
-
int at = 0;
while (1)
{
- if (! current_node)
+ if (current_node)
+ assert (current_node->channels == channels);
+ else
{
int node_time = time;
- VisNode * last;
/* There is no partly-built node, so start a new one. Normally
* there will be nodes in the queue already; if so, we want to copy
@@ -188,8 +245,8 @@ void vis_runner_pass_audio (int time, float * data, int samples, int
* queue, we are at the beginning of the song or had an underrun,
* and we want to copy the earliest audio data we have. */
- if ((last = g_queue_peek_tail (& vis_list)))
- node_time = last->time + INTERVAL;
+ if (vis_list_tail)
+ node_time = vis_list_tail->time + INTERVAL;
at = channels * (int) ((int64_t) (node_time - time) * rate / 1000);
@@ -198,10 +255,8 @@ void vis_runner_pass_audio (int time, float * data, int samples, int
if (at >= samples)
break;
- current_node = g_malloc (sizeof (VisNode));
+ current_node = alloc_node_locked (channels);
current_node->time = node_time;
- current_node->data = g_malloc (sizeof (float) * channels * 512);
- current_node->channels = channels;
current_frames = 0;
}
@@ -210,14 +265,14 @@ void vis_runner_pass_audio (int time, float * data, int samples, int
* wait for more data to be passed in the next call. If we do fill the
* node, we loop and start building a new one. */
- int copy = MIN (samples - at, channels * (512 - current_frames));
+ int copy = MIN (samples - at, channels * (FRAMES_PER_NODE - current_frames));
memcpy (current_node->data + channels * current_frames, data + at, sizeof (float) * copy);
current_frames += copy / channels;
- if (current_frames < 512)
+ if (current_frames < FRAMES_PER_NODE)
break;
- g_queue_push_tail (& vis_list, current_node);
+ push_node_locked (current_node);
current_node = NULL;
}
@@ -229,6 +284,6 @@ void vis_runner_enable (bool_t enable)
{
pthread_mutex_lock (& mutex);
enabled = enable;
- start_stop (playing, paused);
+ start_stop_locked (playing, paused);
pthread_mutex_unlock (& mutex);
}
diff --git a/src/audtool/Makefile b/src/audtool/Makefile
index fa78492..90c822c 100644
--- a/src/audtool/Makefile
+++ b/src/audtool/Makefile
@@ -6,18 +6,13 @@ SRCS = main.c \
handlers_playqueue.c \
handlers_vitals.c \
handlers_equalizer.c \
- report.c
+ report.c \
+ wrappers.c
+
+EXT_DEPS += ../dbus/aud-dbus.a
include ../../buildsys.mk
include ../../extra.mk
-CPPFLAGS := -I.. -I../.. \
- ${CPPFLAGS} \
- ${AUDACIOUS_DEFINES} \
- ${DBUS_CFLAGS} \
- ${GTK_CFLAGS}
-
-LIBS := -L../libaudclient -laudclient \
- ${LIBS} \
- ${DBUS_LIBS} \
- ${GTK_LIBS}
+CPPFLAGS := -I../.. -I../dbus ${CPPFLAGS} ${GLIB_CFLAGS} ${GIO_CFLAGS}
+LIBS := ../dbus/aud-dbus.a ${LIBS} ${GLIB_LIBS} ${GIO_LIBS}
diff --git a/src/audtool/audtool.h b/src/audtool/audtool.h
index 6db161e..cb62488 100644
--- a/src/audtool/audtool.h
+++ b/src/audtool/audtool.h
@@ -21,112 +21,117 @@
#ifndef AUDTOOL_H
#define AUDTOOL_H
-#include <audacious/dbus.h>
-
-extern DBusGProxy *dbus_proxy;
-
-struct commandhandler {
- gchar *name;
- void (*handler)(gint argc, gchar **argv);
- gchar *desc;
- gint args;
+#include "aud-dbus.h"
+
+struct commandhandler
+{
+ char * name;
+ void (* handler) (int argc, char * * argv);
+ char * desc;
+ int args;
};
-extern struct commandhandler handlers[];
-
-extern void audtool_report(const gchar *str, ...);
-extern void audtool_whine(const gchar *str, ...);
-extern void audtool_whine_args(const gchar *name, const gchar *str, ...);
-extern void audtool_whine_tuple_fields(void);
-
-extern void get_handlers_list(gint, gchar **);
-extern void get_current_song(gint, gchar **);
-extern void get_current_song_filename(gint, gchar **);
-extern void get_current_song_length(gint, gchar **);
-extern void get_current_song_length_seconds(gint, gchar **);
-extern void get_current_song_length_frames(gint, gchar **);
-extern void get_current_song_output_length(gint, gchar **);
-extern void get_current_song_output_length_seconds(gint, gchar **);
-extern void get_current_song_output_length_frames(gint, gchar **);
-extern void get_current_song_bitrate(gint, gchar **);
-extern void get_current_song_bitrate_kbps(gint, gchar **);
-extern void get_current_song_frequency(gint, gchar **);
-extern void get_current_song_frequency_khz(gint, gchar **);
-extern void get_current_song_channels(gint, gchar **);
-extern void get_current_song_tuple_field_data(gint, gchar **argv);
-extern void get_current_song_info(gint argc, gchar **argv);
-
-extern void get_volume(gint, gchar **);
-extern void set_volume(gint, gchar **);
-
-extern void playlist_position(gint, gchar **);
-extern void playlist_advance(gint, gchar **);
-extern void playlist_auto_advance_status(gint, gchar **);
-extern void playlist_auto_advance_toggle(gint, gchar **);
-extern void playlist_reverse(gint, gchar **);
-extern void playlist_length(gint, gchar **);
-extern void playlist_song(gint, gchar **);
-extern void playlist_song_filename(gint, gchar **);
-extern void playlist_song_length(gint, gchar **);
-extern void playlist_song_length_seconds(gint, gchar **);
-extern void playlist_song_length_frames(gint, gchar **);
-extern void playlist_display(gint, gchar **);
-extern void playlist_position(gint, gchar **);
-extern void playlist_jump(gint, gchar **);
-extern void playlist_add_url_string(gint, gchar **);
-extern void playlist_delete(gint, gchar **);
-extern void playlist_clear(gint, gchar **);
-extern void playlist_repeat_status(gint, gchar **);
-extern void playlist_repeat_toggle(gint, gchar **);
-extern void playlist_shuffle_status(gint, gchar **);
-extern void playlist_shuffle_toggle(gint, gchar **);
-void playlist_stop_after_status (gint argc, gchar * * argv);
-void playlist_stop_after_toggle (gint argc, gchar * * argv);
-extern void playlist_tuple_field_data(gint, gchar **argv);
-extern void playlist_enqueue_to_temp(gint argc, gchar **argv);
-extern void playlist_ins_url_string(gint argc, gchar **argv);
-extern void playlist_title(gint, gchar **);
-
-extern void playqueue_add(gint, gchar **);
-extern void playqueue_remove(gint, gchar **);
-extern void playqueue_is_queued(gint, gchar **);
-extern void playqueue_get_queue_position(gint, gchar **);
-extern void playqueue_get_list_position(gint, gchar **);
-extern void playqueue_display(gint, gchar **);
-extern void playqueue_length(gint, gchar **);
-extern void playqueue_clear(gint, gchar **);
-
-extern void playback_play(gint, gchar **);
-extern void playback_pause(gint, gchar **);
-extern void playback_playpause(gint, gchar **);
-extern void playback_stop(gint, gchar **);
-extern void playback_playing(gint, gchar **);
-extern void playback_paused(gint, gchar **);
-extern void playback_stopped(gint, gchar **);
-extern void playback_status(gint, gchar **);
-extern void playback_seek(gint, gchar **);
-extern void playback_seek_relative(gint, gchar **);
-
-extern void mainwin_show(gint, gchar **);
-extern void show_preferences_window(gint, gchar **);
-extern void show_jtf_window(gint, gchar **);
-extern void show_filebrowser(gint, gchar **);
-extern void shutdown_audacious_server(gint, gchar **);
-extern void show_about_window(gint, gchar **);
-
-extern void toggle_aot(gint argc, gchar **argv);
-extern void get_skin(gint argc, gchar **argv);
-extern void set_skin(gint argc, gchar **argv);
-extern void get_version(gint argc, gchar **argv);
-
-extern void equalizer_get_eq(gint argc, gchar **argv);
-extern void equalizer_get_eq_preamp(gint argc, gchar **argv);
-extern void equalizer_get_eq_band(gint argc, gchar **argv);
-extern void equalizer_set_eq(gint argc, gchar **argv);
-extern void equalizer_set_eq_preamp(gint argc, gchar **argv);
-extern void equalizer_set_eq_band(gint argc, gchar **argv);
-extern void equalizer_active(gint argc, gchar **argv);
-
-extern gint check_args_playlist_pos(gint argc, gchar **argv);
+extern const struct commandhandler handlers[];
+extern ObjAudacious * dbus_proxy;
+
+void audtool_report (const char * str, ...);
+void audtool_whine (const char * str, ...);
+void audtool_whine_args (const char * name, const char * str, ...);
+void audtool_whine_tuple_fields (void);
+
+void get_handlers_list (int, char * *);
+void get_current_song (int, char * *);
+void get_current_song_filename (int, char * *);
+void get_current_song_length (int, char * *);
+void get_current_song_length_seconds (int, char * *);
+void get_current_song_length_frames (int, char * *);
+void get_current_song_output_length (int, char * *);
+void get_current_song_output_length_seconds (int, char * *);
+void get_current_song_output_length_frames (int, char * *);
+void get_current_song_bitrate (int, char * *);
+void get_current_song_bitrate_kbps (int, char * *);
+void get_current_song_frequency (int, char * *);
+void get_current_song_frequency_khz (int, char * *);
+void get_current_song_channels (int, char * *);
+void get_current_song_tuple_field_data (int, char * * argv);
+void get_current_song_info (int argc, char * * argv);
+
+void get_volume (int, char * *);
+void set_volume (int, char * *);
+
+void playlist_position (int, char * *);
+void playlist_advance (int, char * *);
+void playlist_auto_advance_status (int, char * *);
+void playlist_auto_advance_toggle (int, char * *);
+void playlist_reverse (int, char * *);
+void playlist_length (int, char * *);
+void playlist_song (int, char * *);
+void playlist_song_filename (int, char * *);
+void playlist_song_length (int, char * *);
+void playlist_song_length_seconds (int, char * *);
+void playlist_song_length_frames (int, char * *);
+void playlist_display (int, char * *);
+void playlist_position (int, char * *);
+void playlist_jump (int, char * *);
+void playlist_add_url_string (int, char * *);
+void playlist_delete (int, char * *);
+void playlist_clear (int, char * *);
+void playlist_repeat_status (int, char * *);
+void playlist_repeat_toggle (int, char * *);
+void playlist_shuffle_status (int, char * *);
+void playlist_shuffle_toggle (int, char * *);
+void playlist_stop_after_status (int argc, char * * argv);
+void playlist_stop_after_toggle (int argc, char * * argv);
+void playlist_tuple_field_data (int, char * * argv);
+void playlist_enqueue_to_temp (int argc, char * * argv);
+void playlist_ins_url_string (int argc, char * * argv);
+
+void number_of_playlists (int argc, char * * argv);
+void current_playlist (int argc, char * * argv);
+void set_current_playlist (int argc, char * * argv);
+void playlist_title (int argc, char * * argv);
+void set_playlist_title (int argc, char * * argv);
+void new_playlist (int argc, char * * argv);
+void delete_current_playlist (int argc, char * * argv);
+void play_current_playlist (int argc, char * * argv);
+
+void playqueue_add (int, char * *);
+void playqueue_remove (int, char * *);
+void playqueue_is_queued (int, char * *);
+void playqueue_get_queue_position (int, char * *);
+void playqueue_get_list_position (int, char * *);
+void playqueue_display (int, char * *);
+void playqueue_length (int, char * *);
+void playqueue_clear (int, char * *);
+
+void playback_play (int, char * *);
+void playback_pause (int, char * *);
+void playback_playpause (int, char * *);
+void playback_stop (int, char * *);
+void playback_playing (int, char * *);
+void playback_paused (int, char * *);
+void playback_stopped (int, char * *);
+void playback_status (int, char * *);
+void playback_seek (int, char * *);
+void playback_seek_relative (int, char * *);
+
+void mainwin_show (int, char * *);
+void show_preferences_window (int, char * *);
+void show_jtf_window (int, char * *);
+void show_filebrowser (int, char * *);
+void shutdown_audacious_server (int, char * *);
+void show_about_window (int, char * *);
+
+void get_version (int argc, char * * argv);
+
+void equalizer_get_eq (int argc, char * * argv);
+void equalizer_get_eq_preamp (int argc, char * * argv);
+void equalizer_get_eq_band (int argc, char * * argv);
+void equalizer_set_eq (int argc, char * * argv);
+void equalizer_set_eq_preamp (int argc, char * * argv);
+void equalizer_set_eq_band (int argc, char * * argv);
+void equalizer_active (int argc, char * * argv);
+
+int check_args_playlist_pos (int argc, char * * argv);
#endif
diff --git a/src/audtool/handlers_equalizer.c b/src/audtool/handlers_equalizer.c
index 2a35ff0..4c70126 100644
--- a/src/audtool/handlers_equalizer.c
+++ b/src/audtool/handlers_equalizer.c
@@ -1,6 +1,6 @@
/*
* handlers_equalizer.c
- * Copyright 2007-2008 Yoshiki Yazawa and Matti HÀmÀlÀinen
+ * Copyright 2007-2013 Yoshiki Yazawa, Matti HÀmÀlÀinen, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -19,125 +19,105 @@
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
+#include "wrappers.h"
+
+#define NUM_BANDS 10
-void equalizer_get_eq(gint argc, gchar **argv)
+void equalizer_get_eq (int argc, char * * argv)
{
- double preamp;
- GArray *bands;
- int i;
+ double preamp = 0.0;
+ GVariant * var = NULL;
- audacious_remote_get_eq(dbus_proxy, &preamp, &bands);
+ obj_audacious_call_get_eq_sync (dbus_proxy, & preamp, & var, NULL, NULL);
- audtool_report("preamp = %.2f", preamp);
- for(i=0; i<10; i++){
- printf("%.2f ", g_array_index(bands, gdouble, i));
- }
- printf("\n");
- g_array_free(bands, TRUE);
+ if (! var || ! g_variant_is_of_type (var, G_VARIANT_TYPE ("ad")))
+ exit (1);
+
+ audtool_report ("preamp = %.2f", preamp);
+
+ size_t nbands = 0;
+ const double * bands = g_variant_get_fixed_array (var, & nbands, sizeof (double));
+
+ if (nbands != NUM_BANDS)
+ exit (1);
+
+ for (int i = 0; i < NUM_BANDS; i ++)
+ printf ("%.2f ", bands[i]);
+
+ printf ("\n");
+ g_variant_unref (var);
}
-void equalizer_get_eq_preamp(gint argc, gchar **argv)
+void equalizer_get_eq_preamp (int argc, char * * argv)
{
- audtool_report("preamp = %.2f", audacious_remote_get_eq_preamp(dbus_proxy));
+ double preamp = 0;
+ obj_audacious_call_get_eq_preamp_sync (dbus_proxy, & preamp, NULL, NULL);
+ audtool_report ("preamp = %.2f", preamp);
}
-void equalizer_get_eq_band(gint argc, gchar **argv)
+void equalizer_get_eq_band (int argc, char * * argv)
{
- int band;
-
if (argc < 2)
{
- audtool_whine_args(argv[0], "<band>");
- exit(1);
- }
-
- band = atoi(argv[1]);
-
- /* FIXME, XXX, TODO: we should have a function for requesting
- * the actual number of bands, if we support dynamic amount some day ...
- * -- ccr
- */
- if (band < 0 || band > 9)
- {
- audtool_whine("band number out of range\n");
- exit(1);
+ audtool_whine_args (argv[0], "<band>");
+ exit (1);
}
- audtool_report("band %d = %.2f", band, audacious_remote_get_eq_band(dbus_proxy, band));
+ int band = atoi (argv[1]);
+ double level = 0;
+ obj_audacious_call_get_eq_band_sync (dbus_proxy, band, & level, NULL, NULL);
+ audtool_report ("band %d = %.2f", band, level);
}
-void equalizer_set_eq(gint argc, gchar **argv)
+void equalizer_set_eq (int argc, char * * argv)
{
- gdouble preamp;
- GArray *bands = g_array_sized_new(FALSE, FALSE, sizeof(gdouble), 10);
- int i;
-
- if (argc < 12)
+ if (argc < 2 + NUM_BANDS)
{
- audtool_whine_args(argv[0], "<preamp> <band0> <band1> <band2> <band3> <band4> <band5> <band6> <band7> <band8> <band9>");
- exit(1);
+ audtool_whine_args (argv[0], "<preamp> <band0> <band1> <band2> <band3> "
+ "<band4> <band5> <band6> <band7> <band8> <band9>");
+ exit (1);
}
- preamp = atof(argv[1]);
+ double preamp = atof (argv[1]);
+ double bands[NUM_BANDS];
- for(i=0; i<10; i++){
- gdouble val = atof(argv[i+2]);
- g_array_append_val(bands, val);
- }
+ for (int i = 0; i < NUM_BANDS; i ++)
+ bands[i] = atof (argv[i + 2]);
- audacious_remote_set_eq(dbus_proxy, preamp, bands);
+ GVariant * var = g_variant_new_fixed_array (G_VARIANT_TYPE_DOUBLE, bands,
+ NUM_BANDS, sizeof (double));
+ obj_audacious_call_set_eq_sync (dbus_proxy, preamp, var, NULL, NULL);
}
-void equalizer_set_eq_preamp(gint argc, gchar **argv)
+void equalizer_set_eq_preamp (int argc, char * * argv)
{
- gdouble preamp;
-
if (argc < 2)
{
- audtool_whine_args(argv[0], "<preamp>");
- exit(1);
+ audtool_whine_args (argv[0], "<preamp>");
+ exit (1);
}
- preamp = atof(argv[1]);
-
- audacious_remote_set_eq_preamp(dbus_proxy, preamp);
+ double preamp = atof (argv[1]);
+ obj_audacious_call_set_eq_preamp_sync (dbus_proxy, preamp, NULL, NULL);
}
-void equalizer_set_eq_band(gint argc, gchar **argv)
+void equalizer_set_eq_band (int argc, char * * argv)
{
- int band;
- gdouble preamp;
-
if (argc < 3)
{
- audtool_whine_args(argv[0], "<band> <value>");
- exit(1);
+ audtool_whine_args (argv[0], "<band> <value>");
+ exit (1);
}
- band = atoi(argv[1]);
- preamp = atof(argv[2]);
-
- audacious_remote_set_eq_band(dbus_proxy, band, preamp);
+ int band = atoi (argv[1]);
+ double level = atof (argv[2]);
+ obj_audacious_call_set_eq_band_sync (dbus_proxy, band, level, NULL, NULL);
}
-void equalizer_active(gint argc, gchar **argv)
+void equalizer_active (int argc, char * * argv)
{
- if (argc < 2)
- {
- audtool_whine_args(argv[0], "<on/off>");
- exit(1);
- }
-
- if (!g_ascii_strcasecmp(argv[1], "on")) {
- audacious_remote_eq_activate(dbus_proxy, TRUE);
- }
- else if (!g_ascii_strcasecmp(argv[1], "off")) {
- audacious_remote_eq_activate(dbus_proxy, FALSE);
- }
+ generic_on_off (argc, argv, obj_audacious_call_equalizer_activate_sync);
}
diff --git a/src/audtool/handlers_general.c b/src/audtool/handlers_general.c
index 5933e54..e1ff2c2 100644
--- a/src/audtool/handlers_general.c
+++ b/src/audtool/handlers_general.c
@@ -1,7 +1,7 @@
/*
* handlers_general.c
- * Copyright 2005-2008 George Averill, William Pitcock, Giacomo Lozito, and
- * Matti HÀmÀlÀinen
+ * Copyright 2005-2013 George Averill, William Pitcock, Giacomo Lozito,
+ * Matti HÀmÀlÀinen, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -19,211 +19,96 @@
*/
#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
+#include "wrappers.h"
-void get_volume(gint argc, gchar **argv)
+static int get_main_volume (void)
{
- gint i;
-
- i = audacious_remote_get_main_volume(dbus_proxy);
-
- audtool_report("%d", i);
+ int left = 0, right = 0;
+ obj_audacious_call_volume_sync (dbus_proxy, & left, & right, NULL, NULL);
+ return MAX (left, right);
}
-void set_volume(gint argc, gchar **argv)
+void get_volume (int argc, char * * argv)
{
- gint i, current_volume;
-
- if (argc < 2)
- {
- audtool_whine_args(argv[0], "<level>", argv[0]);
- exit(1);
- }
-
- current_volume = audacious_remote_get_main_volume(dbus_proxy);
- switch (argv[1][0])
- {
- case '+':
- case '-':
- i = current_volume + atoi(argv[1]);
- break;
- default:
- i = atoi(argv[1]);
- break;
- }
-
- audacious_remote_set_main_volume(dbus_proxy, i);
+ audtool_report ("%d", get_main_volume ());
}
-void mainwin_show(gint argc, gchar **argv)
+void set_volume (int argc, char * * argv)
{
- if (argc < 2) {
- audtool_whine_args(argv[0], "<on/off>");
- exit(1);
- }
-
- if (!g_ascii_strcasecmp(argv[1], "on")) {
- audacious_remote_main_win_toggle(dbus_proxy, TRUE);
- return;
- }
- else if (!g_ascii_strcasecmp(argv[1], "off")) {
- audacious_remote_main_win_toggle(dbus_proxy, FALSE);
- return;
+ if (argc < 2)
+ {
+ audtool_whine_args (argv[0], "<level>");
+ exit (1);
}
-}
-void show_preferences_window(gint argc, gchar **argv)
-{
- gboolean show = TRUE;
-
- if (argc < 2) {
-#if 0
- audtool_whine_args(argv[0], "<on/off>");
- exit(1);
-#else
- audacious_remote_toggle_prefs_box(dbus_proxy, show);
- return;
-#endif
- }
+ int vol = atoi (argv[1]);
- if (!g_ascii_strcasecmp(argv[1], "on"))
- show = TRUE;
- else if (!g_ascii_strcasecmp(argv[1], "off"))
- show = FALSE;
- else {
- audtool_whine_args(argv[0], "<on/off>");
- exit (1);
+ switch (argv[1][0])
+ {
+ case '+':
+ case '-':
+ vol += get_main_volume ();
+ break;
}
- audacious_remote_toggle_prefs_box(dbus_proxy, show);
+ obj_audacious_call_set_volume_sync (dbus_proxy, vol, vol, NULL, NULL);
}
-void show_about_window(gint argc, gchar **argv)
+void mainwin_show (int argc, char * * argv)
{
- gboolean show = TRUE;
-
- if (argc < 2) {
-#if 0
- audtool_whine_args(argv[0], "<on/off>");
- exit(1);
-#else
- audacious_remote_toggle_about_box(dbus_proxy, show);
- return;
-#endif
- }
-
- if (!g_ascii_strcasecmp(argv[1], "on"))
- show = TRUE;
- else if (!g_ascii_strcasecmp(argv[1], "off"))
- show = FALSE;
- else {
- audtool_whine_args(argv[0], "<on/off>");
- exit (1);
- }
-
- audacious_remote_toggle_about_box(dbus_proxy, show);
+ generic_on_off (argc, argv, obj_audacious_call_show_main_win_sync);
}
-void show_jtf_window(gint argc, gchar **argv)
+void show_preferences_window (int argc, char * * argv)
{
- gboolean show = TRUE;
-
- if (argc < 2) {
-#if 0
- audtool_whine_args(argv[0], "<on/off>");
- exit(1);
-#else
- audacious_remote_toggle_jtf_box(dbus_proxy, show);
- return;
-#endif
- }
- if (!g_ascii_strcasecmp(argv[1], "on"))
- show = TRUE;
- else if (!g_ascii_strcasecmp(argv[1], "off"))
- show = FALSE;
- else {
- audtool_whine_args(argv[0], "<on/off>");
- exit (1);
- }
-
- audacious_remote_toggle_jtf_box(dbus_proxy, show);
+ generic_on_off (argc, argv, obj_audacious_call_show_prefs_box_sync);
}
-void show_filebrowser(gint argc, gchar **argv)
+void show_about_window (int argc, char * * argv)
{
- gboolean show = TRUE;
-
- if (argc < 2) {
-#if 0
- audtool_whine_args(argv[0], "<on/off>");
- exit(1);
-#else
- audacious_remote_toggle_filebrowser(dbus_proxy, show);
- return;
-#endif
- }
-
- if (!g_ascii_strcasecmp(argv[1], "on"))
- show = TRUE;
- else if (!g_ascii_strcasecmp(argv[1], "off"))
- show = FALSE;
- else {
- audtool_whine_args(argv[0], "<on/off>");
- exit (1);
- }
+ generic_on_off (argc, argv, obj_audacious_call_show_about_box_sync);
+}
- audacious_remote_toggle_filebrowser(dbus_proxy, show);
+void show_jtf_window (int argc, char * * argv)
+{
+ generic_on_off (argc, argv, obj_audacious_call_show_jtf_box_sync);
}
-void shutdown_audacious_server(gint argc, gchar **argv)
+void show_filebrowser (int argc, char * * argv)
{
- audacious_remote_quit(dbus_proxy);
+ generic_on_off (argc, argv, obj_audacious_call_show_filebrowser_sync);
}
-void get_handlers_list(gint argc, gchar **argv)
+void shutdown_audacious_server (int argc, char * * argv)
{
- gint i;
-
- for (i = 0; handlers[i].name != NULL; i++)
- {
- if (!g_ascii_strcasecmp("<sep>", handlers[i].name))
- audtool_report("%s%s:", i == 0 ? "" : "\n", handlers[i].desc);
- else
- audtool_report(" %-34s - %s", handlers[i].name, handlers[i].desc);
- }
-
- audtool_report("");
- audtool_report("Handlers may be prefixed with `--' (GNU-style long-options) or not, your choice.");
- audtool_report("Report bugs to http://redmine.audacious-media-player.org/");
+ obj_audacious_call_quit_sync (dbus_proxy, NULL, NULL);
}
-void toggle_aot(gint argc, gchar **argv)
+void get_handlers_list (int argc, char * * argv)
{
- if (argc < 2)
+ for (int i = 0; handlers[i].name; i ++)
{
- audtool_whine_args(argv[0], "<on/off>");
- exit(1);
+ if (! g_ascii_strcasecmp ("<sep>", handlers[i].name))
+ audtool_report ("%s%s:", i == 0 ? "" : "\n", handlers[i].desc);
+ else
+ audtool_report (" %-34s - %s", handlers[i].name, handlers[i].desc);
}
- if (!g_ascii_strcasecmp(argv[1], "on")) {
- audacious_remote_toggle_aot(dbus_proxy, TRUE);
- return;
- }
- else if (!g_ascii_strcasecmp(argv[1], "off")) {
- audacious_remote_toggle_aot(dbus_proxy, FALSE);
- return;
- }
+ audtool_report ("");
+ audtool_report ("Handlers may be prefixed with `--' (GNU-style long-options) or not, your choice.");
+ audtool_report ("Report bugs to http://redmine.audacious-media-player.org/");
}
-void get_version(gint argc, gchar **argv)
+void get_version (int argc, char * * argv)
{
- gchar *version = NULL;
- version = audacious_remote_get_version(dbus_proxy);
- if(version)
- audtool_report("Audacious %s", version);
- g_free(version);
+ char * version = NULL;
+ obj_audacious_call_version_sync (dbus_proxy, & version, NULL, NULL);
+
+ if (! version)
+ exit (1);
+
+ audtool_report ("Audacious %s", version);
+ g_free (version);
}
diff --git a/src/audtool/handlers_playback.c b/src/audtool/handlers_playback.c
index 754169e..4e7e17f 100644
--- a/src/audtool/handlers_playback.c
+++ b/src/audtool/handlers_playback.c
@@ -1,6 +1,7 @@
/*
* handlers_playback.c
- * Copyright 2005-2008 George Averill, William Pitcock, and Matti HÀmÀlÀinen
+ * Copyright 2005-2013 George Averill, William Pitcock, Matti HÀmÀlÀinen, and
+ * John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -18,111 +19,85 @@
*/
#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
-void playback_play(gint argc, gchar **argv)
+void playback_play (int argc, char * * argv)
{
- audacious_remote_play(dbus_proxy);
+ obj_audacious_call_play_sync (dbus_proxy, NULL, NULL);
}
-void playback_pause(gint argc, gchar **argv)
+void playback_pause (int argc, char * * argv)
{
- audacious_remote_pause(dbus_proxy);
+ obj_audacious_call_pause_sync (dbus_proxy, NULL, NULL);
}
-void playback_playpause(gint argc, gchar **argv)
+void playback_playpause (int argc, char * * argv)
{
- if (audacious_remote_is_playing(dbus_proxy))
- {
- audacious_remote_pause(dbus_proxy);
- }
- else
- {
- audacious_remote_play(dbus_proxy);
- }
+ obj_audacious_call_play_pause_sync (dbus_proxy, NULL, NULL);
}
-void playback_stop(gint argc, gchar **argv)
+void playback_stop (int argc, char * * argv)
{
- audacious_remote_stop(dbus_proxy);
+ obj_audacious_call_stop_sync (dbus_proxy, NULL, NULL);
}
-void playback_playing(gint argc, gchar **argv)
+void playback_playing (int argc, char * * argv)
{
- if (!audacious_remote_is_paused(dbus_proxy))
- {
- exit(!audacious_remote_is_playing(dbus_proxy));
- }
- else
- {
- exit(1);
- }
-}
+ gboolean playing = FALSE;
+ obj_audacious_call_playing_sync (dbus_proxy, & playing, NULL, NULL);
-void playback_paused(gint argc, gchar **argv)
-{
- exit(!audacious_remote_is_paused(dbus_proxy));
+ exit (! playing);
}
-void playback_stopped(gint argc, gchar **argv)
+void playback_paused (int argc, char * * argv)
{
- if (!audacious_remote_is_playing(dbus_proxy) && !audacious_remote_is_paused(dbus_proxy))
- {
- exit(0);
- }
- else
- {
- exit(1);
- }
+ gboolean paused = FALSE;
+ obj_audacious_call_paused_sync (dbus_proxy, & paused, NULL, NULL);
+
+ exit (! paused);
}
-void playback_status(gint argc, gchar **argv)
+void playback_stopped (int argc, char * * argv)
{
- if (audacious_remote_is_paused(dbus_proxy))
- {
- audtool_report("paused");
- return;
- }
- else if (audacious_remote_is_playing(dbus_proxy))
- {
- audtool_report("playing");
- return;
- }
- else
- {
- audtool_report("stopped");
- return;
- }
+ gboolean stopped = FALSE;
+ obj_audacious_call_stopped_sync (dbus_proxy, & stopped, NULL, NULL);
+
+ exit (! stopped);
}
-void playback_seek(gint argc, gchar **argv)
+void playback_status (int argc, char * * argv)
{
- if (argc < 2)
- {
- audtool_whine_args(argv[0], "<position>");
- exit(1);
- }
+ char * status = NULL;
+ obj_audacious_call_status_sync (dbus_proxy, & status, NULL, NULL);
+
+ if (! status)
+ exit (1);
- audacious_remote_jump_to_time(dbus_proxy, atof(argv[1]) * 1000);
+ audtool_report ("%s", status);
+ g_free (status);
}
-void playback_seek_relative(gint argc, gchar **argv)
+void playback_seek (int argc, char * * argv)
{
- gint oldtime, newtime, diff;
+ if (argc < 2)
+ {
+ audtool_whine_args (argv[0], "<position>");
+ exit (1);
+ }
- if (argc < 2)
- {
- audtool_whine_args(argv[0], "<position>");
- exit(1);
- }
+ obj_audacious_call_seek_sync (dbus_proxy, atof (argv[1]) * 1000, NULL, NULL);
+}
- oldtime = audacious_remote_get_output_time(dbus_proxy);
- diff = atof(argv[1]) * 1000;
- newtime = oldtime + diff;
+void playback_seek_relative (int argc, char * * argv)
+{
+ if (argc < 2)
+ {
+ audtool_whine_args (argv[0], "<position>");
+ exit (1);
+ }
- audacious_remote_jump_to_time(dbus_proxy, newtime);
+ unsigned oldtime = 0;
+ obj_audacious_call_time_sync (dbus_proxy, & oldtime, NULL, NULL);
+ obj_audacious_call_seek_sync (dbus_proxy, oldtime + atof (argv[1]) * 1000, NULL, NULL);
}
diff --git a/src/audtool/handlers_playlist.c b/src/audtool/handlers_playlist.c
index b834bd7..21e8f64 100644
--- a/src/audtool/handlers_playlist.c
+++ b/src/audtool/handlers_playlist.c
@@ -1,6 +1,6 @@
/*
* handlers_playlist.c
- * Copyright 2005-2011 George Averill, William Pitcock, Yoshiki Yazawa,
+ * Copyright 2005-2013 George Averill, William Pitcock, Yoshiki Yazawa,
* Matti HÀmÀlÀinen, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -20,362 +20,347 @@
#include <stdlib.h>
#include <string.h>
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
+#include "wrappers.h"
-void playlist_reverse(gint argc, gchar **argv)
+void playlist_reverse (int argc, char * * argv)
{
- audacious_remote_playlist_prev(dbus_proxy);
+ obj_audacious_call_reverse_sync (dbus_proxy, NULL, NULL);
}
-void playlist_advance(gint argc, gchar **argv)
+void playlist_advance (int argc, char * * argv)
{
- audacious_remote_playlist_next(dbus_proxy);
+ obj_audacious_call_advance_sync (dbus_proxy, NULL, NULL);
}
-void playlist_auto_advance_status(gint argc, gchar **argv)
+void playlist_auto_advance_status (int argc, char * * argv)
{
- if (audacious_remote_is_advance(dbus_proxy))
- {
- audtool_report("on");
- }
- else
- {
- audtool_report("off");
- }
+ gboolean advance = FALSE;
+ obj_audacious_call_auto_advance_sync (dbus_proxy, & advance, NULL, NULL);
+ audtool_report (advance ? "on" : "off");
}
-void playlist_auto_advance_toggle(gint argc, gchar **argv)
+void playlist_auto_advance_toggle (int argc, char * * argv)
{
- audacious_remote_toggle_advance(dbus_proxy);
+ obj_audacious_call_toggle_auto_advance_sync (dbus_proxy, NULL, NULL);
}
-void playlist_stop_after_status (gint argc, gchar * * argv)
+void playlist_stop_after_status (int argc, char * * argv)
{
- audtool_report (audacious_remote_is_stop_after (dbus_proxy) ? "on" : "off");
+ gboolean stop_after = FALSE;
+ obj_audacious_call_stop_after_sync (dbus_proxy, & stop_after, NULL, NULL);
+ audtool_report (stop_after ? "on" : "off");
}
-void playlist_stop_after_toggle (gint argc, gchar * * argv)
+void playlist_stop_after_toggle (int argc, char * * argv)
{
- audacious_remote_toggle_stop_after (dbus_proxy);
+ obj_audacious_call_toggle_stop_after_sync (dbus_proxy, NULL, NULL);
}
-gint check_args_playlist_pos(gint argc, gchar **argv)
+int check_args_playlist_pos (int argc, char * * argv)
{
- gint playpos;
-
- if (argc < 2)
- {
- audtool_whine_args(argv[0], "<position>");
- exit(1);
- }
-
- playpos = atoi(argv[1]);
+ int pos;
- if (playpos < 1 || playpos > audacious_remote_get_playlist_length(dbus_proxy))
- {
- audtool_whine("invalid playlist position %d ('%s')\n", playpos, argv[1]);
- exit(2);
- }
+ if (argc < 2 || (pos = atoi (argv[1])) < 1)
+ {
+ audtool_whine_args (argv[0], "<position>");
+ exit (1);
+ }
- return playpos;
+ return pos;
}
-
-static gchar * construct_uri(gchar *string)
+static char * construct_uri (char * string)
{
- gchar *filename = g_strdup(string);
- gchar *tmp, *path;
- gchar *uri = NULL;
+ char * filename = g_strdup (string);
+ char * tmp, * path;
+ char * uri = NULL;
// case 1: filename is raw full path or uri
- if (filename[0] == '/' || strstr(filename, "://")) {
- uri = g_filename_to_uri(filename, NULL, NULL);
- if(!uri) {
- uri = g_strdup(filename);
- }
- g_free(filename);
+ if (filename[0] == '/' || strstr (filename, "://"))
+ {
+ uri = g_filename_to_uri (filename, NULL, NULL);
+
+ if (! uri)
+ uri = g_strdup (filename);
+
+ g_free (filename);
}
// case 2: filename is not raw full path nor uri.
// make full path with pwd. (using g_build_filename)
- else {
+ else
+ {
path = g_get_current_dir();
- tmp = g_build_filename(path, filename, NULL);
- g_free(path); g_free(filename);
- uri = g_filename_to_uri(tmp, NULL, NULL);
- g_free(tmp);
+ tmp = g_build_filename (path, filename, NULL);
+ g_free (path);
+ g_free (filename);
+ uri = g_filename_to_uri (tmp, NULL, NULL);
+ g_free (tmp);
}
return uri;
}
-void playlist_add_url_string(gint argc, gchar **argv)
+void playlist_add_url_string (int argc, char * * argv)
{
- gchar *uri;
-
- if (argc < 2)
- {
- audtool_whine_args(argv[0], "<url>");
- exit(1);
- }
+ char * uri;
- uri = construct_uri(argv[1]);
- if (uri) {
- audacious_remote_playlist_add_url_string(dbus_proxy, uri);
+ if (argc < 2)
+ {
+ audtool_whine_args (argv[0], "<url>");
+ exit (1);
}
- g_free(uri);
+
+ uri = construct_uri (argv[1]);
+
+ if (! uri)
+ exit (1);
+
+ obj_audacious_call_add_sync (dbus_proxy, uri, NULL, NULL);
+ g_free (uri);
}
-void playlist_delete(gint argc, gchar **argv)
+void playlist_delete (int argc, char * * argv)
{
- gint playpos = check_args_playlist_pos(argc, argv);
- audacious_remote_playlist_delete(dbus_proxy, playpos - 1);
+ int pos = check_args_playlist_pos (argc, argv);
+ obj_audacious_call_delete_sync (dbus_proxy, pos - 1, NULL, NULL);
}
-void playlist_length(gint argc, gchar **argv)
+void playlist_length (int argc, char * * argv)
{
- gint i;
-
- i = audacious_remote_get_playlist_length(dbus_proxy);
+ audtool_report ("%d", get_playlist_length ());
+}
- audtool_report("%d", i);
+void playlist_song (int argc, char * * argv)
+{
+ int pos = check_args_playlist_pos (argc, argv);
+ char * title = get_entry_title (pos - 1);
+ audtool_report ("%s", title);
+ g_free (title);
}
-void playlist_song(gint argc, gchar **argv)
+void number_of_playlists (int argc, char * * argv)
{
- gint playpos = check_args_playlist_pos(argc, argv);
- gchar *song;
+ int playlists = 0;
+ obj_audacious_call_number_of_playlists_sync (dbus_proxy, & playlists, NULL, NULL);
+ audtool_report ("%d", playlists);
+}
- song = audacious_remote_get_playlist_title(dbus_proxy, playpos - 1);
- audtool_report("%s", song);
+void current_playlist (int argc, char * * argv)
+{
+ int playlist = -1;
+ obj_audacious_call_get_active_playlist_sync (dbus_proxy, & playlist, NULL, NULL);
+ audtool_report ("%d", playlist + 1);
}
-void playlist_title(gint argc, gchar **argv)
+void set_current_playlist (int argc, char * * argv)
{
- gchar *title;
+ if (argc < 2)
+ {
+ audtool_whine_args (argv[0], "<number>");
+ exit (1);
+ }
- title = audacious_remote_playlist_get_active_name(dbus_proxy);
- audtool_report("%s", title);
+ obj_audacious_call_set_active_playlist_sync (dbus_proxy, atoi (argv[1]) - 1, NULL, NULL);
}
-void playlist_song_length(gint argc, gchar **argv)
+void playlist_title (int argc, char * * argv)
{
- gint playpos = check_args_playlist_pos(argc, argv);
- gint frames, length;
+ char * title = NULL;
+ obj_audacious_call_get_active_playlist_name_sync (dbus_proxy, & title, NULL, NULL);
- frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1);
- length = frames / 1000;
+ if (! title)
+ exit (1);
- audtool_report("%d:%.2d", length / 60, length % 60);
+ audtool_report ("%s", title);
+ g_free (title);
}
-void playlist_song_length_seconds(gint argc, gchar **argv)
+void set_playlist_title (int argc, char * * argv)
{
- gint playpos = check_args_playlist_pos(argc, argv);
- gint frames, length;
+ if (argc < 2)
+ {
+ audtool_whine_args (argv[0], "<title>");
+ exit (1);
+ }
- frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1);
- length = frames / 1000;
+ obj_audacious_call_set_active_playlist_name_sync (dbus_proxy, argv[1], NULL, NULL);
+}
- audtool_report("%d", length);
+void new_playlist (int argc, char * * argv)
+{
+ obj_audacious_call_new_playlist_sync (dbus_proxy, NULL, NULL);
}
-void playlist_song_length_frames(gint argc, gchar **argv)
+void delete_current_playlist (int argc, char * * argv)
{
- gint playpos = check_args_playlist_pos(argc, argv);
- gint frames;
+ obj_audacious_call_delete_active_playlist_sync (dbus_proxy, NULL, NULL);
+}
- frames = audacious_remote_get_playlist_time(dbus_proxy, playpos - 1);
+void play_current_playlist (int argc, char * * argv)
+{
+ obj_audacious_call_play_active_playlist_sync (dbus_proxy, NULL, NULL);
+}
- audtool_report("%d", frames);
+void playlist_song_length (int argc, char * * argv)
+{
+ int pos = check_args_playlist_pos (argc, argv);
+ int length = get_entry_length (pos - 1) / 1000;
+ audtool_report ("%d:%.2d", length / 60, length % 60);
}
-void playlist_display(gint argc, gchar **argv)
+void playlist_song_length_seconds (int argc, char * * argv)
{
- gint i, ii, frames, length, total;
- gchar *songname;
- gchar *fmt = NULL, *p;
- gint column;
+ int pos = check_args_playlist_pos (argc, argv);
+ int length = get_entry_length (pos - 1) / 1000;
+ audtool_report ("%d", length);
+}
- i = audacious_remote_get_playlist_length(dbus_proxy);
+void playlist_song_length_frames (int argc, char * * argv)
+{
+ int pos = check_args_playlist_pos (argc, argv);
+ int length = get_entry_length (pos - 1);
+ audtool_report ("%d", length);
+}
- audtool_report("%d track%s.", i, i != 1 ? "s" : "");
+void playlist_display (int argc, char * * argv)
+{
+ int entries = get_playlist_length ();
- total = 0;
+ audtool_report ("%d track%s.", entries, entries != 1 ? "s" : "");
- for (ii = 0; ii < i; ii++)
- {
- songname = audacious_remote_get_playlist_title(dbus_proxy, ii);
- frames = audacious_remote_get_playlist_time(dbus_proxy, ii);
- length = frames / 1000;
- total += length;
+ int total = 0;
- /* adjust width for multi byte characters */
- column = 60;
- if(songname){
- p = songname;
- while(*p){
- gint stride;
- stride = g_utf8_next_char(p) - p;
- if(g_unichar_iswide(g_utf8_get_char(p))
- || g_unichar_iswide_cjk(g_utf8_get_char(p))
- ){
- column += (stride - 2);
- }
- else {
- column += (stride - 1);
- }
- p = g_utf8_next_char(p);
- }
+ for (int entry = 0; entry < entries; entry ++)
+ {
+ char * title = get_entry_title (entry);
+ int length = get_entry_length (entry) / 1000;
- }
+ total += length;
- fmt = g_strdup_printf("%%4d | %%-%ds | %%d:%%.2d", column);
- audtool_report(fmt, ii + 1, songname, length / 60, length % 60);
- g_free(fmt);
- }
+ /* adjust width for multi byte characters */
+ int column = 60;
- audtool_report("Total length: %d:%.2d", total / 60, total % 60);
-}
+ for (const char * p = title; * p; p = g_utf8_next_char (p))
+ {
+ int stride = g_utf8_next_char (p) - p;
-void playlist_position(gint argc, gchar **argv)
-{
- gint i;
+ if (g_unichar_iswide (g_utf8_get_char (p)) ||
+ g_unichar_iswide_cjk (g_utf8_get_char (p)))
+ column += (stride - 2);
+ else
+ column += (stride - 1);
+ }
- i = audacious_remote_get_playlist_pos(dbus_proxy);
+ char * fmt = g_strdup_printf ("%%4d | %%-%ds | %%d:%%.2d", column);
+ audtool_report (fmt, entry + 1, title, length / 60, length % 60);
- audtool_report("%d", i + 1);
+ g_free (fmt);
+ g_free (title);
+ }
+
+ audtool_report ("Total length: %d:%.2d", total / 60, total % 60);
}
-void playlist_song_filename (gint argc, gchar * * argv)
+void playlist_position (int argc, char * * argv)
{
- gint playpos = check_args_playlist_pos (argc, argv);
- gchar * uri, * filename;
-
- uri = audacious_remote_get_playlist_file (dbus_proxy, playpos - 1);
- filename = (uri != NULL) ? g_filename_from_uri (uri, NULL, NULL) : NULL;
-
- audtool_report ("%s", (filename != NULL) ? filename : (uri != NULL) ? uri :
- _("Position not found."));
+ audtool_report ("%d", get_current_entry () + 1);
+}
- g_free (uri);
+void playlist_song_filename (int argc, char * * argv)
+{
+ int pos = check_args_playlist_pos (argc, argv);
+ char * filename = get_entry_filename (pos - 1);
+ audtool_report ("%s", filename);
g_free (filename);
}
-void playlist_jump(gint argc, gchar **argv)
+void playlist_jump (int argc, char * * argv)
{
- gint playpos = check_args_playlist_pos(argc, argv);
-
- audacious_remote_set_playlist_pos(dbus_proxy, playpos - 1);
+ int pos = check_args_playlist_pos (argc, argv);
+ obj_audacious_call_jump_sync (dbus_proxy, pos - 1, NULL, NULL);
}
-void playlist_clear(gint argc, gchar **argv)
+void playlist_clear (int argc, char * * argv)
{
- audacious_remote_stop(dbus_proxy);
- audacious_remote_playlist_clear(dbus_proxy);
+ obj_audacious_call_clear_sync (dbus_proxy, NULL, NULL);
}
-void playlist_repeat_status(gint argc, gchar **argv)
+void playlist_repeat_status (int argc, char * * argv)
{
- if (audacious_remote_is_repeat(dbus_proxy))
- {
- audtool_report("on");
- }
- else
- {
- audtool_report("off");
- }
+ gboolean repeat = FALSE;
+ obj_audacious_call_repeat_sync (dbus_proxy, & repeat, NULL, NULL);
+ audtool_report (repeat ? "on" : "off");
}
-void playlist_repeat_toggle(gint argc, gchar **argv)
+void playlist_repeat_toggle (int argc, char * * argv)
{
- audacious_remote_toggle_repeat(dbus_proxy);
+ obj_audacious_call_toggle_repeat_sync (dbus_proxy, NULL, NULL);
}
-void playlist_shuffle_status(gint argc, gchar **argv)
+void playlist_shuffle_status (int argc, char * * argv)
{
- if (audacious_remote_is_shuffle(dbus_proxy))
- {
- audtool_report("on");
- }
- else
- {
- audtool_report("off");
- }
+ gboolean shuffle = FALSE;
+ obj_audacious_call_shuffle_sync (dbus_proxy, & shuffle, NULL, NULL);
+ audtool_report (shuffle ? "on" : "off");
}
-void playlist_shuffle_toggle(gint argc, gchar **argv)
+void playlist_shuffle_toggle (int argc, char * * argv)
{
- audacious_remote_toggle_shuffle(dbus_proxy);
+ obj_audacious_call_toggle_shuffle_sync (dbus_proxy, NULL, NULL);
}
-void playlist_tuple_field_data(gint argc, gchar **argv)
+void playlist_tuple_field_data (int argc, char * * argv)
{
- gint i;
- gchar *data;
-
- if (argc < 3)
- {
- audtool_whine_args(argv[0], "<fieldname> <position>");
- audtool_whine_tuple_fields();
- exit(1);
- }
+ int pos;
- i = atoi(argv[2]);
-
- if (i < 1 || i > audacious_remote_get_playlist_length(dbus_proxy))
- {
- audtool_whine("invalid playlist position %d\n", i);
- exit(1);
- }
-
- if (!(data = audacious_get_tuple_field_data(dbus_proxy, argv[1], i - 1)))
- {
- return;
- }
-
- audtool_report("%s", data);
+ if (argc < 3 || (pos = atoi (argv[2])) < 1)
+ {
+ audtool_whine_args (argv[0], "<fieldname> <position>");
+ audtool_whine_tuple_fields ();
+ exit (1);
+ }
- g_free(data);
+ char * str = get_entry_field (pos - 1, argv[1]);
+ audtool_report ("%s", str);
+ g_free (str);
}
-void playlist_ins_url_string(gint argc, gchar **argv)
+void playlist_ins_url_string (int argc, char * * argv)
{
- gint pos = -1;
- gchar *uri;
+ int pos;
- if (argc < 3)
+ if (argc < 3 || (pos = atoi (argv[2])) < 1)
{
- audtool_whine_args(argv[0], "<url> <position>");
- exit(1);
+ audtool_whine_args (argv[0], "<url> <position>");
+ exit (1);
}
- pos = atoi(argv[2]) - 1;
- if(pos >= 0) {
- uri = construct_uri(argv[1]);
- if (uri) {
- audacious_remote_playlist_ins_url_string(dbus_proxy, uri, pos);
- }
- g_free(uri);
- }
+ char * uri = construct_uri (argv[1]);
+
+ if (! uri)
+ exit (1);
+
+ obj_audacious_call_playlist_ins_url_string_sync (dbus_proxy, uri, pos - 1, NULL, NULL);
+
+ g_free (uri);
}
-void playlist_enqueue_to_temp(gint argc, gchar **argv)
+void playlist_enqueue_to_temp (int argc, char * * argv)
{
- gchar *uri;
-
if (argc < 2)
{
- audtool_whine_args(argv[0], "<url>");
- exit(1);
+ audtool_whine_args (argv[0], "<url>");
+ exit (1);
}
- uri = construct_uri(argv[1]);
- if (uri) {
- audacious_remote_playlist_enqueue_to_temp(dbus_proxy, uri);
- }
- g_free(uri);
+ char * uri = construct_uri (argv[1]);
+
+ if (! uri)
+ exit (1);
+
+ obj_audacious_call_playlist_enqueue_to_temp_sync (dbus_proxy, uri, NULL, NULL);
+
+ g_free (uri);
}
diff --git a/src/audtool/handlers_playqueue.c b/src/audtool/handlers_playqueue.c
index 275404e..dd5e509 100644
--- a/src/audtool/handlers_playqueue.c
+++ b/src/audtool/handlers_playqueue.c
@@ -1,7 +1,7 @@
/*
* handlers_playqueue.c
- * Copyright 2005-2008 George Averill, William Pitcock, Yoshiki Yazawa, and
- * Matti HÀmÀlÀinen
+ * Copyright 2005-2013 George Averill, William Pitcock, Yoshiki Yazawa,
+ * Matti HÀmÀlÀinen, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -19,122 +19,85 @@
*/
#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
+#include "wrappers.h"
-void playqueue_add(gint argc, gchar **argv)
+void playqueue_add (int argc, char * * argv)
{
- gint i = check_args_playlist_pos(argc, argv);
-
- if (!(audacious_remote_playqueue_is_queued(dbus_proxy, i - 1)))
- audacious_remote_playqueue_add(dbus_proxy, i - 1);
+ int pos = check_args_playlist_pos (argc, argv);
+ obj_audacious_call_playqueue_add_sync (dbus_proxy, pos - 1, NULL, NULL);
}
-void playqueue_remove(gint argc, gchar **argv)
+void playqueue_remove (int argc, char * * argv)
{
- gint i = check_args_playlist_pos(argc, argv);
+ int pos = check_args_playlist_pos (argc, argv);
+ obj_audacious_call_playqueue_remove_sync (dbus_proxy, pos - 1, NULL, NULL);
+}
- if (audacious_remote_playqueue_is_queued(dbus_proxy, i - 1))
- audacious_remote_playqueue_remove(dbus_proxy, i - 1);
+void playqueue_is_queued (int argc, char * * argv)
+{
+ int pos = check_args_playlist_pos (argc, argv);
+ find_in_queue (pos - 1); /* exits if not found */
+ audtool_report ("OK");
}
-void playqueue_is_queued(gint argc, gchar **argv)
+void playqueue_get_queue_position (int argc, char * * argv)
{
- gint i = check_args_playlist_pos(argc, argv);
+ int pos = check_args_playlist_pos (argc, argv);
+ audtool_report ("%d", find_in_queue (pos - 1) + 1);
+}
- if (audacious_remote_playqueue_is_queued(dbus_proxy, i - 1)) {
- audtool_report("OK");
- exit(0);
- }
- else
- exit(1);
+void playqueue_get_list_position (int argc, char * * argv)
+{
+ int qpos = check_args_playlist_pos (argc, argv);
+ audtool_report ("%d", get_queue_entry (qpos - 1) + 1);
}
-void playqueue_get_queue_position(gint argc, gchar **argv)
+void playqueue_display (int argc, char * * argv)
{
- gint pos, i = check_args_playlist_pos(argc, argv);
+ int qlength = get_queue_length ();
- pos = audacious_remote_get_playqueue_queue_position(dbus_proxy, i - 1) + 1;
+ audtool_report ("%d queued tracks.", qlength);
- if (pos < 1)
- return;
+ int total = 0;
- audtool_report("%d", pos);
-}
+ for (int qpos = 0; qpos < qlength; qpos ++)
+ {
+ int pos = get_queue_entry (qpos);
+ char * title = get_entry_title (pos);
+ int length = get_entry_length (pos) / 1000;
-void playqueue_get_list_position(gint argc, gchar **argv)
-{
- gint pos, i = check_args_playlist_pos(argc, argv);
+ total += length;
- pos = audacious_remote_get_playqueue_list_position(dbus_proxy, i - 1) + 1;
+ /* adjust width for multi byte characters */
+ int column = 60;
- if (pos < 1)
- return;
+ for (const char * p = title; * p; p = g_utf8_next_char (p))
+ {
+ int stride = g_utf8_next_char (p) - p;
- audtool_report("%d", pos);
-}
+ if (g_unichar_iswide (g_utf8_get_char (p)) ||
+ g_unichar_iswide_cjk (g_utf8_get_char (p)))
+ column += (stride - 2);
+ else
+ column += (stride - 1);
+ }
-void playqueue_display(gint argc, gchar **argv)
-{
- gint i, ii, position, frames, length, total;
- gchar *songname;
- gchar *fmt = NULL, *p;
- gint column;
-
- i = audacious_remote_get_playqueue_length(dbus_proxy);
-
- audtool_report("%d queued tracks.", i);
-
- total = 0;
-
- for (ii = 0; ii < i; ii++)
- {
- position = audacious_remote_get_playqueue_list_position(dbus_proxy, ii);
- songname = audacious_remote_get_playlist_title(dbus_proxy, position);
- frames = audacious_remote_get_playlist_time(dbus_proxy, position);
- length = frames / 1000;
- total += length;
-
- /* adjust width for multi byte characters */
- column = 60;
- if(songname) {
- p = songname;
- while(*p){
- gint stride;
- stride = g_utf8_next_char(p) - p;
- if(g_unichar_iswide(g_utf8_get_char(p))
- || g_unichar_iswide_cjk(g_utf8_get_char(p))
- ){
- column += (stride - 2);
- }
- else {
- column += (stride - 1);
- }
- p = g_utf8_next_char(p);
- }
- }
-
- fmt = g_strdup_printf("%%4d | %%4d | %%-%ds | %%d:%%.2d", column);
- audtool_report(fmt, ii + 1, position + 1, songname, length / 60, length % 60);
- g_free(fmt);
- }
-
- audtool_report("Total length: %d:%.2d", total / 60, total % 60);
+ char * fmt = g_strdup_printf ("%%4d | %%4d | %%-%ds | %%d:%%.2d", column);
+ audtool_report (fmt, qpos + 1, pos + 1, title, length / 60, length % 60);
+ g_free (fmt);
+ }
+
+ audtool_report ("Total length: %d:%.2d", total / 60, total % 60);
}
-void playqueue_length(gint argc, gchar **argv)
+void playqueue_length (int argc, char * * argv)
{
- gint i;
-
- i = audacious_remote_get_playqueue_length(dbus_proxy);
-
- audtool_report("%d", i);
+ audtool_report ("%d", get_queue_length ());
}
-void playqueue_clear(gint argc, gchar **argv)
+void playqueue_clear (int argc, char * * argv)
{
- audacious_remote_playqueue_clear(dbus_proxy);
+ obj_audacious_call_playqueue_clear_sync (dbus_proxy, NULL, NULL);
}
diff --git a/src/audtool/handlers_vitals.c b/src/audtool/handlers_vitals.c
index f2325b4..68918dc 100644
--- a/src/audtool/handlers_vitals.c
+++ b/src/audtool/handlers_vitals.c
@@ -1,6 +1,6 @@
/*
* handlers_vitals.c
- * Copyright 2005-2007 George Averill and William Pitcock
+ * Copyright 2005-2013 George Averill, William Pitcock, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -18,162 +18,112 @@
*/
#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
+#include "wrappers.h"
-void get_current_song(gint argc, gchar **argv)
+void get_current_song (int argc, char * * argv)
{
- gint playpos = audacious_remote_get_playlist_pos(dbus_proxy);
- gchar *song = audacious_remote_get_playlist_title(dbus_proxy, playpos);
-
- if (!song)
- {
- audtool_report("No song playing.");
- return;
- }
-
- audtool_report("%s", song);
+ char * title = get_entry_title (get_current_entry ());
+ audtool_report ("%s", title);
+ g_free (title);
}
-void get_current_song_filename (gint argc, gchar * * argv)
+void get_current_song_filename (int argc, char * * argv)
{
- gint playpos = audacious_remote_get_playlist_pos (dbus_proxy);
- gchar * uri, * filename;
-
- uri = audacious_remote_get_playlist_file (dbus_proxy, playpos);
- filename = (uri != NULL) ? g_filename_from_uri (uri, NULL, NULL) : NULL;
-
- audtool_report ("%s", (filename != NULL) ? filename : (uri != NULL) ? uri :
- _("No song playing."));
-
- g_free (uri);
+ char * filename = get_entry_filename (get_current_entry ());
+ audtool_report ("%s", filename);
g_free (filename);
}
-void get_current_song_output_length(gint argc, gchar **argv)
+void get_current_song_output_length (int argc, char * * argv)
{
- gint frames = audacious_remote_get_output_time(dbus_proxy);
- gint length = frames / 1000;
-
- audtool_report("%d:%.2d", length / 60, length % 60);
+ int time = get_current_time () / 1000;
+ audtool_report ("%d:%.2d", time / 60, time % 60);
}
-void get_current_song_output_length_seconds(gint argc, gchar **argv)
+void get_current_song_output_length_seconds (int argc, char * * argv)
{
- gint frames = audacious_remote_get_output_time(dbus_proxy);
- gint length = frames / 1000;
-
- audtool_report("%d", length);
+ int time = get_current_time () / 1000;
+ audtool_report ("%d", time);
}
-void get_current_song_output_length_frames(gint argc, gchar **argv)
+void get_current_song_output_length_frames (int argc, char * * argv)
{
- gint frames = audacious_remote_get_output_time(dbus_proxy);
-
- audtool_report("%d", frames);
+ int time = get_current_time ();
+ audtool_report ("%d", time);
}
-void get_current_song_length(gint argc, gchar **argv)
+void get_current_song_length (int argc, char * * argv)
{
- gint playpos = audacious_remote_get_playlist_pos(dbus_proxy);
- gint frames = audacious_remote_get_playlist_time(dbus_proxy, playpos);
- gint length = frames / 1000;
-
- audtool_report("%d:%.2d", length / 60, length % 60);
+ int length = get_entry_length (get_current_entry ()) / 1000;
+ audtool_report ("%d:%.2d", length / 60, length % 60);
}
-void get_current_song_length_seconds(gint argc, gchar **argv)
+void get_current_song_length_seconds (int argc, char * * argv)
{
- gint playpos = audacious_remote_get_playlist_pos(dbus_proxy);
- gint frames = audacious_remote_get_playlist_time(dbus_proxy, playpos);
- gint length = frames / 1000;
-
- audtool_report("%d", length);
+ int length = get_entry_length (get_current_entry ()) / 1000;
+ audtool_report ("%d", length);
}
-void get_current_song_length_frames(gint argc, gchar **argv)
+void get_current_song_length_frames (int argc, char * * argv)
{
- gint playpos = audacious_remote_get_playlist_pos(dbus_proxy);
- gint frames = audacious_remote_get_playlist_time(dbus_proxy, playpos);
-
- audtool_report("%d", frames);
+ int length = get_entry_length (get_current_entry ());
+ audtool_report ("%d", length);
}
-void get_current_song_bitrate(gint argc, gchar **argv)
+void get_current_song_bitrate (int argc, char * * argv)
{
- gint rate, freq, nch;
-
- audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch);
-
- audtool_report("%d", rate);
+ int bitrate;
+ get_current_info (& bitrate, NULL, NULL);
+ audtool_report ("%d", bitrate);
}
-void get_current_song_bitrate_kbps(gint argc, gchar **argv)
+void get_current_song_bitrate_kbps (int argc, char * * argv)
{
- gint rate, freq, nch;
-
- audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch);
-
- audtool_report("%d", rate / 1000);
+ int bitrate;
+ get_current_info (& bitrate, NULL, NULL);
+ audtool_report ("%d", bitrate / 1000);
}
-void get_current_song_frequency(gint argc, gchar **argv)
+void get_current_song_frequency (int argc, char * * argv)
{
- gint rate, freq, nch;
-
- audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch);
-
- audtool_report("%d", freq);
+ int samplerate;
+ get_current_info (NULL, & samplerate, NULL);
+ audtool_report ("%d", samplerate);
}
-void get_current_song_frequency_khz(gint argc, gchar **argv)
+void get_current_song_frequency_khz (int argc, char * * argv)
{
- gint rate, freq, nch;
-
- audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch);
-
- audtool_report("%0.1f", (gfloat) freq / 1000);
+ int samplerate;
+ get_current_info (NULL, & samplerate, NULL);
+ audtool_report ("%d", samplerate / 1000);
}
-void get_current_song_channels(gint argc, gchar **argv)
+void get_current_song_channels (int argc, char * * argv)
{
- gint rate, freq, nch;
-
- audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch);
-
- audtool_report("%d", nch);
+ int channels;
+ get_current_info (NULL, NULL, & channels);
+ audtool_report ("%d", channels);
}
-void get_current_song_tuple_field_data(gint argc, gchar **argv)
+void get_current_song_tuple_field_data (int argc, char * * argv)
{
- gchar *data;
-
- if (argc < 2)
- {
- audtool_whine_args(argv[0], "<fieldname>");
- audtool_whine_tuple_fields();
- exit(1);
- }
-
- if (!(data = audacious_get_tuple_field_data(dbus_proxy, argv[1], audacious_remote_get_playlist_pos(dbus_proxy))))
- {
- return;
- }
-
- audtool_report("%s", data);
-
- g_free(data);
+ if (argc < 2)
+ {
+ audtool_whine_args (argv[0], "<fieldname>");
+ audtool_whine_tuple_fields();
+ exit (1);
+ }
+
+ char * str = get_entry_field (get_current_entry (), argv[1]);
+ audtool_report ("%s", str);
+ g_free (str);
}
-void get_current_song_info(gint argc, gchar **argv)
+void get_current_song_info (int argc, char * * argv)
{
- gint rate, freq, nch;
-
- audacious_remote_get_info(dbus_proxy, &rate, &freq, &nch);
- audtool_report("rate = %d freq = %d nch = %d", rate, freq, nch);
+ int bitrate, samplerate, channels;
+ get_current_info (& bitrate, & samplerate, & channels);
+ audtool_report ("rate = %d freq = %d nch = %d", bitrate, samplerate, channels);
}
-
diff --git a/src/audtool/main.c b/src/audtool/main.c
index 0fc45f7..83c959f 100644
--- a/src/audtool/main.c
+++ b/src/audtool/main.c
@@ -1,6 +1,6 @@
/*
* main.c
- * Copyright 2005-2011 George Averill, William Pitcock, Yoshiki Yazawa, and
+ * Copyright 2005-2013 George Averill, William Pitcock, Yoshiki Yazawa, and
* John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -20,89 +20,93 @@
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
-struct commandhandler handlers[] = {
- {"<sep>", NULL, "Vital information", 0},
- {"current-song", get_current_song, "returns current song title", 0},
- {"current-song-filename", get_current_song_filename, "returns current song filename", 0},
- {"current-song-length", get_current_song_length, "returns current song length", 0},
- {"current-song-length-seconds", get_current_song_length_seconds, "returns current song length in seconds", 0},
- {"current-song-length-frames", get_current_song_length_frames, "returns current song length in frames", 0},
- {"current-song-output-length", get_current_song_output_length, "returns current song output length", 0},
- {"current-song-output-length-seconds", get_current_song_output_length_seconds, "returns current song output length in seconds", 0},
- {"current-song-output-length-frames", get_current_song_output_length_frames, "returns current song output length in frames", 0},
- {"current-song-bitrate", get_current_song_bitrate, "returns current song bitrate in bits per second", 0},
- {"current-song-bitrate-kbps", get_current_song_bitrate_kbps, "returns current song bitrate in kilobits per second", 0},
- {"current-song-frequency", get_current_song_frequency, "returns current song frequency in hertz", 0},
- {"current-song-frequency-khz", get_current_song_frequency_khz, "returns current song frequency in kilohertz", 0},
- {"current-song-channels", get_current_song_channels, "returns current song channels", 0},
- {"current-song-tuple-data", get_current_song_tuple_field_data, "returns the value of a tuple field for the current song", 1},
+const struct commandhandler handlers[] =
+{
+ {"<sep>", NULL, "Vital information", 0},
+ {"current-song", get_current_song, "returns current song title", 0},
+ {"current-song-filename", get_current_song_filename, "returns current song filename", 0},
+ {"current-song-length", get_current_song_length, "returns current song length", 0},
+ {"current-song-length-seconds", get_current_song_length_seconds, "returns current song length in seconds", 0},
+ {"current-song-length-frames", get_current_song_length_frames, "returns current song length in frames", 0},
+ {"current-song-output-length", get_current_song_output_length, "returns current song output length", 0},
+ {"current-song-output-length-seconds", get_current_song_output_length_seconds, "returns current song output length in seconds", 0},
+ {"current-song-output-length-frames", get_current_song_output_length_frames, "returns current song output length in frames", 0},
+ {"current-song-bitrate", get_current_song_bitrate, "returns current song bitrate in bits per second", 0},
+ {"current-song-bitrate-kbps", get_current_song_bitrate_kbps, "returns current song bitrate in kilobits per second", 0},
+ {"current-song-frequency", get_current_song_frequency, "returns current song frequency in hertz", 0},
+ {"current-song-frequency-khz", get_current_song_frequency_khz, "returns current song frequency in kilohertz", 0},
+ {"current-song-channels", get_current_song_channels, "returns current song channels", 0},
+ {"current-song-tuple-data", get_current_song_tuple_field_data, "returns the value of a tuple field for the current song", 1},
{"current-song-info", get_current_song_info, "returns current song bitrate, frequency and channels", 0},
-
- {"<sep>", NULL, "Playlist manipulation", 0},
- {"playlist-advance", playlist_advance, "go to the next song in the playlist", 0},
- {"playlist-auto-advance-status", playlist_auto_advance_status, "returns the status of playlist auto-advance", 0},
- {"playlist-auto-advance-toggle", playlist_auto_advance_toggle, "toggles playlist auto-advance", 0},
- {"playlist-reverse", playlist_reverse, "go to the previous song in the playlist", 0},
- {"playlist-addurl", playlist_add_url_string, "adds a URL to the playlist", 1},
+ {"<sep>", NULL, "Playlist manipulation", 0},
+ {"playlist-advance", playlist_advance, "go to the next song in the playlist", 0},
+ {"playlist-auto-advance-status", playlist_auto_advance_status, "returns the status of playlist auto-advance", 0},
+ {"playlist-auto-advance-toggle", playlist_auto_advance_toggle, "toggles playlist auto-advance", 0},
+ {"playlist-reverse", playlist_reverse, "go to the previous song in the playlist", 0},
+ {"playlist-addurl", playlist_add_url_string, "adds a URL to the playlist", 1},
{"playlist-insurl", playlist_ins_url_string, "inserts a URL at specified position in the playlist", 2},
- {"playlist-addurl-to-new-playlist", playlist_enqueue_to_temp, "adds a URL to the newly created playlist", 1},
- {"playlist-delete", playlist_delete, "deletes a song from the playlist", 1},
- {"playlist-length", playlist_length, "returns the total length of the playlist", 0},
- {"playlist-song", playlist_song, "returns the title of a song in the playlist", 1},
- {"playlist-song-filename", playlist_song_filename, "returns the filename of a song in the playlist", 1},
- {"playlist-song-length", playlist_song_length, "returns the length of a song in the playlist", 1},
- {"playlist-song-length-seconds", playlist_song_length_seconds, "returns the length of a song in the playlist in seconds", 1},
- {"playlist-song-length-frames", playlist_song_length_frames, "returns the length of a song in the playlist in frames", 1},
- {"playlist-display", playlist_display, "returns the entire playlist", 0},
- {"playlist-position", playlist_position, "returns the position in the playlist", 0},
- {"playlist-jump", playlist_jump, "jumps to a position in the playlist", 1},
- {"playlist-clear", playlist_clear, "clears the playlist", 0},
- {"playlist-repeat-status", playlist_repeat_status, "returns the status of playlist repeat", 0},
- {"playlist-repeat-toggle", playlist_repeat_toggle, "toggles playlist repeat", 0},
- {"playlist-shuffle-status", playlist_shuffle_status, "returns the status of playlist shuffle", 0},
- {"playlist-shuffle-toggle", playlist_shuffle_toggle, "toggles playlist shuffle", 0},
- {"playlist-stop-after-status", playlist_stop_after_status, "queries if stopping after current song", 0},
- {"playlist-stop-after-toggle", playlist_stop_after_toggle, "toggles if stopping after current song", 0},
- {"playlist-tuple-data", playlist_tuple_field_data, "returns the value of a tuple field for a song in the playlist", 2},
- {"current-playlist-name", playlist_title, "returns the playlist title of the active playlist", 0},
-
- {"<sep>", NULL, "Playqueue manipulation", 0},
- {"playqueue-add", playqueue_add, "adds a song to the playqueue", 1},
- {"playqueue-remove", playqueue_remove, "removes a song from the playqueue", 1},
- {"playqueue-is-queued", playqueue_is_queued, "returns OK if a song is queued", 1},
- {"playqueue-get-queue-position", playqueue_get_queue_position, "returns the playqueue position of a song in the given position in the playlist", 1},
- {"playqueue-get-list-position", playqueue_get_list_position, "returns the playlist position of a song in the given position in the playqueue", 1},
- {"playqueue-length", playqueue_length, "returns the length of the playqueue", 0},
- {"playqueue-display", playqueue_display, "returns a list of currently-queued songs", 0},
- {"playqueue-clear", playqueue_clear, "clears the playqueue", 0},
-
-
- {"<sep>", NULL, "Playback manipulation", 0},
- {"playback-play", playback_play, "starts/unpauses song playback", 0},
- {"playback-pause", playback_pause, "(un)pauses song playback", 0},
- {"playback-playpause", playback_playpause, "plays/(un)pauses song playback", 0},
- {"playback-stop", playback_stop, "stops song playback", 0},
- {"playback-playing", playback_playing, "returns OK if Audacious is playing", 0},
- {"playback-paused", playback_paused, "returns OK if Audacious is paused", 0},
- {"playback-stopped", playback_stopped, "returns OK if Audacious is stopped", 0},
- {"playback-status", playback_status, "returns the playback status", 0},
- {"playback-seek", playback_seek, "performs an absolute seek", 1},
- {"playback-seek-relative", playback_seek_relative, "performs a seek relative to the current position", 1},
-
-
- {"<sep>", NULL, "Volume control", 0},
- {"get-volume", get_volume, "returns the current volume level in percent", 0},
- {"set-volume", set_volume, "sets the current volume level in percent", 1},
-
-
- {"<sep>", NULL, "Equalizer manipulation", 0},
+ {"playlist-addurl-to-new-playlist", playlist_enqueue_to_temp, "adds a URL to the newly created playlist", 1},
+ {"playlist-delete", playlist_delete, "deletes a song from the playlist", 1},
+ {"playlist-length", playlist_length, "returns the total length of the playlist", 0},
+ {"playlist-song", playlist_song, "returns the title of a song in the playlist", 1},
+ {"playlist-song-filename", playlist_song_filename, "returns the filename of a song in the playlist", 1},
+ {"playlist-song-length", playlist_song_length, "returns the length of a song in the playlist", 1},
+ {"playlist-song-length-seconds", playlist_song_length_seconds, "returns the length of a song in the playlist in seconds", 1},
+ {"playlist-song-length-frames", playlist_song_length_frames, "returns the length of a song in the playlist in frames", 1},
+ {"playlist-display", playlist_display, "returns the entire playlist", 0},
+ {"playlist-position", playlist_position, "returns the position in the playlist", 0},
+ {"playlist-jump", playlist_jump, "jumps to a position in the playlist", 1},
+ {"playlist-clear", playlist_clear, "clears the playlist", 0},
+ {"playlist-repeat-status", playlist_repeat_status, "returns the status of playlist repeat", 0},
+ {"playlist-repeat-toggle", playlist_repeat_toggle, "toggles playlist repeat", 0},
+ {"playlist-shuffle-status", playlist_shuffle_status, "returns the status of playlist shuffle", 0},
+ {"playlist-shuffle-toggle", playlist_shuffle_toggle, "toggles playlist shuffle", 0},
+ {"playlist-stop-after-status", playlist_stop_after_status, "queries if stopping after current song", 0},
+ {"playlist-stop-after-toggle", playlist_stop_after_toggle, "toggles if stopping after current song", 0},
+ {"playlist-tuple-data", playlist_tuple_field_data, "returns the value of a tuple field for a song in the playlist", 2},
+
+ {"<sep>", NULL, "More playlist manipulation", 0},
+ {"number-of-playlists", number_of_playlists, "returns the number of open playlists", 0},
+ {"current-playlist", current_playlist, "returns the number of the active playlist", 0},
+ {"set-current-playlist", set_current_playlist, "activates the specified playlist", 1},
+ {"current-playlist-name", playlist_title, "returns the title of the active playlist", 0},
+ {"set-current-playlist-name", set_playlist_title, "sets the title of the active playlist", 1},
+ {"new-playlist", new_playlist, "creates a new playlist", 0},
+ {"delete-current-playlist", delete_current_playlist, "removes the active playlist", 0},
+ {"play-current-playlist", play_current_playlist, "starts or resumes playing the active playlist", 0},
+
+ {"<sep>", NULL, "Playqueue manipulation", 0},
+ {"playqueue-add", playqueue_add, "adds a song to the playqueue", 1},
+ {"playqueue-remove", playqueue_remove, "removes a song from the playqueue", 1},
+ {"playqueue-is-queued", playqueue_is_queued, "returns OK if a song is queued", 1},
+ {"playqueue-get-queue-position", playqueue_get_queue_position, "returns the playqueue position of a song in the given position in the playlist", 1},
+ {"playqueue-get-list-position", playqueue_get_list_position, "returns the playlist position of a song in the given position in the playqueue", 1},
+ {"playqueue-length", playqueue_length, "returns the length of the playqueue", 0},
+ {"playqueue-display", playqueue_display, "returns a list of currently-queued songs", 0},
+ {"playqueue-clear", playqueue_clear, "clears the playqueue", 0},
+
+ {"<sep>", NULL, "Playback manipulation", 0},
+ {"playback-play", playback_play, "starts/unpauses song playback", 0},
+ {"playback-pause", playback_pause, "(un)pauses song playback", 0},
+ {"playback-playpause", playback_playpause, "plays/(un)pauses song playback", 0},
+ {"playback-stop", playback_stop, "stops song playback", 0},
+ {"playback-playing", playback_playing, "returns OK if Audacious is playing", 0},
+ {"playback-paused", playback_paused, "returns OK if Audacious is paused", 0},
+ {"playback-stopped", playback_stopped, "returns OK if Audacious is stopped", 0},
+ {"playback-status", playback_status, "returns the playback status", 0},
+ {"playback-seek", playback_seek, "performs an absolute seek", 1},
+ {"playback-seek-relative", playback_seek_relative, "performs a seek relative to the current position", 1},
+
+ {"<sep>", NULL, "Volume control", 0},
+ {"get-volume", get_volume, "returns the current volume level in percent", 0},
+ {"set-volume", set_volume, "sets the current volume level in percent", 1},
+
+ {"<sep>", NULL, "Equalizer manipulation", 0},
{"equalizer-activate", equalizer_active, "activates/deactivates the equalizer", 1},
{"equalizer-get", equalizer_get_eq, "gets the equalizer settings", 0},
{"equalizer-set", equalizer_set_eq, "sets the equalizer settings", 11},
@@ -111,100 +115,104 @@ struct commandhandler handlers[] = {
{"equalizer-get-band", equalizer_get_eq_band, "gets the equalizer value in specified band", 1},
{"equalizer-set-band", equalizer_set_eq_band, "sets the equalizer value in the specified band", 2},
+ {"<sep>", NULL, "Miscellaneous", 0},
+ {"mainwin-show", mainwin_show, "shows/hides the main window", 1},
+ {"filebrowser-show", show_filebrowser, "shows/hides the filebrowser", 1},
+ {"jumptofile-show", show_jtf_window, "shows/hides the jump to file window", 1},
+ {"preferences-show", show_preferences_window, "shows/hides the preferences window", 1},
+ {"about-show", show_about_window, "shows/hides the about window", 1},
- {"<sep>", NULL, "Miscellaneous", 0},
- {"mainwin-show", mainwin_show, "shows/hides the main window", 1},
- {"filebrowser-show", show_filebrowser, "shows/hides the filebrowser", 1},
- {"jumptofile-show", show_jtf_window, "shows/hides the jump to file window", 1},
- {"preferences-show", show_preferences_window, "shows/hides the preferences window", 1},
- {"about-show", show_about_window, "shows/hides the about window", 1},
-
- {"always-on-top", toggle_aot, "on/off always on top", 1},
{"version", get_version, "shows Audacious version", 0},
- {"shutdown", shutdown_audacious_server, "shuts down Audacious", 0},
+ {"shutdown", shutdown_audacious_server, "shuts down Audacious", 0},
+ {"<sep>", NULL, "Help system", 0},
+ {"list-handlers", get_handlers_list, "shows handlers list", 0},
+ {"help", get_handlers_list, "shows handlers list", 0},
- {"<sep>", NULL, "Help system", 0},
- {"list-handlers", get_handlers_list, "shows handlers list", 0},
- {"help", get_handlers_list, "shows handlers list", 0},
+ {NULL, NULL, NULL, 0}
+};
+ObjAudacious * dbus_proxy = NULL;
+static GDBusConnection * connection = NULL;
- {NULL, NULL, NULL, 0}
-};
+static void audtool_disconnect (void)
+{
+ g_object_unref (dbus_proxy);
+ dbus_proxy = NULL;
-DBusGProxy *dbus_proxy = NULL;
-static DBusGConnection *connection = NULL;
+ g_dbus_connection_close_sync (connection, NULL, NULL);
+ connection = NULL;
+}
-static void
-audtool_connect(void)
+static void audtool_connect (void)
{
- GError *error = NULL;
+ GError * error = NULL;
- connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+ connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, & error);
- if (connection == NULL)
- {
- fprintf (stderr, "D-Bus Error: %s\n", error->message);
- g_error_free (error);
- exit (EXIT_FAILURE);
- }
+ if (! connection)
+ {
+ fprintf (stderr, "D-Bus error: %s\n", error->message);
+ g_error_free (error);
+ exit (EXIT_FAILURE);
+ }
- dbus_proxy = dbus_g_proxy_new_for_name(connection, AUDACIOUS_DBUS_SERVICE,
- AUDACIOUS_DBUS_PATH,
- AUDACIOUS_DBUS_INTERFACE);
-}
+ dbus_proxy = obj_audacious_proxy_new_sync (connection, 0,
+ "org.atheme.audacious", "/org/atheme/audacious", NULL, & error);
-static void
-audtool_disconnect(void)
-{
- g_object_unref(dbus_proxy);
- dbus_proxy = NULL;
+ if (! dbus_proxy)
+ {
+ fprintf (stderr, "D-Bus error: %s\n", error->message);
+ g_error_free (error);
+ g_dbus_connection_close_sync (connection, NULL, NULL);
+ exit (EXIT_FAILURE);
+ }
+
+ atexit (audtool_disconnect);
}
-gint
-main(gint argc, gchar **argv)
+int main (int argc, char * * argv)
{
- gint i, j = 0, k = 0;
+ int i, j = 0, k = 0;
- setlocale(LC_CTYPE, "");
+ setlocale (LC_CTYPE, "");
#if ! GLIB_CHECK_VERSION (2, 36, 0)
- g_type_init();
+ g_type_init();
#endif
- audtool_connect();
-
- if (argc < 2)
- {
- fprintf (stderr, "Not enough parameters. Try \"audtool help\".\n");
- exit (EXIT_FAILURE);
- }
-
- for (j = 1; j < argc; j++)
- {
- for (i = 0; handlers[i].name != NULL; i++)
- {
- if ((!g_ascii_strcasecmp(handlers[i].name, argv[j]) ||
- !g_ascii_strcasecmp(g_strconcat("--", handlers[i].name, NULL), argv[j]))
- && g_ascii_strcasecmp("<sep>", handlers[i].name))
- {
- int numargs = handlers[i].args + 1 < argc - j ? handlers[i].args + 1 : argc - j;
- handlers[i].handler(numargs, &argv[j]);
- j += handlers[i].args;
- k++;
- if(j >= argc)
- break;
- }
- }
- }
-
- if (k == 0)
- {
- fprintf (stderr, "Unknown command \"%s\". Try \"audtool help\".\n", argv[1]);
- exit (EXIT_FAILURE);
- }
-
- audtool_disconnect();
-
- return 0;
+ audtool_connect ();
+
+ if (argc < 2)
+ {
+ fprintf (stderr, "Not enough parameters. Try \"audtool help\".\n");
+ exit (EXIT_FAILURE);
+ }
+
+ for (j = 1; j < argc; j ++)
+ {
+ for (i = 0; handlers[i].name != NULL; i++)
+ {
+ if ((! g_ascii_strcasecmp (handlers[i].name, argv[j]) ||
+ ! g_ascii_strcasecmp (g_strconcat ("--", handlers[i].name, NULL),
+ argv[j])) && g_ascii_strcasecmp ("<sep>", handlers[i].name))
+ {
+ int numargs = handlers[i].args + 1 < argc - j ? handlers[i].args + 1 : argc - j;
+ handlers[i].handler (numargs, & argv[j]);
+ j += handlers[i].args;
+ k ++;
+
+ if (j >= argc)
+ break;
+ }
+ }
+ }
+
+ if (k == 0)
+ {
+ fprintf (stderr, "Unknown command \"%s\". Try \"audtool help\".\n", argv[1]);
+ exit (EXIT_FAILURE);
+ }
+
+ return 0;
}
diff --git a/src/audtool/report.c b/src/audtool/report.c
index ecb4791..01a2116 100644
--- a/src/audtool/report.c
+++ b/src/audtool/report.c
@@ -18,81 +18,84 @@
*/
#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include <locale.h>
-#include "libaudclient/audctrl.h"
+
#include "audtool.h"
-void audtool_report(const gchar *str, ...)
+void audtool_report (const char * str, ...)
{
- gchar *buf;
- va_list va;
+ char * buf;
+ va_list va;
- va_start(va, str);
- buf = g_strdup_vprintf(str, va);
- va_end(va);
+ va_start (va, str);
+ buf = g_strdup_vprintf (str, va);
+ va_end (va);
- g_print("%s\n", buf);
- g_free(buf);
+ g_print ("%s\n", buf);
+ g_free (buf);
}
-void audtool_whine(const gchar *str, ...)
+void audtool_whine (const char * str, ...)
{
- gchar *buf;
- va_list va;
+ char * buf;
+ va_list va;
- va_start(va, str);
- buf = g_strdup_vprintf(str, va);
- va_end(va);
+ va_start (va, str);
+ buf = g_strdup_vprintf (str, va);
+ va_end (va);
- g_printerr("audtool: %s", buf);
- g_free(buf);
+ g_printerr ("audtool: %s", buf);
+ g_free (buf);
}
-void audtool_whine_args(const gchar *name, const gchar *fmt, ...)
+void audtool_whine_args (const char * name, const char * fmt, ...)
{
- gchar *buf;
- va_list va;
+ char * buf;
+ va_list va;
- va_start(va, fmt);
- buf = g_strdup_vprintf(fmt, va);
- va_end(va);
+ va_start (va, fmt);
+ buf = g_strdup_vprintf (fmt, va);
+ va_end (va);
- g_printerr("audtool: Invalid parameters for %s\n", name);
- g_printerr(" syntax: %s %s\n", name, buf);
- g_free(buf);
+ g_printerr ("audtool: Invalid parameters for %s\n", name);
+ g_printerr (" syntax: %s %s\n", name, buf);
+ g_free (buf);
}
-void audtool_whine_tuple_fields(void)
+void audtool_whine_tuple_fields (void)
{
- gint nfields, i;
- gchar **fields = audacious_remote_get_tuple_fields(dbus_proxy),
- **tmp = fields;
-
- audtool_whine("Field names include, but are not limited to:\n");
-
- for (nfields = 0; tmp && *tmp; nfields++, tmp++);
-
- tmp = fields;
- i = 0;
- g_printerr(" ");
- while (tmp && *tmp) {
- i += g_utf8_strlen(*tmp, -1);
- if (i > 45) {
- g_printerr("\n ");
- i = 0;
+ char * * fields = NULL;
+ obj_audacious_call_get_tuple_fields_sync (dbus_proxy, & fields, NULL, NULL);
+
+ if (! fields)
+ exit (1);
+
+ audtool_whine ("Field names include, but are not limited to:\n");
+
+ char * * tmp = fields;
+ int col = 0;
+
+ g_printerr (" ");
+
+ while (tmp && * tmp)
+ {
+ col += g_utf8_strlen (* tmp, -1);
+
+ if (col > 45)
+ {
+ g_printerr ("\n ");
+ col = 0;
}
- g_printerr("%s", *tmp);
- if (--nfields > 0)
- g_printerr(", ");
- g_free(*tmp);
- tmp++;
+ g_printerr ("%s", * tmp);
+
+ g_free (* tmp);
+ tmp ++;
+
+ if (* tmp)
+ g_printerr (", ");
}
- g_printerr("\n");
+ g_printerr ("\n");
- g_free(fields);
+ g_free (fields);
}
-
diff --git a/src/audtool/wrappers.c b/src/audtool/wrappers.c
new file mode 100644
index 0000000..c255954
--- /dev/null
+++ b/src/audtool/wrappers.c
@@ -0,0 +1,194 @@
+/*
+ * wrappers.c
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include <stdlib.h>
+
+#include "audtool.h"
+#include "wrappers.h"
+
+void generic_on_off (int argc, char * * argv, OnOffFunc func)
+{
+ gboolean show = TRUE;
+
+ if (argc >= 2)
+ {
+ if (! g_ascii_strcasecmp (argv[1], "on"))
+ show = TRUE;
+ else if (! g_ascii_strcasecmp (argv[1], "off"))
+ show = FALSE;
+ else
+ {
+ audtool_whine_args (argv[0], "<on/off>");
+ exit (1);
+ }
+ }
+
+ func (dbus_proxy, show, NULL, NULL);
+}
+
+int get_playlist_length (void)
+{
+ int length = -1;
+ obj_audacious_call_length_sync (dbus_proxy, & length, NULL, NULL);
+
+ if (length < 0)
+ exit (1);
+
+ return length;
+}
+
+int get_queue_length (void)
+{
+ int length = -1;
+ obj_audacious_call_get_playqueue_length_sync (dbus_proxy, & length, NULL, NULL);
+
+ if (length < 0)
+ exit (1);
+
+ return length;
+}
+
+int get_queue_entry (int qpos)
+{
+ unsigned entry = -1;
+ obj_audacious_call_queue_get_list_pos_sync (dbus_proxy, qpos, & entry, NULL, NULL);
+
+ if (entry == (unsigned) -1)
+ exit (1);
+
+ return entry;
+}
+
+int find_in_queue (int entry)
+{
+ unsigned qpos = -1;
+ obj_audacious_call_queue_get_queue_pos_sync (dbus_proxy, entry, & qpos, NULL, NULL);
+
+ if (qpos == (unsigned) -1)
+ exit (1);
+
+ return qpos;
+}
+
+int get_current_entry (void)
+{
+ unsigned entry = -1;
+ obj_audacious_call_position_sync (dbus_proxy, & entry, NULL, NULL);
+
+ if (entry == (unsigned) -1)
+ exit (1);
+
+ return entry;
+}
+
+char * get_entry_filename (int entry)
+{
+ char * uri = NULL;
+ obj_audacious_call_song_filename_sync (dbus_proxy, entry, & uri, NULL, NULL);
+
+ if (! uri)
+ exit (1);
+
+ char * filename = g_filename_from_uri (uri, NULL, NULL);
+
+ if (filename)
+ {
+ g_free (uri);
+ return filename;
+ }
+
+ return uri;
+}
+
+char * get_entry_title (int entry)
+{
+ char * title = NULL;
+ obj_audacious_call_song_title_sync (dbus_proxy, entry, & title, NULL, NULL);
+
+ if (! title)
+ exit (1);
+
+ return title;
+}
+
+int get_entry_length (int entry)
+{
+ int length = -1;
+ obj_audacious_call_song_frames_sync (dbus_proxy, entry, & length, NULL, NULL);
+
+ if (length < 0)
+ exit (1);
+
+ return length;
+}
+
+char * get_entry_field (int entry, const char * field)
+{
+ GVariant * var = NULL;
+ obj_audacious_call_song_tuple_sync (dbus_proxy, entry, field, & var, NULL, NULL);
+
+ if (! var || ! g_variant_is_of_type (var, G_VARIANT_TYPE_VARIANT))
+ exit (1);
+
+ GVariant * var2 = g_variant_get_variant (var);
+
+ if (! var2)
+ exit (1);
+
+ char * str;
+
+ if (g_variant_is_of_type (var2, G_VARIANT_TYPE_STRING))
+ str = g_strdup (g_variant_get_string (var2, NULL));
+ else if (g_variant_is_of_type (var2, G_VARIANT_TYPE_INT32))
+ str = g_strdup_printf ("%d", (int) g_variant_get_int32 (var2));
+ else
+ exit (1);
+
+ g_variant_unref (var);
+ g_variant_unref (var2);
+
+ return str;
+}
+
+int get_current_time (void)
+{
+ unsigned time = -1;
+ obj_audacious_call_time_sync (dbus_proxy, & time, NULL, NULL);
+
+ if (time == (unsigned) -1)
+ exit (1);
+
+ return time;
+}
+
+void get_current_info (int * bitrate_p, int * samplerate_p, int * channels_p)
+{
+ int bitrate = -1, samplerate = -1, channels = -1;
+ obj_audacious_call_get_info_sync (dbus_proxy, & bitrate, & samplerate, & channels, NULL, NULL);
+
+ if (bitrate < 0 || samplerate < 0 || channels < 0)
+ exit (1);
+
+ if (bitrate_p)
+ * bitrate_p = bitrate;
+ if (samplerate_p)
+ * samplerate_p = samplerate;
+ if (channels_p)
+ * channels_p = channels;
+}
diff --git a/src/audtool/wrappers.h b/src/audtool/wrappers.h
new file mode 100644
index 0000000..e9a9659
--- /dev/null
+++ b/src/audtool/wrappers.h
@@ -0,0 +1,43 @@
+/*
+ * wrappers.h
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef AUDTOOL_WRAPPERS_H
+#define AUDTOOL_WRAPPERS_H
+
+typedef gboolean (* OnOffFunc) (ObjAudacious * proxy, gboolean show,
+ GCancellable * cancellable, GError * * error);
+
+void generic_on_off (int argc, char * * argv, OnOffFunc func);
+
+int get_playlist_length (void);
+
+int get_queue_length (void);
+int get_queue_entry (int qpos);
+int find_in_queue (int entry);
+
+int get_current_entry (void);
+char * get_entry_filename (int entry);
+char * get_entry_title (int entry);
+int get_entry_length (int entry);
+char * get_entry_field (int entry, const char * field);
+
+int get_current_time (void);
+void get_current_info (int * bitrate, int * samplerate, int * channels);
+
+#endif /* AUDTOOL_WRAPPERS_H */
diff --git a/src/dbus/Makefile b/src/dbus/Makefile
new file mode 100644
index 0000000..45a7e46
--- /dev/null
+++ b/src/dbus/Makefile
@@ -0,0 +1,18 @@
+STATIC_LIB_NOINST = aud-dbus.a
+
+SRCS = aud-dbus.c
+CLEAN = aud-dbus.c aud-dbus.h
+
+include ../../buildsys.mk
+include ../../extra.mk
+
+CPPFLAGS := -I../.. ${CPPFLAGS} ${GLIB_CFLAGS} ${GIO_CFLAGS}
+LIBS := ${LIBS} ${GLIB_LIBS} ${GIO_LIBS}
+
+pre-depend: aud-dbus.c aud-dbus.h
+
+aud-dbus.h: aud-dbus.xml
+ gdbus-codegen --interface-prefix org.atheme. --c-namespace Obj --generate-c-code aud-dbus aud-dbus.xml
+
+aud-dbus.c: aud-dbus.h
+ # nothing to do here
diff --git a/src/audacious/objects.xml b/src/dbus/aud-dbus.xml
index 4b3317f..36e2184 100644
--- a/src/audacious/objects.xml
+++ b/src/dbus/aud-dbus.xml
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
- * objects.xml
- * Copyright 2007 Ben Tucker
+ * aud-dbus.xml
+ * Copyright 2007-2014 Ben Tucker, Yoshiki Yazawa, Matti HÀmÀlÀinen, and
+ * John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -19,80 +20,6 @@
* the use of this software.
-->
-<!--
- Defined:
- CMD_GET_VERSION //CHANGED: now it returns audacious version instead of protocol version.
- CMD_PLAY
- CMD_PAUSE
- CMD_STOP
- CMD_IS_PLAYING
- CMD_GET_PLAYLIST_POS
- CMD_SET_PLAYLIST_POS
- CMD_GET_PLAYLIST_LENGTH
- CMD_PLAYLIST_CLEAR
- CMD_GET_OUTPUT_TIME
- CMD_JUMP_TO_TIME
- CMD_GET_PLAYLIST_FILE
- CMD_GET_PLAYLIST_TITLE
- CMD_GET_PLAYLIST_TIME
- CMD_PLAYLIST_PREV
- CMD_PLAYLIST_NEXT
- CMD_TOGGLE_REPEAT
- CMD_TOGGLE_SHUFFLE
- CMD_PLAYLIST_ADD_URL_STRING
- CMD_PLAYLIST_DELETE
- CMD_IS_REPEAT
- CMD_IS_SHUFFLE
- CMD_GET_VOLUME
- CMD_SET_VOLUME
- CMD_GET_BALANCE
- CMD_IS_EQ_WIN
- CMD_IS_PL_WIN
- CMD_IS_MAIN_WIN
- CMD_PL_WIN_TOGGLE
- CMD_EQ_WIN_TOGGLE
- CMD_MAIN_WIN_TOGGLE
- CMD_QUIT
- CMD_EJECT
- CMD_GET_INFO
- CMD_PLAYLIST_GET_TUPLE_DATA
- CMD_IS_ADVANCE
- CMD_TOGGLE_ADVANCE
- CMD_SHOW_PREFS_BOX
- CMD_SHOW_ABOUT_BOX
- CMD_SHOW_JTF_BOX
-
- Newly defined:
- CMD_PLAY_PAUSE
- CMD_ACTIVATE
- CMD_GET_SKIN
- CMD_SET_SKIN
- CMD_GET_INFO
- CMD_TOGGLE_AOT
- CMD_GET_PLAYQUEUE_LENGTH
- CMD_PLAYQUEUE_ADD
- CMD_PLAYQUEUE_REMOVE
- CMD_PLAYQUEUE_CLEAR
- CMD_PLAYQUEUE_GET_LIST_POS //CHANGED: get list position by queue position
- CMD_PLAYQUEUE_GET_QUEUE_POS //CHANGED: get queue position by list postion
- CMD_PLAYQUEUE_IS_QUEUED
- CMD_PLAYLIST_INS_URL_STRING
- CMD_PLAYLIST_ENQUEUE_TO_TEMP
- CMD_PLAYLIST_ADD
- CMD_GET_EQ //CHANGED: now these functions use double due to dbus-glib restriction
- CMD_GET_EQ_PREAMP
- CMD_GET_EQ_BAND //NOTE: GArray is used for bands
- CMD_SET_EQ
- CMD_SET_EQ_PREAMP
- CMD_SET_EQ_BAND
-
- Obsolete:
- CMD_PLAYLIST_INS //unnecessary?
- CMD_GET_EQ_DATA //obsolete
- CMD_SET_EQ_DATA //obsolete
-
--->
-
<node name="/">
<!-- Audacious General Information -->
<interface name="org.atheme.audacious">
@@ -102,14 +29,10 @@
</method>
<!-- Quit Audacious -->
- <method name="Quit">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Quit" />
<!-- Open files (Eject) -->
- <method name="Eject">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Eject" />
<!-- Main window visibility -->
<method name="MainWinVisible">
@@ -118,8 +41,7 @@
<!-- Toggle main window visibility -->
<method name="ShowMainWin">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" name="show"/>
+ <arg type="b" direction="in" name="show"/>
</method>
<!-- Get names of available 'standard' tuple fields -->
@@ -130,19 +52,13 @@
<!-- Playback Information/Manipulation -->
<!-- Begin or resume playback -->
- <method name="Play">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Play" />
<!-- Pause playback -->
- <method name="Pause">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Pause" />
<!-- Stop playback -->
- <method name="Stop">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Stop" />
<!-- Is playback playing? -->
<method name="Playing">
@@ -185,9 +101,8 @@
<!-- Seek to some absolute position in the current song -->
<method name="Seek">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- Position of song, in ms, to seek to -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
</method>
<!-- What is the playback volume? -->
@@ -200,11 +115,10 @@
<!-- Set the playback volume -->
<method name="SetVolume">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- Volume of the left channel -->
- <arg type="i" name="vl"/>
+ <arg type="i" direction="in" name="vl"/>
<!-- Volume of the right channel -->
- <arg type="i" name="vr"/>
+ <arg type="i" direction="in" name="vr"/>
</method>
<!-- Get the playback balance -->
@@ -221,14 +135,10 @@
</method>
<!-- Skip ahead one song in the current playlist -->
- <method name="Advance">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Advance" />
<!-- Skip backwards one song in the current playlist -->
- <method name="Reverse">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Reverse" />
<!-- Playlist length -->
<method name="Length">
@@ -239,7 +149,7 @@
<!-- Get a song's title -->
<method name="SongTitle">
<!-- Song position in the playlist -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
<!-- Return title of desired song -->
<arg type="s" direction="out" name="title"/>
@@ -248,7 +158,7 @@
<!-- Get a song's filename -->
<method name="SongFilename">
<!-- Song position in the playlist -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
<!-- Return filename of desired song -->
<arg type="s" direction="out" name="filename"/>
@@ -257,7 +167,7 @@
<!-- Get the length of some song, in seconds -->
<method name="SongLength">
<!-- Song position in the playlist -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
<!-- Return length, in seconds, of desired song -->
<arg type="i" direction="out" name="length"/>
@@ -266,7 +176,7 @@
<!-- Get the length of some song, in frames -->
<method name="SongFrames">
<!-- Song position in the playlist -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
<!-- Return length, in frames, of desired song -->
<arg type="i" direction="out" name="length"/>
@@ -275,10 +185,10 @@
<!-- Get the value of a tuple field of some song -->
<method name="SongTuple">
<!-- Song position in the playlist -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
<!-- Tuple name -->
- <arg type="s" name="tuple"/>
+ <arg type="s" direction="in" name="tuple"/>
<!-- Return tuple value -->
<arg type="v" direction="out" name="value"/>
@@ -286,57 +196,48 @@
<!-- Jump to some position in the playlist -->
<method name="Jump">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- Song position to jump to -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
</method>
<!-- Add some file to the current playlist -->
<method name="Add">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- File to add -->
- <arg type="s" name="file"/>
+ <arg type="s" direction="in" name="file"/>
</method>
<!-- Add some URL to the current playlist -->
<method name="AddUrl">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- URL to add -->
- <arg type="s" name="url"/>
+ <arg type="s" direction="in" name="url"/>
</method>
<!-- Add a list of files -->
<method name="AddList">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- Array of filenames to add -->
- <arg type="as" name="filenames"/>
+ <arg type="as" direction="in" name="filenames"/>
</method>
<!-- Open a list of files -->
<method name="OpenList">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- Array of filenames to open -->
- <arg type="as" name="filenames"/>
+ <arg type="as" direction="in" name="filenames"/>
</method>
<!-- Open a list of files in a temporary playlist -->
<method name="OpenListToTemp">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- Array of filenames to open -->
- <arg type="as" name="filenames"/>
+ <arg type="as" direction="in" name="filenames"/>
</method>
<!-- Delete some song from the playlist -->
<method name="Delete">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
<!-- Position of song to delete -->
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
</method>
<!-- Clear the playlist -->
- <method name="Clear">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="Clear" />
<!-- Query auto-advance status -->
<method name="AutoAdvance">
@@ -344,9 +245,7 @@
</method>
<!-- Toggle auto-advance -->
- <method name="ToggleAutoAdvance">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="ToggleAutoAdvance" />
<!-- Query repeat status -->
<method name="Repeat">
@@ -354,9 +253,7 @@
</method>
<!-- Toggle repeat -->
- <method name="ToggleRepeat">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="ToggleRepeat" />
<!-- Query shuffle status -->
<method name="Shuffle">
@@ -364,9 +261,7 @@
</method>
<!-- Toggle shuffle -->
- <method name="ToggleShuffle">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="ToggleShuffle" />
<!-- Query stop-after-song status -->
<method name="StopAfter">
@@ -374,48 +269,40 @@
</method>
<!-- Toggle stop-after-song -->
- <method name="ToggleStopAfter">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="ToggleStopAfter" />
<!-- Show preferences window -->
<method name="ShowPrefsBox">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" name="show"/>
+ <arg type="b" direction="in" name="show"/>
</method>
<!-- Show about window -->
<method name="ShowAboutBox">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" name="show"/>
+ <arg type="b" direction="in" name="show"/>
</method>
<!-- Show jump to file window -->
<method name="ShowJtfBox">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" name="show"/>
+ <arg type="b" direction="in" name="show"/>
</method>
<!-- Show filebrowser -->
<method name="ShowFilebrowser">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" name="show"/>
+ <arg type="b" direction="in" name="show"/>
</method>
<!-- Either play or pause -->
- <method name="PlayPause">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="PlayPause" />
<!-- Playqueue get playlist pos -->
<method name="QueueGetListPos">
- <arg type="u" name="qpos"/>
+ <arg type="u" direction="in" name="qpos"/>
<arg type="u" direction="out" name="pos"/>
</method>
<!-- Playqueue get playqueue pos -->
<method name="QueueGetQueuePos">
- <arg type="u" name="pos"/>
+ <arg type="u" direction="in" name="pos"/>
<arg type="u" direction="out" name="qpos"/>
</method>
@@ -426,48 +313,36 @@
<arg type="i" direction="out" name="nch"/>
</method>
- <method name="ToggleAot">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" name="ontop"/>
- </method>
-
<method name="GetPlayqueueLength">
<arg type="i" direction="out" name="length"/>
</method>
<method name="PlaylistInsUrlString">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="s" name="url"/>
- <arg type="i" name="pos"/>
+ <arg type="s" direction="in" name="url"/>
+ <arg type="i" direction="in" name="pos"/>
</method>
<method name="PlaylistAdd">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="s" name="list"/>
+ <arg type="s" direction="in" name="list"/>
</method>
<method name="PlayqueueAdd">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="i" name="pos"/>
+ <arg type="i" direction="in" name="pos"/>
</method>
<method name="PlayqueueRemove">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="i" name="pos"/>
+ <arg type="i" direction="in" name="pos"/>
</method>
- <method name="PlayqueueClear">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- </method>
+ <method name="PlayqueueClear" />
<method name="PlayqueueIsQueued">
- <arg type="i" name="pos"/>
+ <arg type="i" direction="in" name="pos"/>
<arg type="b" direction="out" name="is_queued"/>
</method>
<method name="PlaylistEnqueueToTemp">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="s" name="url"/>
+ <arg type="s" direction="in" name="url"/>
</method>
<!-- equalizer -->
@@ -481,35 +356,54 @@
</method>
<method name="GetEqBand">
- <arg type="i" name="band"/>
+ <arg type="i" direction="in" name="band"/>
<arg type="d" direction="out" name="value"/>
</method>
<method name="SetEq">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="d" name="preamp"/>
- <arg type="ad" name="bands"/>
+ <arg type="d" direction="in" name="preamp"/>
+ <arg type="ad" direction="in" name="bands"/>
</method>
<method name="SetEqPreamp">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="d" name="preamp"/>
+ <arg type="d" direction="in" name="preamp"/>
</method>
<method name="SetEqBand">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="i" name="band"/>
- <arg type="d" name="value"/>
+ <arg type="i" direction="in" name="band"/>
+ <arg type="d" direction="in" name="value"/>
</method>
- <!-- Activate/Deactivate Equalizer -->
+ <!-- Activate/Deactivate Equalizer -->
<method name="EqualizerActivate">
- <annotation name="org.freedesktop.DBus.GLib.NoReply" value=""/>
- <arg type="b" name="active"/>
+ <arg type="b" direction="in" name="active"/>
+ </method>
+
+ <method name="NumberOfPlaylists">
+ <arg type="i" direction="out" name="count" />
+ </method>
+
+ <method name="GetActivePlaylist">
+ <arg type="i" direction="out" name="plnum" />
+ </method>
+
+ <method name="SetActivePlaylist">
+ <arg type="i" direction="in" name="plnum" />
</method>
<method name="GetActivePlaylistName">
<arg type="s" direction="out" name="plname" />
</method>
+
+ <method name="SetActivePlaylistName">
+ <arg type="s" direction="in" name="plname" />
+ </method>
+
+ <method name="NewPlaylist" />
+
+ <method name="DeleteActivePlaylist" />
+
+ <method name="PlayActivePlaylist" />
+
</interface>
</node>
diff --git a/src/libaudclient/Makefile b/src/libaudclient/Makefile
deleted file mode 100644
index 52f720d..0000000
--- a/src/libaudclient/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-SHARED_LIB = ${LIB_PREFIX}audclient${LIB_SUFFIX}
-LIB_MAJOR = 2
-LIB_MINOR = 0
-
-SRCS = audctrl.c
-
-INCLUDES = audctrl.h
-
-include ../../buildsys.mk
-include ../../extra.mk
-
-pre-depend:
- cd ../audacious; ${MAKE} ${MFLAGS} dbus-client-bindings.h
-
-CPPFLAGS := -I.. -I../.. \
- ${CPPFLAGS} \
- ${DBUS_CFLAGS} \
- ${GLIB_CFLAGS}
-
-CFLAGS += ${LIB_CFLAGS}
-
-LIBS += ${GLIB_LIBS} \
- ${DBUS_LIBS}
diff --git a/src/libaudclient/audctrl.c b/src/libaudclient/audctrl.c
deleted file mode 100644
index 87b36a6..0000000
--- a/src/libaudclient/audctrl.c
+++ /dev/null
@@ -1,993 +0,0 @@
-/*
- * audctrl.c
- * Copyright 2007-2011 Ben Tucker, William Pitcock, Yoshiki Yazawa,
- * Matti HÀmÀlÀinen, and John Lindgren
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#include <stdlib.h>
-#include <glib.h>
-#include <string.h>
-#include <dbus/dbus-glib.h>
-
-#include "audacious/dbus.h"
-#include "audacious/dbus-client-bindings.h"
-#include "audctrl.h"
-
-static GError *error = NULL; //it must be hidden from outside, otherwise symbol conflict likely to happen.
-
-/**
- * Sends a list of URIs to Audacious, either replacing current
- * playlist or enqueuing them.
- *
- * @param[in] proxy DBus proxy for Audacious
- * @param[in] list An array of URI strings to add.
- * @param[in] num Number of URIs to add.
- * @param[in] enqueue Whether or not the new playlist should be added on, or replace the current playlist.
- **/
-EXPORT void audacious_remote_playlist(DBusGProxy *proxy, gchar **list, gint num, gboolean enqueue) {
- GList *glist = NULL;
- gchar **data = list;
-
- g_return_if_fail(list != NULL);
- g_return_if_fail(num > 0);
-
- if (!enqueue)
- audacious_remote_playlist_clear(proxy);
-
- // construct a GList
- while(data) {
- glist = g_list_append(glist, (gpointer)data);
- data++;
- }
-
- org_atheme_audacious_playlist_add(proxy, (gpointer)glist, &error);
-
- g_list_free(glist);
- glist = NULL;
-
- if (!enqueue)
- audacious_remote_play(proxy);
-}
-
-/**
- * Queries Audacious for its version identifier.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return String describing the version of Audacious.
- **/
-EXPORT gchar *audacious_remote_get_version(DBusGProxy *proxy) {
- char *string = NULL;
- org_atheme_audacious_version(proxy, &string, &error);
- g_clear_error(&error);
-
- return (string ? string : NULL);
-}
-
-/**
- * Sends a list of URIs to Audacious to add to the playlist.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] list A GList of URIs to add to the playlist.
- **/
-EXPORT void audacious_remote_playlist_add (DBusGProxy * proxy, GList * list)
-{
- const gchar * filenames[g_list_length (list) + 1];
- int count;
-
- for (count = 0; list != NULL; count ++, list = list->next)
- filenames[count] = list->data;
-
- filenames[count] = NULL;
-
- org_atheme_audacious_add_list (proxy, filenames, & error);
- g_clear_error (& error);
-}
-
-/**
- * Sends a list of URIs for Audacious to open. New in Audacious 2.3.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] list A GList of URIs to open
- **/
-EXPORT void audacious_remote_playlist_open_list (DBusGProxy * proxy, GList * list)
-{
- const gchar * filenames[g_list_length (list) + 1];
- int count;
-
- for (count = 0; list != NULL; count ++, list = list->next)
- filenames[count] = list->data;
-
- filenames[count] = NULL;
-
- org_atheme_audacious_open_list (proxy, filenames, & error);
- g_clear_error (& error);
-}
-
-/**
- * Sends a list of URIs for Audacious to open in a temporary playlist. New in
- * Audacious 2.3.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] list A GList of URIs to open
- **/
-EXPORT void audacious_remote_playlist_open_list_to_temp (DBusGProxy * proxy, GList *
- list)
-{
- const gchar * filenames[g_list_length (list) + 1];
- int count;
-
- for (count = 0; list != NULL; count ++, list = list->next)
- filenames[count] = list->data;
-
- filenames[count] = NULL;
-
- org_atheme_audacious_open_list_to_temp (proxy, filenames, & error);
- g_clear_error (& error);
-}
-
-/**
- * Deletes a playlist entry from current playlist in given position.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos The playlist position to delete.
- **/
-EXPORT void audacious_remote_playlist_delete(DBusGProxy *proxy, guint pos) {
- org_atheme_audacious_delete(proxy, pos, &error);
- g_clear_error(&error);
-}
-
-/**
- * Requests audacious to begin playback.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_play(DBusGProxy *proxy) {
- org_atheme_audacious_play(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to pause.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_pause(DBusGProxy *proxy) {
- org_atheme_audacious_pause(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to stop.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_stop(DBusGProxy *proxy) {
- org_atheme_audacious_stop(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries audacious about whether it is playing or not.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return TRUE if playing, FALSE otherwise.
- **/
-EXPORT gboolean audacious_remote_is_playing(DBusGProxy *proxy) {
- gboolean is_playing = FALSE;
- org_atheme_audacious_playing(proxy, &is_playing, &error);
- g_clear_error(&error);
- return is_playing;
-}
-
-/**
- * audacious_remote_is_paused:
- * @param[in] proxy DBus proxy for audacious
- *
- * Queries audacious about whether it is paused or not.
- *
- * @return TRUE if playing, FALSE otherwise.
- **/
-EXPORT gboolean audacious_remote_is_paused(DBusGProxy *proxy) {
- gboolean is_paused = FALSE;
- org_atheme_audacious_paused(proxy, &is_paused, &error);
- g_clear_error(&error);
- return is_paused;
-}
-
-/**
- * audacious_remote_get_playlist_pos:
- * @param[in] proxy DBus proxy for audacious
- *
- * Queries audacious about the current playlist position.
- *
- * @return The current playlist position.
- **/
-EXPORT gint audacious_remote_get_playlist_pos(DBusGProxy *proxy) {
- guint pos = 0;
- org_atheme_audacious_position(proxy, &pos, &error);
- g_clear_error(&error);
- return pos;
-}
-
-/**
- * audacious_remote_set_playlist_pos:
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos Playlist position to jump to.
- *
- * Tells audacious to jump to a different playlist position.
- **/
-EXPORT void audacious_remote_set_playlist_pos(DBusGProxy *proxy, guint pos) {
- org_atheme_audacious_jump (proxy, pos, &error);
- g_clear_error(&error);
-}
-
-/**
- * audacious_remote_get_playlist_length:
- * @param[in] proxy DBus proxy for audacious
- *
- * Queries audacious about the current playlist length.
- *
- * @return The amount of entries in the playlist.
- **/
-EXPORT gint audacious_remote_get_playlist_length(DBusGProxy *proxy) {
- gint len = 0;
- org_atheme_audacious_length(proxy, &len, &error);
- g_clear_error(&error);
- return len;
-}
-
-/**
- * audacious_remote_playlist_clear:
- * @param[in] proxy DBus proxy for audacious
- *
- * Clears the playlist.
- **/
-EXPORT void audacious_remote_playlist_clear(DBusGProxy *proxy) {
- org_atheme_audacious_clear(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * audacious_remote_get_output_time:
- * @param[in] proxy DBus proxy for audacious
- *
- * Queries audacious about the current output position.
- *
- * @return The current output position.
- **/
-EXPORT gint audacious_remote_get_output_time(DBusGProxy *proxy) {
- guint time = 0;
- org_atheme_audacious_time(proxy, &time, &error);
- g_clear_error(&error);
- return time;
-}
-
-/**
- * audacious_remote_jump_to_time:
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos The time (in milliseconds) to jump to.
- *
- * Tells audacious to seek to a new time position.
- **/
-EXPORT void audacious_remote_jump_to_time(DBusGProxy *proxy, guint pos) {
- org_atheme_audacious_seek (proxy, pos, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries audacious for the current volume settings.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[out] vl Pointer to integer containing the left channel's volume (0-100).
- * @param[out] vr Pointer to integer containing the right channel's volume (0-100).
- **/
-EXPORT void audacious_remote_get_volume(DBusGProxy *proxy, gint * vl, gint * vr) {
- org_atheme_audacious_volume(proxy, vl, vr, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries audacious about the current volume.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return The current volume (0-100).
- **/
-EXPORT gint audacious_remote_get_main_volume(DBusGProxy *proxy) {
- gint vl = 0, vr = 0;
-
- audacious_remote_get_volume(proxy, &vl, &vr);
-
- return (vl > vr) ? vl : vr;
-}
-
-/**
- * Queries audacious about the current balance.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return The current balance.
- **/
-EXPORT gint audacious_remote_get_balance(DBusGProxy *proxy) {
- gint balance = 50;
- org_atheme_audacious_balance(proxy, &balance, &error);
- g_clear_error(&error);
- return balance;
-}
-
-/**
- * Sets the volume for the left and right channels in Audacious.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] vl The volume for the left channel (0-100).
- * @param[in] vr The volume for the right channel (0-100).
- **/
-EXPORT void audacious_remote_set_volume(DBusGProxy *proxy, gint vl, gint vr) {
- org_atheme_audacious_set_volume(proxy, vl, vr, &error);
- g_clear_error(&error);
-}
-
-
-/**
- * Sets the volume in Audacious.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] v The volume to set (0-100).
- **/
-EXPORT void audacious_remote_set_main_volume(DBusGProxy *proxy, gint v) {
- gint b = 50, vl = 0, vr = 0;
-
- b = audacious_remote_get_balance(proxy);
-
- if (b < 0) {
- vl = v;
- vr = (v * (100 - abs(b))) / 100;
- } else if (b > 0) {
- vl = (v * (100 - b)) / 100;
- vr = v;
- } else
- vl = vr = v;
- audacious_remote_set_volume(proxy, vl, vr);
-}
-
-/**
- * Sets the balance in Audacious.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] b The balance to set.
- **/
-EXPORT void audacious_remote_set_balance(DBusGProxy *proxy, gint b) {
- gint v = 0, vl = 0, vr = 0;
-
- if (b < -100)
- b = -100;
- if (b > 100)
- b = 100;
-
- v = audacious_remote_get_main_volume(proxy);
-
- if (b < 0) {
- vl = v;
- vr = (v * (100 - abs(b))) / 100;
- } else if (b > 0) {
- vl = (v * (100 - b)) / 100;
- vr = v;
- } else
- vl = vr = v;
- audacious_remote_set_volume(proxy, vl, vr);
-}
-
-/**
- * Queries Audacious about a playlist entry's file.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos The playlist position to query for.
- * @return A path to the file in the playlist at %pos position.
- **/
-EXPORT gchar *audacious_remote_get_playlist_file(DBusGProxy *proxy, guint pos) {
- gchar *out = NULL;
- org_atheme_audacious_song_filename(proxy, pos, &out, &error);
- g_clear_error(&error);
- return out;
-}
-
-/**
- * Queries Audacious about a playlist entry's title.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos The playlist position to query for.
- * @return The title for the entry in the playlist at %pos position.
- **/
-EXPORT gchar *audacious_remote_get_playlist_title(DBusGProxy *proxy, guint pos) {
- gchar *out = NULL;
- org_atheme_audacious_song_title(proxy, pos, &out, &error);
- g_clear_error(&error);
- return out;
-}
-
-/**
- * Queries Audacious about a playlist entry's length.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos The playlist position to query for.
- * @return The length of the entry in the playlist at %pos position.
- **/
-EXPORT gint audacious_remote_get_playlist_time(DBusGProxy *proxy, guint pos) {
- gint out = 0;
- org_atheme_audacious_song_frames(proxy, pos, &out, &error);
- g_clear_error(&error);
- return out;
-}
-
-/**
- * Queries Audacious about the current audio format.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[out] rate Pointer to an integer containing the bitrate.
- * @param[out] freq Pointer to an integer containing the frequency.
- * @param[out] nch Pointer to an integer containing the number of channels.
- **/
-EXPORT void audacious_remote_get_info(DBusGProxy *proxy, gint *rate, gint *freq,
- gint *nch) {
- org_atheme_audacious_info(proxy, rate, freq, nch, &error);
- g_clear_error(&error);
-}
-
-/**
- * Toggles the main window's visibility.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] show Whether or not to show the main window.
- **/
-EXPORT void audacious_remote_main_win_toggle(DBusGProxy *proxy, gboolean show) {
- org_atheme_audacious_show_main_win(proxy, show, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries Audacious about the main window's visibility.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return TRUE if visible, FALSE otherwise.
- **/
-EXPORT gboolean audacious_remote_is_main_win(DBusGProxy *proxy) {
- gboolean visible = TRUE;
- org_atheme_audacious_main_win_visible(proxy, &visible, &error);
- g_clear_error(&error);
- return visible;
-}
-
-/**
- * Tells audacious to show the preferences pane.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_show_prefs_box(DBusGProxy *proxy) {
- audacious_remote_toggle_prefs_box(proxy, TRUE);
-}
-
-/**
- * Tells audacious to show/hide the preferences pane.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] show shows/hides
- **/
-EXPORT void audacious_remote_toggle_prefs_box(DBusGProxy *proxy, gboolean show) {
- org_atheme_audacious_show_prefs_box(proxy, show, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to show the about box.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_show_about_box(DBusGProxy *proxy) {
- audacious_remote_toggle_about_box(proxy, TRUE);
-}
-
-/**
- * Tells audacious to show/hide the about box.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] show shows/hides
- **/
-EXPORT void audacious_remote_toggle_about_box(DBusGProxy *proxy, gboolean show) {
- org_atheme_audacious_show_about_box(proxy, show, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to set the always-on-top feature.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] ontop Boolean value whether or not Audacious should be always-on-top.
- **/
-EXPORT void audacious_remote_toggle_aot(DBusGProxy *proxy, gboolean ontop) {
- org_atheme_audacious_toggle_aot(proxy, ontop, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to display the open files pane.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_eject(DBusGProxy *proxy) {
- org_atheme_audacious_eject(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * audacious_remote_playlist_prev:
- * @param[in] proxy DBus proxy for audacious
- *
- * Tells audacious to move backwards in the playlist.
- **/
-EXPORT void audacious_remote_playlist_prev(DBusGProxy *proxy) {
- org_atheme_audacious_reverse(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to move forward in the playlist.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_playlist_next(DBusGProxy *proxy) {
- org_atheme_audacious_advance(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to add an URI to the playlist.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] string The URI to add.
- **/
-EXPORT void audacious_remote_playlist_add_url_string(DBusGProxy *proxy,
- gchar *string) {
- org_atheme_audacious_add_url(proxy, string, &error);
- g_clear_error(&error);
-}
-
-/**
- * Check if an Audacious instance is running.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return TRUE if yes, otherwise FALSE.
- **/
-EXPORT gboolean audacious_remote_is_running(DBusGProxy *proxy) {
- char *string = NULL;
- org_atheme_audacious_version(proxy, &string, &error);
- g_clear_error(&error);
- if(string) {
- g_free(string);
- return TRUE;
- }
- else
- return FALSE;
-}
-
-/**
- * Tells audacious to toggle the repeat feature.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_toggle_repeat(DBusGProxy *proxy) {
- org_atheme_audacious_toggle_repeat(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to toggle the shuffle feature.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_toggle_shuffle(DBusGProxy *proxy) {
- org_atheme_audacious_toggle_shuffle (proxy, &error);
- g_clear_error(&error);
-}
-
-EXPORT void audacious_remote_toggle_stop_after (DBusGProxy * proxy)
-{
- org_atheme_audacious_toggle_stop_after (proxy, & error);
- g_clear_error (& error);
-}
-
-/**
- * Queries audacious about whether or not the repeat feature is active.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return TRUE if yes, otherwise FALSE.
- **/
-EXPORT gboolean audacious_remote_is_repeat(DBusGProxy *proxy) {
- gboolean is_repeat;
- org_atheme_audacious_repeat(proxy, &is_repeat, &error);
- g_clear_error(&error);
- return is_repeat;
-}
-
-/**
- * Queries audacious about whether or not the shuffle feature is active.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return TRUE if yes, otherwise FALSE.
- **/
-EXPORT gboolean audacious_remote_is_shuffle(DBusGProxy *proxy) {
- gboolean is_shuffle;
- org_atheme_audacious_shuffle(proxy, &is_shuffle, &error);
- g_clear_error(&error);
- return is_shuffle;
-}
-
-EXPORT gboolean audacious_remote_is_stop_after (DBusGProxy * proxy)
-{
- gboolean is_stop_after;
- org_atheme_audacious_stop_after (proxy, & is_stop_after, & error);
- g_clear_error (& error);
- return is_stop_after;
-}
-
-/**
- * Queries audacious about the equalizer settings.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[out] preamp Pointer to value for preamp setting.
- * @param[out] bands Pointer to array of band settings.
- **/
-EXPORT void audacious_remote_get_eq(DBusGProxy *proxy, gdouble *preamp, GArray **bands) {
- org_atheme_audacious_get_eq(proxy, preamp, bands, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries audacious about the equalizer preamp's setting.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return The equalizer preamp's setting.
- **/
-EXPORT gdouble audacious_remote_get_eq_preamp(DBusGProxy *proxy) {
- gdouble preamp = 0.0;
-
- org_atheme_audacious_get_eq_preamp(proxy, &preamp, &error);
- g_clear_error(&error);
-
- return preamp;
-}
-
-/**
- * Queries audacious about an equalizer band's value.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] band Which band to lookup the value for.
- * @return The equalizer band's value.
- **/
-EXPORT gdouble audacious_remote_get_eq_band(DBusGProxy *proxy, gint band) {
- gdouble value = 0.0;
-
- org_atheme_audacious_get_eq_band(proxy, band, &value, &error);
- g_clear_error(&error);
-
- return value;
-}
-
-/**
- * Tells audacious to set the equalizer up using the provided values.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] preamp Value for preamp setting.
- * @param[in] bands Array of band settings.
- **/
-EXPORT void audacious_remote_set_eq(DBusGProxy *proxy, gdouble preamp, GArray *bands) {
- org_atheme_audacious_set_eq(proxy, preamp, bands, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to set the equalizer's preamp setting.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] preamp Value for preamp setting.
- **/
-EXPORT void audacious_remote_set_eq_preamp(DBusGProxy *proxy, gdouble preamp) {
- org_atheme_audacious_set_eq_preamp(proxy, preamp, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to set an equalizer band's setting.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] band The band to set the value for.
- * @param[in] value The value to set that band to.
- **/
-EXPORT void audacious_remote_set_eq_band(DBusGProxy *proxy, gint band, gdouble value) {
- org_atheme_audacious_set_eq_band(proxy, band, value, &error);
- g_clear_error(&error);
-}
-
-/**
- * Requests audacious to quit.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_quit(DBusGProxy *proxy) {
- org_atheme_audacious_quit(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to toggle between play and pause.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_play_pause(DBusGProxy *proxy) {
- org_atheme_audacious_play_pause(proxy, &error);
-}
-
-/**
- * Tells audacious to add an URI to the playlist at a specific position.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] string The URI to add.
- * @param[in] pos The position to add the URI at.
- **/
-EXPORT void audacious_remote_playlist_ins_url_string(DBusGProxy *proxy,
- gchar *string, guint pos) {
- org_atheme_audacious_playlist_ins_url_string (proxy, string, pos, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to add a playlist entry to the playqueue.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos The playlist position to add to the queue.
- **/
-EXPORT void audacious_remote_playqueue_add(DBusGProxy *proxy, guint pos) {
- org_atheme_audacious_playqueue_add (proxy, pos, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to remove a playlist entry from the playqueue.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos The playlist position to remove from the queue.
- **/
-EXPORT void audacious_remote_playqueue_remove(DBusGProxy *proxy, guint pos) {
- org_atheme_audacious_playqueue_remove (proxy, pos, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries audacious about the playqueue's length.
- *
- * @bug This returns the length of the playlist, NOT the length of the playqueue.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return The number of entries in the playqueue.
- **/
-EXPORT gint audacious_remote_get_playqueue_length(DBusGProxy *proxy) {
- gint len = 0;
- org_atheme_audacious_length(proxy, &len, &error);
- g_clear_error(&error);
- return len;
-}
-
-/**
- * Tells audacious to toggle the no-playlist-advance feature.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_toggle_advance(DBusGProxy *proxy) {
- org_atheme_audacious_toggle_auto_advance(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * audacious_remote_is_advance:
- * @param[in] proxy DBus proxy for audacious
- *
- * Queries audacious about whether or not the no-playlist-advance feature is active.
- *
- * @return TRUE if yes, otherwise FALSE.
- **/
-EXPORT gboolean audacious_remote_is_advance(DBusGProxy *proxy) {
- gboolean is_advance = FALSE;
- org_atheme_audacious_auto_advance(proxy, &is_advance, &error);
- g_clear_error(&error);
- return is_advance;
-}
-
-/**
- * Tells audacious to show the Jump-to-File pane.
- *
- * @param[in] proxy DBus proxy for audacious
- **/
-EXPORT void audacious_remote_show_jtf_box(DBusGProxy *proxy) {
- audacious_remote_toggle_jtf_box(proxy, TRUE);
-}
-
-/**
- * Tells audacious to show/hide the Jump-to-File pane.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] show shows/hides jtf pane
- **/
-EXPORT void audacious_remote_toggle_jtf_box(DBusGProxy *proxy, gboolean show) {
- org_atheme_audacious_show_jtf_box(proxy, show, &error);
- g_clear_error(&error);
-}
-
-/**
- * Tells audacious to show the filebrowser dialog.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] show shows/hides filebrowser
- **/
-EXPORT void audacious_remote_toggle_filebrowser(DBusGProxy *proxy, gboolean show) {
- org_atheme_audacious_show_filebrowser(proxy, show, &error);
- g_clear_error(&error);
-}
-
-/**
- * audacious_remote_playqueue_clear:
- * @param[in] proxy DBus proxy for audacious
- *
- * Tells audacious to clear the playqueue.
- **/
-EXPORT void audacious_remote_playqueue_clear(DBusGProxy *proxy) {
- org_atheme_audacious_playqueue_clear(proxy, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries audacious about whether or not a playlist entry is in the playqueue.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos Position to check queue for.
- * @return TRUE if yes, FALSE otherwise.
- **/
-EXPORT gboolean audacious_remote_playqueue_is_queued(DBusGProxy *proxy, guint pos) {
- gboolean is_queued;
- org_atheme_audacious_playqueue_is_queued (proxy, pos, &is_queued, &error);
- g_clear_error(&error);
- return is_queued;
-}
-
-/**
- * Queries audacious about what the playqueue position is for a playlist entry.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] pos Position to check queue for.
- * @return the playqueue position for a playlist entry
- **/
-EXPORT gint audacious_remote_get_playqueue_queue_position(DBusGProxy *proxy, guint pos) {
- guint qpos = 0;
- org_atheme_audacious_queue_get_queue_pos (proxy, pos, &qpos, &error);
- g_clear_error(&error);
- return qpos;
-}
-
-/**
- * Queries audacious what is the playlist position for given a playqueue entry index.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] qpos Position to check queue for.
- *
- * @return the playlist position for a playqueue entry
- **/
-EXPORT gint audacious_remote_get_playqueue_list_position(DBusGProxy *proxy, guint qpos) {
- guint pos = 0;
- org_atheme_audacious_queue_get_list_pos (proxy, qpos, &pos, &error);
- g_clear_error(&error);
- return pos;
-}
-
-/**
- * Tells audacious to add an URI to a temporary playlist.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] string The URI to enqueue to a temporary playlist.
- **/
-EXPORT void audacious_remote_playlist_enqueue_to_temp(DBusGProxy *proxy,
- gchar *string) {
- org_atheme_audacious_playlist_enqueue_to_temp(proxy, string, &error);
- g_clear_error(&error);
-}
-
-/**
- * Queries Audacious about a playlist entry's tuple information.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] field The name of the tuple field to retrieve.
- * @param[in] pos The playlist position to query for.
- * @return The requested field's data for the entry in the playlist at %pos position.
- **/
-EXPORT gchar *audacious_get_tuple_field_data(DBusGProxy *proxy, gchar *field,
- guint pos) {
- GValue value = {0};
- gchar *s = NULL;
-
- org_atheme_audacious_song_tuple(proxy, pos, field, &value, &error);
-
- g_clear_error(&error);
-
- if (G_IS_VALUE(&value) == FALSE)
- return NULL;
-
- /* I think the original "purpose" of using g_strescape() here
- * has probably been to escape only \n, \t, \r, etc. but the function
- * actually escapes all non-ASCII characters. Which is bad, since we
- * are using UTF-8. -- ccr
- */
- if (G_VALUE_HOLDS_STRING(&value))
- //s = g_strescape(g_value_get_string(&value), NULL);
- s = g_strdup(g_value_get_string(&value));
- else if (g_value_type_transformable(G_VALUE_TYPE(&value), G_TYPE_STRING))
- {
- GValue tmp_value = { 0, };
-
- g_value_init(&tmp_value, G_TYPE_STRING);
- g_value_transform(&value, &tmp_value);
-
- //s = g_strescape(g_value_get_string(&tmp_value), NULL);
- s = g_strdup(g_value_get_string(&tmp_value));
-
- g_value_unset(&tmp_value);
- }
- else
- s = g_strdup("<unknown type>");
-
- g_value_unset(&value);
- return s;
-}
-
-/**
- * Toggles the equalizer.
- *
- * @param[in] proxy DBus proxy for audacious
- * @param[in] active Whether or not to activate the equalizer.
- **/
-EXPORT void audacious_remote_eq_activate(DBusGProxy *proxy, gboolean active) {
- org_atheme_audacious_equalizer_activate (proxy, active, &error);
- g_clear_error(&error);
-}
-
-/**
- * Returns a array of strings with available tuple field names.
- *
- * @param[in] proxy DBus proxy for audacious
- * @return Array of strings.
- **/
-EXPORT gchar **audacious_remote_get_tuple_fields(DBusGProxy *proxy) {
- gchar **res = NULL;
- org_atheme_audacious_get_tuple_fields (proxy, &res, &error);
- g_clear_error(&error);
- return res;
-}
-
-/**
- * Returns the active playlist name.
- */
-EXPORT gchar *audacious_remote_playlist_get_active_name(DBusGProxy *proxy) {
- char *string = NULL;
- org_atheme_audacious_get_active_playlist_name (proxy, &string, &error);
- g_clear_error(&error);
-
- return (string ? string : NULL);
-}
diff --git a/src/libaudclient/audctrl.h b/src/libaudclient/audctrl.h
deleted file mode 100644
index 6e316f8..0000000
--- a/src/libaudclient/audctrl.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * audctrl.h
- * Copyright 2007-2011 Ben Tucker, William Pitcock, Yoshiki Yazawa,
- * Matti HÀmÀlÀinen, and John Lindgren
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#ifndef AUDACIOUS_AUDCTRL_H
-#define AUDACIOUS_AUDCTRL_H
-
-#include <glib.h>
-#include <dbus/dbus-glib.h>
-
-G_BEGIN_DECLS
-
-void audacious_remote_playlist(DBusGProxy *proxy, gchar **list, gint num,
- gboolean enqueue);
-gchar *audacious_remote_get_version(DBusGProxy *proxy);
-void audacious_remote_playlist_add(DBusGProxy *proxy, GList *list);
-void audacious_remote_playlist_delete(DBusGProxy *proxy, guint pos);
-void audacious_remote_play(DBusGProxy *proxy);
-void audacious_remote_pause(DBusGProxy *proxy);
-void audacious_remote_stop(DBusGProxy *proxy);
-gboolean audacious_remote_is_playing(DBusGProxy *proxy);
-gboolean audacious_remote_is_paused(DBusGProxy *proxy);
-gint audacious_remote_get_playlist_pos(DBusGProxy *proxy);
-void audacious_remote_set_playlist_pos(DBusGProxy *proxy, guint pos);
-gint audacious_remote_get_playlist_length(DBusGProxy *proxy);
-void audacious_remote_playlist_clear(DBusGProxy *proxy);
-gint audacious_remote_get_output_time(DBusGProxy *proxy);
-void audacious_remote_jump_to_time(DBusGProxy *proxy, guint pos);
-void audacious_remote_get_volume(DBusGProxy *proxy, gint *vl, gint *vr);
-gint audacious_remote_get_main_volume(DBusGProxy *proxy);
-gint audacious_remote_get_balance(DBusGProxy *proxy);
-void audacious_remote_set_volume(DBusGProxy *proxy, gint vl, gint vr);
-void audacious_remote_set_main_volume(DBusGProxy *proxy, gint v);
-void audacious_remote_set_balance(DBusGProxy *proxy, gint b);
-gchar *audacious_remote_get_skin(DBusGProxy *proxy);
-void audacious_remote_set_skin(DBusGProxy *proxy, gchar *skinfile);
-gchar *audacious_remote_get_playlist_file(DBusGProxy *proxy, guint pos);
-gchar *audacious_remote_get_playlist_title(DBusGProxy *proxy, guint pos);
-gint audacious_remote_get_playlist_time(DBusGProxy *proxy, guint pos);
-void audacious_remote_get_info(DBusGProxy *proxy, gint *rate, gint *freq,
- gint *nch);
-void audacious_remote_main_win_toggle(DBusGProxy *proxy, gboolean show);
-gboolean audacious_remote_is_main_win(DBusGProxy *proxy);
-void audacious_remote_show_prefs_box(DBusGProxy *proxy);
-void audacious_remote_toggle_aot(DBusGProxy *proxy, gboolean ontop);
-void audacious_remote_eject(DBusGProxy *proxy);
-void audacious_remote_playlist_prev(DBusGProxy *proxy);
-void audacious_remote_playlist_next(DBusGProxy *proxy);
-void audacious_remote_playlist_add_url_string(DBusGProxy *proxy,
- gchar *string);
-gboolean audacious_remote_is_running(DBusGProxy *proxy);
-void audacious_remote_toggle_repeat(DBusGProxy *proxy);
-void audacious_remote_toggle_shuffle(DBusGProxy *proxy);
-void audacious_remote_toggle_stop_after (DBusGProxy * proxy);
-gboolean audacious_remote_is_repeat(DBusGProxy *proxy);
-gboolean audacious_remote_is_shuffle(DBusGProxy *proxy);
-gboolean audacious_remote_is_stop_after (DBusGProxy * proxy);
-
-void audacious_remote_get_eq(DBusGProxy *proxy, gdouble *preamp,
- GArray **bands);
-gdouble audacious_remote_get_eq_preamp(DBusGProxy *proxy);
-gdouble audacious_remote_get_eq_band(DBusGProxy *proxy, gint band);
-void audacious_remote_set_eq(DBusGProxy *proxy, gdouble preamp,
- GArray *bands);
-void audacious_remote_set_eq_preamp(DBusGProxy *proxy, gdouble preamp);
-void audacious_remote_set_eq_band(DBusGProxy *proxy, gint band,
- gdouble value);
-
-/* Added in XMMS 1.2.1 */
-void audacious_remote_quit(DBusGProxy *proxy);
-
-/* Added in XMMS 1.2.6 */
-void audacious_remote_play_pause(DBusGProxy *proxy);
-void audacious_remote_playlist_ins_url_string(DBusGProxy *proxy,
- gchar *string, guint pos);
-
-/* Added in XMMS 1.2.11 */
-void audacious_remote_playqueue_add(DBusGProxy *proxy, guint pos);
-void audacious_remote_playqueue_remove(DBusGProxy *proxy, guint pos);
-gint audacious_remote_get_playqueue_length(DBusGProxy *proxy);
-void audacious_remote_toggle_advance(DBusGProxy *proxy);
-gboolean audacious_remote_is_advance(DBusGProxy *proxy);
-
-/* Added in Audacious 1.1 */
-void audacious_remote_show_jtf_box(DBusGProxy *proxy);
-void audacious_remote_playqueue_clear(DBusGProxy *proxy);
-gboolean audacious_remote_playqueue_is_queued(DBusGProxy *proxy, guint pos);
-gint audacious_remote_get_playqueue_list_position(DBusGProxy *proxy, guint qpos);
-gint audacious_remote_get_playqueue_queue_position(DBusGProxy *proxy, guint pos);
-
-/* Added in Audacious 1.2 */
-void audacious_set_session_uri(DBusGProxy *proxy, gchar *uri);
-gchar *audacious_get_session_uri(DBusGProxy *proxy);
-void audacious_set_session_type(DBusGProxy *proxy, gint type);
-
-/* Added in Audacious 1.3 */
-void audacious_remote_playlist_enqueue_to_temp(DBusGProxy *proxy,
- gchar *string);
-gchar *audacious_get_tuple_field_data(DBusGProxy *proxy, gchar *field,
- guint pos);
-/* Added in Audacious 1.4 */
-void audacious_remote_show_about_box(DBusGProxy *proxy);
-void audacious_remote_toggle_about_box(DBusGProxy *proxy, gboolean show);
-void audacious_remote_toggle_jtf_box(DBusGProxy *proxy, gboolean show);
-void audacious_remote_toggle_prefs_box(DBusGProxy *proxy, gboolean show);
-void audacious_remote_toggle_filebrowser(DBusGProxy *proxy, gboolean show);
-void audacious_remote_eq_activate(DBusGProxy *proxy, gboolean active);
-
-/* Added in Audacious 1.9 */
-gchar **audacious_remote_get_tuple_fields(DBusGProxy *proxy);
-
-/* Added in Audacious 2.3 */
-void audacious_remote_playlist_open_list (DBusGProxy * proxy, GList * list);
-void audacious_remote_playlist_open_list_to_temp (DBusGProxy * proxy, GList *
- list);
-
-/* Added in Audacious 2.4 */
-gchar *audacious_remote_playlist_get_active_name(DBusGProxy *proxy);
-
-G_END_DECLS
-
-#endif /* AUDACIOUS_AUDCTRL_H */
diff --git a/src/libaudcore/Makefile b/src/libaudcore/Makefile
index c823ae7..8f380f7 100644
--- a/src/libaudcore/Makefile
+++ b/src/libaudcore/Makefile
@@ -1,25 +1,33 @@
SHARED_LIB = ${LIB_PREFIX}audcore${LIB_SUFFIX}
-LIB_MAJOR = 1
+LIB_MAJOR = 2
LIB_MINOR = 0
SRCS = audio.c \
audstrings.c \
+ charset.c \
eventqueue.c \
hook.c \
index.c \
+ inifile.c \
+ multihash.c \
strpool.c \
+ tinylock.c \
tuple.c \
tuple_compiler.c \
tuple_formatter.c \
vfs.c \
vfs_async.c \
- vfs_common.c
+ vfs_common.c \
+ vfs_local.c
INCLUDES = audio.h \
audstrings.h \
core.h \
hook.h \
index.h \
+ inifile.h \
+ multihash.h \
+ tinylock.h \
tuple.h \
vfs.h \
vfs_async.h
@@ -32,7 +40,10 @@ includesubdir = libaudcore
CPPFLAGS := -I.. -I../.. \
${CPPFLAGS} \
${GLIB_CFLAGS} \
+ ${LIBGUESS_CFLAGS}
CFLAGS += ${LIB_CFLAGS}
-LIBS += ${GLIB_LIBS} -lm
+LIBS += -lm \
+ ${GLIB_LIBS} \
+ ${LIBGUESS_LIBS}
diff --git a/src/libaudcore/audio.c b/src/libaudcore/audio.c
index f866509..25246be 100644
--- a/src/libaudcore/audio.c
+++ b/src/libaudcore/audio.c
@@ -1,6 +1,6 @@
/*
* audio.c
- * Copyright 2009-2012 John Lindgren, MichaƂ Lipski, and Anders Johansson
+ * Copyright 2009-2013 John Lindgren, MichaƂ Lipski, and Anders Johansson
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -22,6 +22,7 @@
#include <math.h>
#include "audio.h"
+#include "core.h"
#define INTERLACE_LOOP(TYPE) \
for (int c = 0; c < channels; c ++) \
@@ -173,7 +174,7 @@ EXPORT void audio_from_int (const void * in, int format, float * out, int sample
{
int entry;
- for (entry = 0; entry < G_N_ELEMENTS (convert_table); entry ++)
+ for (entry = 0; entry < ARRAY_LEN (convert_table); entry ++)
{
if (convert_table[entry].format == format)
{
@@ -187,7 +188,7 @@ EXPORT void audio_to_int (const float * in, void * out, int format, int samples)
{
int entry;
- for (entry = 0; entry < G_N_ELEMENTS (convert_table); entry ++)
+ for (entry = 0; entry < ARRAY_LEN (convert_table); entry ++)
{
if (convert_table[entry].format == format)
{
diff --git a/src/libaudcore/audio.h.in b/src/libaudcore/audio.h.in
index 19cfef2..2e9dd5a 100644
--- a/src/libaudcore/audio.h.in
+++ b/src/libaudcore/audio.h.in
@@ -1,6 +1,6 @@
/*
* audio.h
- * Copyright 2009-2011 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/libaudcore/audstrings.c b/src/libaudcore/audstrings.c
index eb4b8f1..c1d878b 100644
--- a/src/libaudcore/audstrings.c
+++ b/src/libaudcore/audstrings.c
@@ -1,7 +1,6 @@
/*
* audstrings.c
- * Copyright 2009-2011 John Lindgren
- * Copyright 2010 William Pitcock
+ * Copyright 2009-2012 John Lindgren and William Pitcock
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -22,19 +21,67 @@
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
-#include <glib.h>
#include <string.h>
-#include <ctype.h>
-#include <locale.h>
+
+#include <glib.h>
#include <audacious/i18n.h>
#include "audstrings.h"
+#include "index.h"
+
+static const char ascii_to_hex[256] = {
+ ['0'] = 0x0, ['1'] = 0x1, ['2'] = 0x2, ['3'] = 0x3, ['4'] = 0x4,
+ ['5'] = 0x5, ['6'] = 0x6, ['7'] = 0x7, ['8'] = 0x8, ['9'] = 0x9,
+ ['a'] = 0xa, ['b'] = 0xb, ['c'] = 0xc, ['d'] = 0xd, ['e'] = 0xe, ['f'] = 0xf,
+ ['A'] = 0xa, ['B'] = 0xb, ['C'] = 0xc, ['D'] = 0xd, ['E'] = 0xe, ['F'] = 0xf
+};
+
+static const char hex_to_ascii[16] = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
+};
+
+static const char uri_legal_table[256] = {
+ ['0'] = 1, ['1'] = 1, ['2'] = 1, ['3'] = 1, ['4'] = 1,
+ ['5'] = 1, ['6'] = 1, ['7'] = 1, ['8'] = 1, ['9'] = 1,
+ ['a'] = 1, ['b'] = 1, ['c'] = 1, ['d'] = 1, ['e'] = 1, ['f'] = 1, ['g'] = 1,
+ ['h'] = 1, ['i'] = 1, ['j'] = 1, ['k'] = 1, ['l'] = 1, ['m'] = 1, ['n'] = 1,
+ ['o'] = 1, ['p'] = 1, ['q'] = 1, ['r'] = 1, ['s'] = 1, ['t'] = 1, ['u'] = 1,
+ ['v'] = 1, ['w'] = 1, ['x'] = 1, ['y'] = 1, ['z'] = 1,
+ ['A'] = 1, ['B'] = 1, ['C'] = 1, ['D'] = 1, ['E'] = 1, ['F'] = 1, ['G'] = 1,
+ ['H'] = 1, ['I'] = 1, ['J'] = 1, ['K'] = 1, ['L'] = 1, ['M'] = 1, ['N'] = 1,
+ ['O'] = 1, ['P'] = 1, ['Q'] = 1, ['R'] = 1, ['S'] = 1, ['T'] = 1, ['U'] = 1,
+ ['V'] = 1, ['W'] = 1, ['X'] = 1, ['Y'] = 1, ['Z'] = 1,
+ ['-'] = 1, ['_'] = 1, ['.'] = 1, ['~'] = 1, ['/'] = 1
+};
+
+static const char swap_case[256] =
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0abcdefghijklmnopqrstuvwxyz\0\0\0\0\0"
+ "\0ABCDEFGHIJKLMNOPQRSTUVWXYZ\0\0\0\0\0";
+
+#define FROM_HEX(c) (ascii_to_hex[(unsigned char) (c)])
+#define TO_HEX(i) (hex_to_ascii[(i) & 15])
+#define IS_LEGAL(c) (uri_legal_table[(unsigned char) (c)])
+#define SWAP_CASE(c) (swap_case[(unsigned char) (c)])
+
+EXPORT char * str_printf (const char * format, ...)
+{
+ va_list args;
+ va_start (args, format);
+
+ char * str = str_vprintf (format, args);
-#define FROM_HEX(c) ((c) < 'A' ? (c) - '0' : (c) < 'a' ? 10 + (c) - 'A' : 10 + (c) - 'a')
-#define TO_HEX(i) ((i) < 10 ? '0' + (i) : 'A' + (i) - 10)
-#define IS_LEGAL(c) (((c) >= 'A' && (c) <= 'Z') || ((c) >= 'a' && (c) <= 'z') \
- || ((c) >= '0' && (c) <= '9') || (strchr ("-_.~/", (c))))
+ va_end (args);
+ return str;
+}
+
+EXPORT char * str_vprintf (const char * format, va_list args)
+{
+ VSPRINTF (buf, format, args);
+ return str_get (buf);
+}
EXPORT bool_t str_has_prefix_nocase (const char * str, const char * prefix)
{
@@ -52,60 +99,154 @@ EXPORT bool_t str_has_suffix_nocase (const char * str, const char * suffix)
return ! g_ascii_strcasecmp (str + len1 - len2, suffix);
}
-static char * (* str_to_utf8_impl) (const char *) = NULL;
-static char * (* str_to_utf8_full_impl) (const char *, int, int *, int *) = NULL;
-
-EXPORT void str_set_utf8_impl (char * (* stu_impl) (const char *),
- char * (* stuf_impl) (const char *, int, int *, int *))
+EXPORT char * strstr_nocase (const char * haystack, const char * needle)
{
- str_to_utf8_impl = stu_impl;
- str_to_utf8_full_impl = stuf_impl;
+ while (1)
+ {
+ const char * ap = haystack;
+ const char * bp = needle;
+
+ while (1)
+ {
+ char a = * ap ++;
+ char b = * bp ++;
+
+ if (! b) /* all of needle matched */
+ return (char *) haystack;
+ if (! a) /* end of haystack reached */
+ return NULL;
+
+ if (a != b && a != SWAP_CASE (b))
+ break;
+ }
+
+ haystack ++;
+ }
}
-EXPORT char * str_to_utf8 (const char * str)
+EXPORT char * strstr_nocase_utf8 (const char * haystack, const char * needle)
{
- g_return_val_if_fail (str_to_utf8_impl, NULL);
- return str_to_utf8_impl (str);
+ while (1)
+ {
+ const char * ap = haystack;
+ const char * bp = needle;
+
+ while (1)
+ {
+ gunichar a = g_utf8_get_char (ap);
+ gunichar b = g_utf8_get_char (bp);
+
+ if (! b) /* all of needle matched */
+ return (char *) haystack;
+ if (! a) /* end of haystack reached */
+ return NULL;
+
+ if (a != b && (a < 128 ? SWAP_CASE (a) != b :
+ g_unichar_tolower (a) != g_unichar_tolower (b)))
+ break;
+
+ ap = g_utf8_next_char (ap);
+ bp = g_utf8_next_char (bp);
+ }
+
+ haystack = g_utf8_next_char (haystack);
+ }
}
-EXPORT char * str_to_utf8_full (const char * str, int len, int * bytes_read, int * bytes_written)
+EXPORT char * str_tolower_utf8 (const char * str)
{
- g_return_val_if_fail (str_to_utf8_full_impl, NULL);
- return str_to_utf8_full_impl (str, len, bytes_read, bytes_written);
+ char buf[6 * strlen (str) + 1];
+ const char * get = str;
+ char * set = buf;
+ gunichar c;
+
+ while ((c = g_utf8_get_char (get)))
+ {
+ if (c < 128)
+ * set ++ = g_ascii_tolower (c);
+ else
+ set += g_unichar_to_utf8 (g_unichar_tolower (c), set);
+
+ get = g_utf8_next_char (get);
+ }
+
+ * set = 0;
+
+ return str_get (buf);
}
-EXPORT void string_replace_char (char * string, char old_c, char new_c)
+EXPORT void str_replace_char (char * string, char old_c, char new_c)
{
while ((string = strchr (string, old_c)))
* string ++ = new_c;
}
+EXPORT void str_itoa (int x, char * buf, int bufsize)
+{
+ if (! bufsize)
+ return;
+
+ if (x < 0)
+ {
+ if (bufsize > 1)
+ {
+ * buf ++ = '-';
+ bufsize --;
+ }
+
+ x = -x;
+ }
+
+ char * rev = buf + bufsize - 1;
+ * rev = 0;
+
+ while (rev > buf)
+ {
+ * (-- rev) = '0' + x % 10;
+ if (! (x /= 10))
+ break;
+ }
+
+ while ((* buf ++ = * rev ++));
+}
+
/* Percent-decodes up to <len> bytes of <str> to <out>, which must be large
* enough to hold the decoded string (i.e., (len + 1) bytes). If <len> is
* negative, decodes all of <str>. */
EXPORT void str_decode_percent (const char * str, int len, char * out)
{
+ const char * nul;
+
if (len < 0)
- len = INT_MAX;
+ len = strlen (str);
+ else if ((nul = memchr (str, 0, len)))
+ len = nul - str;
- while (len --)
+ while (1)
{
- char c = * str ++;
- if (! c)
+ const char * p = memchr (str, '%', len);
+ if (! p)
break;
- if (c == '%' && len >= 2 && str[0] && str[1])
- {
- c = (FROM_HEX (str[0]) << 4) | FROM_HEX (str[1]);
- str += 2;
- len -= 2;
- }
+ int block = p - str;
+ memmove (out, str, block);
+
+ str += block;
+ out += block;
+ len -= block;
+
+ if (len < 3)
+ break;
+
+ * out ++ = (FROM_HEX (str[1]) << 4) | FROM_HEX (str[2]);
- * out ++ = c;
+ str += 3;
+ len -= 3;
}
- * out = 0;
+ memmove (out, str, len);
+ out[len] = 0;
}
/* Percent-encodes up to <len> bytes of <str> to <out>, which must be large
@@ -114,14 +255,16 @@ EXPORT void str_decode_percent (const char * str, int len, char * out)
EXPORT void str_encode_percent (const char * str, int len, char * out)
{
+ const char * nul;
+
if (len < 0)
- len = INT_MAX;
+ len = strlen (str);
+ else if ((nul = memchr (str, 0, len)))
+ len = nul - str;
while (len --)
{
char c = * str ++;
- if (! c)
- break;
if (IS_LEGAL (c))
* out ++ = c;
@@ -136,62 +279,101 @@ EXPORT void str_encode_percent (const char * str, int len, char * out)
* out = 0;
}
-/* Like g_filename_to_uri, but converts the filename from the system locale to
- * UTF-8 before percent-encoding. On Windows, replaces '\' with '/' and adds a
- * leading '/'. */
+EXPORT void filename_normalize (char * filename)
+{
+#ifdef _WIN32
+ /* convert slash to backslash on Windows */
+ str_replace_char (filename, '/', '\\');
+#endif
-EXPORT char * filename_to_uri (const char * name)
+ /* remove trailing slash */
+ int len = strlen (filename);
+#ifdef _WIN32
+ if (len > 3 && filename[len - 1] == '\\') /* leave "C:\" */
+#else
+ if (len > 1 && filename[len - 1] == '/') /* leave leading "/" */
+#endif
+ filename[len - 1] = 0;
+}
+
+EXPORT char * filename_build (const char * path, const char * name)
{
- char * utf8 = g_locale_to_utf8 (name, -1, NULL, NULL, NULL);
- if (! utf8)
+ int len = strlen (path);
+
+#ifdef _WIN32
+ if (! len || path[len - 1] == '/' || path[len - 1] == '\\')
{
- const char * locale = setlocale (LC_ALL, NULL);
- fprintf (stderr, "Cannot convert filename from system locale (%s): %s\n", locale, name);
- return NULL;
+ SCONCAT2 (filename, path, name);
+ return str_get (filename);
+ }
+
+ SCONCAT3 (filename, path, "\\", name);
+ return str_get (filename);
+#else
+ if (! len || path[len - 1] == '/')
+ {
+ SCONCAT2 (filename, path, name);
+ return str_get (filename);
}
+ SCONCAT3 (filename, path, "/", name);
+ return str_get (filename);
+#endif
+}
+
#ifdef _WIN32
- string_replace_char (utf8, '\\', '/');
+#define URI_PREFIX "file:///"
+#define URI_PREFIX_LEN 8
+#else
+#define URI_PREFIX "file://"
+#define URI_PREFIX_LEN 7
#endif
- char enc[3 * strlen (utf8) + 1];
- str_encode_percent (utf8, -1, enc);
- g_free (utf8);
+/* Like g_filename_to_uri, but converts the filename from the system locale to
+ * UTF-8 before percent-encoding (except on Windows, where filenames are assumed
+ * to be UTF-8). On Windows, replaces '\' with '/' and adds a leading '/'. */
+EXPORT char * filename_to_uri (const char * name)
+{
#ifdef _WIN32
- return g_strdup_printf ("file:///%s", enc);
+ SCOPY (utf8, name);
+ str_replace_char (utf8, '\\', '/');
#else
- return g_strdup_printf ("file://%s", enc);
+ char * utf8 = str_from_locale (name, -1);
+ if (! utf8)
+ return NULL;
#endif
+
+ char enc[URI_PREFIX_LEN + 3 * strlen (utf8) + 1];
+ strcpy (enc, URI_PREFIX);
+ str_encode_percent (utf8, -1, enc + URI_PREFIX_LEN);
+
+#ifndef _WIN32
+ str_unref (utf8);
+#endif
+
+ return str_get (enc);
}
/* Like g_filename_from_uri, but converts the filename from UTF-8 to the system
- * locale after percent-decoding. On Windows, strips the leading '/' and
- * replaces '/' with '\'. */
+ * locale after percent-decoding (except on Windows, where filenames are assumed
+ * to be UTF-8). On Windows, strips the leading '/' and replaces '/' with '\'. */
EXPORT char * uri_to_filename (const char * uri)
{
+ if (strncmp (uri, URI_PREFIX, URI_PREFIX_LEN))
+ return NULL;
+
+ char buf[strlen (uri + URI_PREFIX_LEN) + 1];
+ str_decode_percent (uri + URI_PREFIX_LEN, -1, buf);
+
+ filename_normalize (buf);
+
#ifdef _WIN32
- g_return_val_if_fail (! strncmp (uri, "file:///", 8), NULL);
- char buf[strlen (uri + 8) + 1];
- str_decode_percent (uri + 8, -1, buf);
+ return str_get (buf);
#else
- g_return_val_if_fail (! strncmp (uri, "file://", 7), NULL);
- char buf[strlen (uri + 7) + 1];
- str_decode_percent (uri + 7, -1, buf);
-#endif
-#ifdef _WIN32
- string_replace_char (buf, '/', '\\');
+ return str_to_locale (buf, -1);
#endif
-
- char * name = g_locale_from_utf8 (buf, -1, NULL, NULL, NULL);
- if (! name)
- {
- const char * locale = setlocale (LC_ALL, NULL);
- fprintf (stderr, "Cannot convert filename to system locale (%s): %s\n", locale, buf);
- }
-
- return name;
}
/* Formats a URI for human-readable display. Percent-decodes and, for file://
@@ -200,26 +382,26 @@ EXPORT char * uri_to_filename (const char * uri)
EXPORT char * uri_to_display (const char * uri)
{
if (! strncmp (uri, "cdda://?", 8))
- return g_strdup_printf (_("Audio CD, track %s"), uri + 8);
+ return str_printf (_("Audio CD, track %s"), uri + 8);
char buf[strlen (uri) + 1];
-#ifdef _WIN32
- if (! strncmp (uri, "file:///", 8))
+ if (! strncmp (uri, URI_PREFIX, URI_PREFIX_LEN))
{
- str_decode_percent (uri + 8, -1, buf);
- string_replace_char (buf, '/', '\\');
- }
-#else
- if (! strncmp (uri, "file://", 7))
- str_decode_percent (uri + 7, -1, buf);
+ str_decode_percent (uri + URI_PREFIX_LEN, -1, buf);
+#ifdef _WIN32
+ str_replace_char (buf, '/', '\\');
#endif
+ }
else
str_decode_percent (uri, -1, buf);
- return g_strdup (buf);
+ return str_get (buf);
}
+#undef URI_PREFIX
+#undef URI_PREFIX_LEN
+
EXPORT void uri_parse (const char * uri, const char * * base_p, const char * * ext_p,
const char * * sub_p, int * isub_p)
{
@@ -238,9 +420,7 @@ EXPORT void uri_parse (const char * uri, const char * * base_p, const char * * e
else
sub = end;
- char buf[sub - base + 1];
- memcpy (buf, base, sub - base);
- buf[sub - base] = 0;
+ SNCOPY (buf, base, sub - base);
if ((c = strrchr (buf, '.')))
ext = base + (c - buf);
@@ -265,7 +445,8 @@ EXPORT bool_t uri_get_extension (const char * uri, char * buf, int buflen)
if (ext[0] != '.')
return FALSE;
- g_strlcpy (buf, ext + 1, buflen);
+ strncpy (buf, ext + 1, buflen - 1);
+ buf[buflen - 1] = 0;
/* remove subtunes and HTTP query strings */
char * qmark;
@@ -279,7 +460,7 @@ EXPORT bool_t uri_get_extension (const char * uri, char * buf, int buflen)
/* Non-ASCII characters are treated exactly as is. */
/* Handles NULL gracefully. */
-EXPORT int string_compare (const char * ap, const char * bp)
+EXPORT int str_compare (const char * ap, const char * bp)
{
if (ap == NULL)
return (bp == NULL) ? 0 : -1;
@@ -321,9 +502,9 @@ EXPORT int string_compare (const char * ap, const char * bp)
return 0;
}
-/* Decodes percent-encoded strings, then compares then with string_compare. */
+/* Decodes percent-encoded strings, then compares then with str_compare. */
-EXPORT int string_compare_encoded (const char * ap, const char * bp)
+EXPORT int str_compare_encoded (const char * ap, const char * bp)
{
if (ap == NULL)
return (bp == NULL) ? 0 : -1;
@@ -376,37 +557,72 @@ EXPORT int string_compare_encoded (const char * ap, const char * bp)
return 0;
}
-EXPORT char *
-str_replace_fragment(char *s, int size, const char *old, const char *new)
+EXPORT Index * str_list_to_index (const char * list, const char * delims)
{
- char *ptr = s;
- int left = strlen(s);
- int avail = size - (left + 1);
- int oldlen = strlen(old);
- int newlen = strlen(new);
- int diff = newlen - oldlen;
-
- while (left >= oldlen)
+ char dmap[256] = {0};
+
+ for (; * delims; delims ++)
+ dmap[(unsigned char) (* delims)] = 1;
+
+ Index * index = index_new ();
+ const char * word = NULL;
+
+ for (; * list; list ++)
{
- if (strncmp(ptr, old, oldlen))
+ if (dmap[(unsigned char) (* list)])
{
- left--;
- ptr++;
- continue;
+ if (word)
+ {
+ index_insert (index, -1, str_nget (word, list - word));
+ word = NULL;
+ }
}
+ else
+ {
+ if (! word)
+ {
+ word = list;
+ }
+ }
+ }
- if (diff > avail)
- break;
+ if (word)
+ index_insert (index, -1, str_get (word));
- if (diff != 0)
- memmove(ptr + oldlen + diff, ptr + oldlen, left + 1 - oldlen);
+ return index;
+}
+
+EXPORT char * index_to_str_list (Index * index, const char * sep)
+{
+ int count = index_count (index);
+ int seplen = strlen (sep);
+ int total = count ? seplen * (count - 1) : 0;
+ int lengths[count];
- memcpy(ptr, new, newlen);
- ptr += newlen;
- left -= oldlen;
+ for (int i = 0; i < count; i ++)
+ {
+ lengths[i] = strlen (index_get (index, i));
+ total += lengths[i];
}
- return s;
+ char buf[total + 1];
+ int pos = 0;
+
+ for (int i = 0; i < count; i ++)
+ {
+ if (i)
+ {
+ strcpy (buf + pos, sep);
+ pos += seplen;
+ }
+
+ strcpy (buf + pos, index_get (index, i));
+ pos += lengths[i];
+ }
+
+ buf[pos] = 0;
+
+ return str_get (buf);
}
/*
@@ -420,11 +636,11 @@ str_replace_fragment(char *s, int size, const char *old, const char *new)
* architecture or locale we have to deal with.
* - Readability, meaning that the number one is rendered "1", not "1.000".
*
- * Values are limited between -1,000,000,000 and 1,000,000,000 (inclusive) and
+ * Values between -1,000,000,000 and 1,000,000,000 (inclusive) are guaranteed to
* have an accuracy of 6 decimal places.
*/
-EXPORT bool_t string_to_int (const char * string, int * addr)
+EXPORT int str_to_int (const char * string)
{
bool_t neg = (string[0] == '-');
if (neg)
@@ -433,88 +649,41 @@ EXPORT bool_t string_to_int (const char * string, int * addr)
int val = 0;
char c;
- while ((c = * string ++))
- {
- if (c < '0' || c > '9' || val > 100000000)
- goto ERR;
-
+ while ((c = * string ++) && c >= '0' && c <= '9')
val = val * 10 + (c - '0');
- }
-
- if (val > 1000000000)
- goto ERR;
- * addr = neg ? -val : val;
- return TRUE;
-
-ERR:
- return FALSE;
+ return neg ? -val : val;
}
-EXPORT bool_t string_to_double (const char * string, double * addr)
+EXPORT double str_to_double (const char * string)
{
bool_t neg = (string[0] == '-');
if (neg)
string ++;
+ double val = str_to_int (string);
const char * p = strchr (string, '.');
- int i, f;
if (p)
{
- char buf[11];
- int len;
-
- len = p - string;
- if (len > 10)
- goto ERR;
-
- memcpy (buf, string, len);
- buf[len] = 0;
-
- if (! string_to_int (buf, & i))
- goto ERR;
-
- len = strlen (p + 1);
- if (len > 6)
- goto ERR;
-
- memcpy (buf, p + 1, len);
- memset (buf + len, '0', 6 - len);
- buf[6] = 0;
-
- if (! string_to_int (buf, & f))
- goto ERR;
+ char buf[7] = "000000";
+ const char * nul = memchr (p + 1, 0, 6);
+ memcpy (buf, p + 1, nul ? nul - (p + 1) : 6);
+ val += (double) str_to_int (buf) / 1000000;
}
- else
- {
- if (! string_to_int (string, & i))
- goto ERR;
-
- f = 0;
- }
-
- double val = i + (double) f / 1000000;
- if (val > 1000000000)
- goto ERR;
-
- * addr = neg ? -val : val;
- return TRUE;
-ERR:
- return FALSE;
+ return neg ? -val : val;
}
-EXPORT char * int_to_string (int val)
+EXPORT char * int_to_str (int val)
{
- g_return_val_if_fail (val >= -1000000000 && val <= 1000000000, NULL);
- return g_strdup_printf ("%d", val);
+ char buf[16];
+ str_itoa (val, buf, sizeof buf);
+ return str_get (buf);
}
-EXPORT char * double_to_string (double val)
+EXPORT char * double_to_str (double val)
{
- g_return_val_if_fail (val >= -1000000000 && val <= 1000000000, NULL);
-
bool_t neg = (val < 0);
if (neg)
val = -val;
@@ -528,94 +697,88 @@ EXPORT char * double_to_string (double val)
f = 0;
}
- char * s = neg ? g_strdup_printf ("-%d.%06d", i, f) : g_strdup_printf ("%d.%06d", i, f);
+ SPRINTF (buf, "%s%d.%06d", neg ? "-" : "", i, f);
- char * c = s + strlen (s);
+ char * c = buf + strlen (buf);
while (* (c - 1) == '0')
c --;
if (* (c - 1) == '.')
c --;
* c = 0;
- return s;
+ return str_get (buf);
}
-EXPORT bool_t string_to_int_array (const char * string, int * array, int count)
+EXPORT bool_t str_to_int_array (const char * string, int * array, int count)
{
- char * * split = g_strsplit (string, ",", -1);
- if (g_strv_length (split) != count)
- goto ERR;
+ Index * index = str_list_to_index (string, ", ");
+ bool_t okay = (index_count (index) == count);
- for (int i = 0; i < count; i ++)
+ if (okay)
{
- if (! string_to_int (split[i], & array[i]))
- goto ERR;
+ for (int i = 0; i < count; i ++)
+ array[i] = str_to_int (index_get (index, i));
}
- g_strfreev (split);
- return TRUE;
-
-ERR:
- g_strfreev (split);
- return FALSE;
+ index_free_full (index, (IndexFreeFunc) str_unref);
+ return okay;
}
-EXPORT char * int_array_to_string (const int * array, int count)
+EXPORT char * int_array_to_str (const int * array, int count)
{
- char * * split = g_malloc0 (sizeof (char *) * (count + 1));
+ Index * index = index_new ();
for (int i = 0; i < count; i ++)
{
- split[i] = int_to_string (array[i]);
- if (! split[i])
+ char * value = int_to_str (array[i]);
+ if (! value)
goto ERR;
+
+ index_insert (index, -1, value);
}
- char * string = g_strjoinv (",", split);
- g_strfreev (split);
+ char * string = index_to_str_list (index, ",");
+ index_free_full (index, (IndexFreeFunc) str_unref);
return string;
ERR:
- g_strfreev (split);
+ index_free_full (index, (IndexFreeFunc) str_unref);
return NULL;
}
-EXPORT bool_t string_to_double_array (const char * string, double * array, int count)
+EXPORT bool_t str_to_double_array (const char * string, double * array, int count)
{
- char * * split = g_strsplit (string, ",", -1);
- if (g_strv_length (split) != count)
- goto ERR;
+ Index * index = str_list_to_index (string, ", ");
+ bool_t okay = (index_count (index) == count);
- for (int i = 0; i < count; i ++)
+ if (okay)
{
- if (! string_to_double (split[i], & array[i]))
- goto ERR;
+ for (int i = 0; i < count; i ++)
+ array[i] = str_to_double (index_get (index, i));
}
- g_strfreev (split);
- return TRUE;
-
-ERR:
- g_strfreev (split);
- return FALSE;
+ index_free_full (index, (IndexFreeFunc) str_unref);
+ return okay;
}
-EXPORT char * double_array_to_string (const double * array, int count)
+EXPORT char * double_array_to_str (const double * array, int count)
{
- char * * split = g_malloc0 (sizeof (char *) * (count + 1));
+ Index * index = index_new ();
for (int i = 0; i < count; i ++)
{
- split[i] = double_to_string (array[i]);
- if (! split[i])
+ char * value = double_to_str (array[i]);
+ if (! value)
goto ERR;
+
+ index_insert (index, -1, value);
}
- char * string = g_strjoinv (",", split);
- g_strfreev (split);
+ char * string = index_to_str_list (index, ",");
+ index_free_full (index, (IndexFreeFunc) str_unref);
return string;
ERR:
- g_strfreev (split);
+ index_free_full (index, (IndexFreeFunc) str_unref);
return NULL;
}
diff --git a/src/libaudcore/audstrings.h b/src/libaudcore/audstrings.h
index c8e1035..9f6cae7 100644
--- a/src/libaudcore/audstrings.h
+++ b/src/libaudcore/audstrings.h
@@ -1,7 +1,6 @@
/*
* audstrings.h
- * Copyright 2009-2011 John Lindgren
- * Copyright 2010 William Pitcock
+ * Copyright 2009-2012 John Lindgren and William Pitcock
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -21,21 +20,86 @@
#ifndef LIBAUDCORE_STRINGS_H
#define LIBAUDCORE_STRINGS_H
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
#include <libaudcore/core.h>
+#define SPRINTF(s, ...) \
+ char s[snprintf (NULL, 0, __VA_ARGS__) + 1]; \
+ snprintf (s, sizeof s, __VA_ARGS__)
+
+#define VSPRINTF(s, f, v) \
+ va_list v##2; \
+ va_copy (v##2, v); \
+ char s[vsnprintf (NULL, 0, f, v##2) + 1]; \
+ va_end (v##2); \
+ vsnprintf (s, sizeof s, f, v)
+
+#define SCOPY(s, a) \
+ char s[strlen (a) + 1]; \
+ strcpy (s, a)
+
+#define SNCOPY(s, a, x) \
+ char s[(x) + 1]; \
+ strncpy (s, a, sizeof s - 1); \
+ s[sizeof s - 1] = 0
+
+#define SCONCAT2(s, a, b) \
+ int s##_1 = strlen (a), s##_2 = strlen (b); \
+ char s[s##_1 + s##_2 + 1]; \
+ memcpy (s, (a), s##_1); \
+ strcpy (s + s##_1, (b))
+
+#define SCONCAT3(s, a, b, c) \
+ int s##_1 = strlen (a), s##_2 = strlen (b), s##_3 = strlen (c); \
+ char s[s##_1 + s##_2 + s##_3 + 1]; \
+ memcpy (s, (a), s##_1); \
+ memcpy (s + s##_1, (b), s##_2); \
+ strcpy (s + s##_1 + s##_2, (c))
+
+#define SCONCAT4(s, a, b, c, d) \
+ int s##_1 = strlen (a), s##_2 = strlen (b), s##_3 = strlen (c), s##_4 = strlen (d); \
+ char s[s##_1 + s##_2 + s##_3 + s##_4 + 1]; \
+ memcpy (s, (a), s##_1); \
+ memcpy (s + s##_1, (b), s##_2); \
+ memcpy (s + s##_1 + s##_2, (c), s##_3); \
+ strcpy (s + s##_1 + s##_2 + s##_3, (d))
+
+struct _Index;
+
+/* all (char *) return values must be freed with str_unref() */
+
+char * str_printf (const char * format, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
+char * str_vprintf (const char * format, va_list args);
+
bool_t str_has_prefix_nocase(const char * str, const char * prefix);
bool_t str_has_suffix_nocase(const char * str, const char * suffix);
-void str_set_utf8_impl (char * (* stu_impl) (const char *),
- char * (* stuf_impl) (const char *, int, int *, int *));
-char * str_to_utf8 (const char * str);
-char * str_to_utf8_full (const char * str, int len, int * bytes_read, int * bytes_written);
+char * strstr_nocase (const char * haystack, const char * needle);
+char * strstr_nocase_utf8 (const char * haystack, const char * needle);
+
+char * str_tolower_utf8 (const char * str);
-void string_replace_char (char * string, char old_c, char new_c);
+void str_replace_char (char * string, char old_c, char new_c);
+
+void str_itoa (int x, char * buf, int bufsize);
void str_decode_percent (const char * str, int len, char * out);
void str_encode_percent (const char * str, int len, char * out);
+char * str_convert (const char * str, int len, const char * from_charset, const char * to_charset);
+char * str_from_locale (const char * str, int len);
+char * str_to_locale (const char * str, int len);
+char * str_to_utf8 (const char * str, int len);
+
+/* takes ownership of <fallbacks> and the pooled strings in it */
+void str_set_charsets (const char * region, struct _Index * fallbacks);
+
+void filename_normalize (char * filename);
+
+char * filename_build (const char * path, const char * name);
char * filename_to_uri (const char * filename);
char * uri_to_filename (const char * uri);
char * uri_to_display (const char * uri);
@@ -44,19 +108,20 @@ void uri_parse (const char * uri, const char * * base_p, const char * * ext_p,
const char * * sub_p, int * isub_p);
bool_t uri_get_extension (const char * uri, char * buf, int buflen);
-int string_compare (const char * a, const char * b);
-int string_compare_encoded (const char * a, const char * b);
+int str_compare (const char * a, const char * b);
+int str_compare_encoded (const char * a, const char * b);
-char *str_replace_fragment(char *s, int size, const char *old_str, const char *new_str);
+struct _Index * str_list_to_index (const char * list, const char * delims);
+char * index_to_str_list (struct _Index * index, const char * sep);
-bool_t string_to_int (const char * string, int * addr);
-bool_t string_to_double (const char * string, double * addr);
-char * int_to_string (int val);
-char * double_to_string (double val);
+int str_to_int (const char * string);
+double str_to_double (const char * string);
+char * int_to_str (int val);
+char * double_to_str (double val);
-bool_t string_to_int_array (const char * string, int * array, int count);
-char * int_array_to_string (const int * array, int count);
-bool_t string_to_double_array (const char * string, double * array, int count);
-char * double_array_to_string (const double * array, int count);
+bool_t str_to_int_array (const char * string, int * array, int count);
+char * int_array_to_str (const int * array, int count);
+bool_t str_to_double_array (const char * string, double * array, int count);
+char * double_array_to_str (const double * array, int count);
#endif /* LIBAUDCORE_STRINGS_H */
diff --git a/src/libaudcore/charset.c b/src/libaudcore/charset.c
new file mode 100644
index 0000000..d3c6d5f
--- /dev/null
+++ b/src/libaudcore/charset.c
@@ -0,0 +1,180 @@
+/*
+ * charset.c
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include <iconv.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <glib.h>
+
+#ifdef USE_CHARDET
+#include <libguess/libguess.h>
+#endif
+
+#include "audstrings.h"
+#include "index.h"
+#include "tinylock.h"
+
+EXPORT char * str_convert (const char * str, int len, const char * from_charset,
+ const char * to_charset)
+{
+ iconv_t conv = iconv_open (to_charset, from_charset);
+ if (conv == (iconv_t) -1)
+ return NULL;
+
+ if (len < 0)
+ len = strlen (str);
+
+ // liberal estimate of how much space we will need
+ // are there obscure cases that require even more?
+ int maxlen = 4 * len;
+
+ char buf[maxlen + 1];
+ char * result = NULL;
+
+ size_t inbytes = len;
+ size_t outbytes = maxlen;
+ char * in = (char *) str;
+ char * out = buf;
+
+ if (iconv (conv, & in, & inbytes, & out, & outbytes) != (size_t) -1 && ! inbytes)
+ {
+ buf[maxlen - outbytes] = 0;
+ result = str_get (buf);
+ }
+
+ iconv_close (conv);
+ return result;
+}
+
+static void whine_locale (const char * str, int len, const char * dir, const char * charset)
+{
+ if (len < 0)
+ fprintf (stderr, "Cannot convert %s locale (%s): %s\n", dir, charset, str);
+ else
+ fprintf (stderr, "Cannot convert %s locale (%s): %.*s\n", dir, charset, len, str);
+}
+
+EXPORT char * str_from_locale (const char * str, int len)
+{
+ const char * charset;
+
+ if (g_get_charset (& charset))
+ {
+ /* locale is UTF-8 */
+ if (! g_utf8_validate (str, len, NULL))
+ {
+ whine_locale (str, len, "from", "UTF-8");
+ return NULL;
+ }
+
+ return (len < 0) ? str_get (str) : str_nget (str, len);
+ }
+ else
+ {
+ char * utf8 = str_convert (str, len, charset, "UTF-8");
+ if (! utf8)
+ whine_locale (str, len, "from", charset);
+
+ return utf8;
+ }
+}
+
+EXPORT char * str_to_locale (const char * str, int len)
+{
+ const char * charset;
+
+ if (g_get_charset (& charset))
+ {
+ /* locale is UTF-8 */
+ return (len < 0) ? str_get (str) : str_nget (str, len);
+ }
+ else
+ {
+ char * local = str_convert (str, len, "UTF-8", charset);
+ if (! local)
+ whine_locale (str, len, "to", charset);
+
+ return local;
+ }
+}
+
+static TinyRWLock settings_lock;
+static char * detect_region;
+static Index * fallback_charsets;
+
+EXPORT void str_set_charsets (const char * region, Index * fallbacks)
+{
+ tiny_lock_write (& settings_lock);
+
+ str_unref (detect_region);
+ detect_region = str_get (region);
+
+#ifdef USE_CHARDET
+ if (detect_region)
+ libguess_init ();
+#endif
+
+ if (fallback_charsets)
+ index_free_full (fallback_charsets, (IndexFreeFunc) str_unref);
+
+ fallback_charsets = fallbacks;
+
+ tiny_unlock_write (& settings_lock);
+}
+
+EXPORT char * str_to_utf8 (const char * str, int len)
+{
+ /* check whether already UTF-8 */
+ if (g_utf8_validate (str, len, NULL))
+ return (len < 0) ? str_get (str) : str_nget (str, len);
+
+ if (len < 0)
+ len = strlen (str);
+
+ char * utf8 = NULL;
+ tiny_lock_read (& settings_lock);
+
+#ifdef USE_CHARDET
+ if (detect_region)
+ {
+ /* prefer libguess-detected charset */
+ const char * detected = libguess_determine_encoding (str, len, detect_region);
+ if (detected && (utf8 = str_convert (str, len, detected, "UTF-8")))
+ goto DONE;
+ }
+#endif
+
+ if (fallback_charsets)
+ {
+ /* try user-configured fallbacks */
+ for (int i = 0; i < index_count (fallback_charsets); i ++)
+ {
+ if ((utf8 = str_convert (str, len, index_get (fallback_charsets, i), "UTF-8")))
+ goto DONE;
+ }
+ }
+
+ /* try system locale last (this one will print a warning if it fails) */
+ utf8 = str_from_locale (str, len);
+
+DONE:
+ tiny_unlock_read (& settings_lock);
+ return utf8;
+}
diff --git a/src/libaudcore/core.h b/src/libaudcore/core.h
index b92c500..f3c2615 100644
--- a/src/libaudcore/core.h
+++ b/src/libaudcore/core.h
@@ -1,6 +1,6 @@
/*
* core.h
- * Copyright 2011 John Lindgren
+ * Copyright 2011-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -43,14 +43,7 @@
#undef CLAMP
#define CLAMP(a,min,max) ((a) < (min) ? (min) : (a) > (max) ? (max) : (a))
-#define SPRINTF(s,...) \
- char s[snprintf (NULL, 0, __VA_ARGS__) + 1]; \
- snprintf (s, sizeof s, __VA_ARGS__);
-
-/* Simple sanity check to catch (1) strings that are still in use after their
- * reference count has dropped to zero and (2) strings that should have been
- * pooled but never were. If the check fails, the program is aborted. */
-#define STR_CHECK(str) do {if ((str) && (str)[-1] != '@') strpool_abort (str);} while (0)
+#define ARRAY_LEN(a) (sizeof (a) / sizeof (a)[0])
/* If the pool contains a copy of <str>, increments its reference count.
* Otherwise, adds a copy of <str> to the pool with a reference count of one.
@@ -63,7 +56,7 @@ char * str_get (const char * str);
* string already in the pool. Faster than calling str_get() a second time.
* Returns <str> for convenience. If <str> is NULL, simply returns NULL with no
* side effects. */
-char * str_ref (char * str);
+char * str_ref (const char * str);
/* Decrements the reference count of <str>, where <str> is the address of a
* string in the pool. If the reference count drops to zero, releases the
@@ -71,16 +64,18 @@ char * str_ref (char * str);
* effects. */
void str_unref (char * str);
+/* Returns the cached hash value of a pooled string (or 0 for NULL). */
+unsigned str_hash (const char * str);
+
+/* Checks whether two pooled strings are equal. Since the pool never contains
+ * duplicate strings, this is a simple pointer comparison and thus much faster
+ * than strcmp(). NULL is considered equal to NULL but not equal to any string. */
+bool_t str_equal (const char * str1, const char * str2);
+
/* Calls str_get() on the first <len> characters of <str>. If <str> has less
* than or equal to <len> characters, equivalent to str_get(). */
char * str_nget (const char * str, int len);
-/* Calls sprintf() internally, then pools the produced string with str_get(). */
-char * str_printf (const char * format, ...);
-
-/* Used by STR_CHECK; should not be called directly. */
-void strpool_abort (char * str);
-
/* Releases all memory used by the string pool. If strings remain in the pool,
* a warning may be printed to stderr in order to reveal memory leaks. */
void strpool_shutdown (void);
diff --git a/src/libaudcore/eventqueue.c b/src/libaudcore/eventqueue.c
index c2648b9..ee92c03 100644
--- a/src/libaudcore/eventqueue.c
+++ b/src/libaudcore/eventqueue.c
@@ -45,7 +45,7 @@ static bool_t event_execute (Event * event)
hook_call (event->name, event->data);
- g_free (event->name);
+ str_unref (event->name);
if (event->destroy)
event->destroy (event->data);
@@ -56,7 +56,7 @@ static bool_t event_execute (Event * event)
EXPORT void event_queue_full (int time, const char * name, void * data, void (* destroy) (void *))
{
Event * event = g_slice_new (Event);
- event->name = g_strdup (name);
+ event->name = str_get (name);
event->data = data;
event->destroy = destroy;
@@ -83,7 +83,7 @@ EXPORT void event_queue_cancel (const char * name, void * data)
g_source_remove (event->source);
events = g_list_delete_link (events, node);
- g_free (event->name);
+ str_unref (event->name);
if (event->destroy)
event->destroy (event->data);
@@ -95,3 +95,28 @@ EXPORT void event_queue_cancel (const char * name, void * data)
pthread_mutex_unlock (& mutex);
}
+
+EXPORT void event_queue_cancel_all (void)
+{
+ pthread_mutex_lock (& mutex);
+
+ GList * node = events;
+ while (node)
+ {
+ Event * event = node->data;
+ GList * next = node->next;
+
+ g_source_remove (event->source);
+ events = g_list_delete_link (events, node);
+
+ str_unref (event->name);
+ if (event->destroy)
+ event->destroy (event->data);
+
+ g_slice_free (Event, event);
+
+ node = next;
+ }
+
+ pthread_mutex_unlock (& mutex);
+}
diff --git a/src/libaudcore/hook.c b/src/libaudcore/hook.c
index 00d69c8..e9f4e39 100644
--- a/src/libaudcore/hook.c
+++ b/src/libaudcore/hook.c
@@ -1,6 +1,6 @@
/*
* hook.c
- * Copyright 2011 John Lindgren
+ * Copyright 2011-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/libaudcore/hook.h b/src/libaudcore/hook.h
index 79fe8ac..646359b 100644
--- a/src/libaudcore/hook.h
+++ b/src/libaudcore/hook.h
@@ -47,4 +47,7 @@ void event_queue_full (int time, const char * name, void * data, void (* destroy
* all hook calls matching <name> are canceled. */
void event_queue_cancel (const char * name, void * data);
+/* Cancels all pending hook calls. */
+void event_queue_cancel_all (void);
+
#endif /* LIBAUDCORE_HOOK_H */
diff --git a/src/libaudcore/index.c b/src/libaudcore/index.c
index 160a97d..c2f7f39 100644
--- a/src/libaudcore/index.c
+++ b/src/libaudcore/index.c
@@ -1,6 +1,6 @@
/*
* index.c
- * Copyright 2009-2011 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,16 +17,19 @@
* the use of this software.
*/
+#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
+#include "core.h"
#include "index.h"
struct _Index {
void * * data;
int count, size;
+ void * sdata[16];
};
typedef struct {
@@ -40,19 +43,26 @@ typedef struct {
EXPORT Index * index_new (void)
{
- Index * index = g_slice_new (Index);
-
- index->data = NULL;
- index->count = 0;
- index->size = 0;
-
+ Index * index = g_new0 (Index, 1);
+ index->data = index->sdata;
+ index->size = ARRAY_LEN (index->sdata);
return index;
}
EXPORT void index_free (Index * index)
{
- g_free (index->data);
- g_slice_free (Index, index);
+ if (index->data != index->sdata)
+ g_free (index->data);
+
+ g_free (index);
+}
+
+EXPORT void index_free_full (Index * index, IndexFreeFunc func)
+{
+ for (int i = 0; i < index->count; i ++)
+ func (index->data[i]);
+
+ index_free (index);
}
EXPORT int index_count (Index * index)
@@ -62,26 +72,38 @@ EXPORT int index_count (Index * index)
EXPORT void index_allocate (Index * index, int size)
{
- if (size <= index->size)
+ assert (size >= 0);
+
+ if (index->size >= size)
return;
- if (! index->size)
+ if (index->size < 64)
index->size = 64;
- while (size > index->size)
+ while (index->size < size)
index->size <<= 1;
- index->data = g_realloc (index->data, sizeof (void *) * index->size);
+ if (index->data == index->sdata)
+ {
+ index->data = g_new (void *, index->size);
+ memcpy (index->data, index->sdata, sizeof index->sdata);
+ }
+ else
+ index->data = g_renew (void *, index->data, index->size);
}
-EXPORT void index_set (Index * index, int at, void * value)
+EXPORT void * index_get (Index * index, int at)
{
- index->data[at] = value;
+ assert (at >= 0 && at < index->count);
+
+ return index->data[at];
}
-EXPORT void * index_get (Index * index, int at)
+EXPORT void index_set (Index * index, int at, void * value)
{
- return index->data[at];
+ assert (at >= 0 && at < index->count);
+
+ index->data[at] = value;
}
static void make_room (Index * index, int at, int count)
@@ -89,62 +111,80 @@ static void make_room (Index * index, int at, int count)
index_allocate (index, index->count + count);
if (at < index->count)
- memmove (index->data + at + count, index->data + at, sizeof (void *) *
- (index->count - at));
+ memmove (index->data + at + count, index->data + at, sizeof (void *) * (index->count - at));
index->count += count;
}
EXPORT void index_insert (Index * index, int at, void * value)
{
+ if (at == -1)
+ at = index->count;
+
+ assert (at >= 0 && at <= index->count);
+
make_room (index, at, 1);
index->data[at] = value;
}
-EXPORT void index_append (Index * index, void * value)
+EXPORT void index_copy_set (Index * source, int from, Index * target, int to, int count)
{
- index_insert (index, index->count, value);
-}
+ assert (count >= 0);
+ assert (from >= 0 && from + count <= source->count);
+ assert (to >= 0 && to + count <= target->count);
-EXPORT void index_copy_set (Index * source, int from, Index * target,
- int to, int count)
-{
- memcpy (target->data + to, source->data + from, sizeof (void *) * count);
+ memmove (target->data + to, source->data + from, sizeof (void *) * count);
}
-EXPORT void index_copy_insert (Index * source, int from, Index * target,
- int to, int count)
+EXPORT void index_copy_insert (Index * source, int from, Index * target, int to, int count)
{
+ if (to == -1)
+ to = target->count;
+ if (count == -1)
+ count = source->count - from;
+
+ assert (count >= 0);
+ assert (from >= 0 && from + count <= source->count);
+ assert (to >= 0 && to <= target->count);
+
make_room (target, to, count);
- memcpy (target->data + to, source->data + from, sizeof (void *) * count);
-}
-EXPORT void index_copy_append (Index * source, int from, Index * target,
- int count)
-{
- index_copy_insert (source, from, target, target->count, count);
+ if (source == target && to <= from)
+ index_copy_set (source, from + count, target, to, count);
+ else if (source == target && to <= from + count)
+ {
+ index_copy_set (source, from, target, to, to - from);
+ index_copy_set (source, to + count, target, to + (to - from), count - (to - from));
+ }
+ else
+ index_copy_set (source, from, target, to, count);
}
-EXPORT void index_merge_insert (Index * first, int at, Index * second)
+EXPORT void index_delete (Index * index, int at, int count)
{
- index_copy_insert (second, 0, first, at, second->count);
-}
+ if (count == -1)
+ count = index->count - at;
-EXPORT void index_merge_append (Index * first, Index * second)
-{
- index_copy_insert (second, 0, first, first->count, second->count);
-}
+ assert (count >= 0);
+ assert (at >= 0 && at + count <= index->count);
-EXPORT void index_move (Index * index, int from, int to, int count)
-{
- memmove (index->data + to, index->data + from, sizeof (void *) * count);
+ index_copy_set (index, at + count, index, at, index->count - (at + count));
+
+ index->count -= count;
}
-EXPORT void index_delete (Index * index, int at, int count)
+EXPORT void index_delete_full (Index * index, int at, int count, IndexFreeFunc func)
{
- index->count -= count;
- memmove (index->data + at, index->data + at + count, sizeof (void *) *
- (index->count - at));
+ if (count == -1)
+ count = index->count - at;
+
+ assert (count >= 0);
+ assert (at >= 0 && at + count <= index->count);
+
+ for (int i = at; i < at + count; i ++)
+ func (index->data[i]);
+
+ index_delete (index, at, count);
}
static int index_compare (const void * ap, const void * bp, void * _wrapper)
@@ -156,8 +196,7 @@ static int index_compare (const void * ap, const void * bp, void * _wrapper)
EXPORT void index_sort (Index * index, int (* compare) (const void *, const void *))
{
CompareWrapper wrapper = {compare};
- g_qsort_with_data (index->data, index->count, sizeof (void *),
- index_compare, & wrapper);
+ g_qsort_with_data (index->data, index->count, sizeof (void *), index_compare, & wrapper);
}
static int index_compare2 (const void * ap, const void * bp, void * _wrapper)
@@ -170,6 +209,5 @@ EXPORT void index_sort_with_data (Index * index, int (* compare)
(const void * a, const void * b, void * data), void * data)
{
CompareWrapper2 wrapper = {compare, data};
- g_qsort_with_data (index->data, index->count, sizeof (void *),
- index_compare2, & wrapper);
+ g_qsort_with_data (index->data, index->count, sizeof (void *), index_compare2, & wrapper);
}
diff --git a/src/libaudcore/index.h b/src/libaudcore/index.h
index 68d21a6..3990ff8 100644
--- a/src/libaudcore/index.h
+++ b/src/libaudcore/index.h
@@ -1,6 +1,6 @@
/*
* index.h
- * Copyright 2009-2011 John Lindgren
+ * Copyright 2009-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -20,25 +20,77 @@
#ifndef LIBAUDCORE_INDEX_H
#define LIBAUDCORE_INDEX_H
+/* An "index" is an opaque structure representing a list of pointers. It is
+ * used primarily to store Audacious playlists, but can be useful for other
+ * purposes as well. */
+
struct _Index;
typedef struct _Index Index;
+typedef void (* IndexFreeFunc) (void * value);
+
+/* Returns a new, empty index. */
Index * index_new (void);
+
+/* Destroys <index>. */
void index_free (Index * index);
+
+/* Destroys <index>, first calling <func> on each pointer stored in it. */
+void index_free_full (Index * index, IndexFreeFunc func);
+
+/* Returns the number of pointers stored in <index>. */
int index_count (Index * index);
+
+/* Preallocates space to store <size> pointers in <index>. This can be used to
+ * avoid repeated memory allocations when adding pointers to <index> one by one.
+ * The value returned by index_count() does not changed until the pointers are
+ * actually added. */
void index_allocate (Index * index, int size);
-void index_set (Index * index, int at, void * value);
+
+/* Returns the value stored in <index> at position <at>. */
void * index_get (Index * index, int at);
+
+/* Stores <value> in <index> at position <at>, overwriting the previous value. */
+void index_set (Index * index, int at, void * value);
+
+/* Stores <value> in <index> at position <at>, shifting the previous value (if
+ * any) and those following it forward to make room. If <at> is -1, <value> is
+ * added to the end of <index>. */
void index_insert (Index * index, int at, void * value);
-void index_append (Index * index, void * value);
+
+/* Copies <count> pointers from <source>, starting at position <from>, to
+ * <target>, starting at position <to>. Existing pointers in <target> are
+ * overwritten. Overlapping regions are handled correctly if <source> and
+ * <target> are the same index. */
void index_copy_set (Index * source, int from, Index * target, int to, int count);
+
+/* Copies <count> pointers from <source>, starting at position <from>, to
+ * <target>, starting at position <to>. Existing pointers in <target> are
+ * shifted forward to make room. All cases are handled correctly if <source>
+ * and <target> are the same index, including the case where <to> is between
+ * <from> and <from + count>. If <to> is -1, the pointers are added to the end
+ * of <target>. If <count> is -1, copying continues until the end of <source>
+ * is reached. */
void index_copy_insert (Index * source, int from, Index * target, int to, int count);
-void index_copy_append (Index * source, int from, Index * target, int count);
-void index_merge_insert (Index * first, int at, Index * second);
-void index_merge_append (Index * first, Index * second);
-void index_move (Index * index, int from, int to, int count);
+
+/* Removes <count> pointers from <index>, start at position <at>. Any following
+ * pointers are shifted backward to close the gap. If <count> is -1, all
+ * pointers from <at> to the end of <index> are removed. */
void index_delete (Index * index, int at, int count);
+
+/* Like index_delete(), but first calls <func> on any pointer that is being
+ * removed. */
+void index_delete_full (Index * index, int at, int count, IndexFreeFunc func);
+
+/* Sort the entries in <index> using the quick-sort algorithm with the given
+ * comparison function. The return value of <compare> should follow the
+ * convention used by strcmp(): negative if (a < b), zero if (a = b), positive
+ * if (a > b). */
void index_sort (Index * index, int (* compare) (const void * a, const void * b));
+
+/* Exactly like index_sort() except that <data> is forwarded to the comparison
+ * function. This allows comparison functions whose behavior changes depending
+ * on context. */
void index_sort_with_data (Index * index, int (* compare) (const void * a,
const void * b, void * data), void * data);
diff --git a/src/libaudcore/inifile.c b/src/libaudcore/inifile.c
new file mode 100644
index 0000000..6e13a48
--- /dev/null
+++ b/src/libaudcore/inifile.c
@@ -0,0 +1,134 @@
+/*
+ * inifile.c
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include "audstrings.h"
+#include "inifile.h"
+
+#include <glib.h>
+
+#include <string.h>
+
+static char * strskip (char * str)
+{
+ while (g_ascii_isspace (* str))
+ str ++;
+
+ return str;
+}
+
+static char * strtrim (char * str)
+{
+ int len = strlen (str);
+
+ while (len && g_ascii_isspace(str[len - 1]))
+ str[-- len] = 0;
+
+ return str;
+}
+
+EXPORT void inifile_parse (VFSFile * file,
+ void (* handle_heading) (const char * heading, void * data),
+ void (* handle_entry) (const char * key, const char * value, void * data),
+ void * data)
+{
+ int size = 512;
+ char * buf = g_new (char, size);
+
+ char * pos = buf;
+ int len = 0;
+ bool_t eof = FALSE;
+
+ while (1)
+ {
+ char * newline = memchr (pos, '\n', len);
+
+ while (! newline && ! eof)
+ {
+ memmove (buf, pos, len);
+ pos = buf;
+
+ if (len >= size - 1)
+ {
+ size <<= 1;
+ buf = g_renew (char, buf, size);
+ pos = buf;
+ }
+
+ len += vfs_fread (buf + len, 1, size - 1 - len, file);
+
+ if (len < size - 1)
+ eof = TRUE;
+
+ newline = memchr (pos, '\n', len);
+ }
+
+ if (newline)
+ * newline = 0;
+ else
+ pos[len] = 0;
+
+ char * start = strskip (pos);
+
+ switch (* start)
+ {
+ case 0:
+ case '#':
+ case ';':
+ break;
+
+ case '[':;
+ char * end = strchr (start + 1, ']');
+ if (! end)
+ break;
+
+ * end = 0;
+ handle_heading (strtrim (strskip (start + 1)), data);
+ break;
+
+ default:;
+ char * sep = strchr (start, '=');
+ if (! sep)
+ break;
+
+ * sep = 0;
+ handle_entry (strtrim (start), strtrim (strskip (sep + 1)), data);
+ break;
+ }
+
+ if (! newline)
+ break;
+
+ len -= newline + 1 - pos;
+ pos = newline + 1;
+ }
+
+ g_free (buf);
+}
+
+EXPORT bool_t inifile_write_heading (VFSFile * file, const char * heading)
+{
+ SCONCAT3 (buf, "\n[", heading, "]\n");
+ return (vfs_fwrite (buf, 1, sizeof buf - 1, file) == sizeof buf - 1);
+}
+
+EXPORT bool_t inifile_write_entry (VFSFile * file, const char * key, const char * value)
+{
+ SCONCAT4 (buf, key, "=", value, "\n");
+ return (vfs_fwrite (buf, 1, sizeof buf - 1, file) == sizeof buf - 1);
+}
diff --git a/src/libaudgui/ui_regex.h b/src/libaudcore/inifile.h
index 801a2ff..87189c2 100644
--- a/src/libaudgui/ui_regex.h
+++ b/src/libaudcore/inifile.h
@@ -1,39 +1,33 @@
-/*
- * ui_regex.h
- * Copyright 2010 Carlo Bramini
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#ifndef __UI_REGEX_H__
-#define __UI_REGEX_H__
-
-#if defined USE_REGEX_ONIGURUMA
- #include <onigposix.h>
-
-#elif defined USE_REGEX_PCRE
- #include <pcreposix.h>
-
-#elif defined HAVE_REGEX_H
- #include <regex.h>
-
-#elif defined HAVE_RXPOSIX_H
- #include <rxposix.h>
-
-#elif defined HAVE_RX_RXPOSIX_H
- #include <rx/rxposix.h>
-#endif
-
-#endif
+/*
+ * inifile.h
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef LIBAUDCORE_INIFILE_H
+#define LIBAUDCORE_INIFILE_H
+
+#include "vfs.h"
+
+void inifile_parse (VFSFile * file,
+ void (* handle_heading) (const char * heading, void * data),
+ void (* handle_entry) (const char * key, const char * value, void * data),
+ void * data);
+
+bool_t inifile_write_heading (VFSFile * file, const char * heading);
+bool_t inifile_write_entry (VFSFile * file, const char * key, const char * value);
+
+#endif /* LIBAUDCORE_INIFILE_H */
diff --git a/src/libaudcore/multihash.c b/src/libaudcore/multihash.c
new file mode 100644
index 0000000..2be8839
--- /dev/null
+++ b/src/libaudcore/multihash.c
@@ -0,0 +1,153 @@
+/*
+ * multihash.c
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include "multihash.h"
+
+#include <glib.h>
+
+#define INITIAL_SIZE 256 /* must be a power of two */
+
+static void resize_channel (MultihashTable * table, MultihashChannel * channel, unsigned size)
+{
+ MultihashNode * * buckets = g_new0 (MultihashNode *, size);
+
+ for (int b1 = 0; b1 < channel->size; b1 ++)
+ {
+ MultihashNode * node = channel->buckets[b1];
+
+ while (node)
+ {
+ MultihashNode * next = node->next;
+
+ unsigned hash = table->hash_func (node);
+ unsigned b2 = (hash >> MULTIHASH_SHIFT) & (size - 1);
+ MultihashNode * * node_ptr = & buckets[b2];
+
+ node->next = * node_ptr;
+ * node_ptr = node;
+
+ node = next;
+ }
+ }
+
+ g_free (channel->buckets);
+ channel->buckets = buckets;
+ channel->size = size;
+}
+
+EXPORT int multihash_lookup (MultihashTable * table, const void * data,
+ unsigned hash, MultihashAddFunc add, MultihashActionFunc action, void * state)
+{
+ unsigned c = hash & (MULTIHASH_CHANNELS - 1);
+ MultihashChannel * channel = & table->channels[c];
+
+ int status = 0;
+ tiny_lock (& channel->lock);
+
+ if (! channel->buckets)
+ {
+ if (! add)
+ goto DONE;
+
+ channel->buckets = g_new0 (MultihashNode *, INITIAL_SIZE);
+ channel->size = INITIAL_SIZE;
+ channel->used = 0;
+ }
+
+ unsigned b = (hash >> MULTIHASH_SHIFT) & (channel->size - 1);
+ MultihashNode * * node_ptr = & channel->buckets[b];
+ MultihashNode * node = * node_ptr;
+
+ while (node && ! table->match_func (node, data, hash))
+ {
+ node_ptr = & node->next;
+ node = * node_ptr;
+ }
+
+ if (node)
+ {
+ status |= MULTIHASH_FOUND;
+
+ MultihashNode * next = node->next;
+
+ if (action && action (node, state))
+ {
+ status |= MULTIHASH_REMOVED;
+
+ * node_ptr = next;
+
+ channel->used --;
+ if (channel->used < channel->size >> 2 && channel->size > INITIAL_SIZE)
+ resize_channel (table, channel, channel->size >> 1);
+ }
+ }
+ else if (add && (node = add (data, hash, state)))
+ {
+ status |= MULTIHASH_ADDED;
+
+ * node_ptr = node;
+ node->next = NULL;
+
+ channel->used ++;
+ if (channel->used > channel->size)
+ resize_channel (table, channel, channel->size << 1);
+ }
+
+DONE:
+ tiny_unlock (& channel->lock);
+ return status;
+}
+
+EXPORT void multihash_iterate (MultihashTable * table, MultihashActionFunc action, void * state)
+{
+ for (int c = 0; c < MULTIHASH_CHANNELS; c ++)
+ tiny_lock (& table->channels[c].lock);
+
+ for (int c = 0; c < MULTIHASH_CHANNELS; c ++)
+ {
+ MultihashChannel * channel = & table->channels[c];
+
+ for (int b = 0; b < channel->size; b ++)
+ {
+ MultihashNode * * node_ptr = & channel->buckets[b];
+ MultihashNode * node = * node_ptr;
+
+ while (node)
+ {
+ MultihashNode * next = node->next;
+
+ if (action (node, state))
+ {
+ * node_ptr = next;
+ channel->used --;
+ }
+ else
+ node_ptr = & node->next;
+
+ node = next;
+ }
+ }
+
+ if (channel->used < channel->size >> 2 && channel->size > INITIAL_SIZE)
+ resize_channel (table, channel, channel->size >> 1);
+ }
+
+ for (int c = 0; c < MULTIHASH_CHANNELS; c ++)
+ tiny_unlock (& table->channels[c].lock);
+}
diff --git a/src/libaudcore/multihash.h b/src/libaudcore/multihash.h
new file mode 100644
index 0000000..1e66b21
--- /dev/null
+++ b/src/libaudcore/multihash.h
@@ -0,0 +1,95 @@
+/*
+ * multihash.h
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef LIBAUDCORE_MULTIHASH_H
+#define LIBAUDCORE_MULTIHASH_H
+
+#include <libaudcore/core.h>
+#include <libaudcore/tinylock.h>
+
+/* Multihash is a generic, thread-safe hash table. It scales well to multiple
+ * processors by the use of multiple channels, each with a separate lock. The
+ * hash value of a given node decides what channel it is stored in. Hence,
+ * different processors will tend to hit different channels, keeping lock
+ * contention to a minimum. The data structures are public in order to allow
+ * static initialization (setting all bytes to zero gives the initial state).
+ * The all-purpose lookup function enables a variety of atomic operations, such
+ * as allocating and adding a node only if not already present. */
+
+#define MULTIHASH_CHANNELS 16 /* must be a power of two */
+#define MULTIHASH_SHIFT 4 /* log (base 2) of MULTIHASH_CHANNELS */
+
+#define MULTIHASH_FOUND (1 << 0)
+#define MULTIHASH_ADDED (1 << 1)
+#define MULTIHASH_REMOVED (1 << 2)
+
+/* Skeleton structure containing internal member(s) of a multihash node. Actual
+ * node structures should be defined with MultihashNode as the first member. */
+typedef struct _MultihashNode {
+ struct _MultihashNode * next;
+} MultihashNode;
+
+/* Single channel of a multihash table. For internal use only. */
+typedef struct {
+ TinyLock lock;
+ MultihashNode * * buckets;
+ unsigned size, used;
+} MultihashChannel;
+
+/* Callback. Calculates (or retrieves) the hash value of <node>. */
+typedef unsigned (* MultihashFunc) (const MultihashNode * node);
+
+/* Callback. Returns TRUE if <node> matches <data>, otherwise FALSE. */
+typedef bool_t (* MultihashMatchFunc) (const MultihashNode * node,
+ const void * data, unsigned hash);
+
+/* Multihash table. <hash_func> and <match_func> should be initialized to
+ * functions appropriate for the type of data to be stored in the table. */
+typedef struct {
+ MultihashFunc hash_func;
+ MultihashMatchFunc match_func;
+ MultihashChannel channels[MULTIHASH_CHANNELS];
+} MultihashTable;
+
+/* Callback. May create a new node representing <data> to be added to the
+ * table. Returns the new node or NULL. */
+typedef MultihashNode * (* MultihashAddFunc) (const void * data, unsigned hash, void * state);
+
+/* Callback. Performs a user-defined action when a matching node is found.
+ * Doubles as a node removal function. Returns TRUE if <node> was freed and is
+ * to be removed, otherwise FALSE. */
+typedef bool_t (* MultihashActionFunc) (MultihashNode * node, void * state);
+
+/* All-purpose lookup function. The caller passes in the data to be looked up
+ * along with its hash value. The two callbacks are optional. <add> (if not
+ * NULL) is called if no matching node is found, and may return a new node to
+ * add to the table. <action> (if not NULL) is called if a matching node is
+ * found, and may return TRUE to remove the node from the table. <state> is
+ * forwarded to either callback. Returns the status of the lookup as a bitmask
+ * of MULTIHASH_FOUND, MULTIHASH_ADDED, and MULTIHASH_REMOVED. */
+int multihash_lookup (MultihashTable * table, const void * data, unsigned hash,
+ MultihashAddFunc add, MultihashActionFunc action, void * state);
+
+/* All-purpose iteration function. All channels of the table are locked
+ * simultaneously during the iteration to freeze the table in a consistent
+ * state. <action> is called on each node in order, and may return TRUE to
+ * remove the node from the table. <state> is forwarded to <action>. */
+void multihash_iterate (MultihashTable * table, MultihashActionFunc action, void * state);
+
+#endif /* LIBAUDCORE_MULTIHASH_H */
diff --git a/src/libaudcore/strpool.c b/src/libaudcore/strpool.c
index 634a84d..71e99b3 100644
--- a/src/libaudcore/strpool.c
+++ b/src/libaudcore/strpool.c
@@ -1,6 +1,6 @@
/*
* strpool.c
- * Copyright 2011 John Lindgren
+ * Copyright 2011-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,136 +17,237 @@
* the use of this software.
*/
-#include <glib.h>
-#include <pthread.h>
-#include <stdarg.h>
+#include <assert.h>
#include <stdio.h>
-#include <stdint.h>
#include <stdlib.h>
#include <string.h>
-#include "core.h"
+#include <glib.h>
-/* Each string in the pool is allocated with five leading bytes: a 32-bit
- * reference count and a one-byte signature, the '@' character. */
+#include "audstrings.h"
+#include "multihash.h"
-static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-static GHashTable * table;
+#ifdef VALGRIND_FRIENDLY
-static void str_destroy (void * str)
-{
- * ((char *) str - 1) = 0;
- free ((char *) str - 5);
-}
+typedef struct {
+ unsigned hash;
+ char magic;
+ char str[];
+} StrNode;
+
+#define NODE_SIZE_FOR(s) (offsetof (StrNode, str) + strlen (s) + 1)
+#define NODE_OF(s) ((StrNode *) ((s) - offsetof (StrNode, str)))
EXPORT char * str_get (const char * str)
{
if (! str)
return NULL;
- char * copy;
- pthread_mutex_lock (& mutex);
+ StrNode * node = g_malloc (NODE_SIZE_FOR (str));
+ node->magic = '@';
+ node->hash = g_str_hash (str);
- if (! table)
- table = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, str_destroy);
+ strcpy (node->str, str);
+ return node->str;
+}
- if ((copy = g_hash_table_lookup (table, str)))
- {
- void * mem = copy - 5;
- (* (int32_t *) mem) ++;
- }
- else
- {
- void * mem = malloc (6 + strlen (str));
- (* (int32_t *) mem) = 1;
+EXPORT char * str_ref (const char * str)
+{
+ StrNode * node = NODE_OF (str);
+ assert (node->magic == '@');
+ assert (g_str_hash (str) == node->hash);
- copy = (char *) mem + 5;
- copy[-1] = '@';
- strcpy (copy, str);
+ return str_get (str);
+}
- g_hash_table_insert (table, copy, copy);
- }
+EXPORT void str_unref (char * str)
+{
+ if (! str)
+ return;
+
+ StrNode * node = NODE_OF (str);
+ assert (node->magic == '@');
+ assert (g_str_hash (str) == node->hash);
- pthread_mutex_unlock (& mutex);
- return copy;
+ node->magic = 0;
+ g_free (node);
}
-EXPORT char * str_ref (char * str)
+EXPORT unsigned str_hash (const char * str)
{
if (! str)
- return NULL;
+ return 0;
- pthread_mutex_lock (& mutex);
- STR_CHECK (str);
+ StrNode * node = NODE_OF (str);
+ assert (node->magic == '@');
+
+ return g_str_hash (str);
+}
- void * mem = str - 5;
- (* (int32_t *) mem) ++;
+EXPORT bool_t str_equal (const char * str1, const char * str2)
+{
+ assert (! str1 || NODE_OF (str1)->magic == '@');
+ assert (! str2 || NODE_OF (str2)->magic == '@');
- pthread_mutex_unlock (& mutex);
- return str;
+ return ! g_strcmp0 (str1, str2);
}
-EXPORT void str_unref (char * str)
+EXPORT void strpool_shutdown (void)
{
- if (! str)
- return;
+}
+
+#else /* ! VALGRIND_FRIENDLY */
- pthread_mutex_lock (& mutex);
- STR_CHECK (str);
+typedef struct {
+ MultihashNode node;
+ unsigned hash, refs;
+ char magic;
+ char str[];
+} StrNode;
- void * mem = str - 5;
- if (! -- (* (int32_t *) mem))
- g_hash_table_remove (table, str);
+#define NODE_SIZE_FOR(s) (offsetof (StrNode, str) + strlen (s) + 1)
+#define NODE_OF(s) ((StrNode *) ((s) - offsetof (StrNode, str)))
- pthread_mutex_unlock (& mutex);
+static unsigned hash_cb (const MultihashNode * node)
+{
+ return ((const StrNode *) node)->hash;
}
-EXPORT char * str_nget (const char * str, int len)
+static bool_t match_cb (const MultihashNode * node_, const void * data, unsigned hash)
{
- if (memchr (str, 0, len))
- return str_get (str);
+ const StrNode * node = (const StrNode *) node_;
+ return data == node->str || (hash == node->hash && ! strcmp (data, node->str));
+}
- char buf[len + 1];
- memcpy (buf, str, len);
- buf[len] = 0;
+static MultihashTable strpool_table = {
+ .hash_func = hash_cb,
+ .match_func = match_cb
+};
- return str_get (buf);
+static MultihashNode * add_cb (const void * data, unsigned hash, void * state)
+{
+ StrNode * node = g_malloc (NODE_SIZE_FOR (data));
+ node->hash = hash;
+ node->refs = 1;
+ node->magic = '@';
+ strcpy (node->str, data);
+
+ * ((char * *) state) = node->str;
+ return (MultihashNode *) node;
}
-EXPORT char * str_printf (const char * format, ...)
+static bool_t ref_cb (MultihashNode * node_, void * state)
{
- va_list args;
+ StrNode * node = (StrNode *) node_;
- va_start (args, format);
- int len = vsnprintf (NULL, 0, format, args);
- va_end (args);
+ __sync_fetch_and_add (& node->refs, 1);
- char buf[len + 1];
+ * ((char * *) state) = node->str;
+ return FALSE;
+}
- va_start (args, format);
- vsnprintf (buf, sizeof buf, format, args);
- va_end (args);
+EXPORT char * str_get (const char * str)
+{
+ if (! str)
+ return NULL;
- return str_get (buf);
+ char * ret = NULL;
+ multihash_lookup (& strpool_table, str, g_str_hash (str), add_cb, ref_cb, & ret);
+ return ret;
}
-EXPORT void strpool_abort (char * str)
+EXPORT char * str_ref (const char * str)
{
- fprintf (stderr, "String not in pool: %s\n", str);
- abort ();
+ if (! str)
+ return NULL;
+
+ StrNode * node = NODE_OF (str);
+ assert (node->magic == '@');
+
+ __sync_fetch_and_add (& node->refs, 1);
+
+ return (char *) str;
}
-static void str_leaked (void * key, void * str, void * unused)
+static bool_t remove_cb (MultihashNode * node_, void * state)
{
- fprintf (stderr, "String not freed: %s\n", (char *) str);
+ StrNode * node = (StrNode *) node_;
+
+ if (! __sync_bool_compare_and_swap (& node->refs, 1, 0))
+ return FALSE;
+
+ node->magic = 0;
+ g_free (node);
+ return TRUE;
}
-EXPORT void strpool_shutdown (void)
+EXPORT void str_unref (char * str)
{
- if (! table)
+ if (! str)
return;
- g_hash_table_foreach (table, str_leaked, NULL);
- g_hash_table_destroy (table);
- table = NULL;
+ StrNode * node = NODE_OF (str);
+ assert (node->magic == '@');
+
+ while (1)
+ {
+ int refs = __sync_fetch_and_add (& node->refs, 0);
+
+ if (refs > 1)
+ {
+ if (__sync_bool_compare_and_swap (& node->refs, refs, refs - 1))
+ break;
+ }
+ else
+ {
+ int status = multihash_lookup (& strpool_table, node->str,
+ node->hash, NULL, remove_cb, NULL);
+
+ assert (status & MULTIHASH_FOUND);
+ if (status & MULTIHASH_REMOVED)
+ break;
+ }
+ }
+}
+
+static bool_t leak_cb (MultihashNode * node, void * state)
+{
+ fprintf (stderr, "String leaked: %s\n", ((StrNode *) node)->str);
+ return FALSE;
+}
+
+EXPORT void strpool_shutdown (void)
+{
+ multihash_iterate (& strpool_table, leak_cb, NULL);
+}
+
+EXPORT unsigned str_hash (const char * str)
+{
+ if (! str)
+ return 0;
+
+ StrNode * node = NODE_OF (str);
+ assert (node->magic == '@');
+
+ return node->hash;
+}
+
+
+EXPORT bool_t str_equal (const char * str1, const char * str2)
+{
+ assert (! str1 || NODE_OF (str1)->magic == '@');
+ assert (! str2 || NODE_OF (str2)->magic == '@');
+
+ return str1 == str2;
+}
+
+#endif /* ! VALGRIND_FRIENDLY */
+
+EXPORT char * str_nget (const char * str, int len)
+{
+ if (memchr (str, 0, len))
+ return str_get (str);
+
+ SNCOPY (buf, str, len);
+ return str_get (buf);
}
diff --git a/src/libaudcore/tinylock.c b/src/libaudcore/tinylock.c
new file mode 100644
index 0000000..873aff1
--- /dev/null
+++ b/src/libaudcore/tinylock.c
@@ -0,0 +1,65 @@
+/*
+ * tinylock.c
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include "tinylock.h"
+
+#ifndef VALGRIND_FRIENDLY
+
+#include <limits.h>
+#include <sched.h>
+
+#define WRITE_BIT (SHRT_MAX + 1)
+
+EXPORT void tiny_lock (TinyLock * lock)
+{
+ while (__builtin_expect (__sync_lock_test_and_set (lock, 1), 0))
+ sched_yield ();
+}
+
+EXPORT void tiny_unlock (TinyLock * lock)
+{
+ __sync_lock_release (lock);
+}
+
+EXPORT void tiny_lock_read (TinyRWLock * lock)
+{
+ while (__builtin_expect (__sync_fetch_and_add (lock, 1) & WRITE_BIT, 0))
+ {
+ __sync_fetch_and_sub (lock, 1);
+ sched_yield ();
+ }
+}
+
+EXPORT void tiny_unlock_read (TinyRWLock * lock)
+{
+ __sync_fetch_and_sub (lock, 1);
+}
+
+EXPORT void tiny_lock_write (TinyRWLock * lock)
+{
+ while (! __builtin_expect (__sync_bool_compare_and_swap (lock, 0, WRITE_BIT), 1))
+ sched_yield ();
+}
+
+EXPORT void tiny_unlock_write (TinyRWLock * lock)
+{
+ __sync_fetch_and_sub (lock, WRITE_BIT);
+}
+
+#endif /* ! VALGRIND_FRIENDLY */
diff --git a/src/libaudcore/tinylock.h.in b/src/libaudcore/tinylock.h.in
new file mode 100644
index 0000000..873af1b
--- /dev/null
+++ b/src/libaudcore/tinylock.h.in
@@ -0,0 +1,56 @@
+/*
+ * tinylock.h
+ * Copyright 2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef LIBAUDCORE_TINYLOCK_H
+#define LIBAUDCORE_TINYLOCK_H
+
+#if @VALGRIND_FRIENDLY@ /* VALGRIND_FRIENDLY */
+
+#include <pthread.h>
+
+typedef pthread_mutex_t TinyLock;
+typedef pthread_rwlock_t TinyRWLock;
+
+#define tiny_lock pthread_mutex_lock
+#define tiny_unlock pthread_mutex_unlock
+#define tiny_lock_read pthread_rwlock_rdlock
+#define tiny_unlock_read pthread_rwlock_unlock
+#define tiny_lock_write pthread_rwlock_wrlock
+#define tiny_unlock_write pthread_rwlock_unlock
+
+#else /* ! VALGRIND_FRIENDLY */
+
+/* TinyLock is an extremely low-overhead lock object (in terms of speed and
+ * memory usage). It makes no guarantees of fair scheduling, however. */
+
+typedef char TinyLock;
+
+void tiny_lock (TinyLock * lock);
+void tiny_unlock (TinyLock * lock);
+
+typedef unsigned short TinyRWLock;
+
+void tiny_lock_read (TinyRWLock * lock);
+void tiny_unlock_read (TinyRWLock * lock);
+void tiny_lock_write (TinyRWLock * lock);
+void tiny_unlock_write (TinyRWLock * lock);
+
+#endif /* ! VALGRIND_FRIENDLY */
+
+#endif /* LIBAUDCORE_TINYLOCK_H */
diff --git a/src/libaudcore/tuple.c b/src/libaudcore/tuple.c
index f9a65dc..7974c8b 100644
--- a/src/libaudcore/tuple.c
+++ b/src/libaudcore/tuple.c
@@ -1,6 +1,6 @@
/*
* tuple.c
- * Copyright 2007-2011 William Pitcock, Christian Birchinger, Matti HÀmÀlÀinen,
+ * Copyright 2007-2013 William Pitcock, Christian Birchinger, Matti HÀmÀlÀinen,
* Giacomo Lozito, Eugene Zagidullin, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -18,13 +18,7 @@
* the use of this software.
*/
-/**
- * @file tuple.c
- * @brief Basic Tuple handling API.
- */
-
#include <glib.h>
-#include <pthread.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
@@ -33,8 +27,12 @@
#include <audacious/i18n.h>
#include "audstrings.h"
+#include "tinylock.h"
#include "tuple.h"
-#include "tuple_formatter.h"
+
+#if TUPLE_FIELDS > 64
+#error The current tuple implementation is limited to 64 fields
+#endif
#define BLOCK_VALS 4
@@ -61,20 +59,25 @@ struct _TupleBlock {
* metadata. This is not the same as a playlist entry, though.
*/
struct _Tuple {
- int refcount;
int64_t setmask;
TupleBlock * blocks;
- int nsubtunes; /**< Number of subtunes, if any. Values greater than 0
- mean that there are subtunes and #subtunes array
- may be set. */
int *subtunes; /**< Array of int containing subtune index numbers.
Can be NULL if indexing is linear or if
there are no subtunes. */
+ int nsubtunes; /**< Number of subtunes, if any. Values greater than 0
+ mean that there are subtunes and #subtunes array
+ may be set. */
+
+ int refcount;
+ TinyLock lock;
};
#define BIT(i) ((int64_t) 1 << (i))
+#define LOCK(t) tiny_lock ((TinyLock *) & t->lock)
+#define UNLOCK(t) tiny_unlock ((TinyLock *) & t->lock)
+
/** Ordered table of basic #Tuple field names and their #TupleValueType.
*/
static const TupleBasicType tuple_fields[TUPLE_FIELDS] = {
@@ -154,8 +157,8 @@ static const FieldDictEntry field_dict[TUPLE_FIELDS] = {
{"track-number", FIELD_TRACK_NUMBER},
{"year", FIELD_YEAR}};
-static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
+#define VALID_FIELD(f) ((f) >= 0 && (f) < TUPLE_FIELDS)
+#define FIELD_TYPE(f) (tuple_fields[f].type)
static int field_dict_compare (const void * a, const void * b)
{
@@ -168,26 +171,18 @@ EXPORT int tuple_field_by_name (const char * name)
FieldDictEntry * found = bsearch (& find, field_dict, TUPLE_FIELDS,
sizeof (FieldDictEntry), field_dict_compare);
- if (found)
- return found->field;
-
- fprintf (stderr, "Unknown tuple field name \"%s\".\n", name);
- return -1;
+ return found ? found->field : -1;
}
EXPORT const char * tuple_field_get_name (int field)
{
- if (field < 0 || field >= TUPLE_FIELDS)
- return NULL;
-
+ g_return_val_if_fail (VALID_FIELD (field), NULL);
return tuple_fields[field].name;
}
EXPORT TupleValueType tuple_field_get_type (int field)
{
- if (field < 0 || field >= TUPLE_FIELDS)
- return TUPLE_UNKNOWN;
-
+ g_return_val_if_fail (VALID_FIELD (field), TUPLE_UNKNOWN);
return tuple_fields[field].type;
}
@@ -240,7 +235,7 @@ static TupleVal * lookup_val (Tuple * tuple, int field, bool_t add, bool_t remov
return & block->vals[0];
}
-static void tuple_destroy_unlocked (Tuple * tuple)
+static void tuple_destroy (Tuple * tuple)
{
TupleBlock * next;
for (TupleBlock * block = tuple->blocks; block; block = next)
@@ -254,13 +249,10 @@ static void tuple_destroy_unlocked (Tuple * tuple)
str_unref (block->vals[i].str);
}
- memset (block, 0, sizeof (TupleBlock));
g_slice_free (TupleBlock, block);
}
- g_free(tuple->subtunes);
-
- memset (tuple, 0, sizeof (Tuple));
+ g_free (tuple->subtunes);
g_slice_free (Tuple, tuple);
}
@@ -273,11 +265,8 @@ EXPORT Tuple * tuple_new (void)
EXPORT Tuple * tuple_ref (Tuple * tuple)
{
- pthread_mutex_lock (& mutex);
+ __sync_fetch_and_add (& tuple->refcount, 1);
- tuple->refcount ++;
-
- pthread_mutex_unlock (& mutex);
return tuple;
}
@@ -286,22 +275,10 @@ EXPORT void tuple_unref (Tuple * tuple)
if (! tuple)
return;
- pthread_mutex_lock (& mutex);
-
- if (! -- tuple->refcount)
- tuple_destroy_unlocked (tuple);
-
- pthread_mutex_unlock (& mutex);
+ if (! __sync_sub_and_fetch (& tuple->refcount, 1))
+ tuple_destroy (tuple);
}
-/**
- * Sets filename/URI related fields of a #Tuple structure, based
- * on the given filename argument. The fields set are:
- * #FIELD_FILE_PATH, #FIELD_FILE_NAME and #FIELD_FILE_EXT.
- *
- * @param[in] filename Filename URI.
- * @param[in,out] tuple Tuple structure to manipulate.
- */
EXPORT void tuple_set_filename (Tuple * tuple, const char * filename)
{
const char * base, * ext, * sub;
@@ -311,34 +288,27 @@ EXPORT void tuple_set_filename (Tuple * tuple, const char * filename)
char path[base - filename + 1];
str_decode_percent (filename, base - filename, path);
- tuple_set_str (tuple, FIELD_FILE_PATH, NULL, path);
+ tuple_set_str (tuple, FIELD_FILE_PATH, path);
char name[ext - base + 1];
str_decode_percent (base, ext - base, name);
- tuple_set_str (tuple, FIELD_FILE_NAME, NULL, name);
+ tuple_set_str (tuple, FIELD_FILE_NAME, name);
if (ext < sub)
{
char extbuf[sub - ext];
str_decode_percent (ext + 1, sub - ext - 1, extbuf);
- tuple_set_str (tuple, FIELD_FILE_EXT, NULL, extbuf);
+ tuple_set_str (tuple, FIELD_FILE_EXT, extbuf);
}
if (sub[0])
- tuple_set_int (tuple, FIELD_SUBSONG_ID, NULL, isub);
+ tuple_set_int (tuple, FIELD_SUBSONG_ID, isub);
}
-/**
- * Creates a copy of given Tuple structure, with copied data.
- *
- * @param[in] src Tuple structure to be made a copy of.
- * @return Pointer to newly allocated Tuple.
- */
EXPORT Tuple * tuple_copy (const Tuple * old)
{
- pthread_mutex_lock (& mutex);
-
Tuple * new = tuple_new ();
+ LOCK (old);
for (int f = 0; f < TUPLE_FIELDS; f ++)
{
@@ -358,83 +328,56 @@ EXPORT Tuple * tuple_copy (const Tuple * old)
if (old->subtunes)
new->subtunes = g_memdup (old->subtunes, sizeof (int) * old->nsubtunes);
- pthread_mutex_unlock (& mutex);
+ UNLOCK (old);
return new;
}
-/**
- * Allocates a new #Tuple structure, setting filename/URI related
- * fields based on the given filename argument by calling #tuple_set_filename.
- *
- * @param[in] filename Filename URI.
- * @return Pointer to newly allocated Tuple.
- */
-EXPORT Tuple *
-tuple_new_from_filename(const char *filename)
+EXPORT Tuple * tuple_new_from_filename (const char * filename)
{
- Tuple *tuple = tuple_new();
-
- tuple_set_filename(tuple, filename);
+ Tuple * tuple = tuple_new ();
+ tuple_set_filename (tuple, filename);
return tuple;
}
-EXPORT void tuple_set_int (Tuple * tuple, int nfield, const char * field, int x)
+EXPORT void tuple_set_int (Tuple * tuple, int field, int x)
{
- if (nfield < 0)
- nfield = tuple_field_by_name (field);
- if (nfield < 0 || nfield >= TUPLE_FIELDS || tuple_fields[nfield].type != TUPLE_INT)
- return;
+ g_return_if_fail (VALID_FIELD (field) && FIELD_TYPE (field) == TUPLE_INT);
+ LOCK (tuple);
- pthread_mutex_lock (& mutex);
-
- TupleVal * val = lookup_val (tuple, nfield, TRUE, FALSE);
+ TupleVal * val = lookup_val (tuple, field, TRUE, FALSE);
val->x = x;
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
}
-EXPORT void tuple_set_str (Tuple * tuple, int nfield, const char * field, const char * str)
+EXPORT void tuple_set_str (Tuple * tuple, int field, const char * str)
{
- if (! str)
- {
- tuple_unset (tuple, nfield, field);
- return;
- }
+ g_return_if_fail (VALID_FIELD (field) && FIELD_TYPE (field) == TUPLE_STRING);
- if (! g_utf8_validate (str, -1, NULL))
+ if (! str)
{
- fprintf (stderr, "Invalid UTF-8: %s\n", str);
+ tuple_unset (tuple, field);
return;
}
- if (nfield < 0)
- nfield = tuple_field_by_name (field);
- if (nfield < 0 || nfield >= TUPLE_FIELDS || tuple_fields[nfield].type != TUPLE_STRING)
- return;
-
- pthread_mutex_lock (& mutex);
+ LOCK (tuple);
- TupleVal * val = lookup_val (tuple, nfield, TRUE, FALSE);
- if (val->str)
- str_unref (val->str);
- val->str = str_get (str);
+ TupleVal * val = lookup_val (tuple, field, TRUE, FALSE);
+ str_unref (val->str);
+ val->str = str_to_utf8 (str, -1);
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
}
-EXPORT void tuple_unset (Tuple * tuple, int nfield, const char * field)
+EXPORT void tuple_unset (Tuple * tuple, int field)
{
- if (nfield < 0)
- nfield = tuple_field_by_name (field);
- if (nfield < 0 || nfield >= TUPLE_FIELDS)
- return;
+ g_return_if_fail (VALID_FIELD (field));
+ LOCK (tuple);
- pthread_mutex_lock (& mutex);
-
- TupleVal * val = lookup_val (tuple, nfield, FALSE, TRUE);
+ TupleVal * val = lookup_val (tuple, field, FALSE, TRUE);
if (val)
{
- if (tuple_fields[nfield].type == TUPLE_STRING)
+ if (tuple_fields[field].type == TUPLE_STRING)
{
str_unref (val->str);
val->str = NULL;
@@ -443,96 +386,52 @@ EXPORT void tuple_unset (Tuple * tuple, int nfield, const char * field)
val->x = 0;
}
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
}
-/**
- * Returns #TupleValueType of given #Tuple field.
- * Desired field can be specified either by key name or if it is
- * one of basic fields, by #TupleBasicType index.
- *
- * @param[in] tuple #Tuple structure pointer.
- * @param[in] cnfield #TupleBasicType index or -1 if key name is to be used instead.
- * @param[in] field String acting as key name or NULL if nfield is used.
- * @return #TupleValueType of the field or TUPLE_UNKNOWN if there was an error.
- */
-EXPORT TupleValueType tuple_get_value_type (const Tuple * tuple, int nfield, const char * field)
+EXPORT TupleValueType tuple_get_value_type (const Tuple * tuple, int field)
{
- if (nfield < 0)
- nfield = tuple_field_by_name (field);
- if (nfield < 0 || nfield >= TUPLE_FIELDS)
- return TUPLE_UNKNOWN;
-
- pthread_mutex_lock (& mutex);
+ g_return_val_if_fail (VALID_FIELD (field), TUPLE_UNKNOWN);
+ LOCK (tuple);
- TupleValueType type = TUPLE_UNKNOWN;
+ TupleVal * val = lookup_val ((Tuple *) tuple, field, FALSE, FALSE);
+ TupleValueType type = val ? FIELD_TYPE (field) : TUPLE_UNKNOWN;
- TupleVal * val = lookup_val ((Tuple *) tuple, nfield, FALSE, FALSE);
- if (val)
- type = tuple_fields[nfield].type;
-
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
return type;
}
-EXPORT char * tuple_get_str (const Tuple * tuple, int nfield, const char * field)
+EXPORT char * tuple_get_str (const Tuple * tuple, int field)
{
- if (nfield < 0)
- nfield = tuple_field_by_name (field);
- if (nfield < 0 || nfield >= TUPLE_FIELDS || tuple_fields[nfield].type != TUPLE_STRING)
- return NULL;
-
- pthread_mutex_lock (& mutex);
+ g_return_val_if_fail (VALID_FIELD (field) && FIELD_TYPE (field) == TUPLE_STRING, NULL);
+ LOCK (tuple);
- char * str = NULL;
+ TupleVal * val = lookup_val ((Tuple *) tuple, field, FALSE, FALSE);
+ char * str = val ? str_ref (val->str) : NULL;
- TupleVal * val = lookup_val ((Tuple *) tuple, nfield, FALSE, FALSE);
- if (val)
- str = str_ref (val->str);
-
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
return str;
}
-/**
- * Returns integer associated to #Tuple field.
- * Desired field can be specified either by key name or if it is
- * one of basic fields, by #TupleBasicType index.
- *
- * @param[in] tuple #Tuple structure pointer.
- * @param[in] cnfield #TupleBasicType index or -1 if key name is to be used instead.
- * @param[in] field String acting as key name or NULL if nfield is used.
- * @return Integer value or 0 if the field/key did not exist.
- *
- * @bug There is no way to distinguish error situations if the associated value is zero.
- */
-EXPORT int tuple_get_int (const Tuple * tuple, int nfield, const char * field)
+EXPORT int tuple_get_int (const Tuple * tuple, int field)
{
- if (nfield < 0)
- nfield = tuple_field_by_name (field);
- if (nfield < 0 || nfield >= TUPLE_FIELDS || tuple_fields[nfield].type != TUPLE_INT)
- return 0;
-
- pthread_mutex_lock (& mutex);
+ g_return_val_if_fail (VALID_FIELD (field) && FIELD_TYPE (field) == TUPLE_INT, -1);
+ LOCK (tuple);
- int x = 0;
-
- TupleVal * val = lookup_val ((Tuple *) tuple, nfield, FALSE, FALSE);
- if (val)
- x = val->x;
+ TupleVal * val = lookup_val ((Tuple *) tuple, field, FALSE, FALSE);
+ int x = val ? val->x : -1;
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
return x;
}
-#define APPEND(b, ...) snprintf (b + strlen (b), sizeof b - strlen (b), \
- __VA_ARGS__)
+#define APPEND(b, ...) snprintf (b + strlen (b), sizeof b - strlen (b), __VA_ARGS__)
EXPORT void tuple_set_format (Tuple * t, const char * format, int chans, int rate,
int brate)
{
if (format)
- tuple_set_str (t, FIELD_CODEC, NULL, format);
+ tuple_set_str (t, FIELD_CODEC, format);
char buf[32];
buf[0] = 0;
@@ -544,8 +443,7 @@ EXPORT void tuple_set_format (Tuple * t, const char * format, int chans, int rat
else if (chans == 2)
APPEND (buf, _("Stereo"));
else
- APPEND (buf, dngettext (PACKAGE, "%d channel", "%d channels",
- chans), chans);
+ APPEND (buf, dngettext (PACKAGE, "%d channel", "%d channels", chans), chans);
if (rate > 0)
APPEND (buf, ", ");
@@ -555,15 +453,15 @@ EXPORT void tuple_set_format (Tuple * t, const char * format, int chans, int rat
APPEND (buf, "%d kHz", rate / 1000);
if (buf[0])
- tuple_set_str (t, FIELD_QUALITY, NULL, buf);
+ tuple_set_str (t, FIELD_QUALITY, buf);
if (brate > 0)
- tuple_set_int (t, FIELD_BITRATE, NULL, brate);
+ tuple_set_int (t, FIELD_BITRATE, brate);
}
EXPORT void tuple_set_subtunes (Tuple * tuple, int n_subtunes, const int * subtunes)
{
- pthread_mutex_lock (& mutex);
+ LOCK (tuple);
g_free (tuple->subtunes);
tuple->subtunes = NULL;
@@ -572,45 +470,27 @@ EXPORT void tuple_set_subtunes (Tuple * tuple, int n_subtunes, const int * subtu
if (subtunes)
tuple->subtunes = g_memdup (subtunes, sizeof (int) * n_subtunes);
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
}
EXPORT int tuple_get_n_subtunes (Tuple * tuple)
{
- pthread_mutex_lock (& mutex);
+ LOCK (tuple);
int n_subtunes = tuple->nsubtunes;
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
return n_subtunes;
}
EXPORT int tuple_get_nth_subtune (Tuple * tuple, int n)
{
- pthread_mutex_lock (& mutex);
+ LOCK (tuple);
int subtune = -1;
if (n >= 0 && n < tuple->nsubtunes)
subtune = tuple->subtunes ? tuple->subtunes[n] : 1 + n;
- pthread_mutex_unlock (& mutex);
+ UNLOCK (tuple);
return subtune;
}
-
-EXPORT char * tuple_format_title (Tuple * tuple, const char * format)
-{
- static const gint fallbacks[] = {FIELD_TITLE, FIELD_FILE_NAME, FIELD_FILE_PATH};
-
- char * title = tuple_formatter_process_string (tuple, format);
-
- for (int i = 0; i < G_N_ELEMENTS (fallbacks); i ++)
- {
- if (title && title[0])
- break;
-
- str_unref (title);
- title = tuple_get_str (tuple, fallbacks[i], NULL);
- }
-
- return title ? title : str_get ("");
-}
diff --git a/src/libaudcore/tuple.h b/src/libaudcore/tuple.h
index 55f3e2e..873f699 100644
--- a/src/libaudcore/tuple.h
+++ b/src/libaudcore/tuple.h
@@ -1,6 +1,6 @@
/*
* tuple.h
- * Copyright 2007-2011 William Pitcock, Christian Birchinger, Matti HÀmÀlÀinen,
+ * Copyright 2007-2013 William Pitcock, Christian Birchinger, Matti HÀmÀlÀinen,
* Giacomo Lozito, Eugene Zagidullin, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -90,6 +90,7 @@ const char * tuple_field_get_name (int field);
TupleValueType tuple_field_get_type (int field);
typedef struct _Tuple Tuple;
+typedef struct _TupleFormatter TupleFormatter;
/* Creates a new, blank tuple with a reference count of one. */
Tuple * tuple_new (void);
@@ -105,45 +106,41 @@ void tuple_unref (Tuple * tuple);
/* Makes a copy of <tuple>. Only use tuple_copy() if you need to modify one
* copy of the tuple while not modifying the other. In most cases, tuple_ref()
* is more appropriate. */
-Tuple *tuple_copy(const Tuple *);
+Tuple * tuple_copy (const Tuple * tuple);
/* Parses the URI <filename> and sets FIELD_FILE_NAME, FIELD_FILE_PATH,
* FIELD_FILE_EXT, and FIELD_SUBSONG_ID accordingly. */
-void tuple_set_filename(Tuple *tuple, const char *filename);
+void tuple_set_filename (Tuple * tuple, const char * filename);
/* Convenience function, equivalent to calling tuple_new() and then
* tuple_set_filename(). */
-Tuple *tuple_new_from_filename(const char *filename);
+Tuple * tuple_new_from_filename (const char * filename);
/* Sets a field to the integer value <x>. */
-void tuple_set_int (Tuple * tuple, int nfield, const char * field, int x);
+void tuple_set_int (Tuple * tuple, int field, int x);
-/* Sets the field specified by <nfield> (one of the FIELD_* constants) or
- * <field> (one of the names returned by tuple_field_get_name() to the string
- * value <str>. Only one of <nfield> or <field> may be set. If <nfield> is
- * set, <field> must be NULL; if <field> is set, <nfield> must be -1. As a
+/* Sets a field to the string value <str>. If <str> is not valid UTF-8, it will
+ * be converted according to the user's character set detection rules. As a
* special case, if <str> is NULL, the result is equivalent to calling
* tuple_unset(). */
-void tuple_set_str (Tuple * tuple, int nfield, const char * field, const char * str);
+void tuple_set_str (Tuple * tuple, int field, const char * str);
/* Clears any value that a field is currently set to. */
-void tuple_unset (Tuple * tuple, int nfield, const char * field);
+void tuple_unset (Tuple * tuple, int field);
/* Returns the value type of a field, or TUPLE_UNKNOWN if the field has not been
* set to any value. */
-TupleValueType tuple_get_value_type (const Tuple * tuple, int nfield,
- const char * field);
+TupleValueType tuple_get_value_type (const Tuple * tuple, int field);
/* Returns the string value of a field. The returned string is pooled and must
* be released with str_unref() when no longer needed. If the field has not
* been set to any value, returns NULL. */
-char * tuple_get_str (const Tuple * tuple, int nfield, const char * field);
+char * tuple_get_str (const Tuple * tuple, int field);
/* Returns the integer value of a field. If the field has not been set to any
- * value, returns 0. (In hindsight, it would have been better to return -1 in
- * this case. If you need to distinguish between a value of 0 and a field not
- * set to any value, use tuple_get_value_type().) */
-int tuple_get_int (const Tuple * tuple, int nfield, const char * field);
+ * value, returns -1. If you need to distinguish between a value of -1 and a
+ * field not set to any value, use tuple_get_value_type(). */
+int tuple_get_int (const Tuple * tuple, int field);
/* Fills in format-related fields (specifically FIELD_CODEC, FIELD_QUALITY, and
* FIELD_BITRATE). Plugins should use this function instead of setting these
@@ -168,10 +165,16 @@ int tuple_get_n_subtunes (Tuple * tuple);
/* Returns the <n>th member of the subtune array. */
int tuple_get_nth_subtune (Tuple * tuple, int n);
-/* Generates a formatted title string for <tuple> according to <format>. The
- * syntax of <format> is documented in tuple_formatter.c. The returned string
- * is pooled and must be released with str_unref() when no longer need. The
- * returned string is never NULL, though it may be the empty string. */
-char * tuple_format_title (Tuple * tuple, const char * format);
+/* Creates a tuple formatter object for the given format. The syntax of
+ * <format> is documented in tuple_formatter.c. */
+TupleFormatter * tuple_formatter_new (const char * format);
+
+/* Destroys a tuple formatter object. */
+void tuple_formatter_free (TupleFormatter * formatter);
+
+/* Generates a title string for <tuple> using the given formatter object. The
+ * returned string is pooled and must be released with str_unref() when no
+ * longer needed. Never returns NULL, but may return an empty string. */
+char * tuple_format_title (TupleFormatter * formatter, const Tuple * tuple);
#endif /* LIBAUDCORE_TUPLE_H */
diff --git a/src/libaudcore/tuple_compiler.c b/src/libaudcore/tuple_compiler.c
index 4834e17..74584c1 100644
--- a/src/libaudcore/tuple_compiler.c
+++ b/src/libaudcore/tuple_compiler.c
@@ -1,7 +1,7 @@
/*
* tuple_compiler.c
* Copyright (c) 2007 Matti 'ccr' HÀmÀlÀinen
- * Copyright (c) 2011 John Lindgren
+ * Copyright (c) 2011-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,6 @@
* currently there is just a single context, is a "global" context needed?
*/
-#include <ctype.h>
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
@@ -39,18 +38,19 @@
#include <glib.h>
+#include "audstrings.h"
#include "tuple_compiler.h"
-#define MAX_STR (256)
-#define MIN_ALLOC_NODES (8)
-#define MIN_ALLOC_BUF (64)
+#define MAX_STR (256)
#define TUPLEZ_MAX_VARS (4)
+#define GET_VAR(c, i) (& g_array_index ((c), TupleEvalVar, (i)))
+
#define tuple_error(ctx, ...) fprintf (stderr, "Tuple compiler: " __VA_ARGS__)
enum {
- OP_RAW = 0, /* plain text */
- OP_FIELD, /* a field/variable */
+ OP_RAW = 0, /* plain text */
+ OP_FIELD, /* a field/variable */
OP_EXISTS,
OP_EQUALS,
OP_NOT_EQUALS,
@@ -67,42 +67,28 @@ enum {
};
struct _TupleEvalNode {
- int opcode; /* operator, see OP_ enums */
- int var[TUPLEZ_MAX_VARS]; /* tuple variable references */
- char *text; /* raw text, if any (OP_RAW) */
+ int opcode; /* operator, see OP_ enums */
+ int var[TUPLEZ_MAX_VARS]; /* tuple variable references */
+ char *text; /* raw text, if any (OP_RAW) */
struct _TupleEvalNode *children, *next, *prev; /* children of this struct, and pointer to next node. */
};
typedef struct {
char *name;
- int type; /* Type of variable, see VAR_* */
+ int type; /* Type of variable, see VAR_* */
int defvali;
- TupleValueType ctype; /* Type of constant/def value */
+ TupleValueType ctype; /* Type of constant/def value */
- int fieldidx; /* if >= 0: Index # of "pre-defined" Tuple fields */
+ int fieldidx; /* if >= 0: Index # of "pre-defined" Tuple fields */
bool_t fieldread, fieldvalid;
char * fieldstr;
} TupleEvalVar;
-struct _TupleEvalContext {
- int nvariables;
- TupleEvalVar **variables;
-};
-
-
-static void tuple_evalctx_free_var(TupleEvalVar *var)
-{
- g_free(var->name);
- str_unref (var->fieldstr);
- g_free(var);
-}
-
-
/* Initialize an evaluation context
*/
TupleEvalContext * tuple_evalctx_new(void)
{
- return g_new0(TupleEvalContext, 1);
+ return g_array_new (FALSE, TRUE, sizeof (TupleEvalVar));
}
@@ -110,15 +96,15 @@ TupleEvalContext * tuple_evalctx_new(void)
*/
void tuple_evalctx_reset(TupleEvalContext *ctx)
{
- int i;
-
- for (i = 0; i < ctx->nvariables; i++)
- if (ctx->variables[i]) {
- ctx->variables[i]->fieldread = FALSE;
- ctx->variables[i]->fieldvalid = FALSE;
- str_unref (ctx->variables[i]->fieldstr);
- ctx->variables[i]->fieldstr = NULL;
- }
+ for (int i = 0; i < ctx->len; i ++)
+ {
+ TupleEvalVar * var = GET_VAR (ctx, i);
+
+ var->fieldread = FALSE;
+ var->fieldvalid = FALSE;
+ str_unref (var->fieldstr);
+ var->fieldstr = NULL;
+ }
}
@@ -126,57 +112,52 @@ void tuple_evalctx_reset(TupleEvalContext *ctx)
*/
void tuple_evalctx_free(TupleEvalContext *ctx)
{
- int i;
-
- if (!ctx) return;
+ for (int i = 0; i < ctx->len; i ++)
+ {
+ TupleEvalVar * var = GET_VAR (ctx, i);
- /* Deallocate variables */
- for (i = 0; i < ctx->nvariables; i++)
- if (ctx->variables[i])
- tuple_evalctx_free_var(ctx->variables[i]);
+ str_unref (var->name);
+ str_unref (var->fieldstr);
+ }
- g_free(ctx->variables);
- g_free(ctx);
+ g_array_free (ctx, TRUE);
}
+/* note: may invalidate TupleEvalVar pointers due to reallocation */
static int tuple_evalctx_add_var (TupleEvalContext * ctx, const char * name,
const int type, const TupleValueType ctype)
{
- int i;
- TupleEvalVar *tmp = g_new0(TupleEvalVar, 1);
+ int field = -1;
+
+ if (type == TUPLE_VAR_FIELD)
+ {
+ field = tuple_field_by_name (name);
+ if (field < 0)
+ return -1;
+ }
+
+ int i = ctx->len;
+ g_array_set_size (ctx, i + 1);
- tmp->name = g_strdup(name);
- tmp->type = type;
- tmp->fieldidx = -1;
- tmp->ctype = ctype;
+ TupleEvalVar * var = GET_VAR (ctx, i);
+
+ var->name = str_get (name);
+ var->type = type;
+ var->fieldidx = field;
+ var->ctype = ctype;
- /* Find fieldidx, if any */
switch (type) {
case TUPLE_VAR_FIELD:
- tmp->fieldidx = tuple_field_by_name (name);
- tmp->ctype = tuple_field_get_type (tmp->fieldidx);
+ var->ctype = tuple_field_get_type (field);
break;
case TUPLE_VAR_CONST:
if (ctype == TUPLE_INT)
- tmp->defvali = atoi(name);
+ var->defvali = atoi (name);
break;
}
- /* Find a free slot */
- for (i = 0; i < ctx->nvariables; i++)
- if (!ctx->variables[i]) {
- ctx->variables[i] = tmp;
- return i;
- }
-
- i = ctx->nvariables;
- ctx->variables = g_renew(TupleEvalVar *, ctx->variables, ctx->nvariables + MIN_ALLOC_NODES);
- memset(&(ctx->variables[ctx->nvariables]), 0, MIN_ALLOC_NODES * sizeof(TupleEvalVar *));
- ctx->nvariables += MIN_ALLOC_NODES;
- ctx->variables[i] = tmp;
-
return i;
}
@@ -196,12 +177,6 @@ static void tuple_evalnode_insert(TupleEvalNode **nodes, TupleEvalNode *node)
}
-static TupleEvalNode *tuple_evalnode_new(void)
-{
- return g_new0(TupleEvalNode, 1);
-}
-
-
void tuple_evalnode_free(TupleEvalNode *expr)
{
TupleEvalNode *curr = expr, *next;
@@ -209,12 +184,12 @@ void tuple_evalnode_free(TupleEvalNode *expr)
while (curr) {
next = curr->next;
- g_free(curr->text);
+ str_unref (curr->text);
if (curr->children)
tuple_evalnode_free(curr->children);
- g_free(curr);
+ g_slice_free (TupleEvalNode, curr);
curr = next;
}
@@ -246,11 +221,11 @@ static bool_t tc_get_item(TupleEvalContext *ctx,
}
if (*literal == FALSE) {
- while (*s != '\0' && *s != tmpendch && (isalnum(*s) || *s == '-') && i < (max - 1)) {
+ while (*s != '\0' && *s != tmpendch && (g_ascii_isalnum(*s) || *s == '-') && i < (max - 1)) {
buf[i++] = *(s++);
}
- if (*s != tmpendch && *s != '}' && !isalnum(*s) && *s != '-') {
+ if (*s != tmpendch && *s != '}' && !g_ascii_isalnum(*s) && *s != '-') {
tuple_error(ctx, "Invalid field '%s' in '%s'.\n", *str, item);
return FALSE;
} else if (*s != tmpendch) {
@@ -286,20 +261,17 @@ static bool_t tc_get_item(TupleEvalContext *ctx,
static int tc_get_variable(TupleEvalContext *ctx, char *name, int type)
{
- int i;
TupleValueType ctype = TUPLE_UNKNOWN;
- if (name == '\0') return -1;
-
- if (isdigit(name[0])) {
+ if (g_ascii_isdigit(name[0])) {
ctype = TUPLE_INT;
type = TUPLE_VAR_CONST;
} else
ctype = TUPLE_STRING;
if (type != TUPLE_VAR_CONST) {
- for (i = 0; i < ctx->nvariables; i++)
- if (ctx->variables[i] && !strcmp(ctx->variables[i]->name, name))
+ for (int i = 0; i < ctx->len; i ++)
+ if (! strcmp (GET_VAR (ctx, i)->name, name))
return i;
}
@@ -317,7 +289,7 @@ static bool_t tc_parse_construct(TupleEvalContext *ctx, TupleEvalNode **res,
if (tc_get_item(ctx, c, tmps1, MAX_STR, ',', &literal1, "tag1", item)) {
(*c)++;
if (tc_get_item(ctx, c, tmps2, MAX_STR, ':', &literal2, "tag2", item)) {
- TupleEvalNode *tmp = tuple_evalnode_new();
+ TupleEvalNode *tmp = g_slice_new0 (TupleEvalNode);
(*c)++;
tmp->opcode = opcode;
@@ -374,7 +346,7 @@ static TupleEvalNode *tuple_compiler_pass1(int *level, TupleEvalContext *ctx, co
literal = FALSE;
if (tc_get_item(ctx, &c, tmps1, MAX_STR, ':', &literal, "tag", item)) {
c++;
- tmp = tuple_evalnode_new();
+ tmp = g_slice_new0 (TupleEvalNode);
tmp->opcode = OP_EXISTS;
if ((tmp->var[0] = tc_get_variable(ctx, tmps1, TUPLE_VAR_FIELD)) < 0) {
tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps1, expr);
@@ -395,7 +367,7 @@ static TupleEvalNode *tuple_compiler_pass1(int *level, TupleEvalContext *ctx, co
if (*c == '"') {
/* String */
c++;
- } else if (isdigit(*c)) {
+ } else if (g_ascii_isdigit(*c)) {
/* Integer */
}
@@ -444,7 +416,7 @@ static TupleEvalNode *tuple_compiler_pass1(int *level, TupleEvalContext *ctx, co
literal = FALSE;
if (tc_get_item(ctx, &c, tmps1, MAX_STR, ':', &literal, "tag", item)) {
c++;
- tmp = tuple_evalnode_new();
+ tmp = g_slice_new0 (TupleEvalNode);
tmp->opcode = OP_IS_EMPTY;
if ((tmp->var[0] = tc_get_variable(ctx, tmps1, TUPLE_VAR_FIELD)) < 0) {
tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps1, expr);
@@ -467,7 +439,7 @@ static TupleEvalNode *tuple_compiler_pass1(int *level, TupleEvalContext *ctx, co
/* FIXME!! FIX ME! Check for external expressions */
/* I HAS A FIELD - A field. You has it. */
- tmp = tuple_evalnode_new();
+ tmp = g_slice_new0 (TupleEvalNode);
tmp->opcode = OP_FIELD;
if ((tmp->var[0] = tc_get_variable(ctx, tmps1, TUPLE_VAR_FIELD)) < 0) {
tuple_error(ctx, "Invalid variable '%s' in '%s'.\n", tmps1, expr);
@@ -491,7 +463,7 @@ static TupleEvalNode *tuple_compiler_pass1(int *level, TupleEvalContext *ctx, co
gssize i = 0;
c++;
- while (*c != '\0' && (isalnum(*c) || *c == '-') && *c != '}' && *c != ':' && i < (MAX_STR - 1))
+ while (*c != '\0' && (g_ascii_isalnum(*c) || *c == '-') && *c != '}' && *c != ':' && i < (MAX_STR - 1))
tmps1[i++] = *(c++);
tmps1[i] = '\0';
@@ -516,9 +488,9 @@ static TupleEvalNode *tuple_compiler_pass1(int *level, TupleEvalContext *ctx, co
}
tmps1[i] = '\0';
- tmp = tuple_evalnode_new();
+ tmp = g_slice_new0 (TupleEvalNode);
tmp->opcode = OP_RAW;
- tmp->text = g_strdup(tmps1);
+ tmp->text = str_get (tmps1);
tuple_evalnode_insert(&res, tmp);
}
}
@@ -565,16 +537,16 @@ static bool_t tf_get_fieldval (TupleEvalVar * var, const Tuple * tuple)
if (var->fieldread)
return var->fieldvalid;
- if (tuple_get_value_type (tuple, var->fieldidx, NULL) != var->ctype) {
+ if (tuple_get_value_type (tuple, var->fieldidx) != var->ctype) {
var->fieldread = TRUE;
var->fieldvalid = FALSE;
return FALSE;
}
if (var->ctype == TUPLE_INT)
- var->defvali = tuple_get_int (tuple, var->fieldidx, NULL);
+ var->defvali = tuple_get_int (tuple, var->fieldidx);
else if (var->ctype == TUPLE_STRING)
- var->fieldstr = tuple_get_str (tuple, var->fieldidx, NULL);
+ var->fieldstr = tuple_get_str (tuple, var->fieldidx);
var->fieldread = TRUE;
var->fieldvalid = TRUE;
@@ -642,7 +614,7 @@ static bool_t tuple_formatter_eval_do (TupleEvalContext * ctx, TupleEvalNode *
break;
case OP_FIELD:
- var0 = ctx->variables[curr->var[0]];
+ var0 = GET_VAR (ctx, curr->var[0]);
switch (var0->type) {
case TUPLE_VAR_FIELD:
@@ -653,7 +625,7 @@ static bool_t tuple_formatter_eval_do (TupleEvalContext * ctx, TupleEvalNode *
break;
case TUPLE_INT:
- g_snprintf (tmps, sizeof (tmps), "%d", var0->defvali);
+ str_itoa (var0->defvali, tmps, sizeof (tmps));
str = tmps;
break;
@@ -669,8 +641,8 @@ static bool_t tuple_formatter_eval_do (TupleEvalContext * ctx, TupleEvalNode *
case OP_NOT_EQUALS:
case OP_LT: case OP_LTEQ:
case OP_GT: case OP_GTEQ:
- var0 = ctx->variables[curr->var[0]];
- var1 = ctx->variables[curr->var[1]];
+ var0 = GET_VAR (ctx, curr->var[0]);
+ var1 = GET_VAR (ctx, curr->var[1]);
type0 = tf_get_var(&tmps0, &tmpi0, var0, tuple);
type1 = tf_get_var(&tmps1, &tmpi1, var1, tuple);
@@ -705,14 +677,15 @@ static bool_t tuple_formatter_eval_do (TupleEvalContext * ctx, TupleEvalNode *
break;
case OP_EXISTS:
- if (tf_get_fieldval (ctx->variables[curr->var[0]], tuple)) {
+ if (tf_get_fieldval (GET_VAR (ctx, curr->var[0]), tuple))
+ {
if (! tuple_formatter_eval_do (ctx, curr->children, tuple, out))
return FALSE;
}
break;
case OP_IS_EMPTY:
- var0 = ctx->variables[curr->var[0]];
+ var0 = GET_VAR (ctx, curr->var[0]);
if (tf_get_fieldval (var0, tuple)) {
switch (var0->ctype) {
@@ -725,9 +698,8 @@ static bool_t tuple_formatter_eval_do (TupleEvalContext * ctx, TupleEvalNode *
tmps2 = var0->fieldstr;
while (result && tmps2 && *tmps2 != '\0') {
- gunichar uc = g_utf8_get_char(tmps2);
- if (g_unichar_isspace(uc))
- tmps2 = g_utf8_next_char(tmps2);
+ if (g_ascii_isspace (* tmps2))
+ tmps2 ++;
else
result = FALSE;
}
diff --git a/src/libaudcore/tuple_compiler.h b/src/libaudcore/tuple_compiler.h
index 0e2ba54..1a951c1 100644
--- a/src/libaudcore/tuple_compiler.h
+++ b/src/libaudcore/tuple_compiler.h
@@ -23,12 +23,9 @@
#include <glib.h>
#include <libaudcore/tuple.h>
-struct _TupleEvalNode;
+typedef GArray TupleEvalContext;
typedef struct _TupleEvalNode TupleEvalNode;
-struct _TupleEvalContext;
-typedef struct _TupleEvalContext TupleEvalContext;
-
TupleEvalContext * tuple_evalctx_new(void);
void tuple_evalctx_reset(TupleEvalContext *ctx);
void tuple_evalctx_free(TupleEvalContext *ctx);
diff --git a/src/libaudcore/tuple_formatter.c b/src/libaudcore/tuple_formatter.c
index 04ea555..44c6e44 100644
--- a/src/libaudcore/tuple_formatter.c
+++ b/src/libaudcore/tuple_formatter.c
@@ -1,6 +1,6 @@
/*
* tuple_formatter.c
- * Copyright (c) 2007 William Pitcock
+ * Copyright (c) 2007-2013 William Pitcock and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -18,11 +18,9 @@
*/
#include <glib.h>
-#include <pthread.h>
-#include <string.h>
+#include "tuple.h"
#include "tuple_compiler.h"
-#include "tuple_formatter.h"
/*
* the tuple formatter:
@@ -47,48 +45,52 @@
* - %{function:args,arg2,...}: runs function and inserts the result.
*
* everything else is treated as raw text.
- * additionally, plugins can add additional instructions and functions!
*/
-/*
- * Compile a tuplez string and cache the result.
- * This caches the result for the last string, so that
- * successive calls are sped up.
- */
+struct _TupleFormatter
+{
+ TupleEvalContext * context;
+ TupleEvalNode * node;
+ GString * buf;
+};
-char * tuple_formatter_process_string (const Tuple * tuple, const char * string)
+EXPORT TupleFormatter * tuple_formatter_new (const char * format)
{
- static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_lock (& mutex);
+ TupleFormatter * formatter = g_slice_new (TupleFormatter);
- static char *last_string = NULL;
- static TupleEvalContext *last_ctx = NULL;
- static TupleEvalNode *last_ev = NULL;
+ formatter->context = tuple_evalctx_new ();
+ formatter->node = tuple_formatter_compile (formatter->context, format);
+ formatter->buf = g_string_sized_new (255);
- if (! last_string || strcmp (string, last_string))
- {
- g_free(last_string);
+ return formatter;
+}
+
+EXPORT void tuple_formatter_free (TupleFormatter * formatter)
+{
+ tuple_evalctx_free (formatter->context);
+ tuple_evalnode_free (formatter->node);
+ g_string_free (formatter->buf, TRUE);
- if (last_ctx != NULL)
- {
- tuple_evalctx_free(last_ctx);
- tuple_evalnode_free(last_ev);
- }
+ g_slice_free (TupleFormatter, formatter);
+}
- last_ctx = tuple_evalctx_new();
- last_string = g_strdup(string);
- last_ev = tuple_formatter_compile(last_ctx, last_string);
- }
+EXPORT char * tuple_format_title (TupleFormatter * formatter, const Tuple * tuple)
+{
+ tuple_formatter_eval (formatter->context, formatter->node, tuple, formatter->buf);
+ tuple_evalctx_reset (formatter->context);
- static GString * buf;
- if (! buf)
- buf = g_string_sized_new (255);
+ if (formatter->buf->len)
+ return str_get (formatter->buf->str);
- tuple_formatter_eval (last_ctx, last_ev, tuple, buf);
- tuple_evalctx_reset (last_ctx);
+ /* formatting failed, try fallbacks */
+ static const int fallbacks[] = {FIELD_TITLE, FIELD_FILE_NAME};
- char * result = str_get (buf->str);
+ for (int i = 0; i < ARRAY_LEN (fallbacks); i ++)
+ {
+ char * title = tuple_get_str (tuple, fallbacks[i]);
+ if (title)
+ return title;
+ }
- pthread_mutex_unlock (& mutex);
- return result;
+ return str_get ("");
}
diff --git a/src/libaudcore/vfs.c b/src/libaudcore/vfs.c
index b1c3b03..000205f 100644
--- a/src/libaudcore/vfs.c
+++ b/src/libaudcore/vfs.c
@@ -1,6 +1,6 @@
/*
* vfs.c
- * Copyright 2006-2011 William Pitcock, Daniel Barkalow, Ralf Ertzinger,
+ * Copyright 2006-2013 William Pitcock, Daniel Barkalow, Ralf Ertzinger,
* Yoshiki Yazawa, Matti HÀmÀlÀinen, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -18,16 +18,20 @@
* the use of this software.
*/
-#include <glib.h>
-#include <inttypes.h>
-
#include "vfs.h"
-#include "audstrings.h"
+
+#include <inttypes.h>
#include <stdio.h>
-#include <unistd.h>
+#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
-#include <string.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#include "audstrings.h"
+#include "vfs_local.h"
#define VFS_SIG ('V' | ('F' << 8) | ('S' << 16))
@@ -123,24 +127,31 @@ vfs_fopen(const char * path,
const char * mode)
{
g_return_val_if_fail (path && mode, NULL);
- g_return_val_if_fail (lookup_func, NULL);
- const char * s = strstr (path, "://");
- g_return_val_if_fail (s, NULL);
- char scheme[s - path + 1];
- strncpy (scheme, path, s - path);
- scheme[s - path] = 0;
+ VFSConstructor * vtable = NULL;
- VFSConstructor * vtable = lookup_func (scheme);
- if (! vtable)
- return NULL;
+ if (! strncmp (path, "file://", 7))
+ vtable = & vfs_local_vtable;
+ else
+ {
+ const char * s = strstr (path, "://");
+
+ if (! s)
+ {
+ fprintf (stderr, "Invalid URI: %s\n", path);
+ return NULL;
+ }
+
+ SNCOPY (scheme, path, s - path);
+
+ if (! (vtable = lookup_func (scheme)))
+ return NULL;
+ }
const gchar * sub;
uri_parse (path, NULL, NULL, & sub, NULL);
- gchar buf[sub - path + 1];
- memcpy (buf, path, sub - path);
- buf[sub - path] = 0;
+ SNCOPY (buf, path, sub - path);
void * handle = vtable->vfs_fopen_impl (buf, mode);
if (! handle)
@@ -174,8 +185,6 @@ vfs_fclose(VFSFile * file)
ret = -1;
str_unref (file->uri);
-
- memset (file, 0, sizeof (VFSFile));
g_slice_free (VFSFile, file);
return ret;
@@ -234,12 +243,12 @@ EXPORT int64_t vfs_fwrite (const void * ptr, int64_t size, int64_t nmemb, VFSFil
EXPORT int
vfs_getc(VFSFile *file)
{
- g_return_val_if_fail (file && file->sig == VFS_SIG, EOF);
+ unsigned char c;
- if (verbose)
- logger ("VFS: <%p> getc\n", file);
+ if (vfs_fread (& c, 1, 1, file) != 1)
+ return EOF;
- return file->base->vfs_getc_impl(file);
+ return c;
}
/**
@@ -252,12 +261,10 @@ vfs_getc(VFSFile *file)
EXPORT int
vfs_ungetc(int c, VFSFile *file)
{
- g_return_val_if_fail (file && file->sig == VFS_SIG, EOF);
-
- if (verbose)
- logger ("VFS: <%p> ungetc\n", file);
+ if (vfs_fseek (file, -1, SEEK_CUR) < 0)
+ return EOF;
- return file->base->vfs_ungetc_impl(c, file);
+ return c;
}
/**
@@ -285,23 +292,13 @@ vfs_fseek(VFSFile * file,
SEEK_CUR ? "current" : whence == SEEK_SET ? "beginning" : whence ==
SEEK_END ? "end" : "invalid");
- return file->base->vfs_fseek_impl(file, offset, whence);
-}
-
-/**
- * Rewinds a VFS stream.
- *
- * @param file #VFSFile object that represents the VFS stream.
- */
-EXPORT void
-vfs_rewind(VFSFile * file)
-{
- g_return_if_fail (file && file->sig == VFS_SIG);
+ if (! file->base->vfs_fseek_impl (file, offset, whence))
+ return 0;
if (verbose)
- logger ("VFS: <%p> rewind\n", file);
+ logger ("VFS: <%p> seek failed!\n", file);
- file->base->vfs_rewind_impl(file);
+ return -1;
}
/**
@@ -415,8 +412,8 @@ vfs_file_test(const char * path, int test)
#ifdef S_ISLNK
if (test & VFS_IS_SYMLINK)
{
- struct stat st;
- if (lstat (path2, & st) < 0)
+ GStatBuf st;
+ if (g_lstat (path2, & st) < 0)
goto DONE;
if (S_ISLNK (st.st_mode))
@@ -426,8 +423,8 @@ vfs_file_test(const char * path, int test)
if (test & (VFS_IS_REGULAR | VFS_IS_DIR | VFS_IS_EXECUTABLE | VFS_EXISTS))
{
- struct stat st;
- if (stat (path2, & st) < 0)
+ GStatBuf st;
+ if (g_stat (path2, & st) < 0)
goto DONE;
if (S_ISREG (st.st_mode))
@@ -441,8 +438,7 @@ vfs_file_test(const char * path, int test)
}
DONE:
- g_free (path2);
-
+ str_unref (path2);
return ! test;
}
@@ -455,14 +451,13 @@ DONE:
EXPORT bool_t
vfs_is_writeable(const char * path)
{
- struct stat info;
+ GStatBuf info;
char * realfn = uri_to_filename (path);
- if (stat(realfn, &info) == -1)
+ if (! realfn || g_stat (realfn, & info) < 0)
return FALSE;
- g_free(realfn);
-
+ str_unref (realfn);
return (info.st_mode & S_IWUSR);
}
diff --git a/src/libaudcore/vfs.h b/src/libaudcore/vfs.h
index 006c3b7..8dcbc32 100644
--- a/src/libaudcore/vfs.h
+++ b/src/libaudcore/vfs.h
@@ -1,6 +1,6 @@
/*
* vfs.h
- * Copyright 2006-2011 William Pitcock, Daniel Barkalow, Ralf Ertzinger,
+ * Copyright 2006-2013 William Pitcock, Daniel Barkalow, Ralf Ertzinger,
* Yoshiki Yazawa, Matti HÀmÀlÀinen, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
@@ -62,15 +62,14 @@ struct _VFSConstructor {
int64_t (* vfs_fwrite_impl) (const void * ptr, int64_t size, int64_t nmemb,
VFSFile * file);
- /** A function pointer which points to a getc implementation. */
- int (* vfs_getc_impl) (VFSFile * stream);
- /** A function pointer which points to an ungetc implementation. */
- int (* vfs_ungetc_impl) (int c, VFSFile * stream);
+ void (* obs_getc) (void); // obsolete
+ void (* obs_ungetc) (void); // obsolete
/** A function pointer which points to a fseek implementation. */
int (* vfs_fseek_impl) (VFSFile * file, int64_t offset, int whence);
- /** function pointer which points to a rewind implementation. */
- void (* vfs_rewind_impl) (VFSFile * file);
+
+ void (* obs_rewind) (void); // obsolete
+
/** A function pointer which points to a ftell implementation. */
int64_t (* vfs_ftell_impl) (VFSFile * file);
/** A function pointer which points to a feof implementation. */
@@ -111,34 +110,21 @@ int vfs_fprintf (VFSFile * stream, char const * format, ...) __attribute__
((__format__ (__printf__, 2, 3)));
int vfs_fseek (VFSFile * file, int64_t offset, int whence) WARN_RETURN;
-void vfs_rewind (VFSFile * file);
int64_t vfs_ftell (VFSFile * file) WARN_RETURN;
int64_t vfs_fsize (VFSFile * file) WARN_RETURN;
int vfs_ftruncate (VFSFile * file, int64_t length) WARN_RETURN;
-bool_t vfs_fget_le16 (uint16_t * value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fget_le32 (uint32_t * value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fget_le64 (uint64_t * value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fget_be16 (uint16_t * value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fget_be32 (uint32_t * value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fget_be64 (uint64_t * value, VFSFile * stream) WARN_RETURN;
-
-bool_t vfs_fput_le16 (uint16_t value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fput_le32 (uint32_t value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fput_le64 (uint64_t value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fput_be16 (uint16_t value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fput_be32 (uint32_t value, VFSFile * stream) WARN_RETURN;
-bool_t vfs_fput_be64 (uint64_t value, VFSFile * stream) WARN_RETURN;
-
bool_t vfs_is_streaming (VFSFile * file) WARN_RETURN;
+
+/* free returned string with str_unref() */
char * vfs_get_metadata (VFSFile * file, const char * field) WARN_RETURN;
bool_t vfs_file_test (const char * path, int test) WARN_RETURN;
bool_t vfs_is_writeable (const char * path) WARN_RETURN;
bool_t vfs_is_remote (const char * path) WARN_RETURN;
-void vfs_file_get_contents (const char * filename, void * * buf, int64_t *
- size);
+void vfs_file_read_all (VFSFile * file, void * * buf, int64_t * size);
+void vfs_file_get_contents (const char * filename, void * * buf, int64_t * size);
void vfs_set_lookup_func (VFSConstructor * (* func) (const char * scheme));
void vfs_set_verbose (bool_t verbose);
diff --git a/src/libaudcore/vfs_async.c b/src/libaudcore/vfs_async.c
index 88a47ea..d8864c6 100644
--- a/src/libaudcore/vfs_async.c
+++ b/src/libaudcore/vfs_async.c
@@ -1,6 +1,6 @@
/*
* vfs_async.c
- * Copyright 2010 William Pitcock
+ * Copyright 2010-2012 William Pitcock and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/libaudcore/vfs_common.c b/src/libaudcore/vfs_common.c
index 3e64b5c..18b05c7 100644
--- a/src/libaudcore/vfs_common.c
+++ b/src/libaudcore/vfs_common.c
@@ -1,7 +1,7 @@
/*
* vfs_common.c
- * Copyright 2006-2010 Tony Vroon, William Pitcock, Maciej Grela,
- * Matti HÀmÀlÀinen, and John Lindgren
+ * Copyright 2006-2013 Tony Vroon, William Pitcock, Matti HÀmÀlÀinen, and
+ * John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -18,12 +18,12 @@
* the use of this software.
*/
-#include <glib.h>
-#include <glib/gprintf.h>
#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
+#include <glib.h>
+
+#include "audstrings.h"
#include "vfs.h"
/**
@@ -94,7 +94,7 @@ EXPORT char *vfs_fgets(char *s, int n, VFSFile *stream)
*/
EXPORT int vfs_fputs(const char *s, VFSFile *stream)
{
- gsize n = strlen(s);
+ int64_t n = strlen(s);
return ((vfs_fwrite(s, 1, n, stream) == n) ? n : EOF);
}
@@ -109,12 +109,8 @@ EXPORT int vfs_fputs(const char *s, VFSFile *stream)
*/
EXPORT int vfs_vfprintf(VFSFile *stream, char const *format, va_list args)
{
- char *string;
- int rv = g_vasprintf(&string, format, args);
- if (rv < 0) return rv;
- rv = vfs_fputs(string, stream);
- g_free(string);
- return rv;
+ VSPRINTF (buf, format, args);
+ return vfs_fputs (buf, stream);
}
/**
@@ -137,242 +133,66 @@ EXPORT int vfs_fprintf(VFSFile *stream, char const *format, ...)
return rv;
}
-/**
- * Gets contents of the file into a buffer. Buffer of filesize bytes
- * is allocated by this function as necessary.
- *
- * @param filename URI of the file to read in.
- * @param buf Pointer to a pointer variable of buffer.
- * @param size Pointer to gsize variable that will hold the amount of
- * read data e.g. filesize.
- */
-EXPORT void vfs_file_get_contents (const char * filename, void * * buf, int64_t * size)
+EXPORT void vfs_file_read_all (VFSFile * file, void * * bufp, int64_t * sizep)
{
- * buf = NULL;
- * size = 0;
-
- VFSFile *fd;
- gsize filled_size = 0, buf_size = 4096;
- unsigned char * ptr;
-
- if ((fd = vfs_fopen(filename, "rb")) == NULL)
- return;
+ char * buf = NULL;
+ int64_t size = vfs_fsize (file);
- if ((* size = vfs_fsize (fd)) >= 0)
+ if (size >= 0)
{
- * buf = g_malloc (* size);
- * size = vfs_fread (* buf, 1, * size, fd);
- goto close_handle;
+ size = MIN (size, SIZE_MAX - 1);
+ buf = g_malloc (size + 1);
+ size = vfs_fread (buf, 1, size, file);
}
+ else
+ {
+ size = 0;
- if ((*buf = g_malloc(buf_size)) == NULL)
- goto close_handle;
-
- ptr = *buf;
- while (TRUE) {
- gsize read_size = vfs_fread(ptr, 1, buf_size - filled_size, fd);
- if (read_size == 0) break;
-
- filled_size += read_size;
- ptr += read_size;
-
- if (filled_size == buf_size) {
- buf_size += 4096;
+ size_t bufsize = 4096;
+ buf = g_malloc (bufsize);
- *buf = g_realloc(*buf, buf_size);
+ size_t readsize;
+ while ((readsize = vfs_fread (buf + size, 1, bufsize - 1 - size, file)))
+ {
+ size += readsize;
- if (*buf == NULL)
- goto close_handle;
+ if (size == bufsize - 1)
+ {
+ if (bufsize > SIZE_MAX - 4096)
+ break;
- ptr = (unsigned char *) (* buf) + filled_size;
+ bufsize += 4096;
+ buf = g_realloc (buf, bufsize);
+ }
}
}
- *size = filled_size;
+ buf[size] = 0; // nul-terminate
-close_handle:
- vfs_fclose(fd);
+ * bufp = buf;
+ if (sizep)
+ * sizep = size;
}
-
/**
- * Reads an unsigned 16-bit Little Endian value from the stream
- * into native endian format.
- *
- * @param value Pointer to the variable to read the value into.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fget_le16(uint16_t *value, VFSFile *stream)
-{
- uint16_t tmp;
- if (vfs_fread(&tmp, sizeof(tmp), 1, stream) != 1)
- return FALSE;
- *value = GUINT16_FROM_LE(tmp);
- return TRUE;
-}
-
-/**
- * Reads an unsigned 32-bit Little Endian value from the stream into native endian format.
- *
- * @param value Pointer to the variable to read the value into.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fget_le32(uint32_t *value, VFSFile *stream)
-{
- uint32_t tmp;
- if (vfs_fread(&tmp, sizeof(tmp), 1, stream) != 1)
- return FALSE;
- *value = GUINT32_FROM_LE(tmp);
- return TRUE;
-}
-
-/**
- * Reads an unsigned 64-bit Little Endian value from the stream into native endian format.
- *
- * @param value Pointer to the variable to read the value into.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fget_le64(uint64_t *value, VFSFile *stream)
-{
- uint64_t tmp;
- if (vfs_fread(&tmp, sizeof(tmp), 1, stream) != 1)
- return FALSE;
- *value = GUINT64_FROM_LE(tmp);
- return TRUE;
-}
-
-
-/**
- * Reads an unsigned 16-bit Big Endian value from the stream into native endian format.
- *
- * @param value Pointer to the variable to read the value into.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fget_be16(uint16_t *value, VFSFile *stream)
-{
- uint16_t tmp;
- if (vfs_fread(&tmp, sizeof(tmp), 1, stream) != 1)
- return FALSE;
- *value = GUINT16_FROM_BE(tmp);
- return TRUE;
-}
-
-/**
- * Reads an unsigned 32-bit Big Endian value from the stream into native endian format.
- *
- * @param value Pointer to the variable to read the value into.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fget_be32(uint32_t *value, VFSFile *stream)
-{
- uint32_t tmp;
- if (vfs_fread(&tmp, sizeof(tmp), 1, stream) != 1)
- return FALSE;
- *value = GUINT32_FROM_BE(tmp);
- return TRUE;
-}
-
-/**
- * Reads an unsigned 64-bit Big Endian value from the stream into native endian format.
- *
- * @param value Pointer to the variable to read the value into.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fget_be64(uint64_t *value, VFSFile *stream)
-{
- uint64_t tmp;
- if (vfs_fread(&tmp, sizeof(tmp), 1, stream) != 1)
- return FALSE;
- *value = GUINT64_FROM_BE(tmp);
- return TRUE;
-}
-
-/**
- * Writes an unsigned 16-bit native endian value into the stream as a
- * Little Endian value.
- *
- * @param value Value to write into the stream.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fput_le16(uint16_t value, VFSFile *stream)
-{
- uint16_t tmp = GUINT16_TO_LE(value);
- return vfs_fwrite(&tmp, sizeof(tmp), 1, stream) == 1;
-}
-
-/**
- * Writes an unsigned 32-bit native endian value into the stream as a
- * Big Endian value.
- *
- * @param value Value to write into the stream.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fput_le32(uint32_t value, VFSFile *stream)
-{
- uint32_t tmp = GUINT32_TO_LE(value);
- return vfs_fwrite(&tmp, sizeof(tmp), 1, stream) == 1;
-}
-
-/**
- * Writes an unsigned 64-bit native endian value into the stream as a
- * Big Endian value.
- *
- * @param value Value to write into the stream.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fput_le64(uint64_t value, VFSFile *stream)
-{
- uint64_t tmp = GUINT64_TO_LE(value);
- return vfs_fwrite(&tmp, sizeof(tmp), 1, stream) == 1;
-}
-
-/**
- * Writes an unsigned 16-bit native endian value into the stream as a
- * Big Endian value.
+ * Gets contents of the file into a buffer. Buffer of filesize bytes
+ * is allocated by this function as necessary.
*
- * @param value Value to write into the stream.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
+ * @param filename URI of the file to read in.
+ * @param buf Pointer to a pointer variable of buffer.
+ * @param size Pointer to gsize variable that will hold the amount of
+ * read data e.g. filesize.
*/
-EXPORT bool_t vfs_fput_be16(uint16_t value, VFSFile *stream)
+EXPORT void vfs_file_get_contents (const char * filename, void * * buf, int64_t * size)
{
- uint16_t tmp = GUINT16_TO_BE(value);
- return vfs_fwrite(&tmp, sizeof(tmp), 1, stream) == 1;
-}
+ * buf = NULL;
+ if (size)
+ * size = 0;
-/**
- * Writes an unsigned 32-bit native endian value into the stream as a
- * Big Endian value.
- *
- * @param value Value to write into the stream.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fput_be32(uint32_t value, VFSFile *stream)
-{
- uint32_t tmp = GUINT32_TO_BE(value);
- return vfs_fwrite(&tmp, sizeof(tmp), 1, stream) == 1;
-}
+ VFSFile * file = vfs_fopen (filename, "r");
+ if (! file)
+ return;
-/**
- * Writes an unsigned 64-bit native endian value into the stream as a
- * Big Endian value.
- *
- * @param value Value to write into the stream.
- * @param stream A #VFSFile object representing the stream.
- * @return TRUE if read was succesful, FALSE if there was an error.
- */
-EXPORT bool_t vfs_fput_be64(uint64_t value, VFSFile *stream)
-{
- uint64_t tmp = GUINT64_TO_BE(value);
- return vfs_fwrite(&tmp, sizeof(tmp), 1, stream) == 1;
+ vfs_file_read_all (file, buf, size);
+ vfs_fclose (file);
}
diff --git a/src/libaudcore/vfs_local.c b/src/libaudcore/vfs_local.c
new file mode 100644
index 0000000..d91317a
--- /dev/null
+++ b/src/libaudcore/vfs_local.c
@@ -0,0 +1,231 @@
+/*
+ * vfs_local.c
+ * Copyright 2009-2014 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include "vfs_local.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#include "audstrings.h"
+
+#ifdef _WIN32
+#define fseeko fseeko64
+#define ftello ftello64
+#endif
+
+typedef enum {
+ OP_NONE,
+ OP_READ,
+ OP_WRITE
+} LocalOp;
+
+typedef struct {
+ char * path;
+ FILE * stream;
+ int64_t cached_size;
+ LocalOp last_op;
+} LocalFile;
+
+static void * local_fopen (const char * uri, const char * mode)
+{
+ char * path = uri_to_filename (uri);
+ g_return_val_if_fail (path, NULL);
+
+ const char * suffix = "";
+
+#ifdef _WIN32
+ if (! strchr (mode, 'b')) /* binary mode (Windows) */
+ suffix = "b";
+#else
+ if (! strchr (mode, 'e')) /* close on exec (POSIX) */
+ suffix = "e";
+#endif
+
+ SCONCAT2 (mode2, mode, suffix);
+
+ FILE * stream = g_fopen (path, mode2);
+
+ if (! stream)
+ {
+ perror (path);
+ str_unref (path);
+ return NULL;
+ }
+
+ LocalFile * local = g_slice_new (LocalFile);
+
+ local->path = path;
+ local->stream = stream;
+ local->cached_size = -1;
+ local->last_op = OP_NONE;
+
+ return local;
+}
+
+static int local_fclose (VFSFile * file)
+{
+ LocalFile * local = vfs_get_handle (file);
+
+ int result = fclose (local->stream);
+ if (result < 0)
+ perror (local->path);
+
+ str_unref (local->path);
+ g_slice_free (LocalFile, local);
+
+ return result;
+}
+
+static int64_t local_fread (void * ptr, int64_t size, int64_t nitems, VFSFile * file)
+{
+ LocalFile * local = vfs_get_handle (file);
+
+ if (local->last_op == OP_WRITE)
+ {
+ if (fseeko (local->stream, 0, SEEK_CUR) < 0) /* flush buffers */
+ {
+ perror (local->path);
+ return 0;
+ }
+ }
+
+ local->last_op = OP_READ;
+
+ clearerr (local->stream);
+
+ int64_t result = fread (ptr, size, nitems, local->stream);
+ if (result < nitems && ferror (local->stream))
+ perror (local->path);
+
+ return result;
+}
+
+static int64_t local_fwrite (const void * ptr, int64_t size, int64_t nitems, VFSFile * file)
+{
+ LocalFile * local = vfs_get_handle (file);
+
+ if (local->last_op == OP_READ)
+ {
+ if (fseeko (local->stream, 0, SEEK_CUR) < 0) /* flush buffers */
+ {
+ perror (local->path);
+ return 0;
+ }
+ }
+
+ local->last_op = OP_WRITE;
+ local->cached_size = -1;
+
+ clearerr (local->stream);
+
+ int64_t result = fwrite (ptr, size, nitems, local->stream);
+ if (result < nitems && ferror (local->stream))
+ perror (local->path);
+
+ return result;
+}
+
+static int local_fseek (VFSFile * file, int64_t offset, int whence)
+{
+ LocalFile * local = vfs_get_handle (file);
+
+ int result = fseeko (local->stream, offset, whence);
+ if (result < 0)
+ perror (local->path);
+
+ if (result == 0)
+ local->last_op = OP_NONE;
+
+ return result;
+}
+
+static int64_t local_ftell (VFSFile * file)
+{
+ LocalFile * local = vfs_get_handle (file);
+ return ftello (local->stream);
+}
+
+static bool_t local_feof (VFSFile * file)
+{
+ LocalFile * local = vfs_get_handle (file);
+ return feof (local->stream);
+}
+
+static int local_ftruncate (VFSFile * file, int64_t length)
+{
+ LocalFile * local = vfs_get_handle (file);
+
+ if (local->last_op != OP_NONE)
+ {
+ if (fseeko (local->stream, 0, SEEK_CUR) < 0) /* flush buffers */
+ {
+ perror (local->path);
+ return 0;
+ }
+ }
+
+ int result = ftruncate (fileno (local->stream), length);
+ if (result < 0)
+ perror (local->path);
+
+ if (result == 0)
+ {
+ local->last_op = OP_NONE;
+ local->cached_size = length;
+ }
+
+ return result;
+}
+
+static int64_t local_fsize (VFSFile * file)
+{
+ LocalFile * local = vfs_get_handle (file);
+
+ if (local->cached_size >= 0)
+ return local->cached_size;
+
+ int64_t saved_pos = ftello (local->stream);
+
+ if (local_fseek (file, 0, SEEK_END) < 0)
+ return -1;
+
+ int64_t length = ftello (local->stream);
+
+ if (local_fseek (file, saved_pos, SEEK_SET) < 0)
+ return -1;
+
+ return length;
+}
+
+VFSConstructor vfs_local_vtable = {
+ .vfs_fopen_impl = local_fopen,
+ .vfs_fclose_impl = local_fclose,
+ .vfs_fread_impl = local_fread,
+ .vfs_fwrite_impl = local_fwrite,
+ .vfs_fseek_impl = local_fseek,
+ .vfs_ftell_impl = local_ftell,
+ .vfs_feof_impl = local_feof,
+ .vfs_ftruncate_impl = local_ftruncate,
+ .vfs_fsize_impl = local_fsize
+};
diff --git a/src/libaudcore/tuple_formatter.h b/src/libaudcore/vfs_local.h
index bb3052b..6fa3686 100644
--- a/src/libaudcore/tuple_formatter.h
+++ b/src/libaudcore/vfs_local.h
@@ -1,6 +1,6 @@
/*
- * tuple_formatter.h
- * Copyright (c) 2007 William Pitcock
+ * vfs_local.h
+ * Copyright 2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,12 +17,11 @@
* the use of this software.
*/
-#ifndef LIBAUDCORE_TUPLE_FORMATTER_H
-#define LIBAUDCORE_TUPLE_FORMATTER_H
+#ifndef LIBAUDCORE_VFS_LOCAL_H
+#define LIBAUDCORE_VFS_LOCAL_H
-#include <libaudcore/tuple.h>
+#include "vfs.h"
-/* returned string be released with str_unref() */
-char * tuple_formatter_process_string (const Tuple * tuple, const char * string);
+extern VFSConstructor vfs_local_vtable;
-#endif /* LIBAUDCORE_TUPLE_FORMATTER_H */
+#endif /* LIBAUDCORE_VFS_LOCAL_H */
diff --git a/src/libaudgui/Makefile b/src/libaudgui/Makefile
index 8246dd3..9da027f 100644
--- a/src/libaudgui/Makefile
+++ b/src/libaudgui/Makefile
@@ -1,23 +1,23 @@
SHARED_LIB = ${LIB_PREFIX}audgui${LIB_SUFFIX}
-LIB_MAJOR = 1
+LIB_MAJOR = 2
LIB_MINOR = 0
SRCS = about.c \
confirm.c \
- effects-menu.c \
equalizer.c \
- iface-menu.c \
infopopup.c \
infowin.c \
init.c \
jump-to-time.c \
list.c \
+ menu.c \
+ pixbufs.c \
playlists.c \
queue-manager.c \
+ scaled-image.c \
ui_fileopener.c \
ui_jumptotrack.c \
ui_jumptotrack_cache.c \
- icons-stock.c \
ui_playlist_manager.c \
urilist.c \
url-opener.c \
@@ -25,7 +25,8 @@ SRCS = about.c \
INCLUDES = libaudgui.h \
libaudgui-gtk.h \
- list.h
+ list.h \
+ menu.h
include ../../buildsys.mk
include ../../extra.mk
@@ -35,13 +36,11 @@ includesubdir = libaudgui
CPPFLAGS := -I.. -I../.. \
${CPPFLAGS} \
${GLIB_CFLASG} \
- ${GTK_CFLAGS} \
- ${REGEX_CFLAGS}
+ ${GTK_CFLAGS}
CFLAGS += ${LIB_CFLAGS}
LIBS := -L../libaudcore -laudcore \
${LIBS} -lm \
${GLIB_LIBS} \
- ${GTK_LIBS} \
- ${REGEX_LIBS}
+ ${GTK_LIBS}
diff --git a/src/libaudgui/about.c b/src/libaudgui/about.c
index 613bf4e..56cdbef 100644
--- a/src/libaudgui/about.c
+++ b/src/libaudgui/about.c
@@ -1,6 +1,6 @@
/*
* about.c
- * Copyright 2011-2012 John Lindgren
+ * Copyright 2011-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -21,7 +21,9 @@
#include <audacious/i18n.h>
#include <audacious/misc.h>
+#include <libaudcore/audstrings.h>
+#include "init.h"
#include "libaudgui-gtk.h"
static const char about_text[] =
@@ -30,8 +32,6 @@ static const char about_text[] =
static const char website[] = "http://audacious-media-player.org";
-static GtkWidget * about_window;
-
static GtkWidget * create_credits_notebook (const char * credits, const char * license)
{
const char * titles[2] = {_("Credits"), _("License")};
@@ -61,27 +61,21 @@ static GtkWidget * create_credits_notebook (const char * credits, const char * l
return notebook;
}
-EXPORT void audgui_show_about_window (void)
+static GtkWidget * create_about_window (void)
{
- if (about_window)
- {
- gtk_window_present ((GtkWindow *) about_window);
- return;
- }
+ const char * data_dir = aud_get_path (AUD_PATH_DATA_DIR);
- about_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ GtkWidget * about_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title ((GtkWindow *) about_window, _("About Audacious"));
gtk_window_set_resizable ((GtkWindow *) about_window, FALSE);
gtk_container_set_border_width ((GtkContainer *) about_window, 3);
audgui_destroy_on_escape (about_window);
- g_signal_connect (about_window, "destroy", (GCallback) gtk_widget_destroyed,
- & about_window);
GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_container_add ((GtkContainer *) about_window, vbox);
- SPRINTF (logo_path, "%s/images/about-logo.png", aud_get_path (AUD_PATH_DATA_DIR));
+ SCONCAT2 (logo_path, data_dir, "/images/about-logo.png");
GtkWidget * image = gtk_image_new_from_file (logo_path);
gtk_box_pack_start ((GtkBox *) vbox, image, FALSE, FALSE, 0);
@@ -96,11 +90,11 @@ EXPORT void audgui_show_about_window (void)
char * credits, * license;
- SPRINTF (credits_path, "%s/AUTHORS", aud_get_path (AUD_PATH_DATA_DIR));
+ SCONCAT2 (credits_path, data_dir, "/AUTHORS");
if (! g_file_get_contents (credits_path, & credits, NULL, NULL))
credits = g_strdup_printf ("Unable to load %s; check your installation.", credits_path);
- SPRINTF (license_path, "%s/COPYING", aud_get_path (AUD_PATH_DATA_DIR));
+ SCONCAT2 (license_path, data_dir, "/COPYING");
if (! g_file_get_contents (license_path, & license, NULL, NULL))
license = g_strdup_printf ("Unable to load %s; check your installation.", license_path);
@@ -114,5 +108,16 @@ EXPORT void audgui_show_about_window (void)
g_free (credits);
g_free (license);
- gtk_widget_show_all (about_window);
+ return about_window;
+}
+
+EXPORT void audgui_show_about_window (void)
+{
+ if (! audgui_reshow_unique_window (AUDGUI_ABOUT_WINDOW))
+ audgui_show_unique_window (AUDGUI_ABOUT_WINDOW, create_about_window ());
+}
+
+EXPORT void audgui_hide_about_window (void)
+{
+ audgui_hide_unique_window (AUDGUI_ABOUT_WINDOW);
}
diff --git a/src/libaudgui/confirm.c b/src/libaudgui/confirm.c
index 695e7b6..fb92da4 100644
--- a/src/libaudgui/confirm.c
+++ b/src/libaudgui/confirm.c
@@ -1,6 +1,6 @@
/*
* confirm.c
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren and Thomas Lange
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -22,6 +22,7 @@
#include <audacious/i18n.h>
#include <audacious/misc.h>
#include <audacious/playlist.h>
+#include <libaudcore/audstrings.h>
#include "libaudgui-gtk.h"
@@ -33,85 +34,68 @@ static void no_confirm_cb (GtkToggleButton * toggle)
static void confirm_delete_cb (void * data)
{
int list = aud_playlist_by_unique_id (GPOINTER_TO_INT (data));
- if (list < 0)
- return;
-
- aud_playlist_delete (list);
- if (list > 0)
- aud_playlist_set_active (list - 1);
-}
-
-static void confirm_playlist_delete_response (GtkWidget * dialog, gint response, gpointer data)
-{
- if (response == GTK_RESPONSE_YES)
- confirm_delete_cb (data);
- gtk_widget_destroy (dialog);
+ if (list >= 0)
+ aud_playlist_delete (list);
}
EXPORT void audgui_confirm_playlist_delete (int playlist)
{
- GtkWidget * dialog, * vbox, * button;
- char * message;
-
if (aud_get_bool ("audgui", "no_confirm_playlist_delete"))
{
aud_playlist_delete (playlist);
- if (playlist > 0)
- aud_playlist_set_active (playlist - 1);
return;
}
char * title = aud_playlist_get_title (playlist);
- message = g_strdup_printf (_("Are you sure you want to close %s? If you "
- "do, any changes made since the playlist was exported will be lost."), title);
+ SPRINTF (message, _("Do you want to permanently remove “%s”?"), title);
str_unref (title);
- dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", message);
- g_free (message);
- gtk_window_set_title ((GtkWindow *) dialog, _("Close Playlist"));
- gtk_dialog_set_default_response ((GtkDialog *) dialog, GTK_RESPONSE_YES);
-
- vbox = gtk_message_dialog_get_message_area ((GtkMessageDialog *) dialog);
- button = gtk_check_button_new_with_mnemonic (_("_Don't show this message again"));
+ int id = aud_playlist_get_unique_id (playlist);
+ GtkWidget * button1 = audgui_button_new (_("_Remove"), "edit-delete",
+ confirm_delete_cb, GINT_TO_POINTER (id));
+ GtkWidget * button2 = audgui_button_new (_("_Cancel"), "process-stop", NULL, NULL);
- gtk_container_add ((GtkContainer *) vbox, button);
+ GtkWidget * dialog = audgui_dialog_new (GTK_MESSAGE_QUESTION,
+ _("Remove Playlist"), message, button1, button2);
- g_signal_connect (button, "toggled", (GCallback) no_confirm_cb, NULL);
- g_signal_connect (dialog, "response", (GCallback) confirm_playlist_delete_response,
- GINT_TO_POINTER (aud_playlist_get_unique_id (playlist)));
+ GtkWidget * check = gtk_check_button_new_with_mnemonic (_("_Don’t ask again"));
+ g_signal_connect (check, "toggled", (GCallback) no_confirm_cb, NULL);
+ audgui_dialog_add_widget (dialog, check);
gtk_widget_show_all (dialog);
}
-static void rename_cb (GtkDialog * dialog, int resp, void * list)
+static void rename_cb (void * entry)
{
- if (resp == GTK_RESPONSE_ACCEPT && GPOINTER_TO_INT (list) <
- aud_playlist_count ())
- aud_playlist_set_title (GPOINTER_TO_INT (list), gtk_entry_get_text
- ((GtkEntry *) g_object_get_data ((GObject *) dialog, "entry")));
+ void * data = g_object_get_data ((GObject *) entry, "playlist-id");
+ int list = aud_playlist_by_unique_id (GPOINTER_TO_INT (data));
- gtk_widget_destroy ((GtkWidget *) dialog);
+ if (list >= 0)
+ aud_playlist_set_title (list, gtk_entry_get_text ((GtkEntry *) entry));
}
EXPORT void audgui_show_playlist_rename (int playlist)
{
- GtkWidget * dialog = gtk_dialog_new_with_buttons (_("Rename Playlist"),
- NULL, 0, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL,
- GTK_RESPONSE_REJECT, NULL);
- gtk_dialog_set_default_response ((GtkDialog *) dialog, GTK_RESPONSE_ACCEPT);
+ char * title = aud_playlist_get_title (playlist);
GtkWidget * entry = gtk_entry_new ();
- char * title = aud_playlist_get_title (playlist);
gtk_entry_set_text ((GtkEntry *) entry, title);
- str_unref (title);
gtk_entry_set_activates_default ((GtkEntry *) entry, TRUE);
- gtk_box_pack_start ((GtkBox *) gtk_dialog_get_content_area ((GtkDialog *)
- dialog), entry, FALSE, FALSE, 0);
- g_object_set_data ((GObject *) dialog, "entry", entry);
- g_signal_connect (dialog, "response", (GCallback) rename_cb, GINT_TO_POINTER
- (playlist));
+ int id = aud_playlist_get_unique_id (playlist);
+ g_object_set_data ((GObject *) entry, "playlist-id", GINT_TO_POINTER (id));
+
+ GtkWidget * button1 = audgui_button_new (_("_Rename"), "insert-text", rename_cb, entry);
+ GtkWidget * button2 = audgui_button_new (_("_Cancel"), "process-stop", NULL, NULL);
+
+ GtkWidget * dialog = audgui_dialog_new (GTK_MESSAGE_QUESTION,
+ _("Rename Playlist"), _("What would you like to call this playlist?"),
+ button1, button2);
+
+ audgui_dialog_add_widget (dialog, entry);
+
gtk_widget_show_all (dialog);
+
+ str_unref (title);
}
diff --git a/src/libaudgui/effects-menu.c b/src/libaudgui/effects-menu.c
deleted file mode 100644
index 3e10588..0000000
--- a/src/libaudgui/effects-menu.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * effects-menu.c
- * Copyright 2010-2011 John Lindgren
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#include <audacious/i18n.h>
-#include <audacious/plugin.h>
-#include <audacious/plugins.h>
-
-#include "libaudgui-gtk.h"
-
-static bool_t watch_cb (PluginHandle * plugin, GtkCheckMenuItem * item)
-{
- bool_t enabled = aud_plugin_get_enabled (plugin);
- gtk_check_menu_item_set_active (item, enabled);
-
- GtkWidget * settings = g_object_get_data ((GObject *) item, "settings");
- if (settings != NULL)
- gtk_widget_set_sensitive (settings, enabled);
-
- return TRUE;
-}
-
-static void enable_cb (GtkCheckMenuItem * item, PluginHandle * plugin)
-{
- aud_plugin_enable (plugin, gtk_check_menu_item_get_active (item));
-}
-
-static void destroy_cb (GtkCheckMenuItem * item, PluginHandle * plugin)
-{
- aud_plugin_remove_watch (plugin, (PluginForEachFunc) watch_cb, item);
-}
-
-static void settings_cb (GtkMenuItem * settings, PluginHandle * plugin)
-{
- if (! aud_plugin_get_enabled (plugin))
- return;
-
- aud_plugin_do_configure (plugin);
-}
-
-static bool_t add_item_cb (PluginHandle * plugin, GtkWidget * menu)
-{
- GtkWidget * item = gtk_check_menu_item_new_with_label (aud_plugin_get_name
- (plugin));
- gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item,
- aud_plugin_get_enabled (plugin));
- gtk_menu_shell_append ((GtkMenuShell *) menu, item);
- aud_plugin_add_watch (plugin, (PluginForEachFunc) watch_cb, item);
- g_signal_connect (item, "toggled", (GCallback) enable_cb, plugin);
- g_signal_connect (item, "destroy", (GCallback) destroy_cb, plugin);
- gtk_widget_show (item);
-
- if (aud_plugin_has_configure (plugin))
- {
- GtkWidget * settings = gtk_menu_item_new_with_label (_("settings ..."));
- gtk_widget_set_sensitive (settings, aud_plugin_get_enabled (plugin));
- g_object_set_data ((GObject *) item, "settings", settings);
- gtk_menu_shell_append ((GtkMenuShell *) menu, settings);
- g_signal_connect (settings, "activate", (GCallback) settings_cb, plugin);
- gtk_widget_show (settings);
- }
-
- return TRUE;
-}
-
-EXPORT GtkWidget * audgui_create_effects_menu (void)
-{
- GtkWidget * menu = gtk_menu_new ();
- aud_plugin_for_each (PLUGIN_TYPE_EFFECT, (PluginForEachFunc) add_item_cb,
- menu);
- return menu;
-}
-
-EXPORT GtkWidget * audgui_create_vis_menu (void)
-{
- GtkWidget * menu = gtk_menu_new ();
- aud_plugin_for_each (PLUGIN_TYPE_VIS, (PluginForEachFunc) add_item_cb, menu);
- return menu;
-}
diff --git a/src/libaudgui/equalizer.c b/src/libaudgui/equalizer.c
index b5bcd7c..1c3a082 100644
--- a/src/libaudgui/equalizer.c
+++ b/src/libaudgui/equalizer.c
@@ -17,19 +17,15 @@
* the use of this software.
*/
-/*
- * Note: Because some GTK developer had the bright idea to put the minimum at
- * the top of a GtkVScale and the maximum at the bottom, we have to reverse the
- * sign of the values we get.
- */
-
#include <math.h>
#include <audacious/i18n.h>
#include <audacious/misc.h>
#include <audacious/types.h>
+#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
+#include "init.h"
#include "libaudgui-gtk.h"
static void on_off_cb (GtkToggleButton * on_off, void * unused)
@@ -45,9 +41,7 @@ static void on_off_update (void * unused, GtkWidget * on_off)
static GtkWidget * create_on_off (void)
{
- GtkWidget * on_off;
-
- on_off = gtk_check_button_new_with_mnemonic (_("_Enable"));
+ GtkWidget * on_off = gtk_check_button_new_with_mnemonic (_("_Enable"));
g_signal_connect ((GObject *) on_off, "toggled", (GCallback) on_off_cb, NULL);
hook_associate ("set equalizer_active", (HookFunction) on_off_update, on_off);
@@ -58,7 +52,7 @@ static GtkWidget * create_on_off (void)
static void slider_moved (GtkRange * slider, void * unused)
{
int band = GPOINTER_TO_INT (g_object_get_data ((GObject *) slider, "band"));
- double value = round (-gtk_range_get_value (slider));
+ double value = round (gtk_range_get_value (slider));
if (band == -1)
aud_set_double (NULL, "equalizer_preamp", value);
@@ -66,56 +60,58 @@ static void slider_moved (GtkRange * slider, void * unused)
aud_eq_set_band (band, value);
}
-static void slider_update (void * unused, GtkRange * slider)
+static GtkWidget * create_slider (const char * name, int band, GtkWidget * hbox)
{
- int band = GPOINTER_TO_INT (g_object_get_data ((GObject *) slider, "band"));
- double value;
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- if (band == -1)
- value = round (aud_get_double (NULL, "equalizer_preamp"));
- else
- value = round (aud_eq_get_band (band));
-
- g_signal_handlers_block_by_func (slider, (void *) slider_moved, NULL);
- gtk_range_set_value (slider, -value);
- g_signal_handlers_unblock_by_func (slider, (void *) slider_moved, NULL);
-}
-
-static char * format_value (GtkScale * slider, double value, void * unused)
-{
- return g_strdup_printf ("%d", (int) -value);
-}
-
-static GtkWidget * create_slider (const char * name, int band)
-{
- GtkWidget * vbox, * slider, * label;
-
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-
- label = gtk_label_new (name);
+ GtkWidget * label = gtk_label_new (name);
gtk_label_set_angle ((GtkLabel *) label, 90);
gtk_box_pack_start ((GtkBox *) vbox, label, TRUE, FALSE, 0);
- slider = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
+ GtkWidget * slider = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
-EQUALIZER_MAX_GAIN, EQUALIZER_MAX_GAIN, 1);
gtk_scale_set_draw_value ((GtkScale *) slider, TRUE);
gtk_scale_set_value_pos ((GtkScale *) slider, GTK_POS_BOTTOM);
+ gtk_range_set_inverted ((GtkRange *) slider, TRUE);
gtk_widget_set_size_request (slider, -1, 120);
g_object_set_data ((GObject *) slider, "band", GINT_TO_POINTER (band));
- g_signal_connect ((GObject *) slider, "format-value", (GCallback) format_value, NULL);
g_signal_connect ((GObject *) slider, "value-changed", (GCallback) slider_moved, NULL);
- slider_update (NULL, (GtkRange *) slider);
+ gtk_box_pack_start ((GtkBox *) vbox, slider, FALSE, FALSE, 0);
+ gtk_box_pack_start ((GtkBox *) hbox, vbox, FALSE, FALSE, 0);
- if (band == -1)
- hook_associate ("set equalizer_preamp", (HookFunction) slider_update, slider);
- else
- hook_associate ("set equalizer_bands", (HookFunction) slider_update, slider);
+ return slider;
+}
- gtk_box_pack_start ((GtkBox *) vbox, slider, FALSE, FALSE, 0);
+static void set_slider (GtkWidget * slider, double value)
+{
+ g_signal_handlers_block_by_func (slider, (void *) slider_moved, NULL);
+ gtk_range_set_value ((GtkRange *) slider, round (value));
+ g_signal_handlers_unblock_by_func (slider, (void *) slider_moved, NULL);
+}
- return vbox;
+static void update_sliders (void * unused, GtkWidget * window)
+{
+ GtkWidget * preamp = g_object_get_data ((GObject *) window, "preamp");
+ set_slider (preamp, aud_get_double (NULL, "equalizer_preamp"));
+
+ double values[AUD_EQUALIZER_NBANDS];
+ aud_eq_get_bands (values);
+
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
+ {
+ SPRINTF (slider_id, "slider%d", i);
+ GtkWidget * slider = g_object_get_data ((GObject *) window, slider_id);
+ set_slider (slider, values[i]);
+ }
+}
+
+static void destroy_cb (void)
+{
+ hook_dissociate ("set equalizer_active", (HookFunction) on_off_update);
+ hook_dissociate ("set equalizer_bands", (HookFunction) update_sliders);
+ hook_dissociate ("set equalizer_preamp", (HookFunction) update_sliders);
}
static GtkWidget * create_window (void)
@@ -123,56 +119,52 @@ static GtkWidget * create_window (void)
const char * const names[AUD_EQUALIZER_NBANDS] = {N_("31 Hz"), N_("63 Hz"),
N_("125 Hz"), N_("250 Hz"), N_("500 Hz"), N_("1 kHz"), N_("2 kHz"),
N_("4 kHz"), N_("8 kHz"), N_("16 kHz")};
- GtkWidget * window, * vbox, * hbox;
- int i;
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title ((GtkWindow *) window, _("Equalizer"));
gtk_window_set_type_hint ((GtkWindow *) window, GDK_WINDOW_TYPE_HINT_DIALOG);
gtk_window_set_resizable ((GtkWindow *) window, FALSE);
gtk_container_set_border_width ((GtkContainer *) window, 6);
- g_signal_connect ((GObject *) window, "delete-event", (GCallback)
- gtk_widget_hide_on_delete, NULL);
- audgui_hide_on_escape (window);
+ audgui_destroy_on_escape (window);
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_container_add ((GtkContainer *) window, vbox);
gtk_box_pack_start ((GtkBox *) vbox, create_on_off (), FALSE, FALSE, 0);
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
- gtk_box_pack_start ((GtkBox *) hbox, create_slider (_("Preamp"), -1), FALSE, FALSE, 0);
+ GtkWidget * preamp = create_slider (_("Preamp"), -1, hbox);
+ g_object_set_data ((GObject *) window, "preamp", preamp);
+
gtk_box_pack_start ((GtkBox *) hbox,
gtk_separator_new (GTK_ORIENTATION_VERTICAL), FALSE, FALSE, 0);
- for (i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
- gtk_box_pack_start ((GtkBox *) hbox, create_slider (_(names[i]), i), FALSE, FALSE, 0);
+ for (int i = 0; i < AUD_EQUALIZER_NBANDS; i ++)
+ {
+ GtkWidget * slider = create_slider (_(names[i]), i, hbox);
+ SPRINTF (slider_id, "slider%d", i);
+ g_object_set_data ((GObject *) window, slider_id, slider);
+ }
+
+ update_sliders (NULL, window);
+
+ hook_associate ("set equalizer_preamp", (HookFunction) update_sliders, window);
+ hook_associate ("set equalizer_bands", (HookFunction) update_sliders, window);
+
+ g_signal_connect (window, "destroy", (GCallback) destroy_cb, NULL);
- gtk_widget_show_all (vbox);
return window;
}
-static GtkWidget * equalizer_window = NULL;
-
EXPORT void audgui_show_equalizer_window (void)
{
- if (equalizer_window == NULL)
- equalizer_window = create_window ();
-
- gtk_window_present ((GtkWindow *) equalizer_window);
+ if (! audgui_reshow_unique_window (AUDGUI_EQUALIZER_WINDOW))
+ audgui_show_unique_window (AUDGUI_EQUALIZER_WINDOW, create_window ());
}
EXPORT void audgui_hide_equalizer_window (void)
{
- if (! equalizer_window)
- return;
-
- hook_dissociate ("set equalizer_active", (HookFunction) on_off_update);
- hook_dissociate ("set equalizer_bands", (HookFunction) slider_update);
- hook_dissociate ("set equalizer_preamp", (HookFunction) slider_update);
-
- gtk_widget_destroy (equalizer_window);
- equalizer_window = NULL;
+ audgui_hide_unique_window (AUDGUI_EQUALIZER_WINDOW);
}
diff --git a/src/libaudgui/icons-stock.c b/src/libaudgui/icons-stock.c
deleted file mode 100644
index fb8200f..0000000
--- a/src/libaudgui/icons-stock.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * icons-stock.c
- * Copyright 2007-2010 Michael FĂ€rber and John Lindgren
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#include <gtk/gtk.h>
-#include <audacious/misc.h>
-
-#include "libaudgui.h"
-
-static void load_stock_icon (char * id, char * filename,
- GtkIconFactory * iconfactory)
-{
- char * path = g_strdup_printf ("%s/images/%s",
- aud_get_path (AUD_PATH_DATA_DIR), filename);
-
- GdkPixbuf * pixbuf = gdk_pixbuf_new_from_file (path, NULL);
- if (pixbuf == NULL)
- goto ERR;
-
- GtkIconSet * iconset = gtk_icon_set_new_from_pixbuf(pixbuf);
- g_object_unref(pixbuf);
-
- gtk_icon_factory_add(iconfactory, id, iconset);
-
-ERR:
- g_free (path);
-}
-
-EXPORT void
-audgui_register_stock_icons(void)
-{
- GtkIconFactory *iconfactory = gtk_icon_factory_new();
-
- load_stock_icon(AUD_STOCK_AUDACIOUS,
- "audacious.png", iconfactory);
- load_stock_icon(AUD_STOCK_PLAYLIST,
- "menu_playlist.png", iconfactory);
- load_stock_icon(AUD_STOCK_PLUGIN,
- "menu_plugin.png", iconfactory);
- load_stock_icon(AUD_STOCK_QUEUETOGGLE,
- "menu_queue_toggle.png", iconfactory);
-
- gtk_icon_factory_add_default( iconfactory );
- g_object_unref( iconfactory );
-}
diff --git a/src/libaudgui/iface-menu.c b/src/libaudgui/iface-menu.c
deleted file mode 100644
index 448a634..0000000
--- a/src/libaudgui/iface-menu.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * iface-menu.c
- * Copyright 2010 John Lindgren
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions, and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions, and the following disclaimer in the documentation
- * provided with the distribution.
- *
- * This software is provided "as is" and without any warranty, express or
- * implied. In no event shall the authors be liable for any damages arising from
- * the use of this software.
- */
-
-#include <gtk/gtk.h>
-#include <audacious/plugins.h>
-
-#include "libaudgui-gtk.h"
-
-static void switch_cb (GtkMenuItem * item, PluginHandle * plugin)
-{
- if (gtk_check_menu_item_get_active ((GtkCheckMenuItem *) item))
- aud_plugin_enable (plugin, TRUE);
-}
-
-typedef struct {
- GtkWidget * menu;
- GSList * group;
-} IfaceMenuAddState;
-
-static bool_t add_item_cb (PluginHandle * plugin, IfaceMenuAddState * state)
-{
- GtkWidget * item = gtk_radio_menu_item_new_with_label (state->group,
- aud_plugin_get_name (plugin));
- state->group = gtk_radio_menu_item_get_group ((GtkRadioMenuItem *) item);
- if (aud_plugin_get_enabled (plugin))
- gtk_check_menu_item_set_active ((GtkCheckMenuItem *) item, TRUE);
- gtk_menu_shell_append ((GtkMenuShell *) state->menu, item);
- g_signal_connect (item, "activate", (GCallback) switch_cb, plugin);
- gtk_widget_show (item);
- return TRUE;
-}
-
-EXPORT GtkWidget * audgui_create_iface_menu (void)
-{
- IfaceMenuAddState state = {gtk_menu_new (), NULL};
- aud_plugin_for_each (PLUGIN_TYPE_IFACE, (PluginForEachFunc) add_item_cb,
- & state);
- return state.menu;
-}
diff --git a/src/libaudgui/infopopup.c b/src/libaudgui/infopopup.c
index 6cc341d..d0f6fb0 100644
--- a/src/libaudgui/infopopup.c
+++ b/src/libaudgui/infopopup.c
@@ -1,6 +1,7 @@
/*
* infopopup.c
- * Copyright 2006-2012 William Pitcock, Giacomo Lozito, and John Lindgren
+ * Copyright 2006-2012 William Pitcock, Giacomo Lozito, John Lindgren, and
+ * Thomas Lange
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -24,15 +25,15 @@
#include <audacious/i18n.h>
#include <audacious/misc.h>
#include <audacious/playlist.h>
+#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
+#include "init.h"
#include "libaudgui.h"
#include "libaudgui-gtk.h"
#define IMAGE_SIZE 96
-static GtkWidget * infopopup = NULL;
-
static struct {
GtkWidget * title_header, * title_label;
GtkWidget * artist_header, * artist_label;
@@ -80,7 +81,8 @@ static bool_t infopopup_progress_cb (void * unused)
gtk_progress_bar_set_fraction ((GtkProgressBar *) widgets.progress,
time / (float) length);
- SPRINTF (time_str, "%d:%02d", time / 60000, (time / 1000) % 60);
+ char time_str[16];
+ audgui_format_time (time_str, sizeof time_str, time);
gtk_progress_bar_set_text ((GtkProgressBar *) widgets.progress, time_str);
gtk_widget_show (widgets.progress);
@@ -121,16 +123,15 @@ static void infopopup_destroyed (void)
progress_source = 0;
}
- infopopup = NULL;
memset (& widgets, 0, sizeof widgets);
str_unref (current_file);
current_file = NULL;
}
-static void infopopup_create (void)
+static GtkWidget * infopopup_create (void)
{
- infopopup = gtk_window_new (GTK_WINDOW_POPUP);
+ GtkWidget * infopopup = gtk_window_new (GTK_WINDOW_POPUP);
gtk_window_set_type_hint ((GtkWindow *) infopopup, GDK_WINDOW_TYPE_HINT_TOOLTIP);
gtk_window_set_decorated ((GtkWindow *) infopopup, FALSE);
gtk_container_set_border_width ((GtkContainer *) infopopup, 4);
@@ -163,7 +164,8 @@ static void infopopup_create (void)
/* do not show the track progress */
gtk_widget_set_no_show_all (widgets.progress, TRUE);
- gtk_widget_show_all (hbox);
+
+ return infopopup;
}
/* calls str_unref() on <text> */
@@ -187,13 +189,13 @@ static void infopopup_set_field (GtkWidget * header, GtkWidget * label, char * t
static void infopopup_set_fields (const Tuple * tuple, const char * title)
{
/* use title from tuple if possible */
- char * title2 = tuple_get_str (tuple, FIELD_TITLE, NULL);
+ char * title2 = tuple_get_str (tuple, FIELD_TITLE);
if (! title2)
title2 = str_get (title);
- char * artist = tuple_get_str (tuple, FIELD_ARTIST, NULL);
- char * album = tuple_get_str (tuple, FIELD_ALBUM, NULL);
- char * genre = tuple_get_str (tuple, FIELD_GENRE, NULL);
+ char * artist = tuple_get_str (tuple, FIELD_ARTIST);
+ char * album = tuple_get_str (tuple, FIELD_ALBUM);
+ char * genre = tuple_get_str (tuple, FIELD_GENRE);
infopopup_set_field (widgets.title_header, widgets.title_label, title2);
infopopup_set_field (widgets.artist_header, widgets.artist_label, artist);
@@ -203,20 +205,29 @@ static void infopopup_set_fields (const Tuple * tuple, const char * title)
int value;
char * tmp;
- value = tuple_get_int (tuple, FIELD_LENGTH, NULL);
- tmp = (value > 0) ? str_printf ("%d:%02d", value / 60000, value / 1000 % 60) : NULL;
+ value = tuple_get_int (tuple, FIELD_LENGTH);
+
+ if (value > 0)
+ {
+ char buf[16];
+ audgui_format_time (buf, sizeof buf, value);
+ tmp = str_get (buf);
+ }
+ else
+ tmp = NULL;
+
infopopup_set_field (widgets.length_header, widgets.length_label, tmp);
- value = tuple_get_int (tuple, FIELD_YEAR, NULL);
- tmp = (value > 0) ? str_printf ("%d", value) : NULL;
+ value = tuple_get_int (tuple, FIELD_YEAR);
+ tmp = (value > 0) ? int_to_str (value) : NULL;
infopopup_set_field (widgets.year_header, widgets.year_label, tmp);
- value = tuple_get_int (tuple, FIELD_TRACK_NUMBER, NULL);
- tmp = (value > 0) ? str_printf ("%d", value) : NULL;
+ value = tuple_get_int (tuple, FIELD_TRACK_NUMBER);
+ tmp = (value > 0) ? int_to_str (value) : NULL;
infopopup_set_field (widgets.track_header, widgets.track_label, tmp);
}
-static void infopopup_move_to_mouse (void)
+static void infopopup_move_to_mouse (GtkWidget * infopopup)
{
int x, y, h, w;
@@ -242,13 +253,12 @@ static void infopopup_move_to_mouse (void)
static void infopopup_show (const char * filename, const Tuple * tuple,
const char * title)
{
- if (infopopup)
- gtk_widget_destroy (infopopup);
+ audgui_hide_unique_window (AUDGUI_INFOPOPUP_WINDOW);
str_unref (current_file);
current_file = str_get (filename);
- infopopup_create ();
+ GtkWidget * infopopup = infopopup_create ();
infopopup_set_fields (tuple, title);
infopopup_display_image (filename);
@@ -264,8 +274,9 @@ static void infopopup_show (const char * filename, const Tuple * tuple,
/* immediately run the callback once to update progressbar status */
infopopup_progress_cb (NULL);
- infopopup_move_to_mouse ();
- gtk_widget_show (infopopup);
+ infopopup_move_to_mouse (infopopup);
+
+ audgui_show_unique_window (AUDGUI_INFOPOPUP_WINDOW, infopopup);
}
EXPORT void audgui_infopopup_show (int playlist, int entry)
@@ -298,6 +309,5 @@ EXPORT void audgui_infopopup_show_current (void)
EXPORT void audgui_infopopup_hide (void)
{
- if (infopopup)
- gtk_widget_destroy (infopopup);
+ audgui_hide_unique_window (AUDGUI_INFOPOPUP_WINDOW);
}
diff --git a/src/libaudgui/infowin.c b/src/libaudgui/infowin.c
index 9156569..530a65e 100644
--- a/src/libaudgui/infowin.c
+++ b/src/libaudgui/infowin.c
@@ -1,7 +1,7 @@
/*
* libaudgui/infowin.c
- * Copyright 2006-2012 William Pitcock, Tomasz MoƄ, Eugene Zagidullin, and
- * John Lindgren
+ * Copyright 2006-2013 William Pitcock, Tomasz MoƄ, Eugene Zagidullin,
+ * John Lindgren, and Thomas Lange
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -29,20 +29,24 @@
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
+#include "init.h"
#include "libaudgui.h"
#include "libaudgui-gtk.h"
#define AUDGUI_STATUS_TIMEOUT 3000
-#define IMAGE_SIZE 150
-enum
-{
- RAWDATA_KEY,
- RAWDATA_VALUE,
- RAWDATA_N_COLS
+enum {
+ CODEC_FORMAT,
+ CODEC_QUALITY,
+ CODEC_BITRATE,
+ CODEC_ITEMS
};
-static GtkWidget * infowin = NULL;
+static const char * codec_labels[CODEC_ITEMS] = {
+ N_("Format:"),
+ N_("Quality:"),
+ N_("Bitrate:")
+};
static struct {
GtkWidget * location;
@@ -54,9 +58,7 @@ static struct {
GtkWidget * track;
GtkWidget * genre;
GtkWidget * image;
- GtkWidget * format;
- GtkWidget * quality;
- GtkWidget * bitrate;
+ GtkWidget * codec[3];
GtkWidget * apply;
GtkWidget * ministatus;
} widgets;
@@ -64,6 +66,7 @@ static struct {
static char * current_file = NULL;
static PluginHandle * current_decoder = NULL;
static bool_t can_write = FALSE;
+static int timeout_source = 0;
/* This is by no means intended to be a complete list. If it is not short, it
* is useless: scrolling through ten pages of dropdown list is more work than
@@ -110,10 +113,27 @@ static const char * genre_table[] = {
N_("Techno"),
N_("Trip-hop")};
+static GtkWidget * small_label_new (const char * text)
+{
+ static PangoAttrList * attrs = NULL;
+
+ if (! attrs)
+ {
+ attrs = pango_attr_list_new ();
+ pango_attr_list_insert (attrs, pango_attr_scale_new (PANGO_SCALE_SMALL));
+ }
+
+ GtkWidget * label = gtk_label_new (text);
+ gtk_label_set_attributes ((GtkLabel *) label, attrs);
+ gtk_misc_set_alignment ((GtkMisc *) label, 0, 0.5);
+
+ return label;
+}
+
static void set_entry_str_from_field (GtkWidget * widget, const Tuple * tuple,
int fieldn, bool_t editable)
{
- char * text = tuple_get_str (tuple, fieldn, NULL);
+ char * text = tuple_get_str (tuple, fieldn);
gtk_entry_set_text ((GtkEntry *) widget, text != NULL ? text : "");
gtk_editable_set_editable ((GtkEditable *) widget, editable);
@@ -126,9 +146,8 @@ static void set_entry_int_from_field (GtkWidget * widget, const Tuple * tuple,
{
char scratch[32];
- if (tuple_get_value_type (tuple, fieldn, NULL) == TUPLE_INT)
- snprintf (scratch, sizeof scratch, "%d", tuple_get_int (tuple, fieldn,
- NULL));
+ if (tuple_get_value_type (tuple, fieldn) == TUPLE_INT)
+ str_itoa (tuple_get_int (tuple, fieldn), scratch, sizeof scratch);
else
scratch[0] = 0;
@@ -142,9 +161,9 @@ static void set_field_str_from_entry (Tuple * tuple, int fieldn, GtkWidget *
const char * text = gtk_entry_get_text ((GtkEntry *) widget);
if (text[0])
- tuple_set_str (tuple, fieldn, NULL, text);
+ tuple_set_str (tuple, fieldn, text);
else
- tuple_unset (tuple, fieldn, NULL);
+ tuple_unset (tuple, fieldn);
}
static void set_field_int_from_entry (Tuple * tuple, int fieldn, GtkWidget *
@@ -153,28 +172,9 @@ static void set_field_int_from_entry (Tuple * tuple, int fieldn, GtkWidget *
const char * text = gtk_entry_get_text ((GtkEntry *) widget);
if (text[0])
- tuple_set_int (tuple, fieldn, NULL, atoi (text));
- else
- tuple_unset (tuple, fieldn, NULL);
-}
-
-/* call str_unref() on <text> */
-static void infowin_label_set_text (GtkWidget * widget, char * text)
-{
- char * tmp;
-
- if (text)
- {
- tmp = g_strdup_printf("<span size=\"small\">%s</span>", text);
- gtk_label_set_text ((GtkLabel *) widget, tmp);
- g_free (tmp);
- str_unref (text);
- }
+ tuple_set_int (tuple, fieldn, atoi (text));
else
- gtk_label_set_text ((GtkLabel *) widget,
- _("<span size=\"small\">n/a</span>"));
-
- gtk_label_set_use_markup ((GtkLabel *) widget, TRUE);
+ tuple_unset (tuple, fieldn);
}
static void entry_changed (GtkEditable * editable, void * unused)
@@ -183,26 +183,23 @@ static void entry_changed (GtkEditable * editable, void * unused)
gtk_widget_set_sensitive (widgets.apply, TRUE);
}
-static bool_t ministatus_timeout_proc (void * data)
+static bool_t ministatus_timeout_proc (void)
{
- GtkLabel * status = data;
-
- gtk_label_set_text (status, "<span size=\"small\"></span>");
- gtk_label_set_use_markup (status, TRUE);
+ gtk_label_set_text ((GtkLabel *) widgets.ministatus, NULL);
+ timeout_source = 0;
return FALSE;
}
static void ministatus_display_message (const char * text)
{
- char * tmp = g_strdup_printf ("<span size=\"small\">%s</span>", text);
+ gtk_label_set_text ((GtkLabel *) widgets.ministatus, text);
- gtk_label_set_text ((GtkLabel *) widgets.ministatus, tmp);
- gtk_label_set_use_markup ((GtkLabel *) widgets.ministatus, TRUE);
- g_free (tmp);
+ if (timeout_source)
+ g_source_remove (timeout_source);
- g_timeout_add (AUDGUI_STATUS_TIMEOUT, (GSourceFunc) ministatus_timeout_proc,
- widgets.ministatus);
+ timeout_source = g_timeout_add (AUDGUI_STATUS_TIMEOUT, (GSourceFunc)
+ ministatus_timeout_proc, NULL);
}
static void infowin_update_tuple (void * unused)
@@ -220,11 +217,11 @@ static void infowin_update_tuple (void * unused)
if (aud_file_write_tuple (current_file, current_decoder, tuple))
{
- ministatus_display_message (_("Metadata updated successfully"));
+ ministatus_display_message (_("Save successful"));
gtk_widget_set_sensitive (widgets.apply, FALSE);
}
else
- ministatus_display_message (_("Metadata updating failed"));
+ ministatus_display_message (_("Save error"));
tuple_unref (tuple);
}
@@ -235,7 +232,7 @@ static bool_t genre_fill (GtkWidget * combo)
GList * node;
int i;
- for (i = 0; i < G_N_ELEMENTS (genre_table); i ++)
+ for (i = 0; i < ARRAY_LEN (genre_table); i ++)
list = g_list_prepend (list, _(genre_table[i]));
list = g_list_sort (list, (GCompareFunc) strcmp);
@@ -256,16 +253,23 @@ static void infowin_display_image (const char * filename)
if (! pb)
pb = audgui_pixbuf_fallback ();
- audgui_pixbuf_scale_within (& pb, IMAGE_SIZE);
- gtk_image_set_from_pixbuf ((GtkImage *) widgets.image, pb);
- g_object_unref (pb);
+ if (pb)
+ {
+ audgui_scaled_image_set (widgets.image, pb);
+ g_object_unref (pb);
+ }
}
static void infowin_destroyed (void)
{
hook_dissociate ("art ready", (HookFunction) infowin_display_image);
- infowin = NULL;
+ if (timeout_source)
+ {
+ g_source_remove (timeout_source);
+ timeout_source = 0;
+ }
+
memset (& widgets, 0, sizeof widgets);
str_unref (current_file);
@@ -274,226 +278,115 @@ static void infowin_destroyed (void)
can_write = FALSE;
}
-static void create_infowin (void)
+static void add_entry (GtkWidget * grid, const char * title, GtkWidget * entry,
+ int x, int y, int span)
{
- GtkWidget * hbox;
- GtkWidget * hbox_status_and_bbox;
- GtkWidget * vbox0;
- GtkWidget * vbox2;
- GtkWidget * label_title;
- GtkWidget * label_artist;
- GtkWidget * label_album;
- GtkWidget * label_comment;
- GtkWidget * label_genre;
- GtkWidget * label_year;
- GtkWidget * label_track;
- GtkWidget * label_format;
- GtkWidget * label_quality_label;
- GtkWidget * label_bitrate_label;
- GtkWidget * codec_hbox;
- GtkWidget * codec_grid;
- GtkWidget * grid1;
- GtkWidget * bbox_close;
- GtkWidget * btn_close;
- GtkWidget * alignment;
-
- infowin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_container_set_border_width ((GtkContainer *) infowin, 6);
- gtk_window_set_title ((GtkWindow *) infowin, _("Track Information"));
- gtk_window_set_type_hint ((GtkWindow *) infowin,
- GDK_WINDOW_TYPE_HINT_DIALOG);
+ GtkWidget * label = small_label_new (title);
- vbox0 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add ((GtkContainer *) infowin, vbox0);
+ if (y > 0)
+ gtk_widget_set_margin_top (label, 6);
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start ((GtkBox *) vbox0, hbox, TRUE, TRUE, 0);
+ gtk_grid_attach ((GtkGrid *) grid, label, x, y, span, 1);
+ gtk_grid_attach ((GtkGrid *) grid, entry, x, y + 1, span, 1);
- vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- gtk_box_pack_start ((GtkBox *) hbox, vbox2, TRUE, TRUE, 0);
+ g_signal_connect (entry, "changed", (GCallback) entry_changed, NULL);
+}
- GtkWidget * vbox3 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- gtk_box_pack_start ((GtkBox *) vbox2, vbox3, TRUE, FALSE, 0);
+static GtkWidget * create_infowin (void)
+{
+ GtkWidget * infowin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_container_set_border_width ((GtkContainer *) infowin, 6);
+ gtk_window_set_title ((GtkWindow *) infowin, _("Song Info"));
+ gtk_window_set_type_hint ((GtkWindow *) infowin,
+ GDK_WINDOW_TYPE_HINT_DIALOG);
- widgets.image = gtk_image_new ();
- gtk_widget_set_size_request (widgets.image, IMAGE_SIZE, IMAGE_SIZE);
- gtk_box_pack_start ((GtkBox *) vbox3, widgets.image, FALSE, FALSE, 0);
+ GtkWidget * main_grid = gtk_grid_new ();
+ gtk_grid_set_column_spacing ((GtkGrid *) main_grid, 6);
+ gtk_grid_set_row_spacing ((GtkGrid *) main_grid, 6);
+ gtk_container_add ((GtkContainer *) infowin, main_grid);
+
+ widgets.image = audgui_scaled_image_new (NULL);
+ gtk_widget_set_hexpand (widgets.image, TRUE);
+ gtk_widget_set_vexpand (widgets.image, TRUE);
+ gtk_grid_attach ((GtkGrid *) main_grid, widgets.image, 0, 0, 1, 1);
widgets.location = gtk_label_new ("");
- gtk_widget_set_size_request (widgets.location, 200, -1);
+ gtk_label_set_max_width_chars ((GtkLabel *) widgets.location, 40);
gtk_label_set_line_wrap ((GtkLabel *) widgets.location, TRUE);
gtk_label_set_line_wrap_mode ((GtkLabel *) widgets.location, PANGO_WRAP_WORD_CHAR);
gtk_label_set_selectable ((GtkLabel *) widgets.location, TRUE);
- gtk_box_pack_start ((GtkBox *) vbox3, widgets.location, FALSE, FALSE, 0);
-
- codec_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start ((GtkBox *) vbox2, codec_hbox, FALSE, FALSE, 0);
+ gtk_grid_attach ((GtkGrid *) main_grid, widgets.location, 0, 1, 1, 1);
- codec_grid = gtk_grid_new ();
+ GtkWidget * codec_grid = gtk_grid_new ();
gtk_grid_set_row_spacing ((GtkGrid *) codec_grid, 3);
gtk_grid_set_column_spacing ((GtkGrid *) codec_grid, 12);
- gtk_box_pack_start ((GtkBox *) codec_hbox, codec_grid, FALSE, FALSE, 0);
-
- label_format = gtk_label_new (_("<span size=\"small\">Format:</span>"));
- gtk_label_set_use_markup ((GtkLabel *) label_format, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_format, 0, 0.5);
- label_quality_label = gtk_label_new
- (_("<span size=\"small\">Quality:</span>"));
- gtk_label_set_use_markup ((GtkLabel *) label_quality_label, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_quality_label, 0, 0.5);
- label_bitrate_label = gtk_label_new (_("<span size=\"small\">Bitrate:</span>"));
- gtk_label_set_use_markup ((GtkLabel *) label_bitrate_label, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_bitrate_label, 0, 0.5);
-
- widgets.format = gtk_label_new (_("<span size=\"small\">n/a</span>"));
- gtk_label_set_use_markup ((GtkLabel *) widgets.format, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) widgets.format, 0, 0.5);
- widgets.quality = gtk_label_new (_("<span size=\"small\">n/a</span>"));
- gtk_label_set_use_markup ((GtkLabel *) widgets.quality, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) widgets.quality, 0, 0.5);
- widgets.bitrate = gtk_label_new (_("<span size=\"small\">n/a</span>"));
- gtk_label_set_use_markup ((GtkLabel *) widgets.bitrate, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) widgets.bitrate, 0, 0.5);
-
- gtk_grid_attach ((GtkGrid *) codec_grid, label_format, 0, 0, 1, 1);
- gtk_grid_attach ((GtkGrid *) codec_grid, widgets.format, 1, 0, 1, 1);
- gtk_grid_attach ((GtkGrid *) codec_grid, label_quality_label, 0, 1, 1, 1);
- gtk_grid_attach ((GtkGrid *) codec_grid, widgets.quality, 1, 1, 1, 1);
- gtk_grid_attach ((GtkGrid *) codec_grid, label_bitrate_label, 0, 2, 1, 1);
- gtk_grid_attach ((GtkGrid *) codec_grid, widgets.bitrate, 1, 2, 1, 1);
-
- vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_box_pack_start ((GtkBox *) hbox, vbox2, TRUE, TRUE, 0);
-
- label_title = gtk_label_new (_("<span size=\"small\">Title</span>"));
- gtk_box_pack_start ((GtkBox *) vbox2, label_title, FALSE, FALSE, 0);
- gtk_label_set_use_markup ((GtkLabel *) label_title, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_title, 0, 0);
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0);
- widgets.title = gtk_entry_new ();
- gtk_container_add ((GtkContainer *) alignment, widgets.title);
- g_signal_connect (widgets.title, "changed", (GCallback) entry_changed, NULL);
-
- label_artist = gtk_label_new (_("<span size=\"small\">Artist</span>"));
- gtk_box_pack_start ((GtkBox *) vbox2, label_artist, FALSE, FALSE, 0);
- gtk_label_set_use_markup ((GtkLabel *) label_artist, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_artist, 0, 0.5);
+ gtk_grid_attach ((GtkGrid *) main_grid, codec_grid, 0, 2, 1, 1);
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0);
- widgets.artist = gtk_entry_new ();
- gtk_container_add ((GtkContainer *) alignment, widgets.artist);
- g_signal_connect (widgets.artist, "changed", (GCallback) entry_changed, NULL);
+ for (int row = 0; row < CODEC_ITEMS; row ++)
+ {
+ GtkWidget * label = small_label_new (_(codec_labels[row]));
+ gtk_grid_attach ((GtkGrid *) codec_grid, label, 0, row, 1, 1);
- label_album = gtk_label_new (_("<span size=\"small\">Album</span>"));
- gtk_box_pack_start ((GtkBox *) vbox2, label_album, FALSE, FALSE, 0);
- gtk_label_set_use_markup ((GtkLabel *) label_album, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_album, 0, 0.5);
+ widgets.codec[row] = small_label_new (NULL);
+ gtk_grid_attach ((GtkGrid *) codec_grid, widgets.codec[row], 1, row, 1, 1);
+ }
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0);
- widgets.album = gtk_entry_new ();
- gtk_container_add ((GtkContainer *) alignment, widgets.album);
- g_signal_connect (widgets.album, "changed", (GCallback) entry_changed, NULL);
+ GtkWidget * grid = gtk_grid_new ();
+ gtk_grid_set_column_homogeneous ((GtkGrid *) grid, TRUE);
+ gtk_grid_set_column_spacing ((GtkGrid *) grid, 6);
+ gtk_grid_attach ((GtkGrid *) main_grid, grid, 1, 0, 1, 3);
- label_comment = gtk_label_new (_("<span size=\"small\">Comment</span>"));
- gtk_box_pack_start ((GtkBox *) vbox2, label_comment, FALSE, FALSE, 0);
- gtk_label_set_use_markup ((GtkLabel *) label_comment, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_comment, 0, 0.5);
+ widgets.title = gtk_entry_new ();
+ add_entry (grid, _("Title"), widgets.title, 0, 0, 2);
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0);
- widgets.comment = gtk_entry_new ();
- gtk_container_add ((GtkContainer *) alignment, widgets.comment);
- g_signal_connect (widgets.comment, "changed", (GCallback) entry_changed, NULL);
+ widgets.artist = gtk_entry_new ();
+ add_entry (grid, _("Artist"), widgets.artist, 0, 2, 2);
- label_genre = gtk_label_new (_("<span size=\"small\">Genre</span>"));
- gtk_box_pack_start ((GtkBox *) vbox2, label_genre, FALSE, FALSE, 0);
- gtk_label_set_use_markup ((GtkLabel *) label_genre, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_genre, 0, 0.5);
+ widgets.album = gtk_entry_new ();
+ add_entry (grid, _("Album"), widgets.album, 0, 4, 2);
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0);
+ widgets.comment = gtk_entry_new ();
+ add_entry (grid, _("Comment"), widgets.comment, 0, 6, 2);
widgets.genre = gtk_combo_box_text_new_with_entry ();
- gtk_container_add ((GtkContainer *) alignment, widgets.genre);
- g_signal_connect (widgets.genre, "changed", (GCallback) entry_changed, NULL);
+ add_entry (grid, _("Genre"), widgets.genre, 0, 8, 2);
g_idle_add ((GSourceFunc) genre_fill, widgets.genre);
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_box_pack_start ((GtkBox *) vbox2, alignment, FALSE, FALSE, 0);
- gtk_alignment_set_padding ((GtkAlignment *) alignment, 0, 6, 0, 0);
- grid1 = gtk_grid_new ();
- gtk_grid_set_column_homogeneous ((GtkGrid *) grid1, TRUE);
- gtk_container_add ((GtkContainer *) alignment, grid1);
- gtk_grid_set_column_spacing ((GtkGrid *) grid1, 6);
+ widgets.year = gtk_entry_new ();
+ add_entry (grid, _("Year"), widgets.year, 0, 10, 1);
- label_year = gtk_label_new (_("<span size=\"small\">Year</span>"));
- gtk_grid_attach ((GtkGrid *) grid1, label_year, 0, 0, 1, 1);
- gtk_label_set_use_markup ((GtkLabel *) label_year, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_year, 0, 0.5);
+ widgets.track = gtk_entry_new ();
+ add_entry (grid, _("Track Number"), widgets.track, 1, 10, 1);
- widgets.year = gtk_entry_new ();
- gtk_grid_attach ((GtkGrid *) grid1, widgets.year, 0, 1, 1, 1);
- g_signal_connect (widgets.year, "changed", (GCallback) entry_changed, NULL);
+ GtkWidget * bottom_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_grid_attach ((GtkGrid *) main_grid, bottom_hbox, 0, 3, 2, 1);
- label_track = gtk_label_new (_("<span size=\"small\">Track Number</span>"));
- gtk_grid_attach ((GtkGrid *) grid1, label_track, 1, 0, 1, 1);
- gtk_label_set_use_markup ((GtkLabel *) label_track, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) label_track, 0, 0.5);
+ widgets.ministatus = small_label_new (NULL);
+ gtk_box_pack_start ((GtkBox *) bottom_hbox, widgets.ministatus, TRUE, TRUE, 0);
- widgets.track = gtk_entry_new ();
- gtk_grid_attach ((GtkGrid *) grid1, widgets.track, 1, 1, 1, 1);
- g_signal_connect (widgets.track, "changed", (GCallback) entry_changed, NULL);
-
- hbox_status_and_bbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_pack_start ((GtkBox *) vbox0, hbox_status_and_bbox, FALSE, FALSE, 0);
-
- widgets.ministatus = gtk_label_new ("<span size=\"small\"></span>");
- gtk_label_set_use_markup ((GtkLabel *) widgets.ministatus, TRUE);
- gtk_misc_set_alignment ((GtkMisc *) widgets.ministatus, 0, 0.5);
- gtk_box_pack_start ((GtkBox *) hbox_status_and_bbox, widgets.ministatus,
- TRUE, TRUE, 0);
-
- bbox_close = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_box_set_spacing ((GtkBox *) bbox_close, 6);
- gtk_box_pack_start ((GtkBox *) hbox_status_and_bbox, bbox_close, FALSE,
- FALSE, 0);
- gtk_button_box_set_layout ((GtkButtonBox *) bbox_close, GTK_BUTTONBOX_END);
-
- widgets.apply = gtk_button_new_from_stock (GTK_STOCK_SAVE);
- gtk_container_add ((GtkContainer *) bbox_close, widgets.apply);
- g_signal_connect (widgets.apply, "clicked", (GCallback) infowin_update_tuple, NULL);
- gtk_widget_set_sensitive (widgets.apply, FALSE);
+ widgets.apply = audgui_button_new (_("_Save"), "document-save",
+ (AudguiCallback) infowin_update_tuple, NULL);
- btn_close = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
- gtk_container_add ((GtkContainer *) bbox_close, btn_close);
- g_signal_connect_swapped (btn_close, "clicked", (GCallback) gtk_widget_hide,
- infowin);
+ GtkWidget * close_button = audgui_button_new (_("_Close"), "window-close",
+ (AudguiCallback) audgui_infowin_hide, NULL);
- gtk_widget_show_all (vbox0);
- gtk_widget_grab_focus (widgets.title);
+ gtk_box_pack_end ((GtkBox *) bottom_hbox, close_button, FALSE, FALSE, 0);
+ gtk_box_pack_end ((GtkBox *) bottom_hbox, widgets.apply, FALSE, FALSE, 0);
audgui_destroy_on_escape (infowin);
g_signal_connect (infowin, "destroy", (GCallback) infowin_destroyed, NULL);
hook_associate ("art ready", (HookFunction) infowin_display_image, NULL);
+
+ return infowin;
}
static void infowin_show (int list, int entry, const char * filename,
const Tuple * tuple, PluginHandle * decoder, bool_t updating_enabled)
{
- char * tmp;
+ audgui_hide_unique_window (AUDGUI_INFO_WINDOW);
- if (! infowin)
- create_infowin ();
+ GtkWidget * infowin = create_infowin ();
str_unref (current_file);
current_file = str_get (filename);
@@ -507,25 +400,37 @@ static void infowin_show (int list, int entry, const char * filename,
set_entry_str_from_field (gtk_bin_get_child ((GtkBin *) widgets.genre),
tuple, FIELD_GENRE, updating_enabled);
- tmp = uri_to_display (filename);
+ char * tmp = uri_to_display (filename);
gtk_label_set_text ((GtkLabel *) widgets.location, tmp);
- g_free (tmp);
+ str_unref (tmp);
set_entry_int_from_field (widgets.year, tuple, FIELD_YEAR, updating_enabled);
set_entry_int_from_field (widgets.track, tuple, FIELD_TRACK_NUMBER, updating_enabled);
- infowin_label_set_text (widgets.format, tuple_get_str (tuple, FIELD_CODEC, NULL));
- infowin_label_set_text (widgets.quality, tuple_get_str (tuple, FIELD_QUALITY, NULL));
+ char * codec_values[CODEC_ITEMS] = {
+ [CODEC_FORMAT] = tuple_get_str (tuple, FIELD_CODEC),
+ [CODEC_QUALITY] = tuple_get_str (tuple, FIELD_QUALITY)
+ };
- if (tuple_get_value_type (tuple, FIELD_BITRATE, NULL) == TUPLE_INT)
- infowin_label_set_text (widgets.bitrate, str_printf (_("%d kb/s"),
- tuple_get_int (tuple, FIELD_BITRATE, NULL)));
- else
- infowin_label_set_text (widgets.bitrate, NULL);
+ if (tuple_get_value_type (tuple, FIELD_BITRATE) == TUPLE_INT)
+ {
+ int bitrate = tuple_get_int (tuple, FIELD_BITRATE);
+ codec_values[CODEC_BITRATE] = str_printf (_("%d kb/s"), bitrate);
+ }
+
+ for (int row = 0; row < CODEC_ITEMS; row ++)
+ {
+ const char * text = codec_values[row] ? codec_values[row] : _("N/A");
+ gtk_label_set_text ((GtkLabel *) widgets.codec[row], text);
+ str_unref (codec_values[row]);
+ }
infowin_display_image (filename);
- gtk_window_present ((GtkWindow *) infowin);
+ /* nothing has been changed yet */
+ gtk_widget_set_sensitive (widgets.apply, FALSE);
+
+ audgui_show_unique_window (AUDGUI_INFO_WINDOW, infowin);
}
EXPORT void audgui_infowin_show (int playlist, int entry)
@@ -545,10 +450,8 @@ EXPORT void audgui_infowin_show (int playlist, int entry)
if (tuple == NULL)
{
- char * message = g_strdup_printf (_("No info available for %s.\n"),
- filename);
+ SPRINTF (message, _("No info available for %s.\n"), filename);
aud_interface_show_error (message);
- g_free (message);
goto FREE;
}
@@ -578,6 +481,5 @@ EXPORT void audgui_infowin_show_current (void)
EXPORT void audgui_infowin_hide (void)
{
- if (infowin)
- gtk_widget_destroy (infowin);
+ audgui_hide_unique_window (AUDGUI_INFO_WINDOW);
}
diff --git a/src/libaudgui/init.c b/src/libaudgui/init.c
index 1a5517f..3128a55 100644
--- a/src/libaudgui/init.c
+++ b/src/libaudgui/init.c
@@ -1,6 +1,6 @@
/*
* init.c
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,8 +17,12 @@
* the use of this software.
*/
+#include <stdio.h>
+#include <stdlib.h>
+
#include <audacious/misc.h>
#include <audacious/playlist.h>
+#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
#include "init.h"
@@ -33,8 +37,90 @@ static const char * const audgui_defaults[] = {
"remember_jtf_entry", "TRUE",
NULL};
+static const char * const window_names[AUDGUI_NUM_UNIQUE_WINDOWS] = {
+ "about_win",
+ "equalizer_win",
+ "filebrowser_win",
+ NULL, /* infopopup position is not saved */
+ "info_win",
+ "jump_to_time_win",
+ "jump_to_track_win",
+ "playlist_export_win",
+ "playlist_import_win",
+ "playlist_manager_win",
+ "queue_manager_win",
+ "url_opener_win"
+};
+
AudAPITable * _aud_api_table = NULL;
+static GtkWidget * windows[AUDGUI_NUM_UNIQUE_WINDOWS];
+
+static bool_t configure_cb (GtkWidget * window, GdkEventConfigure * event, const char * name)
+{
+ if (gtk_widget_get_visible (window))
+ {
+ int pos[4];
+ gtk_window_get_position ((GtkWindow *) window, & pos[0], & pos[1]);
+ gtk_window_get_size ((GtkWindow *) window, & pos[2], & pos[3]);
+
+ char * str = int_array_to_str (pos, 4);
+ aud_set_str ("audgui", name, str);
+ str_unref (str);
+ }
+
+ return FALSE;
+}
+
+void audgui_show_unique_window (int id, GtkWidget * widget)
+{
+ g_return_if_fail (id >= 0 && id < AUDGUI_NUM_UNIQUE_WINDOWS);
+
+ if (windows[id])
+ gtk_widget_destroy (windows[id]);
+
+ windows[id] = widget;
+ g_signal_connect (widget, "destroy", (GCallback) gtk_widget_destroyed, & windows[id]);
+
+ if (window_names[id])
+ {
+ char * str = aud_get_str ("audgui", window_names[id]);
+ int pos[4];
+
+ if (str_to_int_array (str, pos, 4))
+ {
+ gtk_window_move ((GtkWindow *) widget, pos[0], pos[1]);
+ gtk_window_set_default_size ((GtkWindow *) widget, pos[2], pos[3]);
+ }
+
+ g_signal_connect (widget, "configure-event", (GCallback) configure_cb,
+ (void *) window_names[id]);
+
+ str_unref (str);
+ }
+
+ gtk_widget_show_all (widget);
+}
+
+bool_t audgui_reshow_unique_window (int id)
+{
+ g_return_val_if_fail (id >= 0 && id < AUDGUI_NUM_UNIQUE_WINDOWS, FALSE);
+
+ if (! windows[id])
+ return FALSE;
+
+ gtk_window_present ((GtkWindow *) windows[id]);
+ return TRUE;
+}
+
+void audgui_hide_unique_window (int id)
+{
+ g_return_if_fail (id >= 0 && id < AUDGUI_NUM_UNIQUE_WINDOWS);
+
+ if (windows[id])
+ gtk_widget_destroy (windows[id]);
+}
+
static void playlist_set_playing_cb (void * unused, void * unused2)
{
audgui_pixbuf_uncache ();
@@ -46,13 +132,23 @@ static void playlist_position_cb (void * list, void * unused)
audgui_pixbuf_uncache ();
}
-EXPORT void audgui_init (AudAPITable * table)
+EXPORT void audgui_init (AudAPITable * table, int version)
{
+ if (version != _AUD_PLUGIN_VERSION)
+ {
+ fprintf (stderr, "libaudgui version mismatch\n");
+ abort ();
+ }
+
_aud_api_table = table;
aud_config_set_defaults ("audgui", audgui_defaults);
hook_associate ("playlist set playing", playlist_set_playing_cb, NULL);
hook_associate ("playlist position", playlist_position_cb, NULL);
+
+#ifndef _WIN32
+ gtk_window_set_default_icon_name ("audacious");
+#endif
}
EXPORT void audgui_cleanup (void)
@@ -60,15 +156,8 @@ EXPORT void audgui_cleanup (void)
hook_dissociate ("playlist set playing", playlist_set_playing_cb);
hook_dissociate ("playlist position", playlist_position_cb);
- audgui_hide_equalizer_window ();
- audgui_infopopup_hide ();
- audgui_infowin_hide ();
- audgui_jump_to_time_cleanup ();
- audgui_jump_to_track_hide ();
- audgui_pixbuf_uncache ();
- audgui_playlist_manager_cleanup ();
- audgui_queue_manager_cleanup ();
- audgui_url_opener_cleanup ();
+ for (int id = 0; id < AUDGUI_NUM_UNIQUE_WINDOWS; id ++)
+ audgui_hide_unique_window (id);
_aud_api_table = NULL;
}
diff --git a/src/libaudgui/init.h b/src/libaudgui/init.h
index 1018d0a..32632cf 100644
--- a/src/libaudgui/init.h
+++ b/src/libaudgui/init.h
@@ -1,6 +1,6 @@
/*
* init.h
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,23 +17,37 @@
* the use of this software.
*/
-#include <audacious/plugin.h>
+#ifndef AUDGUI_INIT_H
+#define AUDGUI_INIT_H
-/* init.c */
-void audgui_init (AudAPITable * table);
-void audgui_cleanup (void);
+#include <gtk/gtk.h>
-/* jump-to-time.c */
-void audgui_jump_to_time_cleanup (void);
+#include <audacious/api.h>
-/* queue-manager.c */
-void audgui_queue_manager_cleanup (void);
+enum {
+ AUDGUI_ABOUT_WINDOW,
+ AUDGUI_EQUALIZER_WINDOW,
+ AUDGUI_FILEBROWSER_WINDOW,
+ AUDGUI_INFOPOPUP_WINDOW,
+ AUDGUI_INFO_WINDOW,
+ AUDGUI_JUMP_TO_TIME_WINDOW,
+ AUDGUI_JUMP_TO_TRACK_WINDOW,
+ AUDGUI_PLAYLIST_EXPORT_WINDOW,
+ AUDGUI_PLAYLIST_IMPORT_WINDOW,
+ AUDGUI_PLAYLIST_MANAGER_WINDOW,
+ AUDGUI_QUEUE_MANAGER_WINDOW,
+ AUDGUI_URL_OPENER_WINDOW,
+ AUDGUI_NUM_UNIQUE_WINDOWS
+};
-/* ui_playlist_manager.c */
-void audgui_playlist_manager_cleanup (void);
+void audgui_show_unique_window (int id, GtkWidget * widget);
+bool_t audgui_reshow_unique_window (int id);
+void audgui_hide_unique_window (int id);
-/* url-opener.c */
-void audgui_url_opener_cleanup (void);
+void audgui_init (AudAPITable * table, int version);
+void audgui_cleanup (void);
-/* util.c */
+/* pixbufs.c */
void audgui_pixbuf_uncache (void);
+
+#endif /* AUDGUI_INIT_H */
diff --git a/src/libaudgui/jump-to-time.c b/src/libaudgui/jump-to-time.c
index f551a07..357b422 100644
--- a/src/libaudgui/jump-to-time.c
+++ b/src/libaudgui/jump-to-time.c
@@ -1,6 +1,6 @@
/*
* jump-to-time.c
- * Copyright 2012 John Lindgren
+ * Copyright 2012-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -22,67 +22,43 @@
#include <audacious/drct.h>
#include <audacious/i18n.h>
+#include <libaudcore/audstrings.h>
#include "init.h"
#include "libaudgui.h"
+#include "libaudgui-gtk.h"
-static GtkWidget * window;
-
-static void response_cb (GtkWidget * dialog, int response)
+static void jump_cb (void * entry)
{
- if (response == GTK_RESPONSE_ACCEPT)
- {
- GtkWidget * entry = g_object_get_data ((GObject *) dialog, "entry");
- const char * text = gtk_entry_get_text ((GtkEntry *) entry);
- unsigned minutes, seconds;
-
- if (sscanf (text, "%u:%u", & minutes, & seconds) == 2 && aud_drct_get_playing ())
- aud_drct_seek ((minutes * 60 + seconds) * 1000);
- }
+ const char * text = gtk_entry_get_text ((GtkEntry *) entry);
+ unsigned minutes, seconds;
- gtk_widget_destroy (dialog);
+ if (sscanf (text, "%u:%u", & minutes, & seconds) == 2 && aud_drct_get_playing ())
+ aud_drct_seek ((minutes * 60 + seconds) * 1000);
}
EXPORT void audgui_jump_to_time (void)
{
- if (window)
- gtk_widget_destroy (window);
+ if (audgui_reshow_unique_window (AUDGUI_JUMP_TO_TIME_WINDOW))
+ return;
- window = gtk_dialog_new_with_buttons (_("Jump to Time"), NULL, 0,
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, GTK_STOCK_JUMP_TO,
- GTK_RESPONSE_ACCEPT, NULL);
- gtk_widget_set_size_request (window, 200, -1);
- gtk_window_set_resizable ((GtkWindow *) window, FALSE);
- gtk_dialog_set_default_response ((GtkDialog *) window, GTK_RESPONSE_ACCEPT);
+ GtkWidget * entry = gtk_entry_new ();
+ gtk_entry_set_activates_default ((GtkEntry *) entry, TRUE);
- GtkWidget * box = gtk_dialog_get_content_area ((GtkDialog *) window);
+ GtkWidget * button1 = audgui_button_new (_("_Jump"), "go-jump", jump_cb, entry);
+ GtkWidget * button2 = audgui_button_new (_("_Cancel"), "process-stop", NULL, NULL);
- GtkWidget * label = gtk_label_new (_("Enter time (minutes:seconds):"));
- gtk_misc_set_alignment ((GtkMisc *) label, 0, 0);
- gtk_box_pack_start ((GtkBox *) box, label, FALSE, FALSE, 0);
+ GtkWidget * dialog = audgui_dialog_new (GTK_MESSAGE_OTHER,
+ _("Jump to Time"), _("Enter time (minutes:seconds):"), button1, button2);
- GtkWidget * entry = gtk_entry_new ();
- gtk_entry_set_activates_default ((GtkEntry *) entry, TRUE);
- gtk_box_pack_start ((GtkBox *) box, entry, FALSE, FALSE, 0);
+ audgui_dialog_add_widget (dialog, entry);
if (aud_drct_get_playing ())
{
- char buf[16];
int time = aud_drct_get_time () / 1000;
- snprintf (buf, sizeof buf, "%u:%02u", time / 60, time % 60);
+ SPRINTF (buf, "%u:%02u", time / 60, time % 60);
gtk_entry_set_text ((GtkEntry *) entry, buf);
}
- g_object_set_data ((GObject *) window, "entry", entry);
-
- g_signal_connect (window, "response", (GCallback) response_cb, NULL);
- g_signal_connect (window, "destroy", (GCallback) gtk_widget_destroyed, & window);
-
- gtk_widget_show_all (window);
-}
-
-void audgui_jump_to_time_cleanup (void)
-{
- if (window)
- gtk_widget_destroy (window);
+ audgui_show_unique_window (AUDGUI_JUMP_TO_TIME_WINDOW, dialog);
}
diff --git a/src/libaudgui/libaudgui-gtk.h b/src/libaudgui/libaudgui-gtk.h
index aee1c2a..7e65a03 100644
--- a/src/libaudgui/libaudgui-gtk.h
+++ b/src/libaudgui/libaudgui-gtk.h
@@ -1,6 +1,6 @@
/*
* libaudgui-gtk.h
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2012 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -24,33 +24,31 @@
#include <gtk/gtk.h>
#include <libaudcore/core.h>
-/* effects-menu.c */
-GtkWidget * audgui_create_effects_menu (void);
-GtkWidget * audgui_create_vis_menu (void);
+typedef void (* AudguiCallback) (void * data);
-/* iface-menu.c */
-GtkWidget * audgui_create_iface_menu (void);
+/* pixbufs.c */
+GdkPixbuf * audgui_pixbuf_from_data (const void * data, int64_t size);
+GdkPixbuf * audgui_pixbuf_fallback (void);
+void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, int size);
+GdkPixbuf * audgui_pixbuf_request (const char * filename);
+GdkPixbuf * audgui_pixbuf_request_current (void);
+
+/* scaled-image.c */
+GtkWidget * audgui_scaled_image_new (GdkPixbuf * pixbuf);
+void audgui_scaled_image_set (GtkWidget * widget, GdkPixbuf * pixbuf);
/* util.c */
int audgui_get_digit_width (GtkWidget * widget);
void audgui_get_mouse_coords (GtkWidget * widget, int * x, int * y);
-void audgui_hide_on_delete (GtkWidget * widget);
-void audgui_hide_on_escape (GtkWidget * widget);
void audgui_destroy_on_escape (GtkWidget * widget);
void audgui_simple_message (GtkWidget * * widget, GtkMessageType type,
const char * title, const char * text);
-void audgui_connect_check_box (GtkWidget * box, bool_t * setting);
-GdkPixbuf * audgui_pixbuf_from_data (const void * data, int64_t size);
-GdkPixbuf * audgui_pixbuf_fallback (void);
-void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, int size);
-
-/* non-blocking (like the aud_art_request_* functions) */
-GdkPixbuf * audgui_pixbuf_request (const char * filename);
-GdkPixbuf * audgui_pixbuf_request_current (void);
+GtkWidget * audgui_button_new (const char * text, const char * icon,
+ AudguiCallback callback, void * data);
-/* deprecated */
-GdkPixbuf * audgui_pixbuf_for_current (void) __attribute ((deprecated));
-GdkPixbuf * audgui_pixbuf_for_entry (int playlist, int entry) __attribute ((deprecated));
+GtkWidget * audgui_dialog_new (GtkMessageType type, const char * title,
+ const char * text, GtkWidget * button1, GtkWidget * button2);
+void audgui_dialog_add_widget (GtkWidget * dialog, GtkWidget * widget);
#endif
diff --git a/src/libaudgui/libaudgui.h b/src/libaudgui/libaudgui.h
index 686fe24..db88ed1 100644
--- a/src/libaudgui/libaudgui.h
+++ b/src/libaudgui/libaudgui.h
@@ -1,7 +1,7 @@
/*
* libaudgui.h
- * Copyright 2007-2009 Giacomo Lozito and Tomasz MoƄ
-
+ * Copyright 2007-2013 Giacomo Lozito, Tomasz MoƄ, and John Lindgren
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
@@ -20,26 +20,20 @@
#ifndef LIBAUDGUI_H
#define LIBAUDGUI_H
+#include <stdint.h>
#include <libaudcore/core.h>
-/* macro defines for Audacious stock icons */
-#define AUD_STOCK_AUDACIOUS "aud-audacious"
-#define AUD_STOCK_PLAYLIST "aud-playlist"
-#define AUD_STOCK_PLUGIN "aud-plugin"
-#define AUD_STOCK_QUEUETOGGLE "aud-queuetoggle"
-
-void audgui_register_stock_icons(void);
-
void audgui_show_add_url_window(bool_t open);
void audgui_jump_to_track(void);
void audgui_jump_to_track_hide(void);
-void audgui_run_filebrowser(bool_t clear_pl_on_ok);
+void audgui_run_filebrowser(bool_t open);
void audgui_hide_filebrowser(void);
/* about.c */
void audgui_show_about_window (void);
+void audgui_hide_about_window (void);
/* confirm.c */
void audgui_confirm_playlist_delete (int playlist);
@@ -78,6 +72,6 @@ void audgui_urilist_insert (int playlist, int position, const char * list);
char * audgui_urilist_create_from_selected (int playlist);
/* util.c */
-void audgui_set_default_icon (void);
+void audgui_format_time (char * buf, int bufsize, int64_t milliseconds);
#endif /* LIBAUDGUI_H */
diff --git a/src/libaudgui/list.c b/src/libaudgui/list.c
index 751a7d5..0fcc269 100644
--- a/src/libaudgui/list.c
+++ b/src/libaudgui/list.c
@@ -1,6 +1,6 @@
/*
* list.c
- * Copyright 2011-2012 John Lindgren and MichaƂ Lipski
+ * Copyright 2011-2013 John Lindgren and MichaƂ Lipski
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
diff --git a/src/libaudgui/menu.c b/src/libaudgui/menu.c
new file mode 100644
index 0000000..6fe882f
--- /dev/null
+++ b/src/libaudgui/menu.c
@@ -0,0 +1,134 @@
+/*
+ * menu.c
+ * Copyright 2011-2014 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include "menu.h"
+
+#include <audacious/i18n.h>
+#include <audacious/misc.h>
+#include <libaudcore/hook.h>
+
+/* we still use GtkImageMenuItem until there is a good alternative */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+static GtkWidget * image_menu_item_new (const char * text, const char * icon)
+{
+ GtkWidget * widget = gtk_image_menu_item_new_with_mnemonic (text);
+
+ if (icon)
+ {
+ GtkWidget * image = gtk_image_new_from_icon_name (icon, GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image ((GtkImageMenuItem *) widget, image);
+ }
+
+ return widget;
+}
+
+#pragma GCC diagnostic pop
+
+static void toggled_cb (GtkCheckMenuItem * check, const AudguiMenuItem * item)
+{
+ bool_t on = gtk_check_menu_item_get_active (check);
+
+ if (aud_get_bool (item->csect, item->cname) == on)
+ return;
+
+ aud_set_bool (item->csect, item->cname, on);
+
+ if (item->func)
+ item->func ();
+}
+
+static void hook_cb (void * data, GtkWidget * check)
+{
+ const AudguiMenuItem * item = g_object_get_data ((GObject *) check, "item");
+ gtk_check_menu_item_set_active ((GtkCheckMenuItem *) check, aud_get_bool
+ (item->csect, item->cname));
+}
+
+static void unhook_cb (GtkCheckMenuItem * check, const AudguiMenuItem * item)
+{
+ hook_dissociate_full (item->hook, (HookFunction) hook_cb, check);
+}
+
+EXPORT GtkWidget * audgui_menu_item_new_with_domain
+ (const AudguiMenuItem * item, GtkAccelGroup * accel, const char * domain)
+{
+ const char * name = domain ? dgettext (domain, item->name) : item->name;
+ GtkWidget * widget = NULL;
+
+ if (name && item->func && ! item->cname) /* normal widget */
+ {
+ widget = image_menu_item_new (name, item->icon);
+ g_signal_connect (widget, "activate", item->func, NULL);
+ }
+ else if (name && item->cname) /* toggle widget */
+ {
+ widget = gtk_check_menu_item_new_with_mnemonic (name);
+ gtk_check_menu_item_set_active ((GtkCheckMenuItem *) widget,
+ aud_get_bool (item->csect, item->cname));
+ g_signal_connect (widget, "toggled", (GCallback) toggled_cb, (void *) item);
+
+ if (item->hook)
+ {
+ g_object_set_data ((GObject *) widget, "item", (void *) item);
+ hook_associate (item->hook, (HookFunction) hook_cb, widget);
+ g_signal_connect (widget, "destroy", (GCallback) unhook_cb, (void *) item);
+ }
+ }
+ else if (name && (item->items || item->get_sub)) /* submenu */
+ {
+ widget = image_menu_item_new (name, item->icon);
+
+ GtkWidget * sub;
+
+ if (item->get_sub)
+ sub = item->get_sub ();
+ else
+ {
+ sub = gtk_menu_new ();
+ audgui_menu_init_with_domain (sub, item->items, item->n_items, accel, domain);
+ }
+
+ gtk_menu_item_set_submenu ((GtkMenuItem *) widget, sub);
+ }
+ else if (item->sep) /* separator */
+ widget = gtk_separator_menu_item_new ();
+
+ if (widget && accel && item->key)
+ gtk_widget_add_accelerator (widget, "activate", accel, item->key,
+ item->mod, GTK_ACCEL_VISIBLE);
+
+ return widget;
+}
+
+EXPORT void audgui_menu_init_with_domain (GtkWidget * shell,
+ const AudguiMenuItem * items, int n_items, GtkAccelGroup * accel,
+ const char * domain)
+{
+ for (int i = 0; i < n_items; i ++)
+ {
+ GtkWidget * widget = audgui_menu_item_new_with_domain (& items[i], accel, domain);
+ if (! widget)
+ continue;
+
+ gtk_widget_show (widget);
+ gtk_menu_shell_append ((GtkMenuShell *) shell, widget);
+ }
+}
diff --git a/src/libaudgui/menu.h b/src/libaudgui/menu.h
new file mode 100644
index 0000000..fc27ae5
--- /dev/null
+++ b/src/libaudgui/menu.h
@@ -0,0 +1,62 @@
+/*
+ * menu.h
+ * Copyright 2011-2014 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef AUDGUI_MENU_H
+#define AUDGUI_MENU_H
+
+#include <gtk/gtk.h>
+#include <libaudcore/core.h>
+
+typedef struct _AudguiMenuItem {
+ const char * name;
+ const char * icon;
+ unsigned key;
+ GdkModifierType mod;
+
+ /* for normal items */
+ void (* func) (void);
+
+ /* for toggle items */
+ const char * csect;
+ const char * cname;
+ const char * hook;
+
+ /* for submenus */
+ const struct _AudguiMenuItem * items;
+ int n_items;
+
+ /* for custom submenus */
+ GtkWidget * (* get_sub) (void);
+
+ /* for separators */
+ bool_t sep;
+} AudguiMenuItem;
+
+/* use NULL for domain to skip translation */
+GtkWidget * audgui_menu_item_new_with_domain (const AudguiMenuItem * item,
+ GtkAccelGroup * accel, const char * domain);
+
+void audgui_menu_init_with_domain (GtkWidget * shell,
+ const AudguiMenuItem * items, int n_items, GtkAccelGroup * accel,
+ const char * domain);
+
+#define audgui_menu_item_new(i, a) audgui_menu_item_new_with_domain (i, a, PACKAGE)
+#define audgui_menu_init(s, i, n, a) audgui_menu_init_with_domain (s, i, n, a, PACKAGE)
+
+#endif /* AUDGUI_MENU_H */
diff --git a/src/libaudgui/pixbufs.c b/src/libaudgui/pixbufs.c
new file mode 100644
index 0000000..550dce0
--- /dev/null
+++ b/src/libaudgui/pixbufs.c
@@ -0,0 +1,141 @@
+/*
+ * pixbufs.c
+ * Copyright 2010-2012 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+#include <audacious/debug.h>
+#include <audacious/misc.h>
+#include <audacious/playlist.h>
+#include <libaudcore/audstrings.h>
+
+#include "libaudgui-gtk.h"
+
+static GdkPixbuf * current_pixbuf;
+
+EXPORT GdkPixbuf * audgui_pixbuf_fallback (void)
+{
+ static GdkPixbuf * fallback = NULL;
+
+ if (! fallback)
+ {
+ const char * data_dir = aud_get_path (AUD_PATH_DATA_DIR);
+ SCONCAT2 (path, data_dir, "/images/album.png");
+ fallback = gdk_pixbuf_new_from_file (path, NULL);
+ }
+
+ if (fallback)
+ g_object_ref ((GObject *) fallback);
+
+ return fallback;
+}
+
+void audgui_pixbuf_uncache (void)
+{
+ if (current_pixbuf)
+ {
+ g_object_unref ((GObject *) current_pixbuf);
+ current_pixbuf = NULL;
+ }
+}
+
+EXPORT void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, int size)
+{
+ int width = gdk_pixbuf_get_width (* pixbuf);
+ int height = gdk_pixbuf_get_height (* pixbuf);
+
+ if (width <= size && height <= size)
+ return;
+
+ if (width > height)
+ {
+ height = size * height / width;
+ width = size;
+ }
+ else
+ {
+ width = size * width / height;
+ height = size;
+ }
+
+ if (width < 1)
+ width = 1;
+ if (height < 1)
+ height = 1;
+
+ GdkPixbuf * pixbuf2 = gdk_pixbuf_scale_simple (* pixbuf, width, height, GDK_INTERP_BILINEAR);
+ g_object_unref (* pixbuf);
+ * pixbuf = pixbuf2;
+}
+
+EXPORT GdkPixbuf * audgui_pixbuf_request (const char * filename)
+{
+ const void * data;
+ int64_t size;
+
+ aud_art_request_data (filename, & data, & size);
+ if (! data)
+ return NULL;
+
+ GdkPixbuf * p = audgui_pixbuf_from_data (data, size);
+
+ aud_art_unref (filename);
+ return p;
+}
+
+EXPORT GdkPixbuf * audgui_pixbuf_request_current (void)
+{
+ if (! current_pixbuf)
+ {
+ int list = aud_playlist_get_playing ();
+ int entry = aud_playlist_get_position (list);
+ if (entry < 0)
+ return NULL;
+
+ char * filename = aud_playlist_entry_get_filename (list, entry);
+ current_pixbuf = audgui_pixbuf_request (filename);
+ str_unref (filename);
+ }
+
+ if (current_pixbuf)
+ g_object_ref ((GObject *) current_pixbuf);
+
+ return current_pixbuf;
+}
+
+EXPORT GdkPixbuf * audgui_pixbuf_from_data (const void * data, int64_t size)
+{
+ GdkPixbuf * pixbuf = NULL;
+ GdkPixbufLoader * loader = gdk_pixbuf_loader_new ();
+ GError * error = NULL;
+
+ if (gdk_pixbuf_loader_write (loader, data, size, & error) &&
+ gdk_pixbuf_loader_close (loader, & error))
+ {
+ if ((pixbuf = gdk_pixbuf_loader_get_pixbuf (loader)))
+ g_object_ref (pixbuf);
+ }
+ else
+ {
+ AUDDBG ("error while loading pixbuf: %s\n", error->message);
+ g_error_free (error);
+ }
+
+ g_object_unref (loader);
+ return pixbuf;
+}
diff --git a/src/libaudgui/playlists.c b/src/libaudgui/playlists.c
index 5a7ef1d..fa3fa05 100644
--- a/src/libaudgui/playlists.c
+++ b/src/libaudgui/playlists.c
@@ -1,6 +1,6 @@
/*
* playlists.c
- * Copyright 2011 John Lindgren
+ * Copyright 2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -22,87 +22,163 @@
#include <audacious/i18n.h>
#include <audacious/misc.h>
#include <audacious/playlist.h>
+#include <libaudcore/audstrings.h>
#include <libaudcore/vfs.h>
+#include "init.h"
#include "libaudgui.h"
+#include "libaudgui-gtk.h"
-static char * select_file (bool_t save, const char * default_filename)
+typedef struct
{
- GtkWidget * dialog = gtk_file_chooser_dialog_new (save ?
- _("Export Playlist") : _("Import Playlist"), NULL, save ?
- GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL);
+ bool_t save;
+ int list_id;
+ char * filename;
+ GtkWidget * selector, * confirm;
+}
+ImportExportJob;
- if (default_filename)
- gtk_file_chooser_set_uri ((GtkFileChooser *) dialog, default_filename);
+/* "destroy" callback; do not call directly */
+static void cleanup_job (void * data)
+{
+ ImportExportJob * job = data;
- gtk_dialog_add_button ((GtkDialog *) dialog, GTK_STOCK_CANCEL,
- GTK_RESPONSE_REJECT);
- gtk_dialog_add_button ((GtkDialog *) dialog, save ? GTK_STOCK_SAVE :
- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT);
+ char * folder = gtk_file_chooser_get_current_folder_uri ((GtkFileChooser *) job->selector);
- gtk_dialog_set_default_response ((GtkDialog *) dialog, GTK_RESPONSE_ACCEPT);
+ if (folder)
+ aud_set_str ("audgui", "playlist_path", folder);
- char * path = aud_get_string ("audgui", "playlist_path");
- if (path[0])
- gtk_file_chooser_set_current_folder_uri ((GtkFileChooser *) dialog, path);
- g_free (path);
+ g_free (folder);
- char * filename = NULL;
- if (gtk_dialog_run ((GtkDialog *) dialog) == GTK_RESPONSE_ACCEPT)
- filename = gtk_file_chooser_get_uri ((GtkFileChooser *) dialog);
+ if (job->confirm)
+ gtk_widget_destroy (job->confirm);
- path = gtk_file_chooser_get_current_folder_uri ((GtkFileChooser *) dialog);
- aud_set_string ("audgui", "playlist_path", path);
- g_free (path);
+ g_free (job->filename);
+ g_slice_free (ImportExportJob, job);
+}
- gtk_widget_destroy (dialog);
- return filename;
+static void finish_job (void * data)
+{
+ ImportExportJob * job = data;
+ int list = aud_playlist_by_unique_id (job->list_id);
+
+ if (list >= 0)
+ {
+ aud_playlist_set_filename (list, job->filename);
+
+ if (job->save)
+ aud_playlist_save (list, job->filename);
+ else
+ {
+ aud_playlist_entry_delete (list, 0, aud_playlist_entry_count (list));
+ aud_playlist_entry_insert (list, 0, job->filename, NULL, FALSE);
+ }
+ }
+
+ gtk_widget_destroy (job->selector);
}
-static bool_t confirm_overwrite (const char * filename)
+static void confirm_overwrite (ImportExportJob * job)
{
- GtkWidget * dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_YES_NO, _("Overwrite %s?"), filename);
+ if (job->confirm)
+ gtk_widget_destroy (job->confirm);
+
+ SPRINTF (message, _("Overwrite %s?"), job->filename);
+
+ GtkWidget * button1 = audgui_button_new (_("_Overwrite"), "document-save", finish_job, job);
+ GtkWidget * button2 = audgui_button_new (_("_Cancel"), "process-stop", NULL, NULL);
+
+ job->confirm = audgui_dialog_new (GTK_MESSAGE_QUESTION,
+ _("Confirm Overwrite"), message, button1, button2);
- int result = gtk_dialog_run ((GtkDialog *) dialog);
- gtk_widget_destroy (dialog);
- return (result == GTK_RESPONSE_YES);
+ g_signal_connect (job->confirm, "destroy", (GCallback) gtk_widget_destroyed, & job->confirm);
+
+ gtk_widget_show_all (job->confirm);
}
-EXPORT void audgui_import_playlist (void)
+static void check_overwrite (void * data)
{
- int list = aud_playlist_get_active ();
- int id = aud_playlist_get_unique_id (list);
+ ImportExportJob * job = data;
- char * filename = select_file (FALSE, NULL);
- if (! filename)
- return;
+ job->filename = gtk_file_chooser_get_uri ((GtkFileChooser *) job->selector);
- if ((list = aud_playlist_by_unique_id (id)) < 0)
+ if (! job->filename)
return;
- aud_playlist_entry_delete (list, 0, aud_playlist_entry_count (list));
- aud_playlist_entry_insert (list, 0, filename, NULL, FALSE);
- aud_playlist_set_filename (list, filename);
- g_free (filename);
+ if (job->save && vfs_file_test (job->filename, G_FILE_TEST_EXISTS))
+ confirm_overwrite (job);
+ else
+ finish_job (data);
}
-EXPORT void audgui_export_playlist (void)
+static void create_selector (ImportExportJob * job, const char * filename, const char * folder)
+{
+ const char * title, * verb, * icon;
+ GtkFileChooserAction action;
+
+ if (job->save)
+ {
+ title = _("Export Playlist");
+ verb = _("_Export");
+ icon = "document-save";
+ action = GTK_FILE_CHOOSER_ACTION_SAVE;
+ }
+ else
+ {
+ title = _("Import Playlist");
+ verb = _("_Import");
+ icon = "document-open";
+ action = GTK_FILE_CHOOSER_ACTION_OPEN;
+ }
+
+ job->selector = gtk_file_chooser_dialog_new (title, NULL, action, NULL, NULL);
+
+ if (filename)
+ gtk_file_chooser_set_uri ((GtkFileChooser *) job->selector, filename);
+ else if (folder)
+ gtk_file_chooser_set_current_folder_uri ((GtkFileChooser *) job->selector, folder);
+
+ GtkWidget * button1 = audgui_button_new (verb, icon, check_overwrite, job);
+ GtkWidget * button2 = audgui_button_new (_("_Cancel"), "process-stop",
+ (AudguiCallback) gtk_widget_destroy, job->selector);
+
+ gtk_dialog_add_action_widget ((GtkDialog *) job->selector, button2, GTK_RESPONSE_NONE);
+ gtk_dialog_add_action_widget ((GtkDialog *) job->selector, button1, GTK_RESPONSE_NONE);
+
+ gtk_widget_set_can_default (button1, TRUE);
+ gtk_widget_grab_default (button1);
+
+ g_signal_connect_swapped (job->selector, "destroy", (GCallback) cleanup_job, job);
+
+ gtk_widget_show_all (job->selector);
+}
+
+static GtkWidget * start_job (bool_t save)
{
int list = aud_playlist_get_active ();
- int id = aud_playlist_get_unique_id (list);
- char * def = aud_playlist_get_filename (list);
- char * filename = select_file (TRUE, def);
- str_unref (def);
+ char * filename = aud_playlist_get_filename (list);
+ char * folder = aud_get_str ("audgui", "playlist_path");
- if (! filename || (vfs_file_test (filename, G_FILE_TEST_EXISTS) &&
- ! confirm_overwrite (filename)))
- return;
+ ImportExportJob * job = g_slice_new0 (ImportExportJob);
- if ((list = aud_playlist_by_unique_id (id)) < 0)
- return;
+ job->save = save;
+ job->list_id = aud_playlist_get_unique_id (list);
+
+ create_selector (job, filename, folder[0] ? folder : NULL);
+
+ str_unref (filename);
+ str_unref (folder);
+
+ return job->selector;
+}
- aud_playlist_save (list, filename);
- g_free (filename);
+EXPORT void audgui_import_playlist (void)
+{
+ audgui_show_unique_window (AUDGUI_PLAYLIST_IMPORT_WINDOW, start_job (FALSE));
+}
+
+EXPORT void audgui_export_playlist (void)
+{
+ audgui_show_unique_window (AUDGUI_PLAYLIST_EXPORT_WINDOW, start_job (TRUE));
}
diff --git a/src/libaudgui/queue-manager.c b/src/libaudgui/queue-manager.c
index 60e66c6..8718365 100644
--- a/src/libaudgui/queue-manager.c
+++ b/src/libaudgui/queue-manager.c
@@ -1,6 +1,6 @@
/*
* queue-manager.c
- * Copyright 2011 John Lindgren
+ * Copyright 2011-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -26,17 +26,13 @@
#include "init.h"
#include "libaudgui.h"
+#include "libaudgui-gtk.h"
#include "list.h"
enum {
COLUMN_ENTRY,
COLUMN_TITLE};
-#define RESPONSE_REMOVE 1
-
-static GtkWidget * qm_win;
-static GtkWidget * qm_list;
-
static void get_value (void * user, int row, int column, GValue * value)
{
int list = aud_playlist_get_active ();
@@ -110,7 +106,7 @@ static const AudguiListCallbacks callbacks = {
.select_all = select_all,
.shift_rows = shift_rows};
-static void remove_selected (void)
+static void remove_selected (void * unused)
{
int list = aud_playlist_get_active ();
int count = aud_playlist_queue_count (list);
@@ -132,6 +128,8 @@ static void remove_selected (void)
static void update_hook (void * data, void * user)
{
+ GtkWidget * qm_list = user;
+
int oldrows = audgui_list_row_count (qm_list);
int newrows = aud_playlist_queue_count (aud_playlist_get_active ());
int focus = audgui_list_get_focus (qm_list);
@@ -152,9 +150,6 @@ static void destroy_cb (void)
{
hook_dissociate ("playlist activate", update_hook);
hook_dissociate ("playlist update", update_hook);
-
- qm_win = NULL;
- qm_list = NULL;
}
static bool_t keypress_cb (GtkWidget * widget, GdkEventKey * event)
@@ -162,39 +157,19 @@ static bool_t keypress_cb (GtkWidget * widget, GdkEventKey * event)
if (event->keyval == GDK_KEY_A && (event->state & GDK_CONTROL_MASK))
select_all (NULL, TRUE);
else if (event->keyval == GDK_KEY_Delete)
- remove_selected ();
+ remove_selected (NULL);
else if (event->keyval == GDK_KEY_Escape)
- gtk_widget_destroy (qm_win);
+ gtk_widget_destroy (widget);
else
return FALSE;
return TRUE;
}
-static void response_cb (GtkDialog * dialog, int response)
-{
- switch (response)
- {
- case RESPONSE_REMOVE:;
- remove_selected ();
- break;
- case GTK_RESPONSE_CLOSE:
- gtk_widget_destroy (qm_win);
- break;
- }
-}
-
-EXPORT void audgui_queue_manager_show (void)
+static GtkWidget * create_queue_manager (void)
{
- if (qm_win)
- {
- gtk_window_present ((GtkWindow *) qm_win);
- return;
- }
-
- qm_win = gtk_dialog_new_with_buttons (_("Queue Manager"), NULL, 0,
- GTK_STOCK_REMOVE, RESPONSE_REMOVE, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
- NULL);
+ GtkWidget * qm_win = gtk_dialog_new ();
+ gtk_window_set_title ((GtkWindow *) qm_win, _("Queue Manager"));
gtk_window_set_default_size ((GtkWindow *) qm_win, 400, 250);
GtkWidget * vbox = gtk_dialog_get_content_area ((GtkDialog *) qm_win);
@@ -204,24 +179,30 @@ EXPORT void audgui_queue_manager_show (void)
gtk_box_pack_start ((GtkBox *) vbox, scrolled, TRUE, TRUE, 0);
int count = aud_playlist_queue_count (aud_playlist_get_active ());
- qm_list = audgui_list_new (& callbacks, NULL, count);
+ GtkWidget * qm_list = audgui_list_new (& callbacks, NULL, count);
gtk_tree_view_set_headers_visible ((GtkTreeView *) qm_list, FALSE);
audgui_list_add_column (qm_list, NULL, 0, G_TYPE_INT, 7);
audgui_list_add_column (qm_list, NULL, 1, G_TYPE_STRING, -1);
gtk_container_add ((GtkContainer *) scrolled, qm_list);
- hook_associate ("playlist activate", update_hook, NULL);
- hook_associate ("playlist update", update_hook, NULL);
+ GtkWidget * button1 = audgui_button_new (_("_Unqueue"), "list-remove", remove_selected, NULL);
+ GtkWidget * button2 = audgui_button_new (_("_Close"), "window-close",
+ (AudguiCallback) gtk_widget_destroy, qm_win);
+
+ gtk_dialog_add_action_widget ((GtkDialog *) qm_win, button1, GTK_RESPONSE_NONE);
+ gtk_dialog_add_action_widget ((GtkDialog *) qm_win, button2, GTK_RESPONSE_NONE);
+
+ hook_associate ("playlist activate", update_hook, qm_list);
+ hook_associate ("playlist update", update_hook, qm_list);
g_signal_connect (qm_win, "destroy", (GCallback) destroy_cb, NULL);
g_signal_connect (qm_win, "key-press-event", (GCallback) keypress_cb, NULL);
- g_signal_connect (qm_win, "response", (GCallback) response_cb, NULL);
- gtk_widget_show_all (qm_win);
+ return qm_win;
}
-void audgui_queue_manager_cleanup (void)
+EXPORT void audgui_queue_manager_show (void)
{
- if (qm_win)
- gtk_widget_destroy (qm_win);
+ if (! audgui_reshow_unique_window (AUDGUI_QUEUE_MANAGER_WINDOW))
+ audgui_show_unique_window (AUDGUI_QUEUE_MANAGER_WINDOW, create_queue_manager ());
}
diff --git a/src/libaudgui/scaled-image.c b/src/libaudgui/scaled-image.c
new file mode 100644
index 0000000..70adcce
--- /dev/null
+++ b/src/libaudgui/scaled-image.c
@@ -0,0 +1,114 @@
+/*
+ * scaled-image.c
+ * Copyright 2012-2013 John Lindgren
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#include <libaudgui/libaudgui-gtk.h>
+
+static GdkPixbuf * get_scaled (GtkWidget * widget, int maxwidth, int maxheight)
+{
+ GdkPixbuf * unscaled = g_object_get_data ((GObject *) widget, "pixbuf-unscaled");
+
+ if (! unscaled)
+ return NULL;
+
+ int width = gdk_pixbuf_get_width (unscaled);
+ int height = gdk_pixbuf_get_height (unscaled);
+
+ if (width > maxwidth || height > maxheight)
+ {
+ if (width * maxheight > height * maxwidth)
+ {
+ height = height * maxwidth / width;
+ width = maxwidth;
+ }
+ else
+ {
+ width = width * maxheight / height;
+ height = maxheight;
+ }
+ }
+
+ GdkPixbuf * scaled = g_object_get_data ((GObject *) widget, "pixbuf-scaled");
+
+ if (scaled)
+ {
+ if (gdk_pixbuf_get_width (scaled) == width && gdk_pixbuf_get_height (scaled) == height)
+ return scaled;
+
+ g_object_unref (scaled);
+ }
+
+ scaled = gdk_pixbuf_scale_simple (unscaled, width, height, GDK_INTERP_BILINEAR);
+ g_object_set_data ((GObject *) widget, "pixbuf-scaled", scaled);
+
+ return scaled;
+}
+
+static bool_t draw_cb (GtkWidget * widget, cairo_t * cr)
+{
+ GdkRectangle rect;
+ gtk_widget_get_allocation (widget, & rect);
+
+ GdkPixbuf * scaled = get_scaled (widget, rect.width, rect.height);
+
+ if (scaled)
+ {
+ int x = (rect.width - gdk_pixbuf_get_width (scaled)) / 2;
+ int y = (rect.height - gdk_pixbuf_get_height (scaled)) / 2;
+ gdk_cairo_set_source_pixbuf (cr, scaled, x, y);
+ cairo_paint (cr);
+ }
+
+ return TRUE;
+}
+
+EXPORT void audgui_scaled_image_set (GtkWidget * widget, GdkPixbuf * pixbuf)
+{
+ GdkPixbuf * old;
+
+ if ((old = g_object_get_data ((GObject *) widget, "pixbuf-unscaled")))
+ g_object_unref (old);
+ if ((old = g_object_get_data ((GObject *) widget, "pixbuf-scaled")))
+ g_object_unref (old);
+
+ if (pixbuf)
+ g_object_ref (pixbuf);
+
+ g_object_set_data ((GObject *) widget, "pixbuf-unscaled", pixbuf);
+ g_object_set_data ((GObject *) widget, "pixbuf-scaled", NULL);
+
+ if (! gtk_widget_in_destruction (widget))
+ gtk_widget_queue_draw (widget);
+}
+
+static void destroy_cb (GtkWidget * widget)
+{
+ audgui_scaled_image_set (widget, NULL);
+}
+
+EXPORT GtkWidget * audgui_scaled_image_new (GdkPixbuf * pixbuf)
+{
+ GtkWidget * widget = gtk_drawing_area_new ();
+
+ g_signal_connect (widget, "draw", (GCallback) draw_cb, NULL);
+ g_signal_connect (widget, "destroy", (GCallback) destroy_cb, NULL);
+
+ audgui_scaled_image_set (widget, pixbuf);
+
+ return widget;
+}
diff --git a/src/libaudgui/ui_fileopener.c b/src/libaudgui/ui_fileopener.c
index eb1eea0..ae0ad1f 100644
--- a/src/libaudgui/ui_fileopener.c
+++ b/src/libaudgui/ui_fileopener.c
@@ -1,6 +1,6 @@
/*
* ui_fileopener.c
- * Copyright 2007-2011 Michael FĂ€rber and John Lindgren
+ * Copyright 2007-2013 Michael FĂ€rber and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -23,175 +23,133 @@
#include <audacious/drct.h>
#include <audacious/misc.h>
+#include "init.h"
#include "libaudgui.h"
#include "libaudgui-gtk.h"
-static void filebrowser_add_files (GtkFileChooser * browser, GSList * files,
- bool_t play)
+static Index * get_files (GtkWidget * chooser)
{
- Index * list = index_new ();
+ Index * index = index_new ();
+ GSList * list = gtk_file_chooser_get_uris ((GtkFileChooser *) chooser);
- for (GSList * node = files; node; node = node->next)
- index_append (list, str_get (node->data));
+ for (GSList * node = list; node; node = node->next)
+ index_insert (index, -1, str_get (node->data));
- if (play)
- aud_drct_pl_open_list (list);
- else
- aud_drct_pl_add_list (list, -1);
-
- char * path = gtk_file_chooser_get_current_folder (browser);
- if (path)
- {
- aud_set_string ("audgui", "filesel_path", path);
- g_free (path);
- }
+ g_slist_free_full (list, g_free);
+ return index;
}
-static void
-action_button_cb(GtkWidget *widget, gpointer data)
+static void open_cb (void * data)
{
- GtkWidget *window = g_object_get_data(data, "window");
- GtkWidget *chooser = g_object_get_data(data, "chooser");
- GtkWidget *toggle = g_object_get_data(data, "toggle-button");
-
- GSList * files = gtk_file_chooser_get_uris ((GtkFileChooser *) chooser);
-
- bool_t play = GPOINTER_TO_INT (g_object_get_data (data, "play-button"));
- filebrowser_add_files ((GtkFileChooser *) chooser, files, play);
+ GtkWidget * chooser = data;
+ Index * files = get_files (chooser);
+ bool_t open = GPOINTER_TO_INT (g_object_get_data ((GObject *) chooser, "do-open"));
- g_slist_foreach(files, (GFunc) g_free, NULL);
- g_slist_free(files);
+ if (open)
+ aud_drct_pl_open_list (files);
+ else
+ aud_drct_pl_add_list (files, -1);
+ GtkWidget * toggle = g_object_get_data ((GObject *) chooser, "toggle-button");
if (gtk_toggle_button_get_active ((GtkToggleButton *) toggle))
- gtk_widget_destroy (window);
+ audgui_hide_filebrowser ();
}
-static void toggled_cb (GtkToggleButton * toggle, void * option)
+static void destroy_cb (GtkWidget * chooser)
{
- aud_set_bool ("audgui", (const char *) option, gtk_toggle_button_get_active (toggle));
+ char * path = gtk_file_chooser_get_current_folder ((GtkFileChooser *) chooser);
+ if (path)
+ {
+ aud_set_str ("audgui", "filesel_path", path);
+ g_free (path);
+ }
}
-static void
-close_button_cb(GtkWidget *widget, gpointer data)
+static void toggled_cb (GtkToggleButton * toggle, void * option)
{
- gtk_widget_destroy(GTK_WIDGET(data));
+ aud_set_bool ("audgui", (const char *) option, gtk_toggle_button_get_active (toggle));
}
-static void
-run_filebrowser_gtk2style(bool_t play_button, bool_t show)
+static GtkWidget * create_filebrowser (bool_t open)
{
- static GtkWidget *window = NULL;
- GtkWidget *vbox, *hbox, *bbox;
- GtkWidget *chooser;
- GtkWidget *action_button, *close_button;
- GtkWidget *toggle;
- char *window_title, *toggle_text;
- gpointer action_stock, storage;
-
- if (!show) {
- if (window){
- gtk_widget_hide(window);
- return;
- }
- else
- return;
+ const char * window_title, * verb, * icon, * toggle_text, * option;
+
+ if (open)
+ {
+ window_title = _("Open Files");
+ verb = _("_Open");
+ icon = "document-open";
+ toggle_text = _("Close _dialog on open");
+ option = "close_dialog_open";
}
- else {
- if (window) {
- gtk_window_present(GTK_WINDOW(window)); /* raise filebrowser */
- return;
- }
+ else
+ {
+ window_title = _("Add Files");
+ verb = _("_Add");
+ icon = "list-add";
+ toggle_text = _("Close _dialog on add");
+ option = "close_dialog_add";
}
- window_title = play_button ? _("Open Files") : _("Add Files");
- toggle_text = play_button ?
- _("Close dialog on Open") : _("Close dialog on Add");
- action_stock = play_button ? GTK_STOCK_OPEN : GTK_STOCK_ADD;
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ GtkWidget * window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG);
gtk_window_set_title(GTK_WINDOW(window), window_title);
gtk_window_set_default_size(GTK_WINDOW(window), 700, 450);
- gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
- chooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN);
+ GtkWidget * chooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN);
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(chooser), TRUE);
- char * path = aud_get_string ("audgui", "filesel_path");
+ char * path = aud_get_str ("audgui", "filesel_path");
if (path[0])
gtk_file_chooser_set_current_folder ((GtkFileChooser *) chooser, path);
- g_free (path);
+ str_unref (path);
gtk_box_pack_start(GTK_BOX(vbox), chooser, TRUE, TRUE, 3);
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 3);
- const char * option = play_button ? "close_dialog_open" : "close_dialog_add";
- toggle = gtk_check_button_new_with_label(toggle_text);
- gtk_toggle_button_set_active ((GtkToggleButton *) toggle, aud_get_bool
- ("audgui", option));
+ GtkWidget * toggle = gtk_check_button_new_with_mnemonic (toggle_text);
+ gtk_toggle_button_set_active ((GtkToggleButton *) toggle, aud_get_bool ("audgui", option));
g_signal_connect (toggle, "toggled", (GCallback) toggled_cb, (void *) option);
gtk_box_pack_start(GTK_BOX(hbox), toggle, TRUE, TRUE, 3);
- bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
+ GtkWidget * bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
gtk_box_set_spacing(GTK_BOX(bbox), 6);
gtk_box_pack_end(GTK_BOX(hbox), bbox, TRUE, TRUE, 3);
- close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
- action_button = gtk_button_new_from_stock(action_stock);
+ GtkWidget * action_button = audgui_button_new (verb, icon, open_cb, chooser);
+ GtkWidget * close_button = audgui_button_new (_("_Close"), "window-close",
+ (AudguiCallback) audgui_hide_filebrowser, NULL);
+
gtk_container_add(GTK_CONTAINER(bbox), close_button);
gtk_container_add(GTK_CONTAINER(bbox), action_button);
gtk_widget_set_can_default (action_button, TRUE);
gtk_widget_grab_default (action_button);
- /* this storage object holds several other objects which are used in the
- * callback functions
- */
- storage = g_object_new(G_TYPE_OBJECT, NULL);
- g_object_set_data(storage, "window", window);
- g_object_set_data(storage, "chooser", chooser);
- g_object_set_data(storage, "toggle-button", toggle);
- g_object_set_data(storage, "play-button", GINT_TO_POINTER(play_button));
-
- g_signal_connect(chooser, "file-activated",
- G_CALLBACK(action_button_cb), storage);
- g_signal_connect(action_button, "clicked",
- G_CALLBACK(action_button_cb), storage);
- g_signal_connect(close_button, "clicked",
- G_CALLBACK(close_button_cb), window);
- g_signal_connect(window, "destroy",
- G_CALLBACK(gtk_widget_destroyed), &window);
+ g_object_set_data ((GObject *) chooser, "toggle-button", toggle);
+ g_object_set_data ((GObject *) chooser, "do-open", GINT_TO_POINTER (open));
+
+ g_signal_connect (chooser, "file-activated", (GCallback) open_cb, NULL);
+ g_signal_connect (chooser, "destroy", (GCallback) destroy_cb, NULL);
audgui_destroy_on_escape (window);
- gtk_widget_show_all (window);
+
+ return window;
}
-/*
- * run_filebrowser(bool_t play_button)
- *
- * Inputs:
- * - bool_t play_button
- * TRUE - open files
- * FALSE - add files
- *
- * Outputs:
- * - none
- */
-EXPORT void
-audgui_run_filebrowser(bool_t play_button)
+EXPORT void audgui_run_filebrowser (bool_t open)
{
- run_filebrowser_gtk2style(play_button, TRUE);
+ audgui_show_unique_window (AUDGUI_FILEBROWSER_WINDOW, create_filebrowser (open));
}
-EXPORT void
-audgui_hide_filebrowser(void)
+EXPORT void audgui_hide_filebrowser (void)
{
- run_filebrowser_gtk2style(FALSE, FALSE);
+ audgui_hide_unique_window (AUDGUI_FILEBROWSER_WINDOW);
}
diff --git a/src/libaudgui/ui_jumptotrack.c b/src/libaudgui/ui_jumptotrack.c
index 8898843..83addd4 100644
--- a/src/libaudgui/ui_jumptotrack.c
+++ b/src/libaudgui/ui_jumptotrack.c
@@ -1,6 +1,6 @@
/*
* ui_jumptotrack.c
- * Copyright 2007-2011 Yoshiki Yazawa and John Lindgren
+ * Copyright 2007-2012 Yoshiki Yazawa and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -26,21 +26,21 @@
#include <audacious/playlist.h>
#include <libaudcore/hook.h>
+#include "init.h"
#include "libaudgui.h"
+#include "libaudgui-gtk.h"
#include "list.h"
#include "ui_jumptotrack_cache.h"
static void update_cb (void * data, void * user);
static void activate_cb (void * data, void * user);
-static GtkWidget *jump_to_track_win = NULL;
static JumpToTrackCache* cache = NULL;
static const GArray * search_matches;
static GtkWidget * treeview, * filter_entry, * queue_button;
static bool_t watching = FALSE;
-EXPORT void
-audgui_jump_to_track_hide(void)
+static void destroy_cb (void)
{
if (watching)
{
@@ -49,9 +49,6 @@ audgui_jump_to_track_hide(void)
watching = FALSE;
}
- if (jump_to_track_win != NULL)
- gtk_widget_hide (jump_to_track_win);
-
if (cache != NULL)
{
ui_jump_to_track_cache_free (cache);
@@ -80,7 +77,7 @@ static int get_selected_entry (void)
return g_array_index (search_matches, int, row);
}
-static void do_jump (void)
+static void do_jump (void * unused)
{
int entry = get_selected_entry ();
if (entry < 0)
@@ -115,7 +112,7 @@ static void update_queue_button (int entry)
}
}
-static void do_queue (void)
+static void do_queue (void * unused)
{
int playlist = aud_playlist_get_active ();
int entry = get_selected_entry ();
@@ -169,13 +166,6 @@ static void fill_list (void)
}
}
-static void clear_cb (GtkWidget * widget)
-{
- g_return_if_fail (filter_entry);
- gtk_entry_set_text ((GtkEntry *) filter_entry, "");
- gtk_widget_grab_focus (filter_entry);
-}
-
static void update_cb (void * data, void * user)
{
g_return_if_fail (treeview);
@@ -220,12 +210,6 @@ static void toggle_button_cb (GtkToggleButton * toggle, const char * setting)
aud_set_bool ("audgui", setting, gtk_toggle_button_get_active (toggle));
}
-static bool_t delete_cb (void)
-{
- audgui_jump_to_track_hide ();
- return TRUE;
-}
-
static void list_get_value (void * user, int row, int column, GValue * value)
{
g_return_if_fail (search_matches);
@@ -252,16 +236,16 @@ static void list_get_value (void * user, int row, int column, GValue * value)
static const AudguiListCallbacks callbacks = {
.get_value = list_get_value};
-static void create_window (void)
+static GtkWidget * create_window (void)
{
- jump_to_track_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ GtkWidget * jump_to_track_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_type_hint(GTK_WINDOW(jump_to_track_win),
GDK_WINDOW_TYPE_HINT_DIALOG);
gtk_window_set_title(GTK_WINDOW(jump_to_track_win), _("Jump to Song"));
g_signal_connect (jump_to_track_win, "key_press_event", (GCallback) keypress_cb, NULL);
- g_signal_connect (jump_to_track_win, "delete-event", (GCallback) delete_cb, NULL);
+ g_signal_connect (jump_to_track_win, "destroy", (GCallback) destroy_cb, NULL);
gtk_container_set_border_width(GTK_CONTAINER(jump_to_track_win), 10);
gtk_window_set_default_size(GTK_WINDOW(jump_to_track_win), 600, 500);
@@ -279,7 +263,7 @@ static void create_window (void)
"changed", (GCallback) selection_changed, NULL);
g_signal_connect (treeview, "row-activated", (GCallback) do_jump, NULL);
- GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
+ GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 3);
/* filter box */
@@ -291,21 +275,7 @@ static void create_window (void)
gtk_label_set_mnemonic_widget ((GtkLabel *) search_label, filter_entry);
g_signal_connect (filter_entry, "changed", (GCallback) fill_list, NULL);
gtk_entry_set_activates_default ((GtkEntry *) filter_entry, TRUE);
- gtk_box_pack_start ((GtkBox *) hbox, filter_entry, TRUE, TRUE, 3);
-
- /* remember text entry */
- GtkWidget * toggle2 = gtk_check_button_new_with_label (_("Remember"));
- gtk_toggle_button_set_active ((GtkToggleButton *) toggle2, aud_get_bool
- ("audgui", "remember_jtf_entry"));
- gtk_box_pack_start(GTK_BOX(hbox), toggle2, FALSE, FALSE, 0);
- g_signal_connect (toggle2, "clicked", (GCallback) toggle_button_cb, "remember_jtf_entry");
-
- /* clear button */
- GtkWidget * rescan = gtk_button_new_with_mnemonic (_("Clea_r"));
- gtk_button_set_image ((GtkButton *) rescan, gtk_image_new_from_stock
- (GTK_STOCK_CLEAR, GTK_ICON_SIZE_BUTTON));
- gtk_box_pack_start(GTK_BOX(hbox), rescan, FALSE, FALSE, 0);
- g_signal_connect (rescan, "clicked", (GCallback) clear_cb, NULL);
+ gtk_box_pack_start ((GtkBox *) hbox, filter_entry, TRUE, TRUE, 0);
GtkWidget * scrollwin = gtk_scrolled_window_new (NULL, NULL);
gtk_container_add(GTK_CONTAINER(scrollwin), treeview);
@@ -321,49 +291,37 @@ static void create_window (void)
gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
/* close dialog toggle */
- GtkWidget * toggle = gtk_check_button_new_with_label(_("Close on Jump"));
+ GtkWidget * toggle = gtk_check_button_new_with_mnemonic (_("C_lose on jump"));
gtk_toggle_button_set_active ((GtkToggleButton *) toggle, aud_get_bool
("audgui", "close_jtf_dialog"));
gtk_box_pack_start(GTK_BOX(bbox), toggle, FALSE, FALSE, 0);
g_signal_connect (toggle, "clicked", (GCallback) toggle_button_cb, "close_jtf_dialog");
/* queue button */
- queue_button = gtk_button_new_with_mnemonic(_("_Queue"));
- gtk_button_set_image ((GtkButton *) queue_button, gtk_image_new_from_stock
- (AUD_STOCK_QUEUETOGGLE, GTK_ICON_SIZE_BUTTON));
+ queue_button = audgui_button_new (_("_Queue"), NULL, do_queue, NULL);
gtk_box_pack_start ((GtkBox *) bbox, queue_button, FALSE, FALSE, 0);
- g_signal_connect (queue_button, "clicked", (GCallback) do_queue, NULL);
-
/* jump button */
- GtkWidget * jump = gtk_button_new_from_stock (GTK_STOCK_JUMP_TO);
+ GtkWidget * jump = audgui_button_new (_("_Jump"), "go-jump", do_jump, NULL);
gtk_box_pack_start(GTK_BOX(bbox), jump, FALSE, FALSE, 0);
- g_signal_connect (jump, "clicked", (GCallback) do_jump, NULL);
-
gtk_widget_set_can_default(jump, TRUE);
gtk_widget_grab_default(jump);
/* close button */
- GtkWidget * close = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
+ GtkWidget * close = audgui_button_new (_("_Close"), "window-close",
+ (AudguiCallback) audgui_jump_to_track_hide, NULL);
gtk_box_pack_start(GTK_BOX(bbox), close, FALSE, FALSE, 0);
- g_signal_connect (close, "clicked", (GCallback) audgui_jump_to_track_hide,
- NULL);
- gtk_widget_set_can_default(close, TRUE);
+
+ return jump_to_track_win;
}
EXPORT void audgui_jump_to_track (void)
{
- bool_t create = (! jump_to_track_win);
- if (create)
- create_window ();
+ if (audgui_reshow_unique_window (AUDGUI_JUMP_TO_TRACK_WINDOW))
+ return;
- g_return_if_fail (filter_entry);
-
- if (aud_get_bool ("audgui", "remember_jtf_entry"))
- gtk_editable_select_region ((GtkEditable *) filter_entry, 0, -1);
- else
- gtk_entry_set_text ((GtkEntry *) filter_entry, "");
+ GtkWidget * jump_to_track_win = create_window ();
if (! watching)
{
@@ -373,10 +331,12 @@ EXPORT void audgui_jump_to_track (void)
watching = TRUE;
}
- if (create)
- gtk_widget_show_all (jump_to_track_win);
- else
- gtk_window_present ((GtkWindow *) jump_to_track_win);
-
gtk_widget_grab_focus (filter_entry);
+
+ audgui_show_unique_window (AUDGUI_JUMP_TO_TRACK_WINDOW, jump_to_track_win);
+}
+
+EXPORT void audgui_jump_to_track_hide (void)
+{
+ audgui_hide_unique_window (AUDGUI_JUMP_TO_TRACK_WINDOW);
}
diff --git a/src/libaudgui/ui_jumptotrack_cache.c b/src/libaudgui/ui_jumptotrack_cache.c
index f9aa160..21d4370 100644
--- a/src/libaudgui/ui_jumptotrack_cache.c
+++ b/src/libaudgui/ui_jumptotrack_cache.c
@@ -1,6 +1,6 @@
/*
* ui_jumptotrack_cache.c
- * Copyright 2008-2011 Jussi Judin and John Lindgren
+ * Copyright 2008-2012 Jussi Judin and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -22,29 +22,25 @@
#include <stdlib.h>
#include <string.h>
#include <assert.h>
-#ifdef HAVE_SYS_TYPES_H
-# include "sys/types.h"
-#endif
#include <audacious/debug.h>
#include <audacious/playlist.h>
#include <libaudcore/audstrings.h>
#include "ui_jumptotrack_cache.h"
-#include "ui_regex.h"
// Struct to keep information about matches from searches.
typedef struct
{
GArray * entries; // int
- GArray * titles, * artists, * albums, * paths; // char *
+ GArray * titles, * artists, * albums, * paths; // char * (pooled)
} KeywordMatches;
static void ui_jump_to_track_cache_init (JumpToTrackCache * cache);
static KeywordMatches * keyword_matches_new (void)
{
- KeywordMatches * k = g_malloc (sizeof (KeywordMatches));
+ KeywordMatches * k = g_slice_new (KeywordMatches);
k->entries = g_array_new (FALSE, FALSE, sizeof (int));
k->titles = g_array_new (FALSE, FALSE, sizeof (char *));
k->artists = g_array_new (FALSE, FALSE, sizeof (char *));
@@ -60,7 +56,7 @@ static void keyword_matches_free (KeywordMatches * k)
g_array_free (k->artists, TRUE);
g_array_free (k->albums, TRUE);
g_array_free (k->paths, TRUE);
- g_free (k);
+ g_slice_free (KeywordMatches, k);
}
/**
@@ -89,15 +85,10 @@ ui_jump_to_track_cache_regex_list_create(const GString* keyword)
if (words[i][0] == 0) {
continue;
}
- regex_t *regex = g_malloc(sizeof(regex_t));
- #if defined(USE_REGEX_PCRE)
- if ( regcomp( regex , words[i] , REG_NOSUB | REG_UTF8 ) == 0 )
- #else
- if ( regcomp( regex , words[i] , REG_NOSUB ) == 0 )
- #endif
- regex_list = g_slist_append( regex_list , regex );
- else
- g_free( regex );
+
+ GRegex * regex = g_regex_new (words[i], G_REGEX_CASELESS, 0, NULL);
+ if (regex)
+ regex_list = g_slist_append (regex_list, regex);
}
g_strfreev(words);
@@ -106,26 +97,6 @@ ui_jump_to_track_cache_regex_list_create(const GString* keyword)
}
/**
- * Frees the regular expression list used in searches.
- */
-static void
-ui_jump_to_track_cache_regex_list_free(GSList* regex_list)
-{
- if ( regex_list != NULL )
- {
- GSList* regex_list_tmp = regex_list;
- while ( regex_list != NULL )
- {
- regex_t *regex = regex_list->data;
- regfree( regex );
- g_free( regex );
- regex_list = g_slist_next(regex_list);
- }
- g_slist_free( regex_list_tmp );
- }
-}
-
-/**
* Checks if 'song' matches all regular expressions in 'regex_list'.
*/
static bool_t
@@ -136,8 +107,8 @@ ui_jump_to_track_match(const char * song, GSList *regex_list)
for ( ; regex_list ; regex_list = g_slist_next(regex_list) )
{
- regex_t *regex = regex_list->data;
- if ( regexec( regex , song , 0 , NULL , 0 ) != 0 )
+ GRegex * regex = regex_list->data;
+ if (! g_regex_match (regex, song, 0, NULL))
return FALSE;
}
@@ -190,30 +161,9 @@ ui_jump_to_track_cache_match_keyword(JumpToTrackCache* cache,
g_hash_table_insert (cache->keywords, GINT_TO_POINTER (g_string_hash (keyword)), k);
- ui_jump_to_track_cache_regex_list_free(regex_list);
- return k->entries;
-}
-
-/* calls str_unref() on <string> */
-/* returned string must be freed */
-static char * process_string (char * string, bool_t decode)
-{
- if (! string)
- return NULL;
-
- char * normal;
+ g_slist_free_full (regex_list, (GDestroyNotify) g_regex_unref);
- if (decode)
- {
- char temp[strlen (string) + 1];
- str_decode_percent (string, -1, temp);
- normal = g_utf8_casefold (temp, -1);
- }
- else
- normal = g_utf8_casefold (string, -1);
-
- str_unref (string);
- return normal;
+ return k->entries;
}
/**
@@ -224,10 +174,10 @@ ui_jump_to_track_cache_free_keywordmatch_data(KeywordMatches* match_entry)
{
for (int i = 0; i < match_entry->entries->len; i ++)
{
- g_free (g_array_index (match_entry->titles, char *, i));
- g_free (g_array_index (match_entry->artists, char *, i));
- g_free (g_array_index (match_entry->albums, char *, i));
- g_free (g_array_index (match_entry->paths, char *, i));
+ str_unref (g_array_index (match_entry->titles, char *, i));
+ str_unref (g_array_index (match_entry->artists, char *, i));
+ str_unref (g_array_index (match_entry->albums, char *, i));
+ str_unref (g_array_index (match_entry->paths, char *, i));
}
}
@@ -239,7 +189,7 @@ ui_jump_to_track_cache_free_keywordmatch_data(KeywordMatches* match_entry)
JumpToTrackCache*
ui_jump_to_track_cache_new()
{
- JumpToTrackCache* cache = g_new(JumpToTrackCache, 1);
+ JumpToTrackCache * cache = g_slice_new (JumpToTrackCache);
cache->keywords = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) keyword_matches_free);
ui_jump_to_track_cache_init (cache);
@@ -287,20 +237,18 @@ static void ui_jump_to_track_cache_init (JumpToTrackCache * cache)
for (int entry = 0; entry < entries; entry ++)
{
- char * title, * artist, * album, * path;
+ char * title, * artist, * album;
aud_playlist_entry_describe (playlist, entry, & title, & artist, & album, TRUE);
- path = aud_playlist_entry_get_filename (playlist, entry);
- title = process_string (title, FALSE);
- artist = process_string (artist, FALSE);
- album = process_string (album, FALSE);
- path = process_string (path, TRUE);
+ char * uri = aud_playlist_entry_get_filename (playlist, entry);
+ char * decoded = uri_to_display (uri);
+ str_unref (uri);
g_array_append_val (k->entries, entry);
g_array_append_val (k->titles, title);
g_array_append_val (k->artists, artist);
g_array_append_val (k->albums, album);
- g_array_append_val (k->paths, path);
+ g_array_append_val (k->paths, decoded);
}
// Finally insert all titles into cache into an empty key "" so that
@@ -363,9 +311,8 @@ static void ui_jump_to_track_cache_init (JumpToTrackCache * cache)
const GArray * ui_jump_to_track_cache_search (JumpToTrackCache * cache, const
char * keyword)
{
- char * normalized_keyword = g_utf8_casefold (keyword, -1);
- GString* keyword_string = g_string_new(normalized_keyword);
- GString* match_string = g_string_new(normalized_keyword);
+ GString* keyword_string = g_string_new(keyword);
+ GString* match_string = g_string_new(keyword);
int match_string_length = keyword_string->len;
while (match_string_length >= 0)
@@ -381,7 +328,6 @@ const GArray * ui_jump_to_track_cache_search (JumpToTrackCache * cache, const
if (match_string_length == keyword_string->len) {
g_string_free(keyword_string, TRUE);
g_string_free(match_string, TRUE);
- g_free(normalized_keyword);
return matched_entries->entries;
}
@@ -392,7 +338,6 @@ const GArray * ui_jump_to_track_cache_search (JumpToTrackCache * cache, const
keyword_string);
g_string_free(keyword_string, TRUE);
g_string_free(match_string, TRUE);
- g_free(normalized_keyword);
return result;
}
match_string_length--;
@@ -409,5 +354,5 @@ void ui_jump_to_track_cache_free (JumpToTrackCache * cache)
{
ui_jump_to_track_cache_clear (cache);
g_hash_table_unref (cache->keywords);
- g_free (cache);
+ g_slice_free (JumpToTrackCache, cache);
}
diff --git a/src/libaudgui/ui_playlist_manager.c b/src/libaudgui/ui_playlist_manager.c
index e5de3a2..7e42947 100644
--- a/src/libaudgui/ui_playlist_manager.c
+++ b/src/libaudgui/ui_playlist_manager.c
@@ -1,6 +1,6 @@
/*
* ui_playlist_manager.c
- * Copyright 2006-2011 Giacomo Lozito and John Lindgren
+ * Copyright 2006-2012 Giacomo Lozito, John Lindgren, and Thomas Lange
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -24,6 +24,7 @@
#include <audacious/misc.h>
#include <audacious/drct.h>
#include <audacious/playlist.h>
+#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
#include "init.h"
@@ -31,55 +32,29 @@
#include "libaudgui-gtk.h"
#include "list.h"
-static GtkWidget * playman_win = NULL;
static void activate_row (void * user, int row);
-static void save_position (GtkWidget * window)
-{
- int x, y, w, h;
- gtk_window_get_position ((GtkWindow *) window, & x, & y);
- gtk_window_get_size ((GtkWindow *) window, & w, & h);
-
- aud_set_int ("audgui", "playlist_manager_x", x);
- aud_set_int ("audgui", "playlist_manager_y", y);
- aud_set_int ("audgui", "playlist_manager_w", w);
- aud_set_int ("audgui", "playlist_manager_h", h);
-}
-
-static bool_t hide_cb (GtkWidget * window)
-{
- save_position (window);
- gtk_widget_hide (window);
- return TRUE;
-}
-
-static void play_cb (void)
+static void play_cb (void * unused)
{
activate_row (NULL, aud_playlist_get_active ());
}
-static void rename_cb (void)
+static void rename_cb (void * unused)
{
audgui_show_playlist_rename (aud_playlist_get_active ());
}
-static void new_cb (void)
+static void new_cb (void * unused)
{
aud_playlist_insert (aud_playlist_get_active () + 1);
aud_playlist_set_active (aud_playlist_get_active () + 1);
}
-static void delete_cb (void)
+static void delete_cb (void * unused)
{
audgui_confirm_playlist_delete (aud_playlist_get_active ());
}
-static void save_config_cb (void * hook_data, void * user_data)
-{
- if (gtk_widget_get_visible ((GtkWidget *) user_data))
- save_position ((GtkWidget *) user_data);
-}
-
static void get_value (void * user, int row, int column, GValue * value)
{
switch (column)
@@ -116,7 +91,7 @@ static void activate_row (void * user, int row)
aud_drct_play_playlist (row);
if (aud_get_bool ("audgui", "playlist_manager_close_on_activate"))
- hide_cb (playman_win);
+ audgui_hide_unique_window (AUDGUI_PLAYLIST_MANAGER_WINDOW);
}
static void shift_rows (void * user, int row, int before)
@@ -147,23 +122,17 @@ static bool_t search_cb (GtkTreeModel * model, int column, const char * key,
int row = gtk_tree_path_get_indices (path)[0];
gtk_tree_path_free (path);
- char * temp = aud_playlist_get_title (row);
- g_return_val_if_fail (temp, TRUE);
- char * title = g_utf8_strdown (temp, -1);
- str_unref (temp);
+ char * title = aud_playlist_get_title (row);
+ g_return_val_if_fail (title, TRUE);
- temp = g_utf8_strdown (key, -1);
- char * * keys = g_strsplit (temp, " ", 0);
- g_free (temp);
+ Index * keys = str_list_to_index (key, " ");
+ int count = index_count (keys);
bool_t match = FALSE;
- for (int i = 0; keys[i]; i ++)
+ for (int i = 0; i < count; i ++)
{
- if (! keys[i][0])
- continue;
-
- if (strstr (title, keys[i]))
+ if (strstr_nocase_utf8 (title, index_get (keys, i)))
match = TRUE;
else
{
@@ -172,8 +141,8 @@ static bool_t search_cb (GtkTreeModel * model, int column, const char * key,
}
}
- g_free (title);
- g_strfreev (keys);
+ index_free_full (keys, (IndexFreeFunc) str_unref);
+ str_unref (title);
return ! match; /* TRUE == not matched, FALSE == matched */
}
@@ -240,49 +209,29 @@ static void close_on_activate_cb (GtkToggleButton * toggle)
gtk_toggle_button_get_active (toggle));
}
-EXPORT void audgui_playlist_manager (void)
+static void destroy_cb (GtkWidget * window)
{
- GtkWidget * playman_vbox;
- GtkWidget * playman_pl_lv, * playman_pl_lv_sw;
- GtkWidget * playman_button_hbox;
- GtkWidget * new_button, * delete_button, * rename_button, * play_button;
- GtkWidget * hbox, * check_button;
- GdkGeometry playman_win_hints;
-
- if (playman_win)
- {
- gtk_window_present ((GtkWindow *) playman_win);
- return;
- }
+ hook_dissociate ("playlist update", update_hook);
+ hook_dissociate ("playlist activate", activate_hook);
+ hook_dissociate ("playlist set playing", position_hook);
+}
- playman_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+static GtkWidget * create_playlist_manager (void)
+{
+ GtkWidget * playman_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_type_hint ((GtkWindow *) playman_win, GDK_WINDOW_TYPE_HINT_DIALOG);
gtk_window_set_title ((GtkWindow *) playman_win, _("Playlist Manager"));
gtk_container_set_border_width ((GtkContainer *) playman_win, 6);
- playman_win_hints.min_width = 400;
- playman_win_hints.min_height = 250;
- gtk_window_set_geometry_hints ((GtkWindow *) playman_win, playman_win,
- &playman_win_hints , GDK_HINT_MIN_SIZE);
-
- int x = aud_get_int ("audgui", "playlist_manager_x");
- int y = aud_get_int ("audgui", "playlist_manager_y");
- int w = aud_get_int ("audgui", "playlist_manager_w");
- int h = aud_get_int ("audgui", "playlist_manager_h");
+ gtk_widget_set_size_request (playman_win, 400, 250);
- if (w && h)
- {
- gtk_window_move ((GtkWindow *) playman_win, x, y);
- gtk_window_set_default_size ((GtkWindow *) playman_win, w, h);
- }
+ g_signal_connect (playman_win, "destroy", (GCallback) destroy_cb, NULL);
+ audgui_destroy_on_escape (playman_win);
- g_signal_connect (playman_win, "delete-event", (GCallback) hide_cb, NULL);
- audgui_hide_on_escape (playman_win);
-
- playman_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+ GtkWidget * playman_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_container_add ((GtkContainer *) playman_win, playman_vbox);
/* ListView */
- playman_pl_lv = audgui_list_new (& callbacks, NULL, aud_playlist_count ());
+ GtkWidget * playman_pl_lv = audgui_list_new (& callbacks, NULL, aud_playlist_count ());
audgui_list_add_column (playman_pl_lv, _("Title"), 0, G_TYPE_STRING, -1);
audgui_list_add_column (playman_pl_lv, _("Entries"), 1, G_TYPE_INT, 7);
audgui_list_set_highlight (playman_pl_lv, aud_playlist_get_playing ());
@@ -292,7 +241,7 @@ EXPORT void audgui_playlist_manager (void)
hook_associate ("playlist activate", activate_hook, playman_pl_lv);
hook_associate ("playlist set playing", position_hook, playman_pl_lv);
- playman_pl_lv_sw = gtk_scrolled_window_new (NULL, NULL);
+ GtkWidget * playman_pl_lv_sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) playman_pl_lv_sw,
GTK_SHADOW_IN);
gtk_scrolled_window_set_policy ((GtkScrolledWindow *) playman_pl_lv_sw,
@@ -301,13 +250,11 @@ EXPORT void audgui_playlist_manager (void)
gtk_box_pack_start ((GtkBox *) playman_vbox, playman_pl_lv_sw, TRUE, TRUE, 0);
/* ButtonBox */
- playman_button_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- new_button = gtk_button_new_from_stock (GTK_STOCK_NEW);
- delete_button = gtk_button_new_from_stock (GTK_STOCK_DELETE);
- rename_button = gtk_button_new_with_mnemonic (_("_Rename"));
- gtk_button_set_image ((GtkButton *) rename_button, gtk_image_new_from_stock
- (GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON));
- play_button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);
+ GtkWidget * playman_button_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ GtkWidget * new_button = audgui_button_new (_("_New"), "document-new", new_cb, NULL);
+ GtkWidget * delete_button = audgui_button_new (_("_Remove"), "edit-delete", delete_cb, NULL);
+ GtkWidget * rename_button = audgui_button_new (_("Ren_ame"), "insert-text", rename_cb, NULL);
+ GtkWidget * play_button = audgui_button_new (_("_Play"), "media-playback-start", play_cb, NULL);
gtk_container_add ((GtkContainer *) playman_button_hbox, new_button);
gtk_container_add ((GtkContainer *) playman_button_hbox, delete_button);
@@ -315,36 +262,21 @@ EXPORT void audgui_playlist_manager (void)
gtk_box_pack_end ((GtkBox *) playman_button_hbox, rename_button, FALSE, FALSE, 0);
gtk_container_add ((GtkContainer *) playman_vbox, playman_button_hbox);
- g_signal_connect (new_button, "clicked", (GCallback) new_cb, NULL);
- g_signal_connect (delete_button, "clicked", (GCallback) delete_cb, NULL);
- g_signal_connect (rename_button, "clicked", (GCallback) rename_cb, NULL);
- g_signal_connect (play_button, "clicked", (GCallback) play_cb, NULL);
-
/* CheckButton */
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start ((GtkBox *) playman_vbox, hbox, FALSE, FALSE, 0);
- check_button = gtk_check_button_new_with_mnemonic
+ GtkWidget * check_button = gtk_check_button_new_with_mnemonic
(_("_Close dialog on activating playlist"));
gtk_box_pack_start ((GtkBox *) hbox, check_button, FALSE, FALSE, 0);
gtk_toggle_button_set_active ((GtkToggleButton *) check_button, aud_get_bool
("audgui", "playlist_manager_close_on_activate"));
g_signal_connect (check_button, "toggled", (GCallback) close_on_activate_cb, NULL);
- gtk_widget_show_all (playman_win);
-
- hook_associate ("config save", save_config_cb, playman_win);
+ return playman_win;
}
-void audgui_playlist_manager_cleanup (void)
+EXPORT void audgui_playlist_manager (void)
{
- if (! playman_win)
- return;
-
- hook_dissociate ("playlist update", update_hook);
- hook_dissociate ("playlist activate", activate_hook);
- hook_dissociate ("playlist set playing", position_hook);
- hook_dissociate ("config save", save_config_cb);
-
- gtk_widget_destroy (playman_win);
- playman_win = NULL;
+ if (! audgui_reshow_unique_window (AUDGUI_PLAYLIST_MANAGER_WINDOW))
+ audgui_show_unique_window (AUDGUI_PLAYLIST_MANAGER_WINDOW, create_playlist_manager ());
}
diff --git a/src/libaudgui/urilist.c b/src/libaudgui/urilist.c
index 2ffdfea..4f75764 100644
--- a/src/libaudgui/urilist.c
+++ b/src/libaudgui/urilist.c
@@ -1,6 +1,6 @@
/*
* urilist.c
- * Copyright 2010 John Lindgren
+ * Copyright 2010-2011 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -36,7 +36,7 @@ static char * check_uri (char * name)
if (strstr (name, "://") || ! (new = filename_to_uri (name)))
return name;
- g_free (name);
+ str_unref (name);
return new;
}
@@ -53,15 +53,14 @@ static void urilist_for_each (const char * list, ForEachFunc func, void * user)
else
next = end = strchr (list, 0);
- func (check_uri (g_strndup (list, end - list)), user);
+ func (check_uri (str_nget (list, end - list)), user);
list = next;
}
}
static void add_to_index (char * name, Index * index)
{
- index_append (index, str_get (name));
- g_free (name);
+ index_insert (index, -1, name);
}
EXPORT void audgui_urilist_open (const char * list)
diff --git a/src/libaudgui/url-opener.c b/src/libaudgui/url-opener.c
index 0e69946..3baf7e8 100644
--- a/src/libaudgui/url-opener.c
+++ b/src/libaudgui/url-opener.c
@@ -1,6 +1,6 @@
/*
* url-opener.c
- * Copyright 2012 John Lindgren
+ * Copyright 2012-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -25,49 +25,39 @@
#include "init.h"
#include "libaudgui.h"
+#include "libaudgui-gtk.h"
-static GtkWidget * window;
-
-static void response_cb (GtkWidget * dialog, int response)
+static void open_cb (void * entry)
{
- if (response == GTK_RESPONSE_ACCEPT)
- {
- GtkWidget * entry = g_object_get_data ((GObject *) dialog, "entry");
- const char * text = gtk_entry_get_text ((GtkEntry *) entry);
- bool_t open = GPOINTER_TO_INT (g_object_get_data ((GObject *) dialog, "open"));
+ const char * text = gtk_entry_get_text ((GtkEntry *) entry);
+ bool_t open = GPOINTER_TO_INT (g_object_get_data ((GObject *) entry, "open"));
- if (open)
- aud_drct_pl_open (text);
- else
- aud_drct_pl_add (text, -1);
-
- aud_history_add (text);
- }
+ if (open)
+ aud_drct_pl_open (text);
+ else
+ aud_drct_pl_add (text, -1);
- gtk_widget_destroy (dialog);
+ aud_history_add (text);
}
-EXPORT void audgui_show_add_url_window (bool_t open)
+static GtkWidget * create_url_opener (bool_t open)
{
- if (window)
- gtk_widget_destroy (window);
-
- window = gtk_dialog_new_with_buttons (open ? _("Open URL") : _("Add URL"),
- NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, open ? GTK_STOCK_OPEN :
- GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT, NULL);
- gtk_widget_set_size_request (window, 300, -1);
- gtk_window_set_resizable ((GtkWindow *) window, FALSE);
- gtk_dialog_set_default_response ((GtkDialog *) window, GTK_RESPONSE_ACCEPT);
-
- GtkWidget * box = gtk_dialog_get_content_area ((GtkDialog *) window);
+ const char * title, * verb, * icon;
- GtkWidget * label = gtk_label_new (_("Enter URL:"));
- gtk_misc_set_alignment ((GtkMisc *) label, 0, 0);
- gtk_box_pack_start ((GtkBox *) box, label, FALSE, FALSE, 0);
+ if (open)
+ {
+ title = _("Open URL");
+ verb = _("_Open");
+ icon = "document-open";
+ }
+ else
+ {
+ title = _("Add URL");
+ verb = _("_Add");
+ icon = "list-add";
+ }
GtkWidget * combo = gtk_combo_box_text_new_with_entry ();
- gtk_box_pack_start ((GtkBox *) box, combo, FALSE, FALSE, 0);
-
GtkWidget * entry = gtk_bin_get_child ((GtkBin *) combo);
gtk_entry_set_activates_default ((GtkEntry *) entry, TRUE);
@@ -75,17 +65,20 @@ EXPORT void audgui_show_add_url_window (bool_t open)
for (int i = 0; (item = aud_history_get (i)); i++)
gtk_combo_box_text_append_text ((GtkComboBoxText *) combo, item);
- g_object_set_data ((GObject *) window, "entry", entry);
- g_object_set_data ((GObject *) window, "open", GINT_TO_POINTER (open));
+ g_object_set_data ((GObject *) entry, "open", GINT_TO_POINTER (open));
+
+ GtkWidget * button1 = audgui_button_new (verb, icon, open_cb, entry);
+ GtkWidget * button2 = audgui_button_new (_("_Cancel"), "process-stop", NULL, NULL);
- g_signal_connect (window, "response", (GCallback) response_cb, NULL);
- g_signal_connect (window, "destroy", (GCallback) gtk_widget_destroyed, & window);
+ GtkWidget * dialog = audgui_dialog_new (GTK_MESSAGE_OTHER, title,
+ _("Enter URL:"), button1, button2);
+ gtk_widget_set_size_request (dialog, 400, -1);
+ audgui_dialog_add_widget (dialog, combo);
- gtk_widget_show_all (window);
+ return dialog;
}
-void audgui_url_opener_cleanup (void)
+EXPORT void audgui_show_add_url_window (bool_t open)
{
- if (window)
- gtk_widget_destroy (window);
+ audgui_show_unique_window (AUDGUI_URL_OPENER_WINDOW, create_url_opener (open));
}
diff --git a/src/libaudgui/util.c b/src/libaudgui/util.c
index 5a3061e..32d3cb8 100644
--- a/src/libaudgui/util.c
+++ b/src/libaudgui/util.c
@@ -1,6 +1,6 @@
/*
* util.c
- * Copyright 2010-2012 John Lindgren
+ * Copyright 2010-2012 John Lindgren and MichaƂ Lipski
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -20,12 +20,10 @@
#include <string.h>
#include <gdk/gdkkeysyms.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gtk/gtk.h>
#include <audacious/debug.h>
#include <audacious/i18n.h>
-#include <audacious/playlist.h>
#include <audacious/misc.h>
#include <libaudcore/audstrings.h>
#include <libaudcore/hook.h>
@@ -34,8 +32,6 @@
#include "libaudgui.h"
#include "libaudgui-gtk.h"
-static GdkPixbuf * current_pixbuf;
-
EXPORT int audgui_get_digit_width (GtkWidget * widget)
{
int width;
@@ -45,6 +41,7 @@ EXPORT int audgui_get_digit_width (GtkWidget * widget)
pango_layout_set_font_description (layout, desc);
pango_layout_get_pixel_size (layout, & width, NULL);
pango_font_description_free (desc);
+ g_object_unref (layout);
return (width + 9) / 10;
}
@@ -75,28 +72,6 @@ EXPORT void audgui_get_mouse_coords (GtkWidget * widget, int * x, int * y)
}
}
-EXPORT void audgui_hide_on_delete (GtkWidget * widget)
-{
- g_signal_connect (widget, "delete-event", (GCallback)
- gtk_widget_hide_on_delete, NULL);
-}
-
-static bool_t escape_hide_cb (GtkWidget * widget, GdkEventKey * event)
-{
- if (event->keyval == GDK_KEY_Escape)
- {
- gtk_widget_hide (widget);
- return TRUE;
- }
-
- return FALSE;
-}
-
-EXPORT void audgui_hide_on_escape (GtkWidget * widget)
-{
- g_signal_connect (widget, "key-press-event", (GCallback) escape_hide_cb, NULL);
-}
-
static bool_t escape_destroy_cb (GtkWidget * widget, GdkEventKey * event)
{
if (event->keyval == GDK_KEY_Escape)
@@ -113,223 +88,97 @@ EXPORT void audgui_destroy_on_escape (GtkWidget * widget)
g_signal_connect (widget, "key-press-event", (GCallback) escape_destroy_cb, NULL);
}
-static void toggle_cb (GtkToggleButton * toggle, bool_t * setting)
-{
- * setting = gtk_toggle_button_get_active (toggle);
-}
-
-EXPORT void audgui_connect_check_box (GtkWidget * box, bool_t * setting)
-{
- gtk_toggle_button_set_active ((GtkToggleButton *) box, * setting);
- g_signal_connect ((GObject *) box, "toggled", (GCallback) toggle_cb, setting);
-}
-
-EXPORT void audgui_simple_message (GtkWidget * * widget, GtkMessageType type,
- const char * title, const char * text)
+EXPORT GtkWidget * audgui_button_new (const char * text, const char * icon,
+ AudguiCallback callback, void * data)
{
- AUDDBG ("%s\n", text);
+ GtkWidget * button = gtk_button_new_with_mnemonic (text);
- if (* widget != NULL)
+ if (icon)
{
- const char * old = NULL;
- g_object_get ((GObject *) * widget, "text", & old, NULL);
- g_return_if_fail (old);
-
- int messages = GPOINTER_TO_INT (g_object_get_data ((GObject *)
- * widget, "messages"));
-
- if (messages > 10)
- text = _("\n(Further messages have been hidden.)");
-
- if (strstr (old, text))
- goto CREATED;
-
- char both[strlen (old) + strlen (text) + 2];
- snprintf (both, sizeof both, "%s\n%s", old, text);
- g_object_set ((GObject *) * widget, "text", both, NULL);
-
- g_object_set_data ((GObject *) * widget, "messages", GINT_TO_POINTER
- (messages + 1));
-
- goto CREATED;
+ GtkWidget * image = gtk_image_new_from_icon_name (icon, GTK_ICON_SIZE_MENU);
+ gtk_button_set_image ((GtkButton *) button, image);
}
- * widget = gtk_message_dialog_new (NULL, 0, type, GTK_BUTTONS_OK, "%s", text);
- gtk_window_set_title ((GtkWindow *) * widget, title);
-
- g_object_set_data ((GObject *) * widget, "messages", GINT_TO_POINTER (1));
-
- g_signal_connect (* widget, "response", (GCallback) gtk_widget_destroy, NULL);
- audgui_destroy_on_escape (* widget);
- g_signal_connect (* widget, "destroy", (GCallback) gtk_widget_destroyed,
- widget);
+ if (callback)
+ g_signal_connect_swapped (button, "clicked", (GCallback) callback, data);
-CREATED:
- gtk_window_present ((GtkWindow *) * widget);
+ return button;
}
-EXPORT GdkPixbuf * audgui_pixbuf_from_data (const void * data, int64_t size)
+EXPORT GtkWidget * audgui_dialog_new (GtkMessageType type, const char * title,
+ const char * text, GtkWidget * button1, GtkWidget * button2)
{
- GdkPixbuf * pixbuf = NULL;
- GdkPixbufLoader * loader = gdk_pixbuf_loader_new ();
- GError * error = NULL;
+ GtkWidget * dialog = gtk_message_dialog_new (NULL, 0, type, GTK_BUTTONS_NONE, "%s", text);
+ gtk_window_set_title ((GtkWindow *) dialog, title);
- if (gdk_pixbuf_loader_write (loader, data, size, & error) &&
- gdk_pixbuf_loader_close (loader, & error))
- {
- if ((pixbuf = gdk_pixbuf_loader_get_pixbuf (loader)))
- g_object_ref (pixbuf);
- }
- else
+ if (button2)
{
- AUDDBG ("error while loading pixbuf: %s\n", error->message);
- g_error_free (error);
+ gtk_dialog_add_action_widget ((GtkDialog *) dialog, button2, GTK_RESPONSE_NONE);
+ g_signal_connect_swapped (button2, "clicked", (GCallback) gtk_widget_destroy, dialog);
}
- g_object_unref (loader);
- return pixbuf;
-}
-
-/* deprecated */
-EXPORT GdkPixbuf * audgui_pixbuf_for_entry (int list, int entry)
-{
- char * name = aud_playlist_entry_get_filename (list, entry);
- g_return_val_if_fail (name, NULL);
-
- const void * data;
- int64_t size;
-
- aud_art_get_data (name, & data, & size);
+ gtk_dialog_add_action_widget ((GtkDialog *) dialog, button1, GTK_RESPONSE_NONE);
+ g_signal_connect_swapped (button1, "clicked", (GCallback) gtk_widget_destroy, dialog);
- if (data)
- {
- GdkPixbuf * p = audgui_pixbuf_from_data (data, size);
- aud_art_unref (name);
-
- if (p)
- {
- str_unref (name);
- return p;
- }
- }
+ gtk_widget_set_can_default (button1, TRUE);
+ gtk_widget_grab_default (button1);
- str_unref (name);
- return audgui_pixbuf_fallback ();
+ return dialog;
}
-EXPORT GdkPixbuf * audgui_pixbuf_fallback (void)
+EXPORT void audgui_dialog_add_widget (GtkWidget * dialog, GtkWidget * widget)
{
- static GdkPixbuf * fallback = NULL;
-
- if (! fallback)
- {
- SPRINTF (path, "%s/images/album.png", aud_get_path (AUD_PATH_DATA_DIR));
- fallback = gdk_pixbuf_new_from_file (path, NULL);
- }
-
- if (fallback)
- g_object_ref ((GObject *) fallback);
-
- return fallback;
+ GtkWidget * box = gtk_message_dialog_get_message_area ((GtkMessageDialog *) dialog);
+ gtk_box_pack_start ((GtkBox *) box, widget, FALSE, FALSE, 0);
}
-void audgui_pixbuf_uncache (void)
+EXPORT void audgui_simple_message (GtkWidget * * widget, GtkMessageType type,
+ const char * title, const char * text)
{
- if (current_pixbuf)
- {
- g_object_unref ((GObject *) current_pixbuf);
- current_pixbuf = NULL;
- }
-}
-
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ AUDDBG ("%s\n", text);
-/* deprecated */
-EXPORT GdkPixbuf * audgui_pixbuf_for_current (void)
-{
- if (! current_pixbuf)
+ if (* widget)
{
- int list = aud_playlist_get_playing ();
- current_pixbuf = audgui_pixbuf_for_entry (list, aud_playlist_get_position (list));
- }
-
- if (current_pixbuf)
- g_object_ref ((GObject *) current_pixbuf);
-
- return current_pixbuf;
-}
-
-#pragma GCC diagnostic pop
+ const char * old = NULL;
+ g_object_get ((GObject *) * widget, "text", & old, NULL);
+ g_return_if_fail (old);
-EXPORT void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, int size)
-{
- int width = gdk_pixbuf_get_width (* pixbuf);
- int height = gdk_pixbuf_get_height (* pixbuf);
+ int messages = GPOINTER_TO_INT (g_object_get_data ((GObject *) * widget, "messages"));
+ if (messages > 10)
+ text = _("\n(Further messages have been hidden.)");
- if (width <= size && height <= size)
- return;
+ if (! strstr (old, text))
+ {
+ SCONCAT3 (both, old, "\n", text);
+ g_object_set ((GObject *) * widget, "text", both, NULL);
+ g_object_set_data ((GObject *) * widget, "messages", GINT_TO_POINTER (messages + 1));
+ }
- if (width > height)
- {
- height = size * height / width;
- width = size;
+ gtk_window_present ((GtkWindow *) * widget);
}
else
{
- width = size * width / height;
- height = size;
- }
+ GtkWidget * button = audgui_button_new (_("_Close"), "window-close", NULL, NULL);
+ * widget = audgui_dialog_new (type, title, text, button, NULL);
- if (width < 1)
- width = 1;
- if (height < 1)
- height = 1;
+ g_object_set_data ((GObject *) * widget, "messages", GINT_TO_POINTER (1));
+ g_signal_connect (* widget, "destroy", (GCallback) gtk_widget_destroyed, widget);
- GdkPixbuf * pixbuf2 = gdk_pixbuf_scale_simple (* pixbuf, width, height,
- GDK_INTERP_BILINEAR);
- g_object_unref (* pixbuf);
- * pixbuf = pixbuf2;
+ gtk_widget_show_all (* widget);
+ }
}
-EXPORT GdkPixbuf * audgui_pixbuf_request (const char * filename)
+EXPORT void audgui_format_time (char * buf, int bufsize, int64_t milliseconds)
{
- const void * data;
- int64_t size;
-
- aud_art_request_data (filename, & data, & size);
- if (! data)
- return NULL;
+ int hours = milliseconds / 3600000;
+ int minutes = (milliseconds / 60000) % 60;
+ int seconds = (milliseconds / 1000) % 60;
- GdkPixbuf * p = audgui_pixbuf_from_data (data, size);
-
- aud_art_unref (filename);
- return p;
-}
-
-EXPORT GdkPixbuf * audgui_pixbuf_request_current (void)
-{
- if (! current_pixbuf)
+ if (hours)
+ snprintf (buf, bufsize, "%d:%02d:%02d", hours, minutes, seconds);
+ else
{
- int list = aud_playlist_get_playing ();
- int entry = aud_playlist_get_position (list);
- if (entry < 0)
- return NULL;
-
- char * filename = aud_playlist_entry_get_filename (list, entry);
- current_pixbuf = audgui_pixbuf_request (filename);
- str_unref (filename);
+ bool_t zero = aud_get_bool (NULL, "leading_zero");
+ snprintf (buf, bufsize, zero ? "%02d:%02d" : "%d:%02d", minutes, seconds);
}
-
- if (current_pixbuf)
- g_object_ref ((GObject *) current_pixbuf);
-
- return current_pixbuf;
-}
-
-EXPORT void audgui_set_default_icon (void)
-{
-#ifndef _WIN32
- gtk_window_set_default_icon_name ("audacious");
-#endif
}
diff --git a/src/libaudtag/ape/ape.c b/src/libaudtag/ape/ape.c
index d494403..b755a04 100644
--- a/src/libaudtag/ape/ape.c
+++ b/src/libaudtag/ape/ape.c
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include <string.h>
+#include <libaudcore/audstrings.h>
#include <libaudcore/vfs.h>
#include "ape.h"
@@ -73,8 +74,8 @@ static bool_t ape_read_header (VFSFile * handle, APEHeader * header)
return TRUE;
}
-static bool_t ape_find_header (VFSFile * handle, APEHeader * header, int *
- start, int * length, int * data_start, int * data_length)
+static bool_t ape_find_header (VFSFile * handle, APEHeader * header,
+ int * start, int * length, int * data_start, int * data_length)
{
APEHeader secondary;
@@ -83,15 +84,15 @@ static bool_t ape_find_header (VFSFile * handle, APEHeader * header, int *
if (ape_read_header (handle, header))
{
- TAGDBG ("Found header at 0, length = %d, version = %d.\n", (int)
- header->length, (int) header->version);
+ TAGDBG ("Found header at 0, length = %d, version = %d.\n",
+ (int) header->length, (int) header->version);
+
* start = 0;
* length = header->length;
* data_start = sizeof (APEHeader);
* data_length = header->length - sizeof (APEHeader);
- if (! (header->flags & APE_FLAG_HAS_HEADER) || ! (header->flags &
- APE_FLAG_IS_HEADER))
+ if (! (header->flags & APE_FLAG_HAS_HEADER) || ! (header->flags & APE_FLAG_IS_HEADER))
{
TAGDBG ("Invalid header flags (%u).\n", (unsigned int) header->flags);
return FALSE;
@@ -117,44 +118,50 @@ static bool_t ape_find_header (VFSFile * handle, APEHeader * header, int *
if (vfs_fseek (handle, -(int) sizeof (APEHeader), SEEK_END))
return FALSE;
- if (ape_read_header (handle, header))
+ if (! ape_read_header (handle, header))
{
- TAGDBG ("Found footer at %d, length = %d, version = %d.\n", (int)
- vfs_ftell (handle) - (int) sizeof (APEHeader), (int) header->length,
- (int) header->version);
- * start = vfs_ftell (handle) - header->length;
- * length = header->length;
- * data_start = vfs_ftell (handle) - header->length;
- * data_length = header->length - sizeof (APEHeader);
+ /* APE tag may be followed by an ID3v1 tag */
+ if (vfs_fseek (handle, -128 - (int) sizeof (APEHeader), SEEK_END))
+ return FALSE;
- if ((header->flags & APE_FLAG_HAS_NO_FOOTER) || (header->flags &
- APE_FLAG_IS_HEADER))
+ if (! ape_read_header (handle, header))
{
- TAGDBG ("Invalid footer flags (%u).\n", (unsigned int) header->flags);
+ TAGDBG ("No header found.\n");
return FALSE;
}
+ }
- if (header->flags & APE_FLAG_HAS_HEADER)
- {
- if (vfs_fseek (handle, -(int) header->length - sizeof (APEHeader),
- SEEK_CUR))
- return FALSE;
+ TAGDBG ("Found footer at %d, length = %d, version = %d.\n",
+ (int) vfs_ftell (handle) - (int) sizeof (APEHeader), (int) header->length,
+ (int) header->version);
- if (! ape_read_header (handle, & secondary))
- {
- TAGDBG ("Expected header, but found none.\n");
- return FALSE;
- }
+ * start = vfs_ftell (handle) - header->length;
+ * length = header->length;
+ * data_start = vfs_ftell (handle) - header->length;
+ * data_length = header->length - sizeof (APEHeader);
- * start -= sizeof (APEHeader);
- * length += sizeof (APEHeader);
+ if ((header->flags & APE_FLAG_HAS_NO_FOOTER) || (header->flags & APE_FLAG_IS_HEADER))
+ {
+ TAGDBG ("Invalid footer flags (%u).\n", (unsigned) header->flags);
+ return FALSE;
+ }
+
+ if (header->flags & APE_FLAG_HAS_HEADER)
+ {
+ if (vfs_fseek (handle, -(int) header->length - sizeof (APEHeader), SEEK_CUR))
+ return FALSE;
+
+ if (! ape_read_header (handle, & secondary))
+ {
+ TAGDBG ("Expected header, but found none.\n");
+ return FALSE;
}
- return TRUE;
+ * start -= sizeof (APEHeader);
+ * length += sizeof (APEHeader);
}
- TAGDBG ("No header found.\n");
- return FALSE;
+ return TRUE;
}
static bool_t ape_is_our_file (VFSFile * handle)
@@ -195,9 +202,9 @@ static ValuePair * ape_read_item (void * * data, int length)
return NULL;
}
- pair = g_malloc (sizeof (ValuePair));
- pair->key = g_strdup ((char *) (* data) + 8);
- pair->value = g_strndup (value, header[0]);
+ pair = g_slice_new (ValuePair);
+ pair->key = str_get ((char *) (* data) + 8);
+ pair->value = str_nget (value, header[0]);
* data = value + header[0];
@@ -245,15 +252,11 @@ static GList * ape_read_items (VFSFile * handle)
return g_list_reverse (list);
}
-static void free_tag_list (GList * list)
+static void free_value_pair (ValuePair * pair)
{
- while (list != NULL)
- {
- g_free (((ValuePair *) list->data)->key);
- g_free (((ValuePair *) list->data)->value);
- g_free (list->data);
- list = g_list_delete_link (list, list);
- }
+ str_unref (pair->key);
+ str_unref (pair->value);
+ g_slice_free (ValuePair, pair);
}
static void parse_gain_text (const char * text, int * value, int * unit)
@@ -297,12 +300,12 @@ static void set_gain_info (Tuple * tuple, int field, int unit_field,
parse_gain_text (text, & value, & unit);
- if (tuple_get_value_type (tuple, unit_field, NULL) == TUPLE_INT)
- value = value * (int64_t) tuple_get_int (tuple, unit_field, NULL) / unit;
+ if (tuple_get_value_type (tuple, unit_field) == TUPLE_INT)
+ value = value * (int64_t) tuple_get_int (tuple, unit_field) / unit;
else
- tuple_set_int (tuple, unit_field, NULL, unit);
+ tuple_set_int (tuple, unit_field, unit);
- tuple_set_int (tuple, field, NULL, value);
+ tuple_set_int (tuple, field, value);
}
static bool_t ape_read_tag (Tuple * tuple, VFSFile * handle)
@@ -315,34 +318,30 @@ static bool_t ape_read_tag (Tuple * tuple, VFSFile * handle)
char * value = ((ValuePair *) node->data)->value;
if (! strcmp (key, "Artist"))
- tuple_set_str (tuple, FIELD_ARTIST, NULL, value);
+ tuple_set_str (tuple, FIELD_ARTIST, value);
else if (! strcmp (key, "Title"))
- tuple_set_str (tuple, FIELD_TITLE, NULL, value);
+ tuple_set_str (tuple, FIELD_TITLE, value);
else if (! strcmp (key, "Album"))
- tuple_set_str (tuple, FIELD_ALBUM, NULL, value);
+ tuple_set_str (tuple, FIELD_ALBUM, value);
else if (! strcmp (key, "Comment"))
- tuple_set_str (tuple, FIELD_COMMENT, NULL, value);
+ tuple_set_str (tuple, FIELD_COMMENT, value);
else if (! strcmp (key, "Genre"))
- tuple_set_str (tuple, FIELD_GENRE, NULL, value);
+ tuple_set_str (tuple, FIELD_GENRE, value);
else if (! strcmp (key, "Track"))
- tuple_set_int (tuple, FIELD_TRACK_NUMBER, NULL, atoi (value));
+ tuple_set_int (tuple, FIELD_TRACK_NUMBER, atoi (value));
else if (! strcmp (key, "Year"))
- tuple_set_int (tuple, FIELD_YEAR, NULL, atoi (value));
+ tuple_set_int (tuple, FIELD_YEAR, atoi (value));
else if (! g_ascii_strcasecmp (key, "REPLAYGAIN_TRACK_GAIN"))
- set_gain_info (tuple, FIELD_GAIN_TRACK_GAIN, FIELD_GAIN_GAIN_UNIT,
- value);
+ set_gain_info (tuple, FIELD_GAIN_TRACK_GAIN, FIELD_GAIN_GAIN_UNIT, value);
else if (! g_ascii_strcasecmp (key, "REPLAYGAIN_TRACK_PEAK"))
- set_gain_info (tuple, FIELD_GAIN_TRACK_PEAK, FIELD_GAIN_PEAK_UNIT,
- value);
+ set_gain_info (tuple, FIELD_GAIN_TRACK_PEAK, FIELD_GAIN_PEAK_UNIT, value);
else if (! g_ascii_strcasecmp (key, "REPLAYGAIN_ALBUM_GAIN"))
- set_gain_info (tuple, FIELD_GAIN_ALBUM_GAIN, FIELD_GAIN_GAIN_UNIT,
- value);
+ set_gain_info (tuple, FIELD_GAIN_ALBUM_GAIN, FIELD_GAIN_GAIN_UNIT, value);
else if (! g_ascii_strcasecmp (key, "REPLAYGAIN_ALBUM_PEAK"))
- set_gain_info (tuple, FIELD_GAIN_ALBUM_PEAK, FIELD_GAIN_PEAK_UNIT,
- value);
+ set_gain_info (tuple, FIELD_GAIN_ALBUM_PEAK, FIELD_GAIN_PEAK_UNIT, value);
}
- free_tag_list (list);
+ g_list_free_full (list, (GDestroyNotify) free_value_pair);
return TRUE;
}
@@ -374,7 +373,7 @@ static bool_t ape_write_item (VFSFile * handle, const char * key,
static bool_t write_string_item (const Tuple * tuple, int field, VFSFile *
handle, const char * key, int * written_length, int * written_items)
{
- char * value = tuple_get_str (tuple, field, NULL);
+ char * value = tuple_get_str (tuple, field);
if (value == NULL)
return TRUE;
@@ -391,13 +390,13 @@ static bool_t write_string_item (const Tuple * tuple, int field, VFSFile *
static bool_t write_integer_item (const Tuple * tuple, int field, VFSFile *
handle, const char * key, int * written_length, int * written_items)
{
- int value = tuple_get_int (tuple, field, NULL);
+ int value = tuple_get_int (tuple, field);
char scratch[32];
- if (! value)
+ if (value <= 0)
return TRUE;
- snprintf (scratch, sizeof scratch, "%d", value);
+ str_itoa (value, scratch, sizeof scratch);
if (! ape_write_item (handle, key, scratch, written_length))
return FALSE;
@@ -488,11 +487,11 @@ static bool_t ape_write_tag (const Tuple * tuple, VFSFile * handle)
start, SEEK_SET) || ! write_header (length, items, TRUE, handle))
goto ERR;
- free_tag_list (list);
+ g_list_free_full (list, (GDestroyNotify) free_value_pair);
return TRUE;
ERR:
- free_tag_list (list);
+ g_list_free_full (list, (GDestroyNotify) free_value_pair);
return FALSE;
}
diff --git a/src/libaudtag/audtag.c b/src/libaudtag/audtag.c
index 2e0d6b0..0ef0f3e 100644
--- a/src/libaudtag/audtag.c
+++ b/src/libaudtag/audtag.c
@@ -17,6 +17,9 @@
* the use of this software.
*/
+#include <stdlib.h>
+#include <string.h>
+
#include <glib.h>
#include <libaudcore/tuple.h>
@@ -38,8 +41,11 @@ EXPORT bool_t tag_tuple_read (Tuple * tuple, VFSFile * handle)
{
tag_module_t * module = find_tag_module (handle, TAG_TYPE_NONE);
- if (module == NULL)
+ if (! module || ! module->read_tag)
+ {
+ TAGDBG ("read_tag() not supported for %s\n", vfs_get_filename (handle));
return FALSE;
+ }
return module->read_tag (tuple, handle);
}
@@ -48,8 +54,11 @@ EXPORT bool_t tag_image_read (VFSFile * handle, void * * data, int64_t * size)
{
tag_module_t * module = find_tag_module (handle, TAG_TYPE_NONE);
- if (module == NULL || module->read_image == NULL)
+ if (! module || ! module->read_image)
+ {
+ TAGDBG ("read_image() not supported for %s\n", vfs_get_filename (handle));
return FALSE;
+ }
return module->read_image (handle, data, size);
}
@@ -58,12 +67,59 @@ EXPORT bool_t tag_tuple_write (const Tuple * tuple, VFSFile * handle, int new_ty
{
tag_module_t * module = find_tag_module (handle, new_type);
- if (module == NULL)
+ if (! module || ! module->write_tag)
+ {
+ TAGDBG ("write_tag() not supported for %s\n", vfs_get_filename (handle));
return FALSE;
+ }
return module->write_tag (tuple, handle);
}
+EXPORT bool_t tag_update_stream_metadata (Tuple * tuple, VFSFile * handle)
+{
+ bool_t updated = FALSE;
+ char * old, * new;
+ int value;
+
+ old = tuple_get_str (tuple, FIELD_TITLE);
+ new = vfs_get_metadata (handle, "track-name");
+
+ if (new && (! old || strcmp (old, new)))
+ {
+ tuple_set_str (tuple, FIELD_TITLE, new);
+ updated = TRUE;
+ }
+
+ str_unref (old);
+ str_unref (new);
+
+ old = tuple_get_str (tuple, FIELD_ARTIST);
+ new = vfs_get_metadata (handle, "stream-name");
+
+ if (new && (! old || strcmp (old, new)))
+ {
+ tuple_set_str (tuple, FIELD_ARTIST, new);
+ updated = TRUE;
+ }
+
+ str_unref (old);
+ str_unref (new);
+
+ new = vfs_get_metadata (handle, "content-bitrate");
+ value = new ? atoi (new) / 1000 : 0;
+
+ if (value && value != tuple_get_int (tuple, FIELD_BITRATE))
+ {
+ tuple_set_int (tuple, FIELD_BITRATE, value);
+ updated = TRUE;
+ }
+
+ str_unref (new);
+
+ return updated;
+}
+
/* deprecated */
EXPORT bool_t tag_tuple_write_to_file (Tuple * tuple, VFSFile * handle)
{
diff --git a/src/libaudtag/audtag.h b/src/libaudtag/audtag.h
index 626e89d..b746feb 100644
--- a/src/libaudtag/audtag.h
+++ b/src/libaudtag/audtag.h
@@ -27,6 +27,7 @@ enum
{
TAG_TYPE_NONE = 0,
TAG_TYPE_APE,
+ TAG_TYPE_ID3V2
};
void tag_set_verbose (bool_t verbose);
@@ -38,6 +39,8 @@ bool_t tag_image_read (VFSFile * handle, void * * data, int64_t * size);
* written if the file does not have any existing tag. */
bool_t tag_tuple_write (const Tuple * tuple, VFSFile * handle, int new_type);
+bool_t tag_update_stream_metadata (Tuple * tuple, VFSFile * handle);
+
/* deprecated, use tag_tuple_write */
bool_t tag_tuple_write_to_file (Tuple * tuple, VFSFile * handle);
diff --git a/src/libaudtag/id3/id3-common.c b/src/libaudtag/id3/id3-common.c
index aec6eb2..2a8a87e 100644
--- a/src/libaudtag/id3/id3-common.c
+++ b/src/libaudtag/id3/id3-common.c
@@ -1,6 +1,6 @@
/*
* id3-common.c
- * Copyright 2010-2011 John Lindgren
+ * Copyright 2010-2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,7 +17,10 @@
* the use of this software.
*/
+#include "id3-common.h"
+
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -25,7 +28,11 @@
#include <libaudcore/audstrings.h>
#include "../util.h"
-#include "id3-common.h"
+
+#define ID3_ENCODING_LATIN1 0
+#define ID3_ENCODING_UTF16 1
+#define ID3_ENCODING_UTF16_BE 2
+#define ID3_ENCODING_UTF8 3
static void * memchr16 (const void * mem, int16_t chr, int len)
{
@@ -41,76 +48,246 @@ static void * memchr16 (const void * mem, int16_t chr, int len)
return NULL;
}
-char * convert_text (const char * text, int length, int encoding, bool_t
- nulled, int * _converted, const char * * after)
+void id3_strnlen (const char * data, int size, int encoding,
+ int * bytes_without_nul, int * bytes_with_nul)
{
- char * buffer = NULL;
- gsize converted = 0;
+ bool_t is16 = (encoding == ID3_ENCODING_UTF16 || encoding == ID3_ENCODING_UTF16_BE);
+ char * nul = is16 ? memchr16 (data, 0, size) : memchr (data, 0, size);
- TAGDBG ("length = %d, encoding = %d, nulled = %d\n", length, encoding,
- nulled);
+ if (nul)
+ {
+ if (bytes_without_nul)
+ * bytes_without_nul = nul - data;
+ if (bytes_with_nul)
+ * bytes_with_nul = is16 ? nul + 2 - data : nul + 1 - data;
+ }
+ else
+ {
+ if (bytes_without_nul)
+ * bytes_without_nul = size;
+ if (bytes_with_nul)
+ * bytes_with_nul = size;
+ }
+}
- if (nulled)
+char * id3_convert (const char * data, int size, int encoding)
+{
+ if (encoding == ID3_ENCODING_UTF16)
+ return str_convert (data, size, "UTF-16", "UTF-8");
+ else if (encoding == ID3_ENCODING_UTF16_BE)
+ return str_convert (data, size, "UTF-16BE", "UTF-8");
+ else
+ return str_to_utf8 (data, size);
+}
+
+char * id3_decode_text (const char * data, int size)
+{
+ if (size < 1)
+ return NULL;
+
+ return id3_convert ((const char *) data + 1, size - 1, data[0]);
+}
+
+void id3_associate_string (Tuple * tuple, int field, const char * data, int size)
+{
+ char * text = id3_decode_text (data, size);
+
+ if (text && text[0])
{
- const char * null;
+ TAGDBG ("Field %i = %s.\n", field, text);
+ tuple_set_str (tuple, field, text);
+ }
- switch (encoding)
- {
- case 0:
- case 3:
- if ((null = memchr (text, 0, length)) == NULL)
- return NULL;
+ str_unref (text);
+}
- length = null - text;
- TAGDBG ("length before null = %d\n", length);
+void id3_associate_int (Tuple * tuple, int field, const char * data, int size)
+{
+ char * text = id3_decode_text (data, size);
- if (after != NULL)
- * after = null + 1;
+ if (text && atoi (text) >= 0)
+ {
+ TAGDBG ("Field %i = %s.\n", field, text);
+ tuple_set_int (tuple, field, atoi (text));
+ }
- break;
- case 1:
- case 2:
- if ((null = memchr16 (text, 0, length)) == NULL)
- return NULL;
+ str_unref (text);
+}
- length = null - text;
- TAGDBG ("length before null = %d\n", length);
+void id3_decode_genre (Tuple * tuple, const char * data, int size)
+{
+ char * text = id3_decode_text (data, size);
+ int numericgenre;
- if (after != NULL)
- * after = null + 2;
+ if (! text)
+ return;
- break;
- }
+ if (text[0] == '(')
+ numericgenre = atoi (text + 1);
+ else
+ numericgenre = atoi (text);
+
+ if (numericgenre > 0)
+ tuple_set_str (tuple, FIELD_GENRE, convert_numericgenre_to_text (numericgenre));
+ else
+ tuple_set_str (tuple, FIELD_GENRE, text);
+
+ str_unref (text);
+}
+
+void id3_decode_comment (Tuple * tuple, const char * data, int size)
+{
+ if (size < 4)
+ return;
+
+ int before_nul, after_nul;
+ id3_strnlen (data + 4, size - 4, data[0], & before_nul, & after_nul);
+
+ const char * lang = data + 1;
+ char * type = id3_convert (data + 4, before_nul, data[0]);
+ char * value = id3_convert (data + 4 + after_nul, size - 4 - after_nul, data[0]);
+
+ TAGDBG ("Comment: lang = %.3s, type = %s, value = %s.\n", lang, type, value);
+
+ if (type && ! type[0] && value) /* blank type = actual comment */
+ tuple_set_str (tuple, FIELD_COMMENT, value);
+
+ str_unref (type);
+ str_unref (value);
+}
+
+static bool_t decode_rva_block (const char * * _data, int * _size,
+ int * channel, int * adjustment, int * adjustment_unit, int * peak,
+ int * peak_unit)
+{
+ const char * data = * _data;
+ int size = * _size;
+ int peak_bits;
+
+ if (size < 4)
+ return FALSE;
+
+ * channel = data[0];
+ * adjustment = (char) data[1]; /* first byte is signed */
+ * adjustment = (* adjustment << 8) | data[2];
+ * adjustment_unit = 512;
+ peak_bits = data[3];
+
+ data += 4;
+ size -= 4;
+
+ TAGDBG ("RVA block: channel = %d, adjustment = %d/%d, peak bits = %d\n",
+ * channel, * adjustment, * adjustment_unit, peak_bits);
+
+ if (peak_bits > 0 && peak_bits < sizeof (int) * 8)
+ {
+ int bytes = (peak_bits + 7) / 8;
+ int count;
+
+ if (bytes > size)
+ return FALSE;
+
+ * peak = 0;
+ * peak_unit = 1 << peak_bits;
+
+ for (count = 0; count < bytes; count ++)
+ * peak = (* peak << 8) | data[count];
+
+ data += bytes;
+ size -= count;
+
+ TAGDBG ("RVA block: peak = %d/%d\n", * peak, * peak_unit);
+ }
+ else
+ {
+ * peak = 0;
+ * peak_unit = 0;
}
- switch (encoding)
+ * _data = data;
+ * _size = size;
+ return TRUE;
+}
+
+void id3_decode_rva (Tuple * tuple, const char * data, int size)
+{
+ const char * domain;
+ int channel, adjustment, adjustment_unit, peak, peak_unit;
+
+ if (memchr (data, 0, size) == NULL)
+ return;
+
+ domain = data;
+
+ TAGDBG ("RVA domain: %s\n", domain);
+
+ size -= strlen (domain) + 1;
+ data += strlen (domain) + 1;
+
+ while (size > 0)
{
- case 0:
- case 3:;
- int converted_int = 0;
- buffer = str_to_utf8_full (text, length, NULL, & converted_int);
- converted = converted_int;
- break;
- case 1:
- if (text[0] == (char) 0xff)
- buffer = g_convert (text + 2, length - 2, "UTF-8", "UTF-16LE", NULL,
- & converted, NULL);
+ if (! decode_rva_block (& data, & size, & channel, & adjustment,
+ & adjustment_unit, & peak, & peak_unit))
+ break;
+
+ if (channel != 1) /* specific channel? */
+ continue;
+
+ if (tuple_get_value_type (tuple, FIELD_GAIN_GAIN_UNIT) == TUPLE_INT)
+ adjustment = adjustment * (int64_t) tuple_get_int (tuple,
+ FIELD_GAIN_GAIN_UNIT) / adjustment_unit;
else
- buffer = g_convert (text + 2, length - 2, "UTF-8", "UTF-16BE", NULL,
- & converted, NULL);
-
- break;
- case 2:
- buffer = g_convert (text, length, "UTF-8", "UTF-16BE", NULL,
- & converted, NULL);
- break;
+ tuple_set_int (tuple, FIELD_GAIN_GAIN_UNIT, adjustment_unit);
+
+ if (peak_unit)
+ {
+ if (tuple_get_value_type (tuple, FIELD_GAIN_PEAK_UNIT) == TUPLE_INT)
+ peak = peak * (int64_t) tuple_get_int (tuple,
+ FIELD_GAIN_PEAK_UNIT) / peak_unit;
+ else
+ tuple_set_int (tuple, FIELD_GAIN_PEAK_UNIT, peak_unit);
+ }
+
+ if (! g_ascii_strcasecmp (domain, "album"))
+ {
+ tuple_set_int (tuple, FIELD_GAIN_ALBUM_GAIN, adjustment);
+
+ if (peak_unit)
+ tuple_set_int (tuple, FIELD_GAIN_ALBUM_PEAK, peak);
+ }
+ else if (! g_ascii_strcasecmp (domain, "track"))
+ {
+ tuple_set_int (tuple, FIELD_GAIN_TRACK_GAIN, adjustment);
+
+ if (peak_unit)
+ tuple_set_int (tuple, FIELD_GAIN_TRACK_PEAK, peak);
+ }
}
+}
+
+bool_t id3_decode_picture (const char * data, int size, int * type,
+ void * * image_data, int64_t * image_size)
+{
+ const char * nul;
+ if (size < 2 || ! (nul = memchr (data + 1, 0, size - 2)))
+ return FALSE;
+
+ const char * body = nul + 2;
+ int body_size = data + size - body;
+
+ int before_nul2, after_nul2;
+ id3_strnlen (body, body_size, data[0], & before_nul2, & after_nul2);
+
+ const char * mime = data + 1;
+ char * desc = id3_convert (body, before_nul2, data[0]);
- TAGDBG ("length converted: %d\n", (int) converted);
- TAGDBG ("string: %s\n", buffer);
+ * type = nul[1];
+ * image_size = body_size - after_nul2;
+ * image_data = g_memdup (body + after_nul2, * image_size);
- if (_converted != NULL)
- * _converted = converted;
+ TAGDBG ("Picture: mime = %s, type = %d, desc = %s, size = %d.\n", mime,
+ * type, desc, (int) * image_size);
- return buffer;
+ str_unref (desc);
+ return TRUE;
}
diff --git a/src/libaudtag/id3/id3-common.h b/src/libaudtag/id3/id3-common.h
index 6a0c61e..1b100ab 100644
--- a/src/libaudtag/id3/id3-common.h
+++ b/src/libaudtag/id3/id3-common.h
@@ -1,6 +1,6 @@
/*
* id3-common.h
- * Copyright 2010 John Lindgren
+ * Copyright 2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -20,25 +20,16 @@
#ifndef AUDTAG_ID3_COMMON_H
#define AUDTAG_ID3_COMMON_H
-/*
- * text: A pointer to the text data to be converted.
- * length: The size in bytes of the text data.
- * encoding: 0 = ISO-8859-1 or a similar 8-bit character set, 1 = UTF-16 with
- * BOM, 2 = UTF-16BE without BOM, 3 = UTF-8.
- * nulled: Whether the text data is null-terminated. If this flag is set and no
- * null character is found, an error occurs. If this flag is not set, any null
- * characters found are included in the converted text.
- * converted: A location in which to store the number of bytes converted, or
- * NULL. This count does not include the null character appended to the
- * converted text, but may include null characters present in the text data.
- * This count is undefined if an error occurs.
- * after: A location in which to store a pointer to the next character after a
- * terminating null character, or NULL. This pointer is undefined if the
- * "nulled" flag is not used or if an error occurs.
- * returns: A pointer to the converted text with a null character appended, or
- * NULL if an error occurs. The text must be freed when no longer needed.
- */
-char * convert_text (const char * text, int length, int encoding, bool_t
- nulled, int * _converted, const char * * after);
+#include <stdint.h>
+#include <libaudcore/tuple.h>
+
+void id3_associate_string (Tuple * tuple, int field, const char * data, int size);
+void id3_associate_int (Tuple * tuple, int field, const char * data, int size);
+void id3_decode_genre (Tuple * tuple, const char * data, int size);
+void id3_decode_comment (Tuple * tuple, const char * data, int size);
+void id3_decode_rva (Tuple * tuple, const char * data, int size);
+
+bool_t id3_decode_picture (const char * data, int size, int * type,
+ void * * image_data, int64_t * image_size);
#endif
diff --git a/src/libaudtag/id3/id3v1.c b/src/libaudtag/id3/id3v1.c
index 7517d19..16da2d2 100644
--- a/src/libaudtag/id3/id3v1.c
+++ b/src/libaudtag/id3/id3v1.c
@@ -1,6 +1,6 @@
/*
* id3v1.c
- * Copyright 2010-2011 Tony Vroon, MichaƂ Lipski, and John Lindgren
+ * Copyright 2013 John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,150 +17,126 @@
* the use of this software.
*/
-#include <glib.h>
-#include <glib/gstdio.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <glib.h>
+
#include <libaudcore/audstrings.h>
-#include "id3v1.h"
-#include "../util.h"
-#include <inttypes.h>
#include "../tag_module.h"
+#include "../util.h"
+
+#include "id3v1.h"
-bool_t id3v1_can_handle_file(VFSFile *f)
+#pragma pack(push)
+#pragma pack(1)
+
+typedef struct {
+ char header[3];
+ char title[30];
+ char artist[30];
+ char album[30];
+ char year[4];
+ char comment[30];
+ unsigned char genre;
+} ID3v1Tag;
+
+typedef struct {
+ char header[4];
+ char title[60];
+ char artist[60];
+ char album[60];
+ unsigned char speed;
+ char genre[30];
+ char start[6];
+ char end[6];
+} ID3v1Ext;
+
+#pragma pack(pop)
+
+static bool_t read_id3v1_tag (VFSFile * file, ID3v1Tag * tag)
{
- if (vfs_fseek(f, -128, SEEK_END))
+ if (vfs_fseek (file, -sizeof (ID3v1Tag), SEEK_END) < 0)
+ return FALSE;
+ if (vfs_fread (tag, 1, sizeof (ID3v1Tag), file) != sizeof (ID3v1Tag))
return FALSE;
- char *tag = read_char_data(f, 3);
-
- if (tag && !strncmp(tag, "TAG", 3))
- {
- g_free(tag);
- return TRUE;
- }
-
- g_free(tag);
- return FALSE;
+ return ! strncmp (tag->header, "TAG", 3);
}
-static char *convert_to_utf8(char *str)
+static bool_t read_id3v1_ext (VFSFile * file, ID3v1Ext * ext)
{
- if (!str)
- return NULL;
+ if (vfs_fseek (file, -(sizeof (ID3v1Ext) + sizeof (ID3v1Tag)), SEEK_END) < 0)
+ return FALSE;
+ if (vfs_fread (ext, 1, sizeof (ID3v1Ext), file) != sizeof (ID3v1Ext))
+ return FALSE;
- char *tmp = str;
- str = str_to_utf8(str);
- g_free(tmp);
+ return ! strncmp (ext->header, "TAG+", 4);
+}
- return g_strchomp(str);
+static bool_t id3v1_can_handle_file (VFSFile * file)
+{
+ ID3v1Tag tag;
+ return read_id3v1_tag (file, & tag);
}
-bool_t id3v1_read_tag (Tuple * tuple, VFSFile * f)
+static bool_t combine_string (Tuple * tuple, int field, const char * str1,
+ int size1, const char * str2, int size2)
{
- bool_t genre_set = FALSE;
+ char str[size1 + size2 + 1];
+
+ memset (str, 0, sizeof str);
+ strncpy (str, str1, size1);
+ strncpy (str + strlen (str), str2, size2);
+
+ g_strchomp (str);
- if (vfs_fseek(f, -125, SEEK_END))
+ if (! str[0])
return FALSE;
- char *title = read_char_data(f, 30);
- char *artist = read_char_data(f, 30);
- char *album = read_char_data(f, 30);
- char *year = read_char_data(f, 4);
- char *comment = read_char_data(f, 30);
- char *genre = read_char_data(f, 1);
- char track = 0;
+ char * utf8 = str_to_utf8 (str, -1);
+ if (! utf8)
+ return FALSE;
- if (comment && comment[28] == 0 && comment[29] != 0)
- track = comment[29];
+ tuple_set_str (tuple, field, utf8);
- title = convert_to_utf8(title);
- artist = convert_to_utf8(artist);
- album = convert_to_utf8(album);
- comment = convert_to_utf8(comment);
+ str_unref (utf8);
+ return TRUE;
+}
+
+static bool_t id3v1_read_tag (Tuple * tuple, VFSFile * file)
+{
+ ID3v1Tag tag;
+ ID3v1Ext ext;
- if (vfs_fseek(f, -355, SEEK_END))
+ if (! read_id3v1_tag (file, & tag))
return FALSE;
- char *tag = read_char_data(f, 4);
-
- if (tag && ! strncmp (tag, "TAG+", 4))
- {
- char *ext_title = convert_to_utf8(read_char_data(f, 60));
- char *ext_artist = convert_to_utf8(read_char_data(f, 60));
- char *ext_album = convert_to_utf8(read_char_data(f, 60));
- char *tmp_title = title ? g_strconcat(title, ext_title, NULL) : NULL;
- char *tmp_artist = artist ? g_strconcat(artist, ext_artist, NULL) : NULL;
- char *tmp_album = album ? g_strconcat(album, ext_album, NULL) : NULL;
- g_free(title);
- g_free(artist);
- g_free(album);
- g_free(ext_title);
- g_free(ext_artist);
- g_free(ext_album);
- title = tmp_title;
- artist = tmp_artist;
- album = tmp_album;
-
- if (vfs_fseek (f, -170, SEEK_END))
- goto ERR;
-
- char *ext_genre = convert_to_utf8(read_char_data(f, 30));
-
- if (ext_genre)
- {
- tuple_set_str(tuple, FIELD_GENRE, NULL, ext_genre);
- genre_set = TRUE;
- g_free(ext_genre);
- }
- }
-
- if (title)
- tuple_set_str(tuple, FIELD_TITLE, NULL, title);
- if (artist)
- tuple_set_str(tuple, FIELD_ARTIST, NULL, artist);
- if (album)
- tuple_set_str(tuple, FIELD_ALBUM, NULL, album);
- if (year)
- tuple_set_int(tuple, FIELD_YEAR, NULL, atoi(year));
- if (comment)
- tuple_set_str(tuple, FIELD_COMMENT, NULL, comment);
- if (track)
- tuple_set_int(tuple, FIELD_TRACK_NUMBER, NULL, track);
-
- if (genre && !genre_set)
- tuple_set_str(tuple, FIELD_GENRE, NULL, convert_numericgenre_to_text(*genre));
-
- g_free(title);
- g_free(artist);
- g_free(album);
- g_free(year);
- g_free(comment);
- g_free(genre);
+ if (! read_id3v1_ext (file, & ext))
+ memset (& ext, 0, sizeof (ID3v1Ext));
- return TRUE;
+ combine_string (tuple, FIELD_TITLE, tag.title, sizeof tag.title, ext.title, sizeof ext.title);
+ combine_string (tuple, FIELD_ARTIST, tag.artist, sizeof tag.artist, ext.artist, sizeof ext.artist);
+ combine_string (tuple, FIELD_ALBUM, tag.album, sizeof tag.album, ext.album, sizeof ext.album);
+ combine_string (tuple, FIELD_COMMENT, tag.comment, sizeof tag.comment, NULL, 0);
-ERR:
- g_free (title);
- g_free (artist);
- g_free (album);
- g_free (year);
- g_free (comment);
- g_free (genre);
- return FALSE;
-}
+ SNCOPY (year, tag.year, 4);
+ if (atoi (year))
+ tuple_set_int (tuple, FIELD_YEAR, atoi (year));
-static bool_t id3v1_write_tag (const Tuple * tuple, VFSFile * handle)
-{
- fprintf (stderr, "Writing ID3v1 tags is not implemented yet, sorry.\n");
- return FALSE;
+ if (! tag.comment[28] && tag.comment[29])
+ tuple_set_int (tuple, FIELD_TRACK_NUMBER, (unsigned char) tag.comment[29]);
+
+ if (! combine_string (tuple, FIELD_GENRE, ext.genre, sizeof ext.genre, NULL, 0))
+ tuple_set_str (tuple, FIELD_GENRE, convert_numericgenre_to_text (tag.genre));
+
+ return TRUE;
}
tag_module_t id3v1 = {
.name = "ID3v1",
.can_handle_file = id3v1_can_handle_file,
.read_tag = id3v1_read_tag,
- .write_tag = id3v1_write_tag,
};
diff --git a/src/libaudtag/id3/id3v22.c b/src/libaudtag/id3/id3v22.c
index 40cc345..7e886fd 100644
--- a/src/libaudtag/id3/id3v22.c
+++ b/src/libaudtag/id3/id3v22.c
@@ -1,5 +1,5 @@
/*
- * id3v24.c
+ * id3v22.c
* Copyright 2009-2011 Paula Stanciu, Tony Vroon, John Lindgren,
* and William Pitcock
*
@@ -135,7 +135,7 @@ static bool_t read_header (VFSFile * handle, int * version, bool_t *
}
static bool_t read_frame (VFSFile * handle, int max_size, int version,
- bool_t syncsafe, int * frame_size, char * key, unsigned char * * data, int * size)
+ bool_t syncsafe, int * frame_size, char * key, char * * data, int * size)
{
ID3v2FrameHeader header;
int i;
@@ -178,31 +178,6 @@ static bool_t read_frame (VFSFile * handle, int max_size, int version,
return TRUE;
}
-static char * decode_text_frame (const unsigned char * data, int size)
-{
- return convert_text ((const char *) data + 1, size - 1, data[0], FALSE,
- NULL, NULL);
-}
-
-static bool_t decode_comment_frame (const unsigned char * _data, int size, char * *
- lang, char * * type, char * * value)
-{
- const char * data = (const char *) _data;
- char * pair, * sep;
- int converted;
-
- pair = convert_text (data + 4, size - 4, data[0], FALSE, & converted, NULL);
-
- if (pair == NULL || (sep = memchr (pair, 0, converted)) == NULL)
- return FALSE;
-
- * lang = g_strndup (data + 1, 3);
- * type = g_strdup (pair);
- * value = g_strdup (sep + 1);
-
- g_free (pair);
- return TRUE;
-}
static int get_frame_id (const char * key)
{
@@ -217,218 +192,6 @@ static int get_frame_id (const char * key)
return -1;
}
-static void associate_string (Tuple * tuple, int field, const char *
- customfield, const unsigned char * data, int size)
-{
- char * text = decode_text_frame (data, size);
-
- if (text == NULL || ! text[0])
- {
- g_free (text);
- return;
- }
-
- if (customfield != NULL)
- TAGDBG ("Custom field %s = %s.\n", customfield, text);
- else
- TAGDBG ("Field %i = %s.\n", field, text);
-
- tuple_set_str (tuple, field, customfield, text);
- g_free (text);
-}
-
-static void associate_int (Tuple * tuple, int field, const char *
- customfield, const unsigned char * data, int size)
-{
- char * text = decode_text_frame (data, size);
-
- if (text == NULL || atoi (text) < 1)
- {
- g_free (text);
- return;
- }
-
- if (customfield != NULL)
- TAGDBG ("Custom field %s = %s.\n", customfield, text);
- else
- TAGDBG ("Field %i = %s.\n", field, text);
-
- tuple_set_int (tuple, field, customfield, atoi (text));
- g_free (text);
-}
-
-static void decode_comment (Tuple * tuple, const unsigned char * data, int size)
-{
- char * lang, * type, * value;
-
- if (! decode_comment_frame (data, size, & lang, & type, & value))
- return;
-
- TAGDBG ("Comment: lang = %s, type = %s, value = %s.\n", lang, type, value);
-
- if (! type[0]) /* blank type == actual comment */
- tuple_set_str (tuple, FIELD_COMMENT, NULL, value);
-
- g_free (lang);
- g_free (type);
- g_free (value);
-}
-
-static void decode_txx (Tuple * tuple, const unsigned char * data, int size)
-{
- char * text = decode_text_frame (data, size);
-
- if (text == NULL)
- return;
-
- char *separator = strchr(text, 0);
-
- if (separator == NULL)
- return;
-
- char * value = separator + 1;
- TAGDBG ("TXX: %s = %s.\n", text, value);
- tuple_set_str (tuple, -1, text, value);
-
- g_free (text);
-}
-
-static bool_t decode_rva_block (const unsigned char * * _data, int * _size, int *
- channel, int * adjustment, int * adjustment_unit, int * peak, int *
- peak_unit)
-{
- const unsigned char * data = * _data;
- int size = * _size;
- int peak_bits;
-
- if (size < 4)
- return FALSE;
-
- * channel = data[0];
- * adjustment = (char) data[1]; /* first byte is signed */
- * adjustment = (* adjustment << 8) | data[2];
- * adjustment_unit = 512;
- peak_bits = data[3];
-
- data += 4;
- size -= 4;
-
- TAGDBG ("RVA block: channel = %d, adjustment = %d/%d, peak bits = %d\n",
- * channel, * adjustment, * adjustment_unit, peak_bits);
-
- if (peak_bits > 0 && peak_bits < sizeof (int) * 8)
- {
- int bytes = (peak_bits + 7) / 8;
- int count;
-
- if (bytes > size)
- return FALSE;
-
- * peak = 0;
- * peak_unit = 1 << peak_bits;
-
- for (count = 0; count < bytes; count ++)
- * peak = (* peak << 8) | data[count];
-
- data += bytes;
- size -= count;
-
- TAGDBG ("RVA block: peak = %d/%d\n", * peak, * peak_unit);
- }
- else
- {
- * peak = 0;
- * peak_unit = 0;
- }
-
- * _data = data;
- * _size = size;
- return TRUE;
-}
-
-static void decode_rva (Tuple * tuple, const unsigned char * data, int size)
-{
- const char * domain;
- int channel, adjustment, adjustment_unit, peak, peak_unit;
-
- if (memchr (data, 0, size) == NULL)
- return;
-
- domain = (const char *) data;
-
- TAGDBG ("RVA domain: %s\n", domain);
-
- size -= strlen (domain) + 1;
- data += strlen (domain) + 1;
-
- while (size > 0)
- {
- if (! decode_rva_block (& data, & size, & channel, & adjustment,
- & adjustment_unit, & peak, & peak_unit))
- break;
-
- if (channel != 1) /* specific channel? */
- continue;
-
- if (tuple_get_value_type (tuple, FIELD_GAIN_GAIN_UNIT, NULL) ==
- TUPLE_INT)
- adjustment = adjustment * (int64_t) tuple_get_int (tuple,
- FIELD_GAIN_GAIN_UNIT, NULL) / adjustment_unit;
- else
- tuple_set_int (tuple, FIELD_GAIN_GAIN_UNIT, NULL,
- adjustment_unit);
-
- if (peak_unit)
- {
- if (tuple_get_value_type (tuple, FIELD_GAIN_PEAK_UNIT, NULL) ==
- TUPLE_INT)
- peak = peak * (int64_t) tuple_get_int (tuple,
- FIELD_GAIN_PEAK_UNIT, NULL) / peak_unit;
- else
- tuple_set_int (tuple, FIELD_GAIN_PEAK_UNIT, NULL,
- peak_unit);
- }
-
- if (! g_ascii_strcasecmp (domain, "album"))
- {
- tuple_set_int (tuple, FIELD_GAIN_ALBUM_GAIN, NULL, adjustment);
-
- if (peak_unit)
- tuple_set_int (tuple, FIELD_GAIN_ALBUM_PEAK, NULL, peak);
- }
- else if (! g_ascii_strcasecmp (domain, "track"))
- {
- tuple_set_int (tuple, FIELD_GAIN_TRACK_GAIN, NULL, adjustment);
-
- if (peak_unit)
- tuple_set_int (tuple, FIELD_GAIN_TRACK_PEAK, NULL, peak);
- }
- }
-}
-
-static void decode_genre (Tuple * tuple, const unsigned char * data, int size)
-{
- int numericgenre;
- char * text = decode_text_frame (data, size);
-
- if (text == NULL)
- return;
-
- if (text[0] == '(')
- numericgenre = atoi (text + 1);
- else
- numericgenre = atoi (text);
-
- if (numericgenre > 0)
- {
- tuple_set_str(tuple, FIELD_GENRE, NULL, convert_numericgenre_to_text(numericgenre));
- return;
- }
- tuple_set_str(tuple, FIELD_GENRE, NULL, text);
- g_free (text);
- return;
-}
-
static bool_t id3v22_can_handle_file (VFSFile * handle)
{
int version, header_size, data_size;
@@ -457,58 +220,55 @@ bool_t id3v22_read_tag (Tuple * tuple, VFSFile * handle)
{
int frame_size, size, id;
char key[5];
- unsigned char * data;
+ char * data;
if (! read_frame (handle, data_size - pos, version, syncsafe,
& frame_size, key, & data, & size))
- {
- TAGDBG("read_frame failed at pos %i\n", pos);
- break;
- }
+ {
+ TAGDBG("read_frame failed at pos %i\n", pos);
+ break;
+ }
id = get_frame_id (key);
switch (id)
{
case ID3_ALBUM:
- associate_string (tuple, FIELD_ALBUM, NULL, data, size);
+ id3_associate_string (tuple, FIELD_ALBUM, data, size);
break;
case ID3_TITLE:
- associate_string (tuple, FIELD_TITLE, NULL, data, size);
+ id3_associate_string (tuple, FIELD_TITLE, data, size);
break;
case ID3_COMPOSER:
- associate_string (tuple, FIELD_COMPOSER, NULL, data, size);
+ id3_associate_string (tuple, FIELD_COMPOSER, data, size);
break;
case ID3_COPYRIGHT:
- associate_string (tuple, FIELD_COPYRIGHT, NULL, data, size);
+ id3_associate_string (tuple, FIELD_COPYRIGHT, data, size);
break;
case ID3_DATE:
- associate_string (tuple, FIELD_DATE, NULL, data, size);
+ id3_associate_string (tuple, FIELD_DATE, data, size);
break;
case ID3_LENGTH:
- associate_int (tuple, FIELD_LENGTH, NULL, data, size);
+ id3_associate_int (tuple, FIELD_LENGTH, data, size);
break;
case ID3_FUCKO_ARTIST:
case ID3_ARTIST:
- associate_string (tuple, FIELD_ARTIST, NULL, data, size);
+ id3_associate_string (tuple, FIELD_ARTIST, data, size);
break;
case ID3_TRACKNR:
- associate_int (tuple, FIELD_TRACK_NUMBER, NULL, data, size);
+ id3_associate_int (tuple, FIELD_TRACK_NUMBER, data, size);
break;
case ID3_YEAR:
- associate_int (tuple, FIELD_YEAR, NULL, data, size);
+ id3_associate_int (tuple, FIELD_YEAR, data, size);
break;
case ID3_GENRE:
- decode_genre (tuple, data, size);
+ id3_decode_genre (tuple, data, size);
break;
case ID3_COMMENT:
- decode_comment (tuple, data, size);
- break;
- case ID3_TXX:
- decode_txx (tuple, data, size);
+ id3_decode_comment (tuple, data, size);
break;
case ID3_RVA:
- decode_rva (tuple, data, size);
+ id3_decode_rva (tuple, data, size);
break;
default:
TAGDBG ("Ignoring unsupported ID3 frame %s.\n", key);
@@ -522,30 +282,9 @@ bool_t id3v22_read_tag (Tuple * tuple, VFSFile * handle)
return TRUE;
}
-static bool_t parse_pic (const unsigned char * data, int size, char * * mime,
- int * type, void * * image_data, int * image_size)
+static bool_t id3v22_read_image (VFSFile * handle, void * * image_data, int64_t * image_size)
{
- const unsigned char * sep;
- const unsigned char * after;
-
- if (size < 2 || (sep = memchr (data + 1, 0, size - 2)) == NULL)
- return FALSE;
-
- after = sep + 2;
- * mime = g_strdup ((const char *) data + 1);
- * type = sep[1];
- * image_data = g_memdup (after, data + size - after);
- * image_size = data + size - after;
-
- TAGDBG ("PIC: mime = %s, type = %d, size = %d.\n", * mime,
- * type, * image_size);
- return TRUE;
-}
-
-static bool_t id3v22_read_image (VFSFile * handle, void * * image_data,
- int64_t * image_size64)
-{
- int version, header_size, data_size, parsed, image_size = 0;
+ int version, header_size, data_size, parsed;
bool_t syncsafe;
gsize offset;
bool_t found = FALSE;
@@ -558,8 +297,7 @@ static bool_t id3v22_read_image (VFSFile * handle, void * * image_data,
{
int frame_size, size, type;
char key[5];
- unsigned char * data;
- char * mime;
+ char * data;
int frame_length;
if (! read_frame (handle, data_size - parsed, version, syncsafe,
@@ -568,11 +306,9 @@ static bool_t id3v22_read_image (VFSFile * handle, void * * image_data,
frame_length = size;
- if (! strcmp (key, "PIC") && parse_pic (data, frame_length, & mime, & type,
- image_data, & image_size))
+ if (! strcmp (key, "PIC") && id3_decode_picture (data, frame_length,
+ & type, image_data, image_size))
{
- g_free (mime);
-
if (type == 3) /* album cover */
found = TRUE;
else if (type == 0) /* iTunes */
@@ -588,9 +324,6 @@ static bool_t id3v22_read_image (VFSFile * handle, void * * image_data,
parsed += frame_size;
}
- if (found)
- * image_size64 = image_size;
-
return found;
}
diff --git a/src/libaudtag/id3/id3v24.c b/src/libaudtag/id3/id3v24.c
index 15b78bd..fac1a44 100644
--- a/src/libaudtag/id3/id3v24.c
+++ b/src/libaudtag/id3/id3v24.c
@@ -1,6 +1,6 @@
/*
* id3v24.c
- * Copyright 2009-2011 Paula Stanciu, Tony Vroon, John Lindgren,
+ * Copyright 2009-2014 Paula Stanciu, Tony Vroon, John Lindgren,
* Mikael Magnusson, and MichaƂ Lipski
*
* Redistribution and use in source and binary forms, with or without
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
#include <libaudcore/audstrings.h>
@@ -95,7 +96,7 @@ ID3v2FrameHeader;
typedef struct
{
char key[5];
- unsigned char * data;
+ char * data;
int size;
}
GenericFrame;
@@ -197,6 +198,9 @@ static bool_t read_header (VFSFile * handle, int * version, bool_t *
if (! validate_header (& footer, TRUE))
return FALSE;
+ if (vfs_fseek (handle, sizeof (ID3v2Header), SEEK_SET))
+ return FALSE;
+
* footer_size = sizeof (ID3v2Header);
}
else
@@ -263,15 +267,15 @@ static bool_t read_header (VFSFile * handle, int * version, bool_t *
return TRUE;
}
-static int unsyncsafe (unsigned char * data, int size)
+static int unsyncsafe (char * data, int size)
{
- unsigned char * get = data, * set = data;
+ char * get = data, * set = data;
while (size --)
{
- unsigned char c = * set ++ = * get ++;
+ char c = * set ++ = * get ++;
- if (c == 0xff && size && ! get[0])
+ if (c == (char) 0xff && size && ! get[0])
{
size --;
get ++;
@@ -282,7 +286,7 @@ static int unsyncsafe (unsigned char * data, int size)
}
static bool_t read_frame (VFSFile * handle, int max_size, int version,
- bool_t syncsafe, int * frame_size, char * key, unsigned char * * data, int * size)
+ bool_t syncsafe, int * frame_size, char * key, char * * data, int * size)
{
ID3v2FrameHeader header;
int skip = 0;
@@ -339,44 +343,15 @@ static bool_t read_frame (VFSFile * handle, int max_size, int version,
return TRUE;
}
-static char * decode_text_frame (const unsigned char * data, int size)
-{
- return convert_text ((const char *) data + 1, size - 1, data[0], FALSE,
- NULL, NULL);
-}
-
-static bool_t decode_comment_frame (const unsigned char * _data, int size, char * *
- lang, char * * type, char * * value)
-{
- const char * data = (const char *) _data;
- char * pair, * sep;
- int converted;
-
- pair = convert_text (data + 4, size - 4, data[0], FALSE, & converted, NULL);
-
- if (pair == NULL || (sep = memchr (pair, 0, converted)) == NULL)
- return FALSE;
-
- * lang = g_strndup (data + 1, 3);
- * type = g_strdup (pair);
- * value = g_strdup (sep + 1);
-
- g_free (pair);
- return TRUE;
-}
-
static void free_frame (GenericFrame * frame)
{
g_free (frame->data);
- g_free (frame);
+ g_slice_free (GenericFrame, frame);
}
static void free_frame_list (GList * list)
{
- for (GList * node = list; node; node = node->next)
- free_frame (node->data);
-
- g_list_free (list);
+ g_list_free_full (list, (GDestroyNotify) free_frame);
}
static void read_all_frames (VFSFile * handle, int version, bool_t syncsafe,
@@ -388,7 +363,7 @@ static void read_all_frames (VFSFile * handle, int version, bool_t syncsafe,
{
int frame_size, size;
char key[5];
- unsigned char * data;
+ char * data;
GenericFrame * frame;
if (! read_frame (handle, data_size - pos, version, syncsafe,
@@ -397,7 +372,7 @@ static void read_all_frames (VFSFile * handle, int version, bool_t syncsafe,
pos += frame_size;
- frame = g_malloc (sizeof (GenericFrame));
+ frame = g_slice_new (GenericFrame);
strcpy (frame->key, key);
frame->data = data;
frame->size = size;
@@ -414,23 +389,23 @@ static void read_all_frames (VFSFile * handle, int version, bool_t syncsafe,
}
}
-static bool_t write_frame (VFSFile * handle, GenericFrame * frame, int *
- frame_size)
+static bool_t write_frame (int fd, GenericFrame * frame, int version, int * frame_size)
{
TAGDBG ("Writing frame %s, size %d\n", frame->key, frame->size);
ID3v2FrameHeader header;
memcpy (header.key, frame->key, 4);
- header.size = syncsafe32 (frame->size);
- header.size = GUINT32_TO_BE (header.size);
+
+ uint32_t size = (version == 3) ? frame->size : syncsafe32 (frame->size);
+ header.size = GUINT32_TO_BE (size);
+
header.flags = 0;
- if (vfs_fwrite (& header, 1, sizeof (ID3v2FrameHeader), handle) != sizeof
- (ID3v2FrameHeader))
+ if (write (fd, & header, sizeof (ID3v2FrameHeader)) != sizeof (ID3v2FrameHeader))
return FALSE;
- if (vfs_fwrite (frame->data, 1, frame->size, handle) != frame->size)
+ if (write (fd, frame->data, frame->size) != frame->size)
return FALSE;
* frame_size = sizeof (ID3v2FrameHeader) + frame->size;
@@ -438,7 +413,8 @@ static bool_t write_frame (VFSFile * handle, GenericFrame * frame, int *
}
typedef struct {
- VFSFile * file;
+ int fd;
+ int version;
int written_size;
} WriteState;
@@ -449,33 +425,32 @@ static void write_frame_list (void * key, void * list, void * user)
for (GList * node = list; node; node = node->next)
{
int size;
- if (write_frame (state->file, node->data, & size))
+ if (write_frame (state->fd, node->data, state->version, & size))
state->written_size += size;
}
}
-static int write_all_frames (VFSFile * handle, GHashTable * dict)
+static int write_all_frames (int fd, GHashTable * dict, int version)
{
- WriteState state = {handle, 0};
+ WriteState state = {fd, version, 0};
g_hash_table_foreach (dict, write_frame_list, & state);
TAGDBG ("Total frame bytes written = %d.\n", state.written_size);
return state.written_size;
}
-static bool_t write_header (VFSFile * handle, int size, bool_t is_footer)
+static bool_t write_header (int fd, int version, int size)
{
ID3v2Header header;
- memcpy (header.magic, is_footer ? "3DI" : "ID3", 3);
- header.version = 4;
+ memcpy (header.magic, "ID3", 3);
+ header.version = version;
header.revision = 0;
- header.flags = ID3_HEADER_HAS_FOOTER;
+ header.flags = 0;
header.size = syncsafe32 (size);
header.size = GUINT32_TO_BE (header.size);
- return vfs_fwrite (& header, 1, sizeof (ID3v2Header), handle) == sizeof
- (ID3v2Header);
+ return write (fd, & header, sizeof (ID3v2Header)) == sizeof (ID3v2Header);
}
static int get_frame_id (const char * key)
@@ -491,46 +466,7 @@ static int get_frame_id (const char * key)
return -1;
}
-static void associate_string (Tuple * tuple, int field, const char *
- customfield, const unsigned char * data, int size)
-{
- char * text = decode_text_frame (data, size);
-
- if (text == NULL || ! text[0])
- {
- g_free (text);
- return;
- }
-
- if (customfield != NULL)
- TAGDBG ("Custom field %s = %s.\n", customfield, text);
- else
- TAGDBG ("Field %i = %s.\n", field, text);
-
- tuple_set_str (tuple, field, customfield, text);
- g_free (text);
-}
-
-static void associate_int (Tuple * tuple, int field, const char *
- customfield, const unsigned char * data, int size)
-{
- char * text = decode_text_frame (data, size);
-
- if (text == NULL || atoi (text) < 1)
- {
- g_free (text);
- return;
- }
-
- if (customfield != NULL)
- TAGDBG ("Custom field %s = %s.\n", customfield, text);
- else
- TAGDBG ("Field %i = %s.\n", field, text);
-
- tuple_set_int (tuple, field, customfield, atoi (text));
- g_free (text);
-}
-
+#if 0
static void decode_private_info (Tuple * tuple, const unsigned char * data, int size)
{
char * text = g_strndup ((const char *) data, size);
@@ -572,164 +508,12 @@ static void decode_private_info (Tuple * tuple, const unsigned char * data, int
DONE:
g_free (text);
}
-
-static void decode_comment (Tuple * tuple, const unsigned char * data, int size)
-{
- char * lang, * type, * value;
-
- if (! decode_comment_frame (data, size, & lang, & type, & value))
- return;
-
- TAGDBG ("Comment: lang = %s, type = %s, value = %s.\n", lang, type, value);
-
- if (! type[0]) /* blank type == actual comment */
- tuple_set_str (tuple, FIELD_COMMENT, NULL, value);
-
- g_free (lang);
- g_free (type);
- g_free (value);
-}
-
-static bool_t decode_rva2_block (const unsigned char * * _data, int * _size, int *
- channel, int * adjustment, int * adjustment_unit, int * peak, int *
- peak_unit)
-{
- const unsigned char * data = * _data;
- int size = * _size;
- int peak_bits;
-
- if (size < 4)
- return FALSE;
-
- * channel = data[0];
- * adjustment = (char) data[1]; /* first byte is signed */
- * adjustment = (* adjustment << 8) | data[2];
- * adjustment_unit = 512;
- peak_bits = data[3];
-
- data += 4;
- size -= 4;
-
- TAGDBG ("RVA2 block: channel = %d, adjustment = %d/%d, peak bits = %d\n",
- * channel, * adjustment, * adjustment_unit, peak_bits);
-
- if (peak_bits > 0 && peak_bits < sizeof (int) * 8)
- {
- int bytes = (peak_bits + 7) / 8;
- int count;
-
- if (bytes > size)
- return FALSE;
-
- * peak = 0;
- * peak_unit = 1 << peak_bits;
-
- for (count = 0; count < bytes; count ++)
- * peak = (* peak << 8) | data[count];
-
- data += bytes;
- size -= count;
-
- TAGDBG ("RVA2 block: peak = %d/%d\n", * peak, * peak_unit);
- }
- else
- {
- * peak = 0;
- * peak_unit = 0;
- }
-
- * _data = data;
- * _size = size;
- return TRUE;
-}
-
-static void decode_rva2 (Tuple * tuple, const unsigned char * data, int size)
-{
- const char * domain;
- int channel, adjustment, adjustment_unit, peak, peak_unit;
-
- if (memchr (data, 0, size) == NULL)
- return;
-
- domain = (const char *) data;
-
- TAGDBG ("RVA2 domain: %s\n", domain);
-
- size -= strlen (domain) + 1;
- data += strlen (domain) + 1;
-
- while (size > 0)
- {
- if (! decode_rva2_block (& data, & size, & channel, & adjustment,
- & adjustment_unit, & peak, & peak_unit))
- break;
-
- if (channel != 1) /* specific channel? */
- continue;
-
- if (tuple_get_value_type (tuple, FIELD_GAIN_GAIN_UNIT, NULL) ==
- TUPLE_INT)
- adjustment = adjustment * (int64_t) tuple_get_int (tuple,
- FIELD_GAIN_GAIN_UNIT, NULL) / adjustment_unit;
- else
- tuple_set_int (tuple, FIELD_GAIN_GAIN_UNIT, NULL,
- adjustment_unit);
-
- if (peak_unit)
- {
- if (tuple_get_value_type (tuple, FIELD_GAIN_PEAK_UNIT, NULL) ==
- TUPLE_INT)
- peak = peak * (int64_t) tuple_get_int (tuple,
- FIELD_GAIN_PEAK_UNIT, NULL) / peak_unit;
- else
- tuple_set_int (tuple, FIELD_GAIN_PEAK_UNIT, NULL,
- peak_unit);
- }
-
- if (! g_ascii_strcasecmp (domain, "album"))
- {
- tuple_set_int (tuple, FIELD_GAIN_ALBUM_GAIN, NULL, adjustment);
-
- if (peak_unit)
- tuple_set_int (tuple, FIELD_GAIN_ALBUM_PEAK, NULL, peak);
- }
- else if (! g_ascii_strcasecmp (domain, "track"))
- {
- tuple_set_int (tuple, FIELD_GAIN_TRACK_GAIN, NULL, adjustment);
-
- if (peak_unit)
- tuple_set_int (tuple, FIELD_GAIN_TRACK_PEAK, NULL, peak);
- }
- }
-}
-
-static void decode_genre (Tuple * tuple, const unsigned char * data, int size)
-{
- int numericgenre;
- char * text = decode_text_frame (data, size);
-
- if (text == NULL)
- return;
-
- if (text[0] == '(')
- numericgenre = atoi (text + 1);
- else
- numericgenre = atoi (text);
-
- if (numericgenre > 0)
- tuple_set_str (tuple, FIELD_GENRE, NULL,
- convert_numericgenre_to_text (numericgenre));
- else
- tuple_set_str (tuple, FIELD_GENRE, NULL, text);
-
- g_free (text);
- return;
-}
+#endif
static GenericFrame * add_generic_frame (int id, int size,
GHashTable * dict)
{
- GenericFrame * frame = g_malloc (sizeof (GenericFrame));
+ GenericFrame * frame = g_slice_new (GenericFrame);
strcpy (frame->key, id3_frames[id]);
frame->data = g_malloc (size);
@@ -756,11 +540,18 @@ static void add_text_frame (int id, const char * text, GHashTable * dict)
}
TAGDBG ("Adding text frame %s = %s.\n", id3_frames[id], text);
- int length = strlen (text);
- GenericFrame * frame = add_generic_frame (id, length + 1, dict);
- frame->data[0] = 3; /* UTF-8 encoding */
- memcpy (frame->data + 1, text, length);
+ long words;
+ uint16_t * utf16 = g_utf8_to_utf16 (text, -1, NULL, & words, NULL);
+ g_return_if_fail (utf16);
+
+ GenericFrame * frame = add_generic_frame (id, 3 + 2 * words, dict);
+
+ frame->data[0] = 1; /* UTF-16 encoding */
+ * (uint16_t *) (frame->data + 1) = 0xfeff; /* byte order mark */
+ memcpy (frame->data + 3, utf16, 2 * words);
+
+ g_free (utf16);
}
static void add_comment_frame (const char * text, GHashTable * dict)
@@ -772,18 +563,27 @@ static void add_comment_frame (const char * text, GHashTable * dict)
}
TAGDBG ("Adding comment frame = %s.\n", text);
- int length = strlen (text);
- GenericFrame * frame = add_generic_frame (ID3_COMMENT, length + 5, dict);
- frame->data[0] = 3; /* UTF-8 encoding */
- strcpy ((char *) frame->data + 1, "eng"); /* well, it *might* be English */
- memcpy (frame->data + 5, text, length);
+ long words;
+ uint16_t * utf16 = g_utf8_to_utf16 (text, -1, NULL, & words, NULL);
+ g_return_if_fail (utf16);
+
+ GenericFrame * frame = add_generic_frame (ID3_COMMENT, 10 + 2 * words, dict);
+
+ frame->data[0] = 1; /* UTF-16 encoding */
+ memcpy (frame->data + 1, "eng", 3); /* language */
+ * (uint16_t *) (frame->data + 4) = 0xfeff; /* byte order mark */
+ * (uint16_t *) (frame->data + 6) = 0; /* end of content description */
+ * (uint16_t *) (frame->data + 8) = 0xfeff; /* byte order mark */
+ memcpy (frame->data + 10, utf16, 2 * words);
+
+ g_free (utf16);
}
static void add_frameFromTupleStr (const Tuple * tuple, int field, int
id3_field, GHashTable * dict)
{
- char * str = tuple_get_str (tuple, field, NULL);
+ char * str = tuple_get_str (tuple, field);
add_text_frame (id3_field, str, dict);
str_unref (str);
}
@@ -791,14 +591,14 @@ static void add_frameFromTupleStr (const Tuple * tuple, int field, int
static void add_frameFromTupleInt (const Tuple * tuple, int field, int
id3_field, GHashTable * dict)
{
- if (tuple_get_value_type (tuple, field, NULL) != TUPLE_INT)
+ if (tuple_get_value_type (tuple, field) != TUPLE_INT)
{
remove_frame (id3_field, dict);
return;
}
char scratch[16];
- snprintf (scratch, sizeof scratch, "%d", tuple_get_int (tuple, field, NULL));
+ str_itoa (tuple_get_int (tuple, field), scratch, sizeof scratch);
add_text_frame (id3_field, scratch, dict);
}
@@ -827,7 +627,7 @@ static bool_t id3v24_read_tag (Tuple * tuple, VFSFile * handle)
{
int frame_size, size, id;
char key[5];
- unsigned char * data;
+ char * data;
if (! read_frame (handle, data_size - pos, version, syncsafe,
& frame_size, key, & data, & size))
@@ -838,44 +638,46 @@ static bool_t id3v24_read_tag (Tuple * tuple, VFSFile * handle)
switch (id)
{
case ID3_ALBUM:
- associate_string (tuple, FIELD_ALBUM, NULL, data, size);
+ id3_associate_string (tuple, FIELD_ALBUM, data, size);
break;
case ID3_TITLE:
- associate_string (tuple, FIELD_TITLE, NULL, data, size);
+ id3_associate_string (tuple, FIELD_TITLE, data, size);
break;
case ID3_COMPOSER:
- associate_string (tuple, FIELD_COMPOSER, NULL, data, size);
+ id3_associate_string (tuple, FIELD_COMPOSER, data, size);
break;
case ID3_COPYRIGHT:
- associate_string (tuple, FIELD_COPYRIGHT, NULL, data, size);
+ id3_associate_string (tuple, FIELD_COPYRIGHT, data, size);
break;
case ID3_DATE:
- associate_string (tuple, FIELD_DATE, NULL, data, size);
+ id3_associate_string (tuple, FIELD_DATE, data, size);
break;
case ID3_LENGTH:
- associate_int (tuple, FIELD_LENGTH, NULL, data, size);
+ id3_associate_int (tuple, FIELD_LENGTH, data, size);
break;
case ID3_ARTIST:
- associate_string (tuple, FIELD_ARTIST, NULL, data, size);
+ id3_associate_string (tuple, FIELD_ARTIST, data, size);
break;
case ID3_TRACKNR:
- associate_int (tuple, FIELD_TRACK_NUMBER, NULL, data, size);
+ id3_associate_int (tuple, FIELD_TRACK_NUMBER, data, size);
break;
case ID3_YEAR:
case ID3_RECORDING_TIME:
- associate_int (tuple, FIELD_YEAR, NULL, data, size);
+ id3_associate_int (tuple, FIELD_YEAR, data, size);
break;
case ID3_GENRE:
- decode_genre (tuple, data, size);
+ id3_decode_genre (tuple, data, size);
break;
case ID3_COMMENT:
- decode_comment (tuple, data, size);
+ id3_decode_comment (tuple, data, size);
break;
+#if 0
case ID3_PRIVATE:
decode_private_info (tuple, data, size);
break;
+#endif
case ID3_RVA2:
- decode_rva2 (tuple, data, size);
+ id3_decode_rva (tuple, data, size);
break;
default:
TAGDBG ("Ignoring unsupported ID3 frame %s.\n", key);
@@ -889,33 +691,10 @@ static bool_t id3v24_read_tag (Tuple * tuple, VFSFile * handle)
return TRUE;
}
-static bool_t parse_apic (const unsigned char * _data, int size, char * * mime,
- int * type, char * * desc, void * * image_data, int * image_size)
-{
- const char * data = (const char *) _data;
- const char * sep, * after;
-
- if (size < 2 || (sep = memchr (data + 1, 0, size - 2)) == NULL)
- return FALSE;
-
- if ((* desc = convert_text (sep + 2, data + size - sep - 2, data[0], TRUE,
- NULL, & after)) == NULL)
- return FALSE;
-
- * mime = g_strdup (data + 1);
- * type = sep[1];
- * image_data = g_memdup (after, data + size - after);
- * image_size = data + size - after;
-
- TAGDBG ("APIC: mime = %s, type = %d, desc = %s, size = %d.\n", * mime,
- * type, * desc, * image_size);
- return TRUE;
-}
-
static bool_t id3v24_read_image (VFSFile * handle, void * * image_data,
- int64_t * image_size64)
+ int64_t * image_size)
{
- int version, header_size, data_size, footer_size, parsed, image_size = 0;
+ int version, header_size, data_size, footer_size, parsed;
bool_t syncsafe;
int64_t offset;
bool_t found = FALSE;
@@ -928,19 +707,15 @@ static bool_t id3v24_read_image (VFSFile * handle, void * * image_data,
{
int frame_size, size, type;
char key[5];
- unsigned char * data;
- char * mime, * desc;
+ char * data;
if (! read_frame (handle, data_size - parsed, version, syncsafe,
& frame_size, key, & data, & size))
break;
- if (! strcmp (key, "APIC") && parse_apic (data, size, & mime, & type,
- & desc, image_data, & image_size))
+ if (! strcmp (key, "APIC") && id3_decode_picture (data, size, & type,
+ image_data, image_size))
{
- g_free (mime);
- g_free (desc);
-
if (type == 3) /* album cover */
found = TRUE;
else if (type == 0) /* iTunes */
@@ -956,26 +731,22 @@ static bool_t id3v24_read_image (VFSFile * handle, void * * image_data,
parsed += frame_size;
}
- if (found)
- * image_size64 = image_size;
-
return found;
}
static bool_t id3v24_write_tag (const Tuple * tuple, VFSFile * f)
{
- int version, header_size, data_size, footer_size;
+ int version = 3;
+ int header_size, data_size, footer_size;
bool_t syncsafe;
int64_t offset;
- if (! read_header (f, & version, & syncsafe, & offset, & header_size,
- & data_size, & footer_size))
- return FALSE;
-
//read all frames into generic frames;
GHashTable * dict = g_hash_table_new_full (g_str_hash, g_str_equal,
(GDestroyNotify) str_unref, (GDestroyNotify) free_frame_list);
- read_all_frames (f, version, syncsafe, data_size, dict);
+
+ if (read_header (f, & version, & syncsafe, & offset, & header_size, & data_size, & footer_size))
+ read_all_frames (f, version, syncsafe, data_size, dict);
//make the new frames from tuple and replace in the dictionary the old frames with the new ones
add_frameFromTupleStr (tuple, FIELD_TITLE, ID3_TITLE, dict);
@@ -985,46 +756,50 @@ static bool_t id3v24_write_tag (const Tuple * tuple, VFSFile * f)
add_frameFromTupleInt (tuple, FIELD_TRACK_NUMBER, ID3_TRACKNR, dict);
add_frameFromTupleStr (tuple, FIELD_GENRE, ID3_GENRE, dict);
- char * comment = tuple_get_str (tuple, FIELD_COMMENT, NULL);
+ char * comment = tuple_get_str (tuple, FIELD_COMMENT);
add_comment_frame (comment, dict);
str_unref (comment);
- if (! offset)
- {
- if (! cut_beginning_tag (f, header_size + data_size + footer_size))
- goto ERR;
- }
- else
- {
- if (offset + header_size + data_size + footer_size != vfs_fsize (f))
- goto ERR;
- if (vfs_ftruncate (f, offset))
- goto ERR;
- }
+ /* location and size of non-tag data */
+ int64_t mp3_offset = offset ? 0 : header_size + data_size + footer_size;
+ int64_t mp3_size = offset ? offset : -1;
- offset = vfs_fsize (f);
+ TempFile temp = {0};
+ if (! open_temp_file_for (& temp, f))
+ goto ERR;
- if (offset < 0 || vfs_fseek (f, offset, SEEK_SET) || ! write_header (f, 0,
- FALSE))
+ /* write empty header (will be overwritten later) */
+ if (! write_header (temp.fd, version, 0))
goto ERR;
- data_size = write_all_frames (f, dict);
+ /* write tag data */
+ data_size = write_all_frames (temp.fd, dict, version);
+
+ /* copy non-tag data */
+ if (! copy_region_to_temp_file (& temp, f, mp3_offset, mp3_size))
+ goto ERR;
+
+ /* go back to beginning and write real header */
+ if (lseek (temp.fd, 0, SEEK_SET) < 0 || ! write_header (temp.fd, version, data_size))
+ goto ERR;
- if (! write_header (f, data_size, TRUE) || vfs_fseek (f, offset, SEEK_SET)
- || ! write_header (f, data_size, FALSE))
+ if (! replace_with_temp_file (& temp, f))
goto ERR;
g_hash_table_destroy (dict);
+ str_unref (temp.name);
return TRUE;
ERR:
g_hash_table_destroy (dict);
+ str_unref (temp.name);
return FALSE;
}
tag_module_t id3v24 =
{
.name = "ID3v2.3/4",
+ .type = TAG_TYPE_ID3V2,
.can_handle_file = id3v24_can_handle_file,
.read_tag = id3v24_read_tag,
.read_image = id3v24_read_image,
diff --git a/src/libaudtag/tag_module.c b/src/libaudtag/tag_module.c
index 90f6806..560c5b8 100644
--- a/src/libaudtag/tag_module.c
+++ b/src/libaudtag/tag_module.c
@@ -32,13 +32,12 @@
#include "ape/ape.h"
static tag_module_t * const modules[] = {& id3v24, & id3v22, & ape, & id3v1};
-#define N_MODULES (sizeof modules / sizeof modules[0])
tag_module_t * find_tag_module (VFSFile * fd, int new_type)
{
int i;
- for (i = 0; i < N_MODULES; i ++)
+ for (i = 0; i < ARRAY_LEN (modules); i ++)
{
if (vfs_fseek(fd, 0, SEEK_SET))
{
@@ -56,7 +55,7 @@ tag_module_t * find_tag_module (VFSFile * fd, int new_type)
/* No existing tag; see if we can create a new one. */
if (new_type != TAG_TYPE_NONE)
{
- for (i = 0; i < N_MODULES; i ++)
+ for (i = 0; i < ARRAY_LEN (modules); i ++)
{
if (modules[i]->type == new_type)
return modules[i];
diff --git a/src/libaudtag/util.c b/src/libaudtag/util.c
index 15ffe55..5abd24b 100644
--- a/src/libaudtag/util.c
+++ b/src/libaudtag/util.c
@@ -1,6 +1,6 @@
/*
* util.c
- * Copyright 2009-2011 Paula Stanciu, Tony Vroon, and John Lindgren
+ * Copyright 2009-2014 Paula Stanciu, Tony Vroon, and John Lindgren
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
@@ -17,165 +17,15 @@
* the use of this software.
*/
-#include <glib.h>
#include <stdio.h>
+#include <unistd.h>
-#include "util.h"
-#include <inttypes.h>
-
-/* convert windows time to unix time */
-time_t unix_time(uint64_t win_time)
-{
- uint64_t t = (uint64_t) ((win_time / 10000000LL) - 11644473600LL);
- return (time_t) t;
-}
-
-uint16_t get_year(uint64_t win_time)
-{
- GDate *d = g_date_new();
- g_date_set_time_t(d, unix_time(win_time));
- uint16_t year = g_date_get_year(d);
- g_date_free(d);
- return year;
-}
-
-char * read_char_data (VFSFile * file, int size)
-{
- char * value = g_malloc (size + 1);
- if (vfs_fread (value, 1, size, file) < size)
- {
- g_free (value);
- return NULL;
- }
- value[size] = 0;
- return value;
-}
-
-bool_t write_char_data(VFSFile * f, char * data, size_t i)
-{
- return (vfs_fwrite(data, i, 1, f) == i);
-}
-
-uint8_t read_uint8(VFSFile * fd)
-{
- uint16_t i;
- if (vfs_fread(&i, 1, 1, fd) == 1)
- {
- return i;
- }
- return -1;
-}
-
-uint16_t read_LEuint16(VFSFile * fd)
-{
- uint16_t a;
- if (vfs_fget_le16(&a, fd))
- return a;
- else
- return -1;
-}
-
-uint16_t read_BEuint16(VFSFile * fd)
-{
- uint16_t a;
- if (vfs_fget_be16(&a, fd))
- return a;
- else
- return -1;
-}
-
-uint32_t read_LEuint32(VFSFile * fd)
-{
- uint32_t a;
- if (vfs_fget_le32(&a, fd))
- return a;
- else
- return -1;
-}
-
-uint32_t read_BEuint32(VFSFile * fd)
-{
- uint32_t a;
- if (vfs_fget_be32(&a, fd))
- return a;
- else
- return -1;
-}
-
-uint64_t read_LEuint64(VFSFile * fd)
-{
- uint64_t a;
- if (vfs_fget_le64(&a, fd))
- return a;
- else
- return -1;
-}
-
-uint64_t read_BEuint64(VFSFile * fd)
-{
- uint64_t a;
- if (vfs_fget_be64(&a, fd))
- return a;
- else
- return 1;
-}
-
-bool_t write_uint8(VFSFile * fd, uint8_t val)
-{
- return (vfs_fwrite(&val, 1, 1, fd) == 1);
-}
-
-bool_t write_LEuint16(VFSFile * fd, uint16_t val)
-{
- uint16_t le_val = GUINT32_TO_LE(val);
- return (vfs_fwrite(&le_val, 2, 1, fd) == 2);
-}
-
-bool_t write_BEuint32(VFSFile * fd, uint32_t val)
-{
- uint32_t be_val = GUINT32_TO_BE(val);
- return (vfs_fwrite(&be_val, 4, 1, fd) == 4);
-}
-
-bool_t write_LEuint32(VFSFile * fd, uint32_t val)
-{
- uint32_t le_val = GUINT32_TO_LE(val);
- return (vfs_fwrite(&le_val, 4, 1, fd) == 4);
-}
-
-bool_t write_LEuint64(VFSFile * fd, uint64_t val)
-{
- uint64_t le_val = GUINT64_TO_LE(val);
- return (vfs_fwrite(&le_val, 8, 1, fd) == 8);
-}
-
-bool_t cut_beginning_tag (VFSFile * handle, int64_t tag_size)
-{
- unsigned char buffer[16384];
- gsize offset = 0, readed;
-
- if (! tag_size)
- return TRUE;
-
- do
- {
- if (vfs_fseek (handle, offset + tag_size, SEEK_SET))
- return FALSE;
-
- readed = vfs_fread (buffer, 1, sizeof buffer, handle);
-
- if (vfs_fseek (handle, offset, SEEK_SET))
- return FALSE;
+#include <glib.h>
+#include <glib/gstdio.h>
- if (vfs_fwrite (buffer, 1, readed, handle) != readed)
- return FALSE;
+#include <libaudcore/audstrings.h>
- offset += readed;
- }
- while (readed);
-
- return vfs_ftruncate (handle, offset) == 0;
-}
+#include "util.h"
const char *convert_numericgenre_to_text(int numericgenre)
{
@@ -315,12 +165,10 @@ const char *convert_numericgenre_to_text(int numericgenre)
int count;
- for (count = 0; count < G_N_ELEMENTS(table); count++)
+ for (count = 0; count < ARRAY_LEN (table); count++)
{
if (table[count].numericgenre == numericgenre)
- {
- return table[count].genre;
- }
+ return table[count].genre;
}
return "Unknown";
@@ -338,3 +186,90 @@ uint32_t syncsafe32 (uint32_t x)
0xfe00000) << 3);
}
+bool_t open_temp_file_for (TempFile * temp, VFSFile * file)
+{
+ char * template = filename_build (g_get_tmp_dir (), "audacious-temp-XXXXXX");
+ SCOPY (tempname, template);
+ str_unref (template);
+
+ temp->fd = g_mkstemp (tempname);
+ if (temp->fd < 0)
+ return FALSE;
+
+ temp->name = str_get (tempname);
+
+ return TRUE;
+}
+
+bool_t copy_region_to_temp_file (TempFile * temp, VFSFile * file, int64_t offset, int64_t size)
+{
+ if (vfs_fseek (file, offset, SEEK_SET) < 0)
+ return FALSE;
+
+ char buf[16384];
+
+ while (size < 0 || size > 0)
+ {
+ int64_t readsize;
+
+ if (size > 0)
+ {
+ readsize = MIN (size, sizeof buf);
+ if (vfs_fread (buf, 1, readsize, file) != readsize)
+ return FALSE;
+
+ size -= readsize;
+ }
+ else
+ {
+ /* negative size means copy to EOF */
+ readsize = vfs_fread (buf, 1, sizeof buf, file);
+ if (! readsize)
+ break;
+ }
+
+ int64_t written = 0;
+ while (written < readsize)
+ {
+ int64_t writesize = write (temp->fd, buf + written, readsize - written);
+ if (writesize <= 0)
+ return FALSE;
+
+ written += writesize;
+ }
+ }
+
+ return TRUE;
+}
+
+bool_t replace_with_temp_file (TempFile * temp, VFSFile * file)
+{
+ if (lseek (temp->fd, 0, SEEK_SET) < 0)
+ return FALSE;
+
+ if (vfs_fseek (file, 0, SEEK_SET) < 0)
+ return FALSE;
+
+ if (vfs_ftruncate (file, 0) < 0)
+ return FALSE;
+
+ char buf[16384];
+
+ while (1)
+ {
+ int64_t readsize = read (temp->fd, buf, sizeof buf);
+ if (readsize < 0)
+ return FALSE;
+
+ if (readsize == 0)
+ break;
+
+ if (vfs_fwrite (buf, 1, readsize, file) != readsize)
+ return FALSE;
+ }
+
+ close (temp->fd);
+ g_unlink (temp->name);
+
+ return TRUE;
+}
diff --git a/src/libaudtag/util.h b/src/libaudtag/util.h
index 27cfd80..3b80ad7 100644
--- a/src/libaudtag/util.h
+++ b/src/libaudtag/util.h
@@ -18,17 +18,13 @@
*/
#ifndef TAGUTIL_H
-
#define TAGUTIL_H
#include <stdint.h>
-#include <time.h>
+#include <stdio.h>
-#include "libaudcore/tuple.h"
#include "libaudcore/vfs.h"
-#define BROKEN 1
-
enum {
GENRE_BLUES = 0,
GENRE_CLASSIC_ROCK,
@@ -161,36 +157,18 @@ extern bool_t tag_verbose;
#define TAGDBG(...) do {if (tag_verbose) {printf ("%s:%d [%s]: ", __FILE__, __LINE__, __FUNCTION__); printf (__VA_ARGS__);}} while (0)
-time_t unix_time(uint64_t win_time);
-
-uint16_t get_year(uint64_t win_time);
-
-char *read_char_data(VFSFile *fd, int size);
-bool_t write_char_data(VFSFile *f, char *data, size_t i);
-
-uint8_t read_uint8(VFSFile *fd);
-uint16_t read_LEuint16(VFSFile *fd);
-uint16_t read_BEuint16(VFSFile *fd);
-uint32_t read_LEuint32(VFSFile *fd);
-uint32_t read_BEuint32(VFSFile *fd);
-uint64_t read_LEuint64(VFSFile *fd);
-uint64_t read_BEuint64(VFSFile *fd);
-
-
-bool_t write_uint8(VFSFile *fd, uint8_t val);
-bool_t write_BEuint16(VFSFile *fd, uint16_t val);
-bool_t write_LEuint16(VFSFile *fd, uint16_t val);
-bool_t write_BEuint32(VFSFile *fd, uint32_t val);
-bool_t write_LEuint32(VFSFile *fd, uint32_t val);
-bool_t write_BEuint64(VFSFile *fd, uint64_t val);
-bool_t write_LEuint64(VFSFile *fd, uint64_t val);
-
-uint64_t read_LEint64(VFSFile *fd);
-bool_t cut_beginning_tag (VFSFile * handle, int64_t tag_size);
-
const char *convert_numericgenre_to_text(int numericgenre);
uint32_t unsyncsafe32 (uint32_t x);
uint32_t syncsafe32 (uint32_t x);
-#endif
+typedef struct {
+ char * name;
+ int fd;
+} TempFile;
+
+bool_t open_temp_file_for (TempFile * temp, VFSFile * file);
+bool_t copy_region_to_temp_file (TempFile * temp, VFSFile * file, int64_t offset, int64_t size);
+bool_t replace_with_temp_file (TempFile * temp, VFSFile * file);
+
+#endif /* TAGUTIL_H */