./PaxHeaders.25599/soundkonverter-2.0.50000644000175000001440000000012012255311653015726 xustar000000000000000030 mtime=1387631531.326008797 20 atime=1357667204 30 ctime=1387631579.895401596 ./soundkonverter-2.0.5/0000755000175000001440000000000012255311653015421 5ustar00danielusers00000000000000./soundkonverter-2.0.5/PaxHeaders.25599/cmake0000644000175000001440000000006211357377551017026 xustar000000000000000020 atime=1357667220 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/cmake/0000755000175000001440000000000011357377551016514 5ustar00danielusers00000000000000./soundkonverter-2.0.5/cmake/PaxHeaders.25599/modules0000644000175000001440000000012012255035630020454 xustar000000000000000030 mtime=1387543448.096134704 20 atime=1357667234 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/cmake/modules/0000755000175000001440000000000012255035630020147 5ustar00danielusers00000000000000./soundkonverter-2.0.5/cmake/modules/PaxHeaders.25599/FindTaglib-Extras.cmake0000644000175000001440000000006211346023516025007 xustar000000000000000020 atime=1357667622 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/cmake/modules/FindTaglib-Extras.cmake0000644000175000001440000001104511346023516024421 0ustar00danielusers00000000000000# - Try to find the Taglib-Extras library # Once done this will define # # TAGLIB-EXTRAS_FOUND - system has the taglib library # TAGLIB-EXTRAS_CFLAGS - the taglib cflags # TAGLIB-EXTRAS_LIBRARIES - The libraries needed to use taglib # Copyright (c) 2006, Laurent Montel, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if(NOT TAGLIB-EXTRAS_MIN_VERSION) set(TAGLIB-EXTRAS_MIN_VERSION "1.0") endif(NOT TAGLIB-EXTRAS_MIN_VERSION) if(NOT WIN32) find_program(TAGLIB-EXTRASCONFIG_EXECUTABLE NAMES taglib-extras-config PATHS ${BIN_INSTALL_DIR} ) endif(NOT WIN32) #reset vars set(TAGLIB-EXTRAS_LIBRARIES) set(TAGLIB-EXTRAS_CFLAGS) # if taglib-extras-config has been found if(TAGLIB-EXTRASCONFIG_EXECUTABLE) exec_program(${TAGLIB-EXTRASCONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB-EXTRAS_VERSION) if(TAGLIB-EXTRAS_VERSION STRLESS "${TAGLIB-EXTRAS_MIN_VERSION}") message(STATUS "TagLib-Extras version too old: version searched :${TAGLIB-EXTRAS_MIN_VERSION}, found ${TAGLIB-EXTRAS_VERSION}") set(TAGLIB-EXTRAS_FOUND FALSE) else(TAGLIB-EXTRAS_VERSION STRLESS "${TAGLIB-EXTRAS_MIN_VERSION}") exec_program(${TAGLIB-EXTRASCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB-EXTRAS_LIBRARIES) exec_program(${TAGLIB-EXTRASCONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB-EXTRAS_CFLAGS) if(TAGLIB-EXTRAS_LIBRARIES AND TAGLIB-EXTRAS_CFLAGS) set(TAGLIB-EXTRAS_FOUND TRUE) endif(TAGLIB-EXTRAS_LIBRARIES AND TAGLIB-EXTRAS_CFLAGS) string(REGEX REPLACE " *-I" ";" TAGLIB-EXTRAS_INCLUDES "${TAGLIB-EXTRAS_CFLAGS}") endif(TAGLIB-EXTRAS_VERSION STRLESS "${TAGLIB-EXTRAS_MIN_VERSION}") mark_as_advanced(TAGLIB-EXTRAS_CFLAGS TAGLIB-EXTRAS_LIBRARIES TAGLIB-EXTRAS_INCLUDES) else(TAGLIB-EXTRASCONFIG_EXECUTABLE) find_path(TAGLIB-EXTRAS_INCLUDES NAMES tfile_helper.h PATH_SUFFIXES taglib-extras PATHS ${KDE4_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ) IF(NOT WIN32) # on non-win32 we don't need to take care about WIN32_DEBUG_POSTFIX FIND_LIBRARY(TAGLIB-EXTRAS_LIBRARIES tag-extras PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR}) ELSE(NOT WIN32) # 1. get all possible libnames SET(args PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR}) SET(newargs "") SET(libnames_release "") SET(libnames_debug "") LIST(LENGTH args listCount) # just one name LIST(APPEND libnames_release "tag-extras") LIST(APPEND libnames_debug "tag-extrasd") SET(newargs ${args}) # search the release lib FIND_LIBRARY(TAGLIB-EXTRAS_LIBRARIES_RELEASE NAMES ${libnames_release} ${newargs} ) # search the debug lib FIND_LIBRARY(TAGLIB-EXTRAS_LIBRARIES_DEBUG NAMES ${libnames_debug} ${newargs} ) IF(TAGLIB-EXTRAS_LIBRARIES_RELEASE AND TAGLIB-EXTRAS_LIBRARIES_DEBUG) # both libs found SET(TAGLIB-EXTRAS_LIBRARIES optimized ${TAGLIB-EXTRAS_LIBRARIES_RELEASE} debug ${TAGLIB-EXTRAS_LIBRARIES_DEBUG}) ELSE(TAGLIB-EXTRAS_LIBRARIES_RELEASE AND TAGLIB-EXTRAS_LIBRARIES_DEBUG) IF(TAGLIB-EXTRAS_LIBRARIES_RELEASE) # only release found SET(TAGLIB-EXTRAS_LIBRARIES ${TAGLIB-EXTRAS_LIBRARIES_RELEASE}) ELSE(TAGLIB-EXTRAS_LIBRARIES_RELEASE) # only debug (or nothing) found SET(TAGLIB-EXTRAS_LIBRARIES ${TAGLIB-EXTRAS_LIBRARIES_DEBUG}) ENDIF(TAGLIB-EXTRAS_LIBRARIES_RELEASE) ENDIF(TAGLIB-EXTRAS_LIBRARIES_RELEASE AND TAGLIB-EXTRAS_LIBRARIES_DEBUG) MARK_AS_ADVANCED(TAGLIB-EXTRAS_LIBRARIES_RELEASE) MARK_AS_ADVANCED(TAGLIB-EXTRAS_LIBRARIES_DEBUG) ENDIF(NOT WIN32) INCLUDE(FindPackageMessage) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Taglib-Extras DEFAULT_MSG TAGLIB-EXTRAS_INCLUDES TAGLIB-EXTRAS_LIBRARIES) endif(TAGLIB-EXTRASCONFIG_EXECUTABLE) if(TAGLIB-EXTRAS_FOUND) if(NOT Taglib-Extras_FIND_QUIETLY AND TAGLIB-EXTRASCONFIG_EXECUTABLE) message(STATUS "Taglib-Extras found: ${TAGLIB-EXTRAS_LIBRARIES}") endif(NOT Taglib-Extras_FIND_QUIETLY AND TAGLIB-EXTRASCONFIG_EXECUTABLE) else(TAGLIB-EXTRAS_FOUND) if(Taglib-Extras_FIND_REQUIRED) message(FATAL_ERROR "Could not find Taglib-Extras") endif(Taglib-Extras_FIND_REQUIRED) endif(TAGLIB-EXTRAS_FOUND) ./soundkonverter-2.0.5/cmake/modules/PaxHeaders.25599/FindKcddb.cmake0000644000175000001440000000006211743013200023336 xustar000000000000000020 atime=1357667622 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/cmake/modules/FindKcddb.cmake0000644000175000001440000000215711743013200022754 0ustar00danielusers00000000000000# - Try to find Kcddb # Once done this will define # # KCDDB_FOUND - system has Kcddb # KCDDB_INCLUDE_DIR - the Kcddb include directory # KCDDB_LIBRARIES - Link these to use Kcddb # KCDDB_DEFINITIONS - Compiler switches required for using Kcddb # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. # if ( KCDDB_INCLUDE_DIR AND KCDDB_LIBRARIES ) # in cache already SET(Kcddb_FIND_QUIETLY TRUE) endif ( KCDDB_INCLUDE_DIR AND KCDDB_LIBRARIES ) FIND_PATH(KCDDB_INCLUDE_DIR NAMES client.h PATH_SUFFIXES libkcddb PATHS ${KDE4_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ) FIND_LIBRARY(KCDDB_LIBRARIES NAMES kcddb PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR} ) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Kcddb "The kcddb devel package is needed. Alternatively you may find the necessary files in the kdemultimedia package." KCDDB_INCLUDE_DIR KCDDB_LIBRARIES ) # show the KCDDB_INCLUDE_DIR and KCDDB_LIBRARIES variables only in the advanced view MARK_AS_ADVANCED(KCDDB_INCLUDE_DIR KCDDB_LIBRARIES ) ./soundkonverter-2.0.5/cmake/modules/PaxHeaders.25599/FindCdparanoia.cmake0000644000175000001440000000006211132453425024401 xustar000000000000000020 atime=1357667622 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/cmake/modules/FindCdparanoia.cmake0000644000175000001440000000251211132453425024012 0ustar00danielusers00000000000000# - Try to find the CD Paranoia libraries # Once done this will define # # CDPARANOIA_FOUND - system has cdparanoia # CDPARANOIA_INCLUDE_DIR - the cdparanoia include directory # CDPARANOIA_LIBRARIES - Link these to use cdparanoia # # Copyright (c) 2006, Richard Laerkaeng, # Copyright (c) 2007, Allen Winter, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if (CDPARANOIA_INCLUDE_DIR AND CDPARANOIA_LIBRARIES) # in cache already SET(CDPARANOIA_FOUND TRUE) else (CDPARANOIA_INCLUDE_DIR AND CDPARANOIA_LIBRARIES) FIND_PATH(CDPARANOIA_INCLUDE_DIR cdda_interface.h PATH_SUFFIXES cdda) FIND_LIBRARY(CDPARANOIA_LIBRARY NAMES cdda_paranoia) FIND_LIBRARY(CDPARANOIA_IF_LIBRARY NAMES cdda_interface) IF (CDPARANOIA_LIBRARY AND CDPARANOIA_IF_LIBRARY) SET(CDPARANOIA_LIBRARIES ${CDPARANOIA_LIBRARY} ${CDPARANOIA_IF_LIBRARY} "-lm") ENDIF (CDPARANOIA_LIBRARY AND CDPARANOIA_IF_LIBRARY) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cdparanoia DEFAULT_MSG CDPARANOIA_LIBRARIES CDPARANOIA_INCLUDE_DIR) MARK_AS_ADVANCED(CDPARANOIA_INCLUDE_DIR CDPARANOIA_LIBRARIES) endif (CDPARANOIA_INCLUDE_DIR AND CDPARANOIA_LIBRARIES) ./soundkonverter-2.0.5/cmake/modules/PaxHeaders.25599/FindTaglib.cmake0000644000175000001440000000006211346023516023543 xustar000000000000000020 atime=1357667622 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/cmake/modules/FindTaglib.cmake0000644000175000001440000000773611346023516023171 0ustar00danielusers00000000000000# - Try to find the Taglib library # Once done this will define # # TAGLIB_FOUND - system has the taglib library # TAGLIB_CFLAGS - the taglib cflags # TAGLIB_LIBRARIES - The libraries needed to use taglib # Copyright (c) 2006, Laurent Montel, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if(NOT TAGLIB_MIN_VERSION) set(TAGLIB_MIN_VERSION "1.6") endif(NOT TAGLIB_MIN_VERSION) if(NOT WIN32) find_program(TAGLIBCONFIG_EXECUTABLE NAMES taglib-config PATHS ${BIN_INSTALL_DIR} ) endif(NOT WIN32) #reset vars set(TAGLIB_LIBRARIES) set(TAGLIB_CFLAGS) # if taglib-config has been found if(TAGLIBCONFIG_EXECUTABLE) exec_program(${TAGLIBCONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB_VERSION) if(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}") message(STATUS "TagLib version too old: version searched :${TAGLIB_MIN_VERSION}, found ${TAGLIB_VERSION}") set(TAGLIB_FOUND FALSE) else(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}") exec_program(${TAGLIBCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB_LIBRARIES) exec_program(${TAGLIBCONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE TAGLIB_CFLAGS) if(TAGLIB_LIBRARIES AND TAGLIB_CFLAGS) set(TAGLIB_FOUND TRUE) endif(TAGLIB_LIBRARIES AND TAGLIB_CFLAGS) string(REGEX REPLACE " *-I" ";" TAGLIB_INCLUDES "${TAGLIB_CFLAGS}") endif(TAGLIB_VERSION STRLESS "${TAGLIB_MIN_VERSION}") mark_as_advanced(TAGLIB_CFLAGS TAGLIB_LIBRARIES TAGLIB_INCLUDES) else(TAGLIBCONFIG_EXECUTABLE) find_path(TAGLIB_INCLUDES NAMES tag.h PATH_SUFFIXES taglib PATHS ${KDE4_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ) IF(NOT WIN32) # on non-win32 we don't need to take care about WIN32_DEBUG_POSTFIX FIND_LIBRARY(TAGLIB_LIBRARIES tag PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR}) ELSE(NOT WIN32) # 1. get all possible libnames SET(args PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR}) SET(newargs "") SET(libnames_release "") SET(libnames_debug "") LIST(LENGTH args listCount) # just one name LIST(APPEND libnames_release "tag") LIST(APPEND libnames_debug "tagd") SET(newargs ${args}) # search the release lib FIND_LIBRARY(TAGLIB_LIBRARIES_RELEASE NAMES ${libnames_release} ${newargs} ) # search the debug lib FIND_LIBRARY(TAGLIB_LIBRARIES_DEBUG NAMES ${libnames_debug} ${newargs} ) IF(TAGLIB_LIBRARIES_RELEASE AND TAGLIB_LIBRARIES_DEBUG) # both libs found SET(TAGLIB_LIBRARIES optimized ${TAGLIB_LIBRARIES_RELEASE} debug ${TAGLIB_LIBRARIES_DEBUG}) ELSE(TAGLIB_LIBRARIES_RELEASE AND TAGLIB_LIBRARIES_DEBUG) IF(TAGLIB_LIBRARIES_RELEASE) # only release found SET(TAGLIB_LIBRARIES ${TAGLIB_LIBRARIES_RELEASE}) ELSE(TAGLIB_LIBRARIES_RELEASE) # only debug (or nothing) found SET(TAGLIB_LIBRARIES ${TAGLIB_LIBRARIES_DEBUG}) ENDIF(TAGLIB_LIBRARIES_RELEASE) ENDIF(TAGLIB_LIBRARIES_RELEASE AND TAGLIB_LIBRARIES_DEBUG) MARK_AS_ADVANCED(TAGLIB_LIBRARIES_RELEASE) MARK_AS_ADVANCED(TAGLIB_LIBRARIES_DEBUG) ENDIF(NOT WIN32) INCLUDE(FindPackageMessage) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Taglib DEFAULT_MSG TAGLIB_INCLUDES TAGLIB_LIBRARIES) endif(TAGLIBCONFIG_EXECUTABLE) if(TAGLIB_FOUND) if(NOT Taglib_FIND_QUIETLY AND TAGLIBCONFIG_EXECUTABLE) message(STATUS "Taglib found: ${TAGLIB_LIBRARIES}") endif(NOT Taglib_FIND_QUIETLY AND TAGLIBCONFIG_EXECUTABLE) else(TAGLIB_FOUND) if(Taglib_FIND_REQUIRED) message(FATAL_ERROR "Could not find Taglib") endif(Taglib_FIND_REQUIRED) endif(TAGLIB_FOUND) ./soundkonverter-2.0.5/PaxHeaders.25599/codecproblems.cpp0000644000175000001440000000006212054666405021342 xustar000000000000000020 atime=1357667505 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/codecproblems.cpp0000644000175000001440000000630012054666405020752 0ustar00danielusers00000000000000 #include "codecproblems.h" #include #include #include #include #include CodecProblems::CodecProblems( Mode mode, const QList& problemList, QWidget* parent, Qt::WFlags f ) : KDialog( parent, f ) { setCaption( i18n("Solutions for backend problems") ); setWindowIcon( KIcon("help-about") ); setButtons( KDialog::Close ); setButtonFocus( KDialog::Close ); QWidget *widget = new QWidget( this ); setMainWidget( widget ); QVBoxLayout *box = new QVBoxLayout( widget ); QString message; if( mode == Debug ) { if( problemList.isEmpty() ) { message = i18n("soundKonverter couldn't find any missing packages.\nIf you are missing some file formats you might need to install an additional plugin via the package manager of your distribution."); } else { message = i18n("Some of the installed plugins aren't working.\nPossible solutions are listed below."); } } else if( mode == Decode ) { message = i18n("Some files can't be decoded.\nPossible solutions are listed below."); } else if( mode == ReplayGain ) { message = i18n("Replay Gain isn't supported for some files.\nPossible solutions are listed below."); } else if( mode == AudioCd ) { if( problemList.isEmpty() ) { message = i18n("Ripping audio CDs is not supported by any installed plugin.\nPlease have a look at your distributions package manager in order to get a cd ripper plugin for soundKonverter."); } else { message = i18n("Ripping audio CDs is currently not supported because of missing backends.\nPossible solutions are listed below."); } } QLabel *messageLabel = new QLabel( message, this ); box->addWidget( messageLabel ); if( !problemList.isEmpty() ) { QStringList messageList; for( int i=0; i:\n" + problemList.at(i).solutions.join("\n"+i18nc("like in either or","or")+"\n"); } else { messageList += "" + i18n("Possible solutions for %1", codecName) + ":\n" + problemList.at(i).solutions.join("\n"+i18nc("like in either or","or")+"\n") + "\n\n" + i18n("Affected files:") + "\n" + problemList.at(i).affectedFiles.join("\n"); } } } QLabel *solutionsLabel = new QLabel( messageList.join("\n\n").replace("\n","
"), this ); solutionsLabel->setMargin( 8 ); solutionsLabel->setWordWrap( true ); solutionsLabel->setTextInteractionFlags( Qt::TextSelectableByMouse ); QScrollArea *solutionsScrollArea = new QScrollArea(); solutionsScrollArea->setWidget( solutionsLabel ); box->addWidget( solutionsScrollArea ); } } CodecProblems::~CodecProblems() {} ./soundkonverter-2.0.5/PaxHeaders.25599/codecproblems.h0000644000175000001440000000006212105142351020771 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/codecproblems.h0000644000175000001440000000131412105142351020401 0ustar00danielusers00000000000000 #ifndef CODECPROBLEMS_H #define CODECPROBLEMS_H #include /** * @short Shows a message box with possible solutions for backend problems * @author Daniel Faust * @version 1.0 */ class CodecProblems : public KDialog { Q_OBJECT public: enum Mode { Debug, Decode, ReplayGain, AudioCd }; struct Problem { QString codecName; QStringList solutions; QStringList affectedFiles; }; /** Default Constructor */ CodecProblems( Mode mode, const QList& problemList, QWidget *parent=0, Qt::WFlags f=0 ); /** Default Destructor */ ~CodecProblems(); }; #endif // CODECPROBLEMS_H ./soundkonverter-2.0.5/PaxHeaders.25599/images0000644000175000001440000000006211417130360017171 xustar000000000000000020 atime=1357667220 30 ctime=1387631578.201422774 ./soundkonverter-2.0.5/images/0000755000175000001440000000000011417130360016657 5ustar00danielusers00000000000000./soundkonverter-2.0.5/images/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211310436775022021 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.179423049 ./soundkonverter-2.0.5/images/CMakeLists.txt0000644000175000001440000000012311310436775021426 0ustar00danielusers00000000000000install( FILES nocover.png DESTINATION ${DATA_INSTALL_DIR}/soundkonverter/images) ./soundkonverter-2.0.5/images/PaxHeaders.25599/systray.mng0000644000175000001440000000006211102075271021467 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.201422774 ./soundkonverter-2.0.5/images/systray.mng0000644000175000001440000003613011102075271021103 0ustar00danielusers00000000000000MNG  MHDR hw TERMh8MptEXtTitleCreated using The GIMP]wtIME /zFRAMh$ IHDRĴl;IDAT8˭{LSwϽ--Җ bl(NnlCe͌lYee&{L|GٌGX,}}7q;~{NcTFV|뵕-1D28{w\ӌeng0:6X&+sgvk !kUyy򊺗ߙd^Ϯ(gߊc'hmpyVF:gLlX*DrMf>\50`uD|uJ8KT(uG'_--Ql E]O6$O+&uDsǃ7#Tx$ =F#a= l>W}[1Wf5l3Ec$I ~IL+2LUP!%$(A/qL,aWƁ]0TVSssj,OБHA3'n 6E0<\c C,ݬ& Q0sCp&V)rlN8EE A!iȒ2R-{ކ?q[JyÝ=ϘE D4JO/V ;"]wr^׼kwZqσU7ksd%W%qGQ*E(B%Ir~m(09yy *Χ0G$Q7iQ2AQյTzQM~i 凪K*9$Be \[qAWKSYq>ߨ9Phj q]~jnK4'S'I8%o eʅ&H?E 6{Gw(IENDB`FRAMh$ IHDRĴl;IDAT8˭YlTu;3әNYΔt 5H0TâV`Hy'C%T <e(meYNw>% N5[t}zcl@gfX?|ZW3Vfi\Z?u >)ԋTf)x" [>S@$"A(2Fb(J@ ihk/\>%pWQ:^}k) ,Xݡ#~{ʤ6D'Yu$~w<)_#Y-$@}{ +YM|;A'sa9.iT%E&@j,<b~k+IJBd95pf3|pJJsj* +C \OI*-li90g@&~d'QK:3!R.ǒ&%% Vkqp3`{A[Dpʰ¨c}\@R9' yIno;Vo* LSRY7m V<ȦIENDB`FRAMh$ IHDRĴl;IDAT8˵{lSu}/\_[1;Xكͽʪ$ Ds"`6DH4#@!Y, c Xkmlt-ee}w?) |9$dS?h >(O/m=id I Gj: V{KOk&G8X_$&BlƜsKpӮAjx-G&! `٪/c([]#ɀmkR'@pHbFh8HCV6Y$K/ff=7M&$o'+xi+[ u#~chfݸi  {7|b/H2˳ fř^Ga,Xxo??#a* vxŌ 1:_dtev&v.hIwYįIENDB`FRAMh$ IHDRĴl;lIDAT8˵kLS}M{[R(Wc8@mń˦1\я78P 0#qmcRdw\"|99B6#.ߵ*JΡwĵFG?=6C/\XbR[+{g DxxF'UK]iNKM& ق?i{7rY숯آPO82qIBy:P?Ndqʮxf5}\~(PfUgݖme{A\{6rH#h]yVJ&[Z~EChN_x07҉;+JR E;8ãA.QV>л#R>ri@a݂܇r `J_Jqg1^|(MS <Ƣfbu+̨V˴NtTrUǢ)m'eNB&5 3wm^h>\rx㑵خsCYKyR~^Ehjp3*f7ٳ[4ϸ p.*?re*QgRG%u"[@ySya?X?=v"0aqz![wV֦gbIQhPew-0)JbqI:4O1fщIM S P(!z~ MV|e5hZAI$ƅiV-'9Ǭźx IENDB`FRAMh$ IHDRĴl;IDAT8kLS}moik-AB*L6%E!2h\2?,.dq̸df_,0t(PKK }>lf`nsw>.J.ǞxA^7-j_UF"ayouwbT`2)=w:O߃_zqFS, B;V|<7gs 9@s$ ڐf3~6xxB(}g7r6ڙzIyٿkW^bjgc R>~8p PysG|>_ 4L#>##8S '#V 1uEλJp{-+_Fot ܴ^Q"Kei)MZEt0 z?mm, stru["TxH r!>(<45}meaT$l*$N;3'д/->rY-_[? lFսߨ Хd?W}D,sJg,Q撺+Jfׅp~݁u`V>BckF_:O)뵔ܞY¹.\ e9R ,T+;QG#5/`qg*[=bql 8ja br2B89@ ~"z'vJ$ũ0t$~-uV9$3iexNfS2 .鋖䴢NA {<fyZB[vkvCDbwŮWҠ.IENDB`FRAMh$ IHDRĴl;IDAT8˭kLSgǟs^I"T9L4nc~̐-}X,#qYfdEGR UUJ[z;iOϻ."Yf񟼿yyO*oUiD 泴S%* !GW@ؠ]IO{L.kT~ Z,Dł01[xo煍eekˍ^ŋ_{ 3JeB}i^8uğ 9x F{뻯b+Weo,ްhg].-Ag,Ktm:.(ɧG@?JQaS؅F#, [ͻa" /"29qIPRF29 b8 aeTBx(:meNpqȀYT6wΞZk `'-! G8` 1XD94.Zj3bkeGQ_tURȭP!/5R­v-6lX2sp}qs`%B8/O/209.7bPP`QϴLE۾gÓG5,,tO }퉎|{r`= հ:iifa&1=?:v㲚;_fN{'[e; Ƨ_7*Td,5{wW1Ҍ{ X{~$wWz_%t[Wk6oH4k2pT]s~f6=摁- uX8>EH1s4mZVz-dnӵǬEԴ7yHR.w'f'.>~|bV}~ߦ=pWFd33u v*ӶVm;Y9ff隘88=yBMD9V3:^:UwWl~=d-TWq||[}IIpec[E*M\Vծyz"2}7_g2oEKcǒ\5x~ov9.Ā[Nu+$tҝ-꺶so*G7)-1uu`z==ݷ߸˯B!g̻R7'.gȰRү\8އ2}Ǧf&Orc 4R9Nb.Vg3~*0%KMо@gEYr5Z8#PP';W=/5ܰA5:\P1{ݶ0XIENDB`FRAMh$ IHDRĴl;IDAT8˭kLSgǟs/z\ZZ."n$qaNEbQw`dKL%h#\iXP""J9崧gX6OO~_ g|~ ,C'ͮ˒.ij$ ELLACP X? KoQ&R'.ǩMV.'Yk+WLiiRS E}$AvwyUcvRuS./}3!5>M±I'BVZ/߼-hPp:[E?gR3Σԇͳl(JG5B*DxN@Ak*jw ޺'pCj96<9!9v,+Ē8KŅ(ĒLp(ǓԗLSp*QY't:~ nv^CpDL^p8pb{|QWn֡(` "Y [i$i.efJ[$R^w:{v ua_J( x$84ሤzݎB,+Yjks^Zt+.EId+O 9EgQ!ӵЧjZHA007a+x&ea}b^;{fvZ 1PA>0qTDMP 6o|-OyҘT 6HUe/m%6dtfJ;K컸/\5F:EFAJ q+w6 玶D932# :N ]b|I: ǝIA%T^UijV/^5rh:Xx@P@@8 3mQ&];;o$z$曈"-y]gm">@x bl;,:7ca7p}=)*סs]3P?HWT6)n*qHD1NkZ:[pEZ6n<]?4}y/+n@$RS턆a dy!֧?}!-rΒợbY"'38W3KyIӫ5$k;0ox|Z#K5fn5_0@P8{s J[wIENDB`FRAMh$ IHDRĴl;IDAT8˵kle{{֮֮mq`867хtf2œ@ ab gcBАi6D.08PбB;u.e^0"yr ȕfRopcԗƃ#jf: GtL2 xykordO3Xv"RJK +DZ[ XWk )~p@E8K+Wo\n, ~ E ">m:&yCrWl>ejڡڦ_GFB' Pr$ ah ^XD.ɎZ E88x3Osuҙ#ޅyw'^L1NJ )A""n^=N^$y"tk=ܝ߬e1'|Sr=֋f&E}+9>OP*돒2>bIENDB`FRAMh$ IHDRĴl;rIDAT8˵}luǟ{mA6h:c@# HGPLFD[t dwVv[׻myy}~?i0v)G.WPo(Nz;Upe/q}:tsRF!Pqk!<$PfƬFTJ\oOfbrыG! 4aaH=0$ %4!4U b&U4B N+H1 SG ZᩀddhzZg/*ʹs+wCAn³h}nr9֝]pt N?d7wvwx_X=%*iN`͢\p>4 ?KCȭS Sty 酠x}iq2fil>es6|4&:;)x 0 hMP&1EUp֕0Gվ矹mE.`4 D`|/pg͹5ls#e.|iW Ўbmv3ˡ?RZUpp.}#xny}`0p?ii;IwRf/g{ޑ}BQl \$1/^+a/{d- K}]3YRAgc_AW$A}ӇwlO̺ PidJGe0xb|}XV܂+“QF%ZHtDS@Q1CSlvTtfjX։OzJpb<062 J2W6K.!"m5Yv Y־ܿS;N|9:p a8vۻߝxF "yӬ4-9TXTJeCSU嶗mv{ +N}zbX:k1oGF]=BnŬl\L*"\5 z[00B Fq:@11pFhA9$&k_GO?1cJLpvx3;AmtaC) BIENDB`FRAMh$ IHDRĴl;IDAT8ՕklSeǟs?unca ƺ 1%(a$(B(H#PP`@I p ֭J=^NO j(O}O!ƀxc7i> /͈$e{Q =RmuvTڶy{"Hc2 1"G@RͮP$#5,3C%Ti2X.ju__L1И R$N"2D.|*'N{nkZQ^1QKɐ0r\t^t&e"nR\4É+@ȡ p+B  }RՏ\#;Ù[o"<lv;?jU=uU'odӛ4,`żXC!`W+`ڻX5Ͳ\g7HJ9P[Ѹ]nR^qz:a`]~+yޝr\W$r ghijpc Ek'%ouT-}fFFg^;U5qV Bj4pch8BA 1J"]}ٯڝxʆ&`YԑL  !ѭւI5A Ox:5< H8"`+am#eH0( ]'B=o :^O FQ4/gsrq,aK9 I+4<ήU}.NgSTEi"0yzs*]ɴ"8lB}7o/W"מdܩmmrc@˨рcWJ|?Gr&q5-(_(߲/o?- UpIENDB`MEND! ./soundkonverter-2.0.5/images/PaxHeaders.25599/nocover.png0000644000175000001440000000006211167641525021443 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.201422774 ./soundkonverter-2.0.5/images/nocover.png0000644000175000001440000001531111167641525021055 0ustar00danielusers00000000000000PNG  IHDRPHar[ pHYs;{IDATx|[$y:U]/ܥ\J"H9 ˱(?ysțI,@ 2;$Ƃ)ŢHJ$wI:;=3}{u]CwT*hLOuu9_?[N.Yԃv{g#"vܜwYƊkEjyhzww4k뱟cՓg:bh[4j ;/cPPZ6lˊ9^7&<+$Ƥ U٪9F"iɔ1p[oXݷ+ +1pzw ѳL{Y)'VcڶZGMM=rd|*t3"cBH!=wnڪno(jjzfc|ŵڧd@4p5JV\kfs T:iΓRFJPB=C׶U{x7[BM8ȱO`k|l\*}c_6 #mz` !y|G= c`IEQHQpaFf"e}}V_)*Ļb%UUn7RïL=Nt"B}eu]>Kn=HJbDPI"r*c R6Ie3֩r~7%rq8p0ulrq3G/i5h4h0E "whs6LTGf VW+xLsPsAY\Y[o_驩(RqiuBb! CD{hЈxN=zx^V^nœgoJxGk764gN?L$ ˲`! 'mKF7G!Y|qX\_L:D*<|@ױ+_*dҼi$@ۅ8Ѭ `Bn)_ϡ(pQ>ʈBLᝇ7*4;l*n~mq:<,#"h G2H6h4ލsG('S;wKonOr.1֋}( H(""{фeޓ7~"R)㯢Gw3ulegO쬩0FnC]4,)390}E 2.1"B4ٙ'^?*>xxj7n~_K1wQfUpe4E^,ʼ0"atѯ؍66+'ySz|4=?7SNk\R(_ǼR8v{Y2/iFnӮCǥ¹s='q-NkK~=0=*^ae0yQ76OmԤB.7{`CiBmCABQlc$˳pФ+>3̵Qو=}O mn; sP֖m[01C)K,#C~]laҽ[g+S|1˲ycFDpe FBq,2!֤{.QJ~r{vFi#ԋTeˮ #mu]jF21Z&zB(tDR*ժ<WU5f͙9%JpEQ.ELMM4]eR>$@:kNRLU=K%gUUB0pPM @HMCVQ^Zmph;OX[4*--2OjzK^>|‚ݒBR1vc^ t2qvs8;}tj:)X5<vA1A4X dq}|wuLFf…jx\*Stz0 PT ilL<!)!q!J&g{0͞b`Q5uU=(8&VI(&a.JF+oy㵯~^|+ )play}:Q?t)B<޸!=-L!mYv4ۈW}66 xh&!xzo~wJx}4cj*|I$٦ ^fs{wܿSd/u,,˂iCJ)m/A/حz+:=1бZbDȾFʉՁAj \]rRz^Wk!xVS(gIXajZ´HImFu]8rhSo}KJ)%$ pe_ )v4͞N>3^(Dֳm2.r7'^| zv33HӒsNB aP~"D" \|[]Rv~k`?fދ0o ! Yմku 1 y"6$˴~7At!m'FDZ\;v ,R۝Y1!dXC޵md3#,L 0q&[t^{|ZEDJ ˲9Ed(Ie*A0h!Yq6 !8@).4u[`۵Oz׿>Mn7nݐBb4hȡ#Vz>p)%Zy42/R $ei]XJ)J6},q/E;b!lElV5q>L{/l_a ^ZyR٬b1X#ijp۲V}B#V]DIs2DCqo@zCCkX"1sT:VcX@G; Sƣ0O?׾w 9igkfM!lA/m !}E 0ۃ RP4\_NjV;g嚢@** !E\@tBMN:{mbx~O6f2RaRm'@2DJ0{C |laKHq݈uQDF )WN==AѢk %Y﹔;l0.z\%3><5?UURBn@Q}T*53;wU=rU$)@ѵv;L$~ȑB#$I&#@*A  eI$Dۛ䊢cQ"H77M0g[tV'o߼O \I|՘ ղjTt⊢쨲 DPdDه|2<tD_X"pUc=\|K8nSF"C٩B>?`[6 3䮫Og20i!ţI# Ka܋PBHi ܓ&E]}c 0~ml$F9$'jZ6 \\ggfDt},8bDLQ0eh)'VFv} #C%¼Q): 1 yt"muSTj5@=\Mڪ5d.ob1}z79} LG&/h G+Q=HA3ROj `궄r1> b. M؅_oƙStƎ iխ.D#?a$L6ns}O~1 *DF7 T4ǭ(6{Hdr]UU{l4uRl6@?>Ǘ/^{v,fX~+qh;We_\zN?8slV:,)t{6 Iu*ƾT*IӮunL$҄3*Y QIDiŋV-a)GӴ?۶y^ݾshQ?=?;N>N#~]^FLh=RbbV^/yeYc@汱!cH5;:9;7啕W0Zf2l5H2 3>1(X>F2L"oTUλ-Ɓ] ̈́9}mNLW>g氐,(̠R.D0 C9u$N8yڶBH"#'EQ("Pe2dY$)^quh`t箏{m W7Rf9u~rNBrsQ:bLFI%, ^EsLMO# e@JRZvT` ],;U=lvE&~cfXXX@"{oO \O2d69(؎m#Au}㻤v%R۵vO\dvE]_Ɍk}a*͢u]!-P+N*i]ǡ6|w F4b~ !Pk.śoow|79&c4MiH5~&~.-011FaH۶g-Mcc}4Xt&zT*'4t]~? q$1¾w1(#].h4[?[8r#ǹ,-?(m־tg^Ԣ]=Duljb)38d&8RJ)暞JU,~tP-,~G^'Ͻsu/ʕu 9lEgvG.kY)`~=';t;QVqUX U< zetOr_Ləſu廥r@ 1 \:G?*YYFmSQo|)}NC eͨd쓁P{czbyg;cBf7ޣX^|铧3>y/_݇Zq? иp?tvڏrXl[Y}#5O}}c`zPŝ*|nT<\6EQ+@ y>KrAV67R%p\hcܗiz_>}V| gggMd2 {_4s>CMZԂ @oÝNuvg',yw-zwˈKNNuSo7k[?'2Lf2s΁(G{IEN#6*ͶP'$ҙA7 8gelJes?4*3k;tJx|2s4zY<ϓqNkmyHDz䑥b*{/23T{6zʕ%U)Δ9z:BH!\<_Bn9~35q3LSꦏ2J9_X$! _q~S/#_ikqmL oW1W)?eH򎕣1_%w]|'IFmV3JO~;m$O>,JʙFeu}sMUczOIENDB`./soundkonverter-2.0.5/PaxHeaders.25599/optionsdetailed.cpp0000644000175000001440000000013212255307066021704 xustar000000000000000030 mtime=1387630134.197891438 30 atime=1387630134.189891538 30 ctime=1387631578.202422761 ./soundkonverter-2.0.5/optionsdetailed.cpp0000755000175000001440000004751412255307066021335 0ustar00danielusers00000000000000 #include "optionsdetailed.h" #include "config.h" #include "core/codecplugin.h" #include "core/codecwidget.h" #include "outputdirectory.h" #include "global.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // // class OptionsDetailed // //////////////////// OptionsDetailed::OptionsDetailed( Config* _config, QWidget* parent ) : QWidget( parent ), config( _config ) { int gridRow = 0; grid = new QGridLayout( this ); QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lFormat = new QLabel( i18n("Format:"), this ); topBox->addWidget( lFormat ); cFormat = new KComboBox( this ); topBox->addWidget( cFormat ); cFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)) ); connect( cFormat, SIGNAL(activated(const QString&)), this, SLOT(formatChanged(const QString&)) ); // connect( cFormat, SIGNAL(activated(const QString&)), this, SLOT(somethingChanged()) ); topBox->addStretch(); lPlugin = new QLabel( i18n("Use Plugin:"), this ); topBox->addWidget( lPlugin ); cPlugin = new KComboBox( this ); topBox->addWidget( cPlugin ); cPlugin->setSizeAdjustPolicy( QComboBox::AdjustToContents ); connect( cPlugin, SIGNAL(activated(const QString&)), this, SLOT(encoderChanged(const QString&)) ); connect( cPlugin, SIGNAL(activated(const QString&)), this, SLOT(somethingChanged()) ); pConfigurePlugin = new KPushButton( KIcon("configure"), "", this ); pConfigurePlugin->setFixedSize( cPlugin->sizeHint().height(), cPlugin->sizeHint().height() ); pConfigurePlugin->setFlat( true ); topBox->addWidget( pConfigurePlugin ); topBox->setStretchFactor( pConfigurePlugin, 1 ); connect( pConfigurePlugin, SIGNAL(clicked()), this, SLOT(configurePlugin()) ); // draw a horizontal line QFrame *lineFrame = new QFrame( this ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); lineFrame->setFixedHeight( 10 ); grid->addWidget( lineFrame, 1, 0 ); // prepare the plugin widget wPlugin = 0; grid->setRowStretch( 2, 1 ); grid->setRowMinimumHeight( 2, 20 ); gridRow = 3; // draw a horizontal line lineFrame = new QFrame( this ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); lineFrame->setFixedHeight( 10 ); grid->addWidget( lineFrame, gridRow++, 0 ); int filterCount = 0; foreach( QString pluginName, config->data.backends.enabledFilters ) { FilterPlugin *plugin = qobject_cast(config->pluginLoader()->backendPluginByName(pluginName)); if( !plugin ) continue; FilterWidget *widget = plugin->newFilterWidget(); if( !widget ) continue; wFilter.insert( widget, plugin ); connect( widget, SIGNAL(optionsChanged()), this, SLOT(somethingChanged()) ); grid->addWidget( widget, gridRow++, 0 ); widget->show(); filterCount++; } if( filterCount > 0 ) { // draw a horizontal line lineFrame = new QFrame( this ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); lineFrame->setFixedHeight( 10 ); grid->addWidget( lineFrame, gridRow++, 0 ); } // the output directory QHBoxLayout *middleBox = new QHBoxLayout( ); grid->addLayout( middleBox, gridRow++, 0 ); QLabel *lOutput = new QLabel( i18n("Destination:"), this ); middleBox->addWidget( lOutput ); outputDirectory = new OutputDirectory( config, this ); middleBox->addWidget( outputDirectory ); QHBoxLayout *bottomBox = new QHBoxLayout(); grid->addLayout( bottomBox, gridRow++, 0 ); cReplayGain = new QCheckBox( i18n("Calculate Replay Gain tags"), this ); bottomBox->addWidget( cReplayGain ); //connect( cReplayGain, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); bottomBox->addStretch(); lEstimSize = new QLabel( QString(QChar(8776))+"? B / min." ); lEstimSize->hide(); // hide for now because most plugins report inaccurate data bottomBox->addWidget( lEstimSize ); pProfileSave = new KPushButton( KIcon("document-save"), "", this ); bottomBox->addWidget( pProfileSave ); pProfileSave->setFixedWidth( pProfileSave->height() ); pProfileSave->setToolTip( i18n("Save current options as a profile") ); connect( pProfileSave, SIGNAL(clicked()), this, SLOT(saveCustomProfile()) ); pProfileLoad = new QToolButton( this ); bottomBox->addWidget( pProfileLoad ); pProfileLoad->setIcon( KIcon("document-open") ); pProfileLoad->setPopupMode( QToolButton::InstantPopup ); pProfileLoad->setFixedWidth( pProfileLoad->height() ); pProfileLoad->setToolTip( i18n("Load saved profiles") ); } OptionsDetailed::~OptionsDetailed() {} void OptionsDetailed::init() { updateProfiles(); cFormat->setCurrentIndex( 0 ); formatChanged( cFormat->currentText() ); } // QSize OptionsDetailed::sizeHint() // { // return size_hint; // } void OptionsDetailed::resetFilterOptions() { for( int i=0; isetCurrentFilterOptions( 0 ); } } } void OptionsDetailed::setReplayGainChecked( bool enabled ) { cReplayGain->setChecked(enabled); } bool OptionsDetailed::isReplayGainEnabled( QString *toolTip ) { if( toolTip ) *toolTip = cReplayGain->toolTip(); return cReplayGain->isEnabled(); } bool OptionsDetailed::isReplayGainChecked() { return cReplayGain->isChecked(); } CodecPlugin *OptionsDetailed::getCurrentPlugin() { return currentPlugin; } // // class private slots // void OptionsDetailed::updateProfiles() { QMenu *menu = new QMenu( this ); const QStringList profiles = config->customProfiles(); for( int i=0; iaddAction( profiles.at(i), this, SLOT(loadCustomProfileButtonClicked()) ); } pProfileLoad->setMenu( menu ); pProfileLoad->setShown( profiles.count() > 0 ); } void OptionsDetailed::formatChanged( const QString& format ) { const QString oldEncoder = cPlugin->currentText(); cPlugin->clear(); //if( format != "wav" ) // TODO make it nicer if wav is selected for( int i=0; idata.backends.codecs.count(); i++ ) { if( config->data.backends.codecs.at(i).codecName == format ) { cPlugin->addItems( config->data.backends.codecs.at(i).encoders ); } } cPlugin->setCurrentIndex( 0 ); if( cPlugin->currentText() != oldEncoder ) { encoderChanged( cPlugin->currentText() ); } else if( wPlugin ) { wPlugin->setCurrentFormat( cFormat->currentText() ); } lPlugin->setShown( format != "wav" ); cPlugin->setShown( format != "wav" ); pConfigurePlugin->setShown( format != "wav" ); if( wPlugin ) wPlugin->setShown( format != "wav" ); QStringList errorList; cReplayGain->setEnabled( config->pluginLoader()->canReplayGain(cFormat->currentText(),currentPlugin,&errorList) ); if( !cReplayGain->isEnabled() ) { QPalette notificationPalette = cReplayGain->palette(); notificationPalette.setColor( QPalette::Disabled, QPalette::WindowText, QColor(174,127,130) ); cReplayGain->setPalette( notificationPalette ); if( !errorList.isEmpty() ) { errorList.prepend( i18n("Replay Gain is not supported for the %1 file format.\nPossible solutions are listed below.",cFormat->currentText()) ); } else { errorList += i18n("Replay Gain is not supported for the %1 file format.\nPlease check your distribution's package manager in order to install an additional Replay Gain plugin.",cFormat->currentText()); } cReplayGain->setToolTip( errorList.join("\n\n") ); } else { cReplayGain->setToolTip( i18n("Replay Gain tags can tell your music player how loud a track is\nso it can adjust the volume to play all tracks with equal loudness.") ); } somethingChanged(); } void OptionsDetailed::encoderChanged( const QString& encoder ) { CodecPlugin *plugin = (CodecPlugin*)config->pluginLoader()->backendPluginByName( encoder ); if( !plugin ) { // TODO leads to crashes // KMessageBox::error( this, i18n("Sorry, this shouldn't happen.\n\nPlease report this bug and attach the following error message:\n\nOptionsDetailed::encoderChanged; PluginLoader::codecPluginByName returned 0 for encoder: '%1'").arg(encoder), i18n("Internal error") ); return; } currentPlugin = plugin; if( wPlugin ) { grid->removeWidget( wPlugin ); disconnect( wPlugin, SIGNAL(optionsChanged()), 0, 0 ); wPlugin = plugin->deleteCodecWidget( wPlugin ); } wPlugin = plugin->newCodecWidget(); if( wPlugin ) { connect( wPlugin, SIGNAL(optionsChanged()), this, SLOT(somethingChanged()) ); qobject_cast(wPlugin)->setCurrentFormat( cFormat->currentText() ); grid->addWidget( wPlugin, 2, 0 ); } pConfigurePlugin->setEnabled( plugin->isConfigSupported(BackendPlugin::Encoder,"") ); if( pConfigurePlugin->isEnabled() ) pConfigurePlugin->setToolTip( i18n("Configure %1 ...",encoder) ); else pConfigurePlugin->setToolTip( "" ); } void OptionsDetailed::somethingChanged() { int dataRate = 0; if( wPlugin ) dataRate = wPlugin->currentDataRate(); if( dataRate > 0 ) { const QString dataRateString = Global::prettyNumber(dataRate,"B"); lEstimSize->setText( QString(QChar(8776))+" "+dataRateString+" / min." ); lEstimSize->setToolTip( i18n("Using the current conversion options will create files with approximately %1 per minute.").arg(dataRateString) ); } else { lEstimSize->setText( QString(QChar(8776))+" ? B / min." ); lEstimSize->setToolTip( "" ); } emit currentDataRateChanged( dataRate ); } void OptionsDetailed::configurePlugin() { CodecPlugin *plugin = (CodecPlugin*)config->pluginLoader()->backendPluginByName( cPlugin->currentText() ); if( plugin ) { plugin->showConfigDialog( BackendPlugin::Encoder, "", this ); } } ConversionOptions *OptionsDetailed::currentConversionOptions( bool saveLastUsed ) { ConversionOptions *options = 0; if( wPlugin && currentPlugin ) { options = wPlugin->currentConversionOptions(); if( options ) { options->codecName = cFormat->currentText(); if( options->codecName != "wav" ) options->pluginName = currentPlugin->name(); else options->pluginName = ""; options->profile = wPlugin->currentProfile(); options->outputDirectoryMode = outputDirectory->mode(); options->outputDirectory = outputDirectory->directory(); options->outputFilesystem = outputDirectory->filesystem(); options->replaygain = cReplayGain->isEnabled() && cReplayGain->isChecked(); for( int i=0; icurrentFilterOptions(); if( filterOptions ) { filterOptions->pluginName = plugin->name(); options->filterOptions.append( filterOptions ); } } } if( saveLastUsed ) { config->data.general.lastProfile = currentProfile(); saveCustomProfile( true ); config->data.general.lastFormat = cFormat->currentText(); } } } return options; } bool OptionsDetailed::setCurrentConversionOptions( ConversionOptions *options ) { if( !options ) return false; cFormat->setCurrentIndex( cFormat->findText(options->codecName) ); formatChanged( cFormat->currentText() ); if( options->codecName != "wav" ) { cPlugin->setCurrentIndex( cPlugin->findText(options->pluginName) ); encoderChanged( cPlugin->currentText() ); } outputDirectory->setMode( (OutputDirectory::Mode)options->outputDirectoryMode ); outputDirectory->setDirectory( options->outputDirectory ); cReplayGain->setChecked( options->replaygain ); bool succeeded = true; if( options->codecName == "wav" ) succeeded = true; else if( wPlugin ) succeeded = wPlugin->setCurrentConversionOptions( options ); else succeeded = false; QStringList usedFilter; foreach( FilterOptions *filterOptions, options->filterOptions ) { bool filterSucceeded = false; for( int i=0; ipluginName == plugin->name() ) { filterSucceeded = widget->setCurrentFilterOptions( filterOptions ); usedFilter.append( filterOptions->pluginName ); break; } } if( !filterSucceeded ) succeeded = false; } // if a filter is disabled, its FilterOptions is 0 thus it won't be added to ConversionOptions, but we need to update the widget so it won't show false data for( int i=0; iname()) ) { widget->setCurrentFilterOptions( 0 ); } } return succeeded; } bool OptionsDetailed::saveCustomProfile( bool lastUsed ) { if( wPlugin && currentPlugin ) { QString profileName; if( lastUsed ) { profileName = "soundkonverter_last_used"; } else { bool ok; profileName = KInputDialog::getText( i18n("New profile"), i18n("Enter a name for the new profile:"), "", &ok ); if( !ok ) return false; } if( profileName.isEmpty() ) { KMessageBox::information( this, i18n("You cannot save a profile without a name."), i18n("Profile name is empty") ); return false; } QStringList profiles; profiles += i18n("Very low"); profiles += i18n("Low"); profiles += i18n("Medium"); profiles += i18n("High"); profiles += i18n("Very high"); profiles += i18n("Lossless"); profiles += i18n("Hybrid"); profiles += i18n("Last used"); profiles += "Last used"; profiles += i18n("User defined"); if( !lastUsed ) profiles += "soundkonverter_last_used"; if( profiles.contains(profileName) ) { KMessageBox::information( this, i18n("You cannot overwrite the built-in profiles."), i18n("Profile already exists") ); return false; } QDomDocument list("soundkonverter_profilelist"); QDomElement root; bool profileFound = false; QFile listFile( KStandardDirs::locateLocal("data","soundkonverter/profiles.xml") ); if( listFile.open( QIODevice::ReadOnly ) ) { if( list.setContent( &listFile ) ) { root = list.documentElement(); if( root.nodeName() == "soundkonverter" && root.attribute("type") == "profilelist" ) { QDomNodeList conversionOptionsElements = root.elementsByTagName("conversionOptions"); for( int i=0; idata.profiles[profileName]; config->data.profiles[profileName] = conversionOptions; root.removeChild(conversionOptionsElements.at(i)); QDomElement profileElement = conversionOptions->toXml(list); profileElement.setAttribute("profileName",profileName); root.appendChild(profileElement); profileFound = true; break; } else { return false; } } } } } listFile.close(); } if( listFile.open( QIODevice::WriteOnly ) ) { if( list.childNodes().isEmpty() ) { root = list.createElement("soundkonverter"); root.setAttribute("type","profilelist"); list.appendChild(root); } if( !profileFound ) { ConversionOptions *conversionOptions = currentConversionOptions( false ); config->data.profiles[profileName] = conversionOptions; QDomElement profileElement = conversionOptions->toXml(list); profileElement.setAttribute("profileName",profileName); root.appendChild(profileElement); } updateProfiles(); emit customProfilesEdited(); QTextStream stream(&listFile); stream << list.toString(); listFile.close(); return true; } else { return false; } } else { return false; } } void OptionsDetailed::loadCustomProfileButtonClicked() { const QString profile = qobject_cast(QObject::sender())->text().replace("&",""); setCurrentProfile( profile ); } QString OptionsDetailed::currentProfile() { if( wPlugin ) return wPlugin->currentProfile(); else return ""; } bool OptionsDetailed::setCurrentProfile( const QString& profile ) { if( config->data.profiles.keys().contains(profile) ) { ConversionOptions *conversionOptions = config->data.profiles.value( profile ); if( conversionOptions ) return setCurrentConversionOptions( conversionOptions ); } else if( wPlugin ) { return wPlugin->setCurrentProfile( profile ); } return false; } QString OptionsDetailed::currentFormat() { return cFormat->currentText(); } void OptionsDetailed::setCurrentFormat( const QString& format ) { if( !format.isEmpty() && format != cFormat->currentText() ) { cFormat->setCurrentIndex( cFormat->findText(format) ); formatChanged( cFormat->currentText() ); } } ./soundkonverter-2.0.5/PaxHeaders.25599/combobutton.h0000644000175000001440000000006212105142351020503 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.202422761 ./soundkonverter-2.0.5/combobutton.h0000755000175000001440000000403612105142351020122 0ustar00danielusers00000000000000 #ifndef COMBOBUTTON_H #define COMBOBUTTON_H #include class QString; class KIcon; class KPushButton; class KComboBox; /** * @short ComboButton * @author Daniel Faust * @version 0.3 */ class ComboButton : public QWidget { Q_OBJECT public: // enum SizeMode { // Min, Max // }; /** * Constructor * @param parent The parent widget * @param name The name of the file list */ ComboButton( QWidget *parent ); /** Destructor */ ~ComboButton(); /** Insert a new item with @p text at position @p index */ void insertItem( const QString &text, int index = -1 ); /** Insert a new item with an icon @p pixmap and @p text at position @p index */ void insertItem( const KIcon &icon, const QString &text, int index = -1 ); /** Increase the combobutton's height by @p height */ void increaseHeight( int height ); /** Sets m_sizeMode to @p mode */ // void setSizeMode( int mode ); /** Returns the m_sizeMode */ int sizeMode(); /** Sets the font of the combobutton */ void setFont( const QFont& font ); /** Returns the font of the button */ QFont font(); private: /** A pointer to the button */ KPushButton *m_button; /** A pointer to the combobox */ KComboBox *m_box; int m_increaseHeight; int m_iconHight; /** The current size mode */ // int m_sizeMode; /** Recalculate the size of the combobutton */ void balanceSize(); /** The button gets a new label, etc. */ void repaintButton(); //public slots: //void setCurrentItem(const QString &item, bool insert=false, int index=-1); //void setCurrentItem(int index); private slots: /** Is called when the user selects an item from the popdown menu of the combobox */ void boxActivated( int index ); /** Is called when the user clicks the button */ void buttonClicked(); signals: /** The signal clicked is emitted, when the user selects an item */ void clicked( int index ); }; #endif // COMBOBUTTON_H ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter-rip-audiocd.desktop.template0000644000175000001440000000006211633413563026505 xustar000000000000000020 atime=1357667505 30 ctime=1387631578.230422411 ./soundkonverter-2.0.5/soundkonverter-rip-audiocd.desktop.template0000644000175000001440000000035411633413563026120 0ustar00danielusers00000000000000[Desktop Entry] X-KDE-Solid-Predicate=OpticalDisc.availableContent & 'Audio' Type=Service Actions=Rip X-KDE-Priority=TopLevel [Desktop Action Rip] _Name=Rip Audio CD with soundKonverter Icon=soundkonverter Exec=soundkonverter --rip %d ./soundkonverter-2.0.5/PaxHeaders.25599/opener0000644000175000001440000000012012255306740017217 xustar000000000000000030 mtime=1387630048.454963372 20 atime=1357667220 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/0000755000175000001440000000000012255306740016712 5ustar00danielusers00000000000000./soundkonverter-2.0.5/opener/PaxHeaders.25599/diropener.h0000644000175000001440000000006212105142352021430 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.230422411 ./soundkonverter-2.0.5/opener/diropener.h0000755000175000001440000000302212105142352021041 0ustar00danielusers00000000000000 #ifndef DIRDIALOG_H #define DIRDIALOG_H #include class Config; class Options; class ConversionOptions; class QLabel; class QCheckBox; class KPushButton; class KUrlRequester; class KListWidget; /** * @short The Dir Opener * @author Daniel Faust * @version 0.3 */ class DirOpener : public KDialog { Q_OBJECT public: enum DialogPage { DirOpenPage, ConversionOptionsPage }; enum Mode { Convert = 0x0001, ReplayGain = 0x0002 }; /** Constructor */ DirOpener( Config *config, Mode _mode, QWidget *parent=0, Qt::WFlags f=0 ); /** Destructor */ ~DirOpener(); /** true if the file dialog was aborted (don't execute the dialog) */ bool dialogAborted; private slots: void proceedClicked(); void addClicked(); void selectAllClicked(); void selectNoneClicked(); void showHelp(); private: /** config pointer */ Config *config; /** the widget for selecting the directory */ QWidget *dirOpenerWidget; /** the conversion options editor widget */ Options *options; /** the current page */ DialogPage page; /** the dialog mode */ Mode mode; QLabel *lSelector; QLabel *lOptions; KUrlRequester *uDirectory; KListWidget *fileTypes; KPushButton *pSelectAll; KPushButton *pSelectNone; QCheckBox *cRecursive; signals: void open( const KUrl& directory, bool recursive, const QStringList& codecList, ConversionOptions *conversionOptions = 0 ); }; #endif ./soundkonverter-2.0.5/opener/PaxHeaders.25599/urlopener.h0000644000175000001440000000006211615742331021464 xustar000000000000000020 atime=1357667573 30 ctime=1387631578.230422411 ./soundkonverter-2.0.5/opener/urlopener.h0000644000175000001440000000220111615742331021070 0ustar00danielusers00000000000000// // C++ Interface: opener // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef URLOPENER_H #define URLOPENER_H #include #include class Config; class Options; class QLabel; class ConversionOptions; class KDialog; class KFileWidget; class KPushButton; class KUrlRequester; /** @author Daniel Faust */ class UrlOpener : public KDialog { Q_OBJECT public: enum DialogPage { FileOpenPage, ConversionOptionsPage }; UrlOpener( Config *_config, QWidget *parent=0, Qt::WFlags f=0 ); ~UrlOpener(); DialogPage currentPage() { return page; } private: Config *config; KUrlRequester *urlRequester; Options *options; DialogPage page; QLabel *lSelector; QLabel *lOptions; KUrl::List urls; KPushButton *pProceed; KPushButton *pAdd; KPushButton *pCancel; private slots: void proceedClickedSlot(); void okClickedSlot(); signals: void open( const KUrl::List& files, ConversionOptions *conversionOptions ); }; #endif ./soundkonverter-2.0.5/opener/PaxHeaders.25599/playlistopener.cpp0000644000175000001440000000013212255306740023055 xustar000000000000000030 mtime=1387630048.455963359 30 atime=1387630048.454963372 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/playlistopener.cpp0000644000175000001440000002074212255306740022475 0ustar00danielusers00000000000000// // C++ Implementation: opener // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "playlistopener.h" #include "../options.h" #include "../config.h" #include "../codecproblems.h" #include #include #include #include #include #include #include PlaylistOpener::PlaylistOpener( Config *_config, QWidget *parent, Qt::WFlags f ) : KDialog( parent, f ), dialogAborted( false ), config( _config ) { setCaption( i18n("Add playlist") ); setWindowIcon( KIcon("view-media-playlist") ); setButtons( 0 ); QWidget *widget = new QWidget(); setMainWidget( widget ); QGridLayout *mainGrid = new QGridLayout( widget ); options = new Options( config, i18n("Select your desired output options and click on \"Ok\"."), widget ); mainGrid->addWidget( options, 1, 0 ); // add a horizontal box layout for the control elements QHBoxLayout *controlBox = new QHBoxLayout(); mainGrid->addLayout( controlBox, 2, 0 ); controlBox->addStretch(); pAdd = new KPushButton( KIcon("dialog-ok"), i18n("Ok"), widget ); controlBox->addWidget( pAdd ); connect( pAdd, SIGNAL(clicked()), this, SLOT(okClickedSlot()) ); pCancel = new KPushButton( KIcon("dialog-cancel"), i18n("Cancel"), widget ); controlBox->addWidget( pCancel ); connect( pCancel, SIGNAL(clicked()), this, SLOT(reject()) ); fileDialog = new KFileDialog( KUrl(QDir::homePath()), "*.m3u", this ); fileDialog->setWindowTitle( i18n("Add Files") ); fileDialog->setMode( KFile::File | KFile::ExistingOnly ); connect( fileDialog, SIGNAL(accepted()), this, SLOT(fileDialogAccepted()) ); connect( fileDialog, SIGNAL(rejected()), this, SLOT(reject()) ); const int dialogReturnCode = fileDialog->exec(); if( dialogReturnCode == QDialog::Rejected ) dialogAborted = true; // Prevent the dialog from beeing too wide because of the directory history if( parent && width() > parent->width() ) setInitialSize( QSize(parent->width()-10,sizeHint().height()) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "PlaylistOpener" ); restoreDialogSize( group ); } PlaylistOpener::~PlaylistOpener() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "PlaylistOpener" ); saveDialogSize( group ); } void PlaylistOpener::fileDialogAccepted() { QStringList errorList; // codec @0 files @1 solutions QMap< QString, QList > problems; // QStringList messageList; QString fileName; QStringList filesNotFound; urls.clear(); KUrl playlistUrl = fileDialog->selectedUrl(); QFile playlistFile( playlistUrl.toLocalFile() ); if( playlistFile.open(QIODevice::ReadOnly) ) { QTextStream stream(&playlistFile); QString line; do { line = stream.readLine(); if( !line.startsWith("#EXTM3U") && !line.startsWith("#EXTINF") && !line.isEmpty() ) { KUrl url(line); if( url.isRelative() ) url = KUrl( playlistUrl.directory() + "/" + line ); url.cleanPath(); if( !url.isLocalFile() || QFile::exists(url.toLocalFile()) ) urls += url; else filesNotFound += url.pathOrUrl(); } } while( !line.isNull() ); playlistFile.close(); } const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; for( int i=0; ipluginLoader()->getCodecFromFile( urls.at(i), &mimeType, checkM4a ); if( !config->pluginLoader()->canDecode(codecName,&errorList) ) { fileName = urls.at(i).pathOrUrl(); if( codecName.isEmpty() ) codecName = mimeType; if( codecName.isEmpty() ) codecName = fileName.right(fileName.length()-fileName.lastIndexOf(".")-1); if( problems.value(codecName).count() < 2 ) { problems[codecName] += QStringList(); problems[codecName] += QStringList(); } problems[codecName][0] += fileName; if( !errorList.isEmpty() ) { problems[codecName][1] += errorList; } else { problems[codecName][1] += i18n("This file type is unknown to soundKonverter.\nMaybe you need to install an additional soundKonverter plugin.\nYou should have a look at your distribution's package manager for this."); } urls.removeAt(i); i--; } } QList problemList; for( int i=0; i= 0x040500 problems[problem.codecName][1].removeDuplicates(); #else QStringList found; for( int j=0; j:\n" + problems.value(codecName).at(1).join("\nor\n") + i18n("\n\nAffected files:\n") + affectedFiles.join("\n"); } } if( problemList.count() > 0 ) { CodecProblems *problemsDialog = new CodecProblems( CodecProblems::Decode, problemList, this ); problemsDialog->exec(); } // if( !messageList.isEmpty() ) // { // messageList.prepend( i18n("Some files can't be decoded.\nPossible solutions are listed below.") ); // QMessageBox *messageBox = new QMessageBox( this ); // messageBox->setIcon( QMessageBox::Information ); // messageBox->setWindowTitle( i18n("Missing backends") ); // messageBox->setText( messageList.join("\n\n").replace("\n","
") ); // messageBox->setTextFormat( Qt::RichText ); // messageBox->exec(); // } if( !filesNotFound.isEmpty() ) { int filesNotFoundCount = filesNotFound.count(); if( filesNotFoundCount > 5 ) { do { filesNotFound.removeLast(); } while( filesNotFound.count() >= 5 ); filesNotFound += i18n("... and %1 more files",filesNotFoundCount-4); } filesNotFound.prepend( i18n("The following files couldn't be found:\n") ); QMessageBox *messageBox = new QMessageBox( this ); messageBox->setIcon( QMessageBox::Information ); messageBox->setWindowTitle( i18n("Files not found") ); messageBox->setText( filesNotFound.join("\n").replace("\n","
") ); messageBox->setTextFormat( Qt::RichText ); messageBox->exec(); } if( urls.count() <= 0 ) reject(); } void PlaylistOpener::okClickedSlot() { ConversionOptions *conversionOptions = options->currentConversionOptions(); if( conversionOptions ) { options->accepted(); emit open( urls, conversionOptions ); accept(); } else { KMessageBox::error( this, i18n("No conversion options selected.") ); } } ./soundkonverter-2.0.5/opener/PaxHeaders.25599/cdopener.h0000644000175000001440000000006212105142352021240 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/cdopener.h0000755000175000001440000001634112105142352020661 0ustar00danielusers00000000000000 #ifndef CDOPENER_H #define CDOPENER_H #include #include #include #include #include extern "C" { #include #include } #include #include #include #include #include #include class TagEngine; class Config; class Options; class ConversionOptions; class QTreeWidget; class KPushButton; class KLineEdit; class KComboBox; class KIntSpinBox; class KTextEdit; class QGroupBox; class QTreeWidgetItem; class QLabel; class QCheckBox; class TagData; class PlayerWidget : public QWidget { Q_OBJECT public: PlayerWidget( Phonon::MediaObject *mediaObject, int _track, QTreeWidgetItem *_treeWidgetItem, QWidget *parent = 0, Qt::WindowFlags f = 0 ); ~PlayerWidget(); void trackChanged( int track ); bool isPlaying() { return playing; } QTreeWidgetItem *treeWidgetItem() { return m_treeWidgetItem; } private: int track; bool playing; QTreeWidgetItem *m_treeWidgetItem; KPushButton *pStartPlayback; KPushButton *pStopPlayback; Phonon::SeekSlider *seekSlider; private slots: void startPlaybackClicked(); void stopPlaybackClicked(); signals: void startPlayback( int track ); void stopPlayback(); }; /** * @short Shows a dialog for selecting files from a CD * @author Daniel Faust * @version 1.0 */ class CDOpener : public KDialog { Q_OBJECT public: enum DialogPage { CdOpenPage, ConversionOptionsPage }; enum Columns { Column_Rip = 0, Column_Track = 1, Column_Artist = 2, Column_Composer = 3, Column_Title = 4, Column_Length = 5, Column_Player = 6 }; /** Constructor */ CDOpener( Config *_config, const QString& _device, QWidget *parent = 0, Qt::WFlags f=0 ); /** Destructor */ ~CDOpener(); /** true if no CD was found (don't execute the dialog) */ bool noCdFound; public slots: /** Set the current profile */ void setProfile( const QString& profile ); /** Set the current format */ void setFormat( const QString& format ); /** Set the current output directory */ void setOutputDirectory( const QString& directory ); /** Set the command to execute after the conversion is complete */ void setCommand( const QString& _command ); private: /** returns a list of devices holding audio cds plus a short description (track count) */ QMap cdDevices(); bool openCdDevice( const QString& _device ); int cdda_audio_tracks( cdrom_drive *cdDrive ) const; /** the widget for selecting and editing the cd tracks */ QWidget *cdOpenerWidget; /** the widget for showing the progress of reading the cd / cddb data */ QWidget *cdOpenerOverlayWidget; /** the conversion options editor widget */ Options *options; /** the current page */ DialogPage page; QLabel *lSelector; QLabel *lOptions; /** A list of all tracks on the CD */ QTreeWidget *trackList; /** A combobox for entering the artist or selecting VA of the whole CD */ KComboBox *cArtist; /** A combobox for entering the composer or selecting VC of the whole CD */ KComboBox *cComposer; /** A lineedit for entering the album name */ KLineEdit *lAlbum; /** A spinbox for entering or selecting the disc number */ KIntSpinBox *iDisc; /** A spinbox for entering or selecting the total disc number */ KIntSpinBox *iDiscTotal; /** A spinbox for entering or selecting the year of the album */ KIntSpinBox *iYear; /** A combobox for entering or selecting the genre of the album */ KComboBox *cGenre; /** The groupbox shows the selected track numbers */ QGroupBox *tagGroupBox; /** Set the focus of the tag editor to the track over it */ KPushButton *pTrackUp; /** Set the focus of the tag editor to the track under it */ KPushButton *pTrackDown; /** A lineedit for entering the title of track */ KLineEdit *lTrackTitle; KPushButton *pTrackTitleEdit; /** A lineedit for entering the artist of a track */ KLineEdit *lTrackArtist; KPushButton *pTrackArtistEdit; /** A lineedit for entering the composer of a track */ KLineEdit *lTrackComposer; KPushButton *pTrackComposerEdit; /** A textedit for entering a comment for a track */ KTextEdit *tTrackComment; KPushButton *pTrackCommentEdit; Phonon::AudioOutput *audioOutput; Phonon::MediaObject *mediaObject; Phonon::MediaController *mediaController; Phonon::MediaSource *mediaSource; QList playerWidgets; /** Save the tag information to a cue file */ KPushButton *pSaveCue; /** Request CDDB information */ KPushButton *pCDDB; /** Rip enitre CD as one track */ QCheckBox *cEntireCd; /** Add selected tracks to the file list and quit the dialog */ KPushButton *pAdd; /** proceed to select conversion options */ KPushButton *pProceed; /** Quit the dialog */ KPushButton *pCancel; Config *config; QString device; cdrom_drive *cdDrive; cdrom_paranoia *cdParanoia; // void *wmHandle; KCDDB::Client *cddb; QList tags; // @0 disc tags bool cdTextFound; bool cddbFound; QTimer timeoutTimer; QList selectedTracks; /** Show the progress of reading the cd / cddb data */ QLabel *lOverlayLabel; QTimer fadeTimer; float fadeAlpha; int fadeMode; // 1 = fade in, 2 = fade out QString command; inline QBrush brushSetAlpha( QBrush brush, const int alpha ) { QColor color = brush.color(); color.setAlpha( alpha ); brush.setColor( color ); return brush; } void fadeIn(); void fadeOut(); private slots: void requestCddb( bool autoRequest = false ); void lookup_cddb_done( KCDDB::Result result ); void timeout(); void trackChanged(); void trackUpPressed(); void trackDownPressed(); void artistChanged( const QString& text ); void composerChanged( const QString& text ); void trackTitleChanged( const QString& text ); void trackArtistChanged( const QString& text ); void trackComposerChanged( const QString& text ); void trackCommentChanged(); void editTrackTitleClicked(); void editTrackArtistClicked(); void editTrackComposerClicked(); void editTrackCommentClicked(); // void itemHighlighted( QTreeWidgetItem *item, int column ); void startPlayback( int track ); void stopPlayback(); void playbackTitleChanged( int title ); void playbackStateChanged( Phonon::State newstate, Phonon::State oldstate ); void proceedClicked(); void addClicked(); // void addAsOneTrackClicked(); void saveCuesheetClicked(); void fadeAnim(); signals: void addTracks( const QString& device, QList trackList, int tracks, QList tagList, ConversionOptions *conversionOptions, const QString& command ); void addDisc( const QString& device, ConversionOptions *conversionOptions ); //void openCuesheetEditor( const QString& content ); }; #endif // CDOPENER_H ./soundkonverter-2.0.5/opener/PaxHeaders.25599/cdopener.cpp0000644000175000001440000000013212255306740021602 xustar000000000000000030 mtime=1387630048.454963372 30 atime=1387630048.453963384 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/cdopener.cpp0000755000175000001440000014206212255306740021225 0ustar00danielusers00000000000000 #include "cdopener.h" #include "../metadata/tagengine.h" #include "../config.h" #include "../options.h" #include "../outputdirectory.h" #include "../global.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include // #include PlayerWidget::PlayerWidget( Phonon::MediaObject *mediaObject, int _track, QTreeWidgetItem *_treeWidgetItem, QWidget *parent, Qt::WindowFlags f ) : QWidget( parent, f ), track( _track ), m_treeWidgetItem( _treeWidgetItem ) { QHBoxLayout *trackPlayerBox = new QHBoxLayout(); setLayout( trackPlayerBox ); pStartPlayback = new KPushButton( KIcon("media-playback-start"), "", this ); pStartPlayback->setFixedSize( 16, 16 ); trackPlayerBox->addWidget( pStartPlayback ); connect( pStartPlayback, SIGNAL(clicked()), this, SLOT(startPlaybackClicked()) ); pStopPlayback = new KPushButton( KIcon("media-playback-stop"), "", this ); pStopPlayback->setFixedSize( 16, 16 ); pStopPlayback->hide(); trackPlayerBox->addWidget( pStopPlayback ); connect( pStopPlayback, SIGNAL(clicked()), this, SLOT(stopPlaybackClicked()) ); seekSlider = new Phonon::SeekSlider( this ); seekSlider->setMediaObject( mediaObject ); seekSlider->setIconVisible( false ); seekSlider->hide(); trackPlayerBox->addWidget( seekSlider, 1 ); trackPlayerBox->addStretch(); } PlayerWidget::~PlayerWidget() {} void PlayerWidget::startPlaybackClicked() { /* playing = true; pStartPlayback->hide(); pStopPlayback->show(); seekSlider->show();*/ emit startPlayback( track ); } void PlayerWidget::stopPlaybackClicked() { /* playing = false; pStartPlayback->show(); pStopPlayback->hide(); seekSlider->hide();*/ emit stopPlayback(); } void PlayerWidget::trackChanged( int _track ) { if( _track != track ) { playing = false; pStartPlayback->show(); pStopPlayback->hide(); seekSlider->hide(); } else { playing = true; pStartPlayback->hide(); pStopPlayback->show(); seekSlider->show(); } } CDOpener::CDOpener( Config *_config, const QString& _device, QWidget *parent, Qt::WFlags f ) : KDialog( parent, f ), noCdFound( false ), config( _config ), cdDrive( 0 ), cdParanoia( 0 ), cddb( 0 ), cdTextFound( false ), cddbFound( false ) { setButtons( 0 ); page = CdOpenPage; // let the dialog look nice setCaption( i18n("Add CD tracks") ); setWindowIcon( KIcon("media-optical-audio") ); QWidget *widget = new QWidget( this ); QGridLayout *mainGrid = new QGridLayout( widget ); QGridLayout *topGrid = new QGridLayout(); mainGrid->addLayout( topGrid, 0, 0 ); setMainWidget( widget ); lSelector = new QLabel( i18n("1. Select CD tracks"), widget ); QFont font; font.setBold( true ); lSelector->setFont( font ); topGrid->addWidget( lSelector, 0, 0 ); lOptions = new QLabel( i18n("2. Set conversion options"), widget ); topGrid->addWidget( lOptions, 0, 1 ); // draw a horizontal line QFrame *lineFrame = new QFrame( widget ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); mainGrid->addWidget( lineFrame, 1, 0 ); // CD Opener Widget cdOpenerWidget = new QWidget( widget ); mainGrid->addWidget( cdOpenerWidget, 2, 0 ); // the grid for all widgets in the dialog QGridLayout *gridLayout = new QGridLayout( cdOpenerWidget ); // the box for the cover and artist/album grid QHBoxLayout *topBoxLayout = new QHBoxLayout(); gridLayout->addLayout( topBoxLayout, 0, 0 ); // the album cover QLabel *lAlbumCover = new QLabel( "", cdOpenerWidget ); topBoxLayout->addWidget( lAlbumCover ); lAlbumCover->setPixmap( QPixmap( KStandardDirs::locate("data","soundkonverter/images/nocover.png") ) ); lAlbumCover->setContentsMargins( 0, 0, 6, 0 ); // the grid for the artist and album input QGridLayout *topGridLayout = new QGridLayout(); topBoxLayout->addLayout( topGridLayout ); // set up the first row at the top QLabel *lArtistLabel = new QLabel( i18n("Artist:"), cdOpenerWidget ); topGridLayout->addWidget( lArtistLabel, 0, 0 ); cArtist = new KComboBox( true, cdOpenerWidget ); topGridLayout->addWidget( cArtist, 0, 1 ); cArtist->setMinimumWidth( 180 ); cArtist->addItem( i18n("Various Artists") ); cArtist->setEditText( "" ); connect( cArtist, SIGNAL(textChanged(const QString&)), this, SLOT(artistChanged(const QString&)) ); // add a horizontal box layout for the composer QHBoxLayout *artistBox = new QHBoxLayout(); topGridLayout->addLayout( artistBox, 0, 3 ); // and fill it up QLabel *lComposerLabel = new QLabel( i18n("Composer:"), cdOpenerWidget ); lComposerLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter ); topGridLayout->addWidget( lComposerLabel, 0, 2 ); cComposer = new KComboBox( true, cdOpenerWidget ); artistBox->addWidget( cComposer ); cComposer->setMinimumWidth( 180 ); cComposer->addItem( i18n("Various Composer") ); cComposer->setEditText( "" ); //cComposer->setSizePolicy( QSizePolicy::Maximum ); connect( cComposer, SIGNAL(textChanged(const QString&)), this, SLOT(composerChanged(const QString&)) ); //artistBox->addStretch(); // set up the second row at the top QLabel *lAlbumLabel = new QLabel( i18n("Album:"), cdOpenerWidget ); topGridLayout->addWidget( lAlbumLabel, 1, 0 ); lAlbum = new KLineEdit( cdOpenerWidget ); topGridLayout->addWidget( lAlbum, 1, 1 ); // add a horizontal box layout for the disc number QHBoxLayout *albumBox = new QHBoxLayout(); topGridLayout->addLayout( albumBox, 1, 3 ); // and fill it up QLabel *lDiscLabel = new QLabel( i18n("Disc No.:"), cdOpenerWidget ); lDiscLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter ); topGridLayout->addWidget( lDiscLabel, 1, 2 ); iDisc = new KIntSpinBox( 1, 99, 1, 1, cdOpenerWidget ); albumBox->addWidget( iDisc ); albumBox->addStretch(); QLabel *lDiscTotalLabel = new QLabel( i18nc("Track/Disc No. x of y","of"), cdOpenerWidget ); lDiscTotalLabel->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); albumBox->addWidget( lDiscTotalLabel ); albumBox->addStretch(); iDiscTotal = new KIntSpinBox( 1, 99, 1, 1, cdOpenerWidget ); albumBox->addWidget( iDiscTotal ); // set up the third row at the top QLabel *lYearLabel = new QLabel( i18n("Year:"), cdOpenerWidget ); topGridLayout->addWidget( lYearLabel, 2, 0 ); // add a horizontal box layout for the year and genre QHBoxLayout *yearBox = new QHBoxLayout(); topGridLayout->addLayout( yearBox, 2, 1 ); // and fill it up iYear = new KIntSpinBox( 0, 99999, 1, QDate::currentDate().year(), cdOpenerWidget ); yearBox->addWidget( iYear ); QLabel *lGenreLabel = new QLabel( i18n("Genre:"), cdOpenerWidget ); lGenreLabel->setAlignment( Qt::AlignRight | Qt::AlignVCenter ); yearBox->addWidget( lGenreLabel ); cGenre = new KComboBox( true, cdOpenerWidget ); cGenre->addItems( config->tagEngine()->genreList ); cGenre->setEditText( "" ); KCompletion *cGenreCompletion = cGenre->completionObject(); cGenreCompletion->insertItems( config->tagEngine()->genreList ); cGenreCompletion->setIgnoreCase( true ); yearBox->addWidget( cGenre ); topGridLayout->setColumnStretch( 1, 1 ); topGridLayout->setColumnStretch( 3, 1 ); // generate the list view for the tracks trackList = new QTreeWidget( cdOpenerWidget ); gridLayout->addWidget( trackList, 1, 0 ); // and fill in the headers trackList->setColumnCount( 5 ); QStringList labels; labels.append( i18nc("column title","Rip") ); labels.append( i18n("Track") ); labels.append( i18n("Artist") ); labels.append( i18n("Composer") ); labels.append( i18n("Title") ); labels.append( i18n("Length") ); labels.append( i18n("Player") ); trackList->setHeaderLabels( labels ); trackList->setSelectionBehavior( QAbstractItemView::SelectRows ); trackList->setSelectionMode( QAbstractItemView::ExtendedSelection ); trackList->setSortingEnabled( false ); trackList->setRootIsDecorated( false ); trackList->header()->setResizeMode( Column_Artist, QHeaderView::ResizeToContents ); trackList->header()->setResizeMode( Column_Composer, QHeaderView::ResizeToContents ); trackList->header()->setResizeMode( Column_Title, QHeaderView::ResizeToContents ); // trackList->setMouseTracking( true ); connect( trackList, SIGNAL(itemSelectionChanged()), this, SLOT(trackChanged()) ); // connect( trackList, SIGNAL(itemEntered(QTreeWidgetItem*,int)), this, SLOT(itemHighlighted(QTreeWidgetItem*,int)) ); gridLayout->setRowStretch( 1, 1 ); // create the box at the bottom for editing the tags tagGroupBox = new QGroupBox( i18n("No track selected"), cdOpenerWidget ); gridLayout->addWidget( tagGroupBox, 2, 0 ); QGridLayout *tagGridLayout = new QGridLayout( tagGroupBox ); // add the up and down buttons pTrackUp = new KPushButton( "", tagGroupBox ); pTrackUp->setIcon( KIcon("arrow-up") ); pTrackUp->setFixedSize( pTrackUp->sizeHint().height(), pTrackUp->sizeHint().height() ); pTrackUp->setAutoRepeat( true ); connect( pTrackUp, SIGNAL(clicked()), this, SLOT(trackUpPressed()) ); tagGridLayout->addWidget( pTrackUp, 0, 0 ); pTrackDown = new KPushButton( "", tagGroupBox ); pTrackDown->setIcon( KIcon("arrow-down") ); pTrackDown->setFixedSize( pTrackDown->sizeHint().height(), pTrackDown->sizeHint().height() ); pTrackDown->setAutoRepeat( true ); connect( pTrackDown, SIGNAL(clicked()), this, SLOT(trackDownPressed()) ); tagGridLayout->addWidget( pTrackDown, 1, 0 ); // add the inputs // add a horizontal box layout for the title QHBoxLayout *trackTitleBox = new QHBoxLayout(); tagGridLayout->addLayout( trackTitleBox, 0, 2 ); // and fill it up QLabel *lTrackTitleLabel = new QLabel( i18n("Title:"), tagGroupBox ); tagGridLayout->addWidget( lTrackTitleLabel, 0, 1 ); lTrackTitle = new KLineEdit( tagGroupBox ); trackTitleBox->addWidget( lTrackTitle ); connect( lTrackTitle, SIGNAL(textChanged(const QString&)), this, SLOT(trackTitleChanged(const QString&)) ); pTrackTitleEdit = new KPushButton( "", tagGroupBox ); pTrackTitleEdit->setIcon( KIcon("document-edit") ); pTrackTitleEdit->setFixedSize( lTrackTitle->sizeHint().height(), lTrackTitle->sizeHint().height() ); pTrackTitleEdit->hide(); trackTitleBox->addWidget( pTrackTitleEdit ); connect( pTrackTitleEdit, SIGNAL(clicked()), this, SLOT(editTrackTitleClicked()) ); // add a horizontal box layout for the composer QHBoxLayout *trackArtistBox = new QHBoxLayout(); tagGridLayout->addLayout( trackArtistBox, 1, 2 ); // and fill it up QLabel *lTrackArtistLabel = new QLabel( i18n("Artist:"), tagGroupBox ); tagGridLayout->addWidget( lTrackArtistLabel, 1, 1 ); lTrackArtist = new KLineEdit( tagGroupBox ); trackArtistBox->addWidget( lTrackArtist ); connect( lTrackArtist, SIGNAL(textChanged(const QString&)), this, SLOT(trackArtistChanged(const QString&)) ); pTrackArtistEdit = new KPushButton( "", tagGroupBox ); pTrackArtistEdit->setIcon( KIcon("document-edit") ); pTrackArtistEdit->setFixedSize( lTrackArtist->sizeHint().height(), lTrackArtist->sizeHint().height() ); pTrackArtistEdit->hide(); trackArtistBox->addWidget( pTrackArtistEdit ); connect( pTrackArtistEdit, SIGNAL(clicked()), this, SLOT(editTrackArtistClicked()) ); QLabel *lTrackComposerLabel = new QLabel( i18n("Composer:"), tagGroupBox ); trackArtistBox->addWidget( lTrackComposerLabel ); lTrackComposer = new KLineEdit( tagGroupBox ); trackArtistBox->addWidget( lTrackComposer ); connect( lTrackComposer, SIGNAL(textChanged(const QString&)), this, SLOT(trackComposerChanged(const QString&)) ); pTrackComposerEdit = new KPushButton( "", tagGroupBox ); pTrackComposerEdit->setIcon( KIcon("document-edit") ); pTrackComposerEdit->setFixedSize( lTrackComposer->sizeHint().height(), lTrackComposer->sizeHint().height() ); pTrackComposerEdit->hide(); trackArtistBox->addWidget( pTrackComposerEdit ); connect( pTrackComposerEdit, SIGNAL(clicked()), this, SLOT(editTrackComposerClicked()) ); // add a horizontal box layout for the comment QHBoxLayout *trackCommentBox = new QHBoxLayout(); tagGridLayout->addLayout( trackCommentBox, 2, 2 ); // and fill it up QLabel *lTrackCommentLabel = new QLabel( i18n("Comment:"), tagGroupBox ); tagGridLayout->addWidget( lTrackCommentLabel, 2, 1 ); tTrackComment = new KTextEdit( tagGroupBox ); trackCommentBox->addWidget( tTrackComment ); tTrackComment->setFixedHeight( 45 ); connect( tTrackComment, SIGNAL(textChanged()), this, SLOT(trackCommentChanged()) ); pTrackCommentEdit = new KPushButton( "", tagGroupBox ); pTrackCommentEdit->setIcon( KIcon("document-edit") ); pTrackCommentEdit->setFixedSize( lTrackTitle->sizeHint().height(), lTrackTitle->sizeHint().height() ); pTrackCommentEdit->hide(); trackCommentBox->addWidget( pTrackCommentEdit ); connect( pTrackCommentEdit, SIGNAL(clicked()), this, SLOT(editTrackCommentClicked()) ); audioOutput = new Phonon::AudioOutput( Phonon::MusicCategory, this ); audioOutput->setVolume( 0.5 ); mediaObject = new Phonon::MediaObject( this ); mediaObject->setTickInterval( 500 ); Phonon::createPath( mediaObject, audioOutput ); mediaController = new Phonon::MediaController( mediaObject ); mediaController->setAutoplayTitles( false ); connect( mediaController, SIGNAL(titleChanged(int)), this, SLOT(playbackTitleChanged(int)) ); connect( mediaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(playbackStateChanged(Phonon::State,Phonon::State)) ); // Cd Opener Overlay Widget cdOpenerOverlayWidget = new QWidget( widget ); mainGrid->addWidget( cdOpenerOverlayWidget, 2, 0 ); QHBoxLayout *cdOpenerOverlayLayout = new QHBoxLayout(); cdOpenerOverlayWidget->setLayout( cdOpenerOverlayLayout ); // lOverlayLabel = new QLabel( i18n("Please wait, trying to read audio CD ..."), cdOpenerOverlayWidget ); lOverlayLabel = new QLabel( cdOpenerOverlayWidget ); cdOpenerOverlayLayout->addWidget( lOverlayLabel ); lOverlayLabel->setAlignment( Qt::AlignCenter ); cdOpenerOverlayWidget->setAutoFillBackground( true ); QPalette newPalette = cdOpenerOverlayWidget->palette(); newPalette.setBrush( QPalette::Window, brushSetAlpha( newPalette.window(), 192 ) ); cdOpenerOverlayWidget->setPalette( newPalette ); // Conversion Options Widget options = new Options( config, i18n("Select your desired output options and click on \"Ok\"."), widget ); mainGrid->addWidget( options, 2, 0 ); adjustSize(); const int h_margin = ( cdOpenerWidget->sizeHint().width() - options->sizeHint().width() ) / 4; const int v_margin = ( cdOpenerWidget->sizeHint().height() - options->sizeHint().height() ) / 4; options->setContentsMargins( h_margin, v_margin, h_margin, v_margin ); options->hide(); // draw a horizontal line QFrame *buttonLineFrame = new QFrame( widget ); buttonLineFrame->setFrameShape( QFrame::HLine ); buttonLineFrame->setFrameShadow( QFrame::Sunken ); buttonLineFrame->setFrameShape( QFrame::HLine ); mainGrid->addWidget( buttonLineFrame, 4, 0 ); // add a horizontal box layout for the control elements QHBoxLayout *controlBox = new QHBoxLayout(); mainGrid->addLayout( controlBox, 5, 0 ); // add the control elements pSaveCue = new KPushButton( KIcon("document-save"), i18n("Save cue sheet..."), widget ); controlBox->addWidget( pSaveCue ); connect( pSaveCue, SIGNAL(clicked()), this, SLOT(saveCuesheetClicked()) ); controlBox->addSpacing( 10 ); pCDDB = new KPushButton( KIcon("download"), i18n("Request CDDB"), widget ); controlBox->addWidget( pCDDB ); connect( pCDDB, SIGNAL(clicked()), this, SLOT(requestCddb()) ); controlBox->addStretch(); cEntireCd = new QCheckBox( i18n("Rip entire CD to one file"), widget ); QStringList errorList; cEntireCd->setEnabled( config->pluginLoader()->canRipEntireCd(&errorList) ); if( !cEntireCd->isEnabled() ) { QPalette notificationPalette = cEntireCd->palette(); notificationPalette.setColor( QPalette::Disabled, QPalette::WindowText, QColor(174,127,130) ); // QColor(181,96,101) cEntireCd->setPalette( notificationPalette ); if( !errorList.isEmpty() ) { errorList.prepend( i18n("Ripping an entire cd to a single file is not supported by the installed backends.\nPossible solutions are listed below.\n") ); } else { errorList += i18n("Ripping an entire cd to a single file is not supported by the installed backends.\nPlease check your distribution's package manager in order to install an additional ripper plugin which supports ripping to one file."); } cEntireCd->setToolTip( errorList.join("\n") ); } controlBox->addWidget( cEntireCd ); controlBox->addSpacing( 20 ); pProceed = new KPushButton( KIcon("go-next"), i18n("Proceed"), widget ); controlBox->addWidget( pProceed ); connect( pProceed, SIGNAL(clicked()), this, SLOT(proceedClicked()) ); pAdd = new KPushButton( KIcon("dialog-ok"), i18n("Ok"), widget ); controlBox->addWidget( pAdd ); pAdd->hide(); connect( pAdd, SIGNAL(clicked()), this, SLOT(addClicked()) ); pCancel = new KPushButton( KIcon("dialog-cancel"), i18n("Cancel"), widget ); controlBox->addWidget( pCancel ); connect( pCancel, SIGNAL(clicked()), this, SLOT(reject()) ); connect( &fadeTimer, SIGNAL(timeout()), this, SLOT(fadeAnim()) ); fadeAlpha = 255.0f; cddb = new KCDDB::Client(); connect( cddb, SIGNAL(finished(KCDDB::Result)), this, SLOT(lookup_cddb_done(KCDDB::Result)) ); // set up timeout timer timeoutTimer.setSingleShot( true ); connect( &timeoutTimer, SIGNAL(timeout()), this, SLOT(timeout()) ); if( !_device.isEmpty() ) { device = _device; } else { const QMap devices = cdDevices(); if( devices.count() <= 0 ) { noCdFound = true; return; } else if( devices.count() == 1 ) { device = devices.keys().at(0); } else { QStringList list; foreach( const QString desc, devices.values() ) { list.append( desc ); } bool ok = false; const QString selection = KInputDialog::getItem( i18n("Select CD-ROM drive"), i18n("Multiple CD-ROM drives where found. Please select one:"), list, 0, false, &ok, this ); if( ok ) { // The user selected an item and pressed OK device = devices.keys().at(list.indexOf(selection)); } else { noCdFound = true; return; } } } const bool success = openCdDevice( device ); if( !success ) { KMessageBox::information(this,"success = false, couldn't open audio device.\nplease report this bug."); noCdFound = true; return; } mediaSource = new Phonon::MediaSource( Phonon::Cd, device ); mediaObject->setCurrentSource( *mediaSource ); // WARNING doesn't work with phonon-xine // Prevent the dialog from beeing too wide because of the directory history if( parent && width() > parent->width() ) setInitialSize( QSize(parent->width()-10,sizeHint().height()) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "CDOpener" ); restoreDialogSize( group ); } CDOpener::~CDOpener() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "CDOpener" ); saveDialogSize( group ); if( cdParanoia ) { paranoia_free( cdParanoia ); // delete cdParanoia; } if( cdDrive ) { cdda_close( cdDrive ); // delete cdDrive; } if( cddb ) delete cddb; } void CDOpener::setProfile( const QString& profile ) { options->setProfile( profile ); } void CDOpener::setFormat( const QString& format ) { options->setFormat( format ); } void CDOpener::setOutputDirectory( const QString& directory ) { options->setOutputDirectory( directory ); } void CDOpener::setCommand( const QString& _command ) { command = _command; } QMap CDOpener::cdDevices() { // QStringList deviceList; // QList solidDeviceList = Solid::Device::listFromType(Solid::DeviceInterface::OpticalDrive, QString()); // foreach( Solid::Device solidDevice, solidDeviceList ) // { // deviceList += solidDevice.as()->device(); // } QMap devices; QFile *file; QString line; file = new QFile( "/proc/sys/dev/cdrom/info" ); if( !file->open(QIODevice::ReadOnly | QIODevice::Text) ) { KMessageBox::information(this,"can't open /proc/sys/dev/cdrom/info"); return devices; } QStringList deviceList; QStringList cdBurnList; QStringList dvdPlayList; QStringList dvdBurnList; QTextStream stream( file ); line = stream.readLine(); while( !line.isNull() ) { if( line.contains("drive name:") ) { line = line.right( line.length() - line.indexOf(":") - 1 ); line = line.simplified(); deviceList = line.split( " ", QString::SkipEmptyParts ); } else if( line.contains("Can write CD-R:") ) { line = line.right( line.length() - line.indexOf(":") - 1 ); line = line.simplified(); cdBurnList = line.split( " ", QString::SkipEmptyParts ); } else if( line.contains("Can read DVD:") ) { line = line.right( line.length() - line.indexOf(":") - 1 ); line = line.simplified(); dvdPlayList = line.split( " ", QString::SkipEmptyParts ); } else if( line.contains("Can write DVD-R:") ) { line = line.right( line.length() - line.indexOf(":") - 1 ); line = line.simplified(); dvdBurnList = line.split( " ", QString::SkipEmptyParts ); } line = stream.readLine(); } file->close(); for( int i=0; ivalid || info->count_of_entries != cdda_tracks(cdDrive) ) // if( !info || !info->valid ) // { // kDebug() << "no or invalid CDTEXT"; // info = 0; // } // } // add tracks to list qDeleteAll( tags ); tags.clear(); TagData *newTags = new TagData(); newTags->artist = i18n("Unknown"); newTags->album = i18n("Unknown"); newTags->track = 1; newTags->trackTotal = 1; newTags->disc = 1; newTags->discTotal = 1; newTags->year = (QDate::currentDate()).year(); newTags->genre = i18n("Unknown"); tags += newTags; const int trackTotal = cdda_audio_tracks( cdDrive ); for( int i=0; itrack = i+1; newTags->trackTotal = trackTotal; newTags->artist = i18n("Unknown"); newTags->title = i18n("Unknown"); const long size = CD_FRAMESIZE_RAW * (cdda_track_lastsector(cdDrive,newTags->track)-cdda_track_firstsector(cdDrive,newTags->track)); newTags->length = (8 * size) / (44100 * 2 * 16); tags += newTags; QStringList data; data.append( "" ); data.append( QString().sprintf("%02i",newTags->track) ); data.append( newTags->artist ); data.append( newTags->composer ); data.append( newTags->title ); data.append( QString().sprintf("%i:%02i",newTags->length/60,newTags->length%60) ); QTreeWidgetItem *item = new QTreeWidgetItem( trackList, data ); PlayerWidget *playerWidget = new PlayerWidget( mediaObject, newTags->track, item, this ); // playerWidget->hide(); connect( playerWidget, SIGNAL(startPlayback(int)), this, SLOT(startPlayback(int)) ); connect( playerWidget, SIGNAL(stopPlayback()), this, SLOT(stopPlayback()) ); playerWidgets.append( playerWidget ); trackList->setItemWidget( item, Column_Player, playerWidget ); item->setCheckState( 0, Qt::Checked ); } trackList->resizeColumnToContents( Column_Rip ); trackList->resizeColumnToContents( Column_Track ); trackList->resizeColumnToContents( Column_Length ); if( trackList->topLevelItem(0) ) trackList->topLevelItem(0)->setSelected( true ); cArtist->setEditText( tags.at(0)->artist ); cComposer->setEditText( tags.at(0)->composer ); lAlbum->setText( tags.at(0)->album ); iDisc->setValue( tags.at(0)->disc ); iDiscTotal->setValue( tags.at(0)->discTotal ); iYear->setValue( tags.at(0)->year ); cGenre->setEditText( tags.at(0)->genre ); artistChanged( cArtist->currentText() ); composerChanged( cComposer->currentText() ); // request cddb data requestCddb( true ); return true; } void CDOpener::requestCddb( bool autoRequest ) { lOverlayLabel->setText( i18n("Please wait, trying to download CDDB data ...") ); timeoutTimer.start( autoRequest ? 10000 : 20000 ); // cddb needs offsets +150 frames (2 seconds * 75 frames per second) KCDDB::TrackOffsetList offsets; for( int i=1; i<=cdda_tracks(cdDrive); i++ ) { if( !(IS_AUDIO(cdDrive,i-1)) ) break; offsets.append( cdda_track_firstsector(cdDrive,i) + 150 ); } offsets.append( cdda_disc_lastsector(cdDrive) + 150 + 1 ); cddb->config().reparse(); cddb->setBlockingMode( false ); cddb->lookup( offsets ); } void CDOpener::lookup_cddb_done( KCDDB::Result result ) { timeoutTimer.stop(); if( result != KCDDB::Success && result != KCDDB::MultipleRecordFound ) { // TODO error message if request was initiated by the user // Error(i18n("No entry found in CDDB."), i18n("This means no data found in the CDDB database. Please enter the data manually. Maybe try another CDDB server."), Error::ERROR, this); fadeOut(); return; } cddbFound = true; KCDDB::CDInfo info = cddb->lookupResponse().first(); if( cddb->lookupResponse().count() > 1 || cdTextFound ) { KCDDB::CDInfoList cddb_info = cddb->lookupResponse(); QStringList list; if( cdTextFound ) { // list.append( QString("CD Text: %1, %2").arg(compact_disc->discArtist()).arg(compact_disc->discTitle()) ); } for( int i=0; iartist = info.track(i-1).get(KCDDB::Artist).toString(); tags.at(i)->title = info.track(i-1).get(KCDDB::Title).toString(); tags.at(i)->comment = info.track(i-1).get(KCDDB::Comment).toString(); if( artist == "" ) artist = tags.at(i)->artist; else if( artist != tags.at(i)->artist ) various_artists = true; if( composer == "" ) composer = tags.at(i)->composer; else if( composer != tags.at(i)->composer ) various_composer = true; QTreeWidgetItem *item = trackList->topLevelItem(i-1); item->setText( 2, tags.at(i)->artist ); item->setText( 4, tags.at(i)->title ); } if( various_artists ) tags.at(0)->artist = i18n("Various Artists"); else tags.at(0)->artist = artist; if( various_composer ) tags.at(0)->composer = i18n("Various Composer"); else tags.at(0)->composer = composer; tags.at(0)->album = info.get(KCDDB::Title).toString(); tags.at(0)->year = info.get(KCDDB::Year).toInt(); tags.at(0)->genre = info.get(KCDDB::Genre).toString(); // TODO resize colums up to a certain width cArtist->setEditText( tags.at(0)->artist ); cComposer->setEditText( tags.at(0)->composer ); lAlbum->setText( tags.at(0)->album ); iDisc->setValue( tags.at(0)->disc ); iDiscTotal->setValue( tags.at(0)->discTotal ); iYear->setValue( tags.at(0)->year ); cGenre->setEditText( tags.at(0)->genre ); artistChanged( cArtist->currentText() ); composerChanged( cComposer->currentText() ); fadeOut(); } void CDOpener::timeout() { fadeOut(); } void CDOpener::trackUpPressed() { QTreeWidgetItem *item = trackList->topLevelItem( selectedTracks.first() - 2 ); if( !item ) return; disconnect( trackList, SIGNAL(itemSelectionChanged()), 0, 0 ); // avoid backfireing for( int i=0; itopLevelItem( selectedTracks.at(i)-1 ); if( item ) item->setSelected( false ); } item->setSelected( true ); trackList->scrollToItem( item ); connect( trackList, SIGNAL(itemSelectionChanged()), this, SLOT(trackChanged()) ); trackChanged(); } void CDOpener::trackDownPressed() { QTreeWidgetItem *item = trackList->topLevelItem( selectedTracks.last() ); if( !item ) return; disconnect( trackList, SIGNAL(itemSelectionChanged()), 0, 0 ); // avoid backfireing for( int i=0; itopLevelItem( selectedTracks.at(i)-1 ); if( item ) item->setSelected( false ); } item->setSelected( true ); trackList->scrollToItem( item ); connect( trackList, SIGNAL(itemSelectionChanged()), this, SLOT(trackChanged()) ); trackChanged(); } void CDOpener::trackChanged() { // NOTE if no track is selected soundkonverter could use the current item as default item (like qlistview does) // rebuild the list of the selected tracks selectedTracks.clear(); QTreeWidgetItem *item; for( int i=0; itopLevelItemCount(); i++ ) { item = trackList->topLevelItem( i ); if( item->isSelected() ) { selectedTracks.append( i+1 ); } } // insert the new values if( selectedTracks.count() < 1 ) { pTrackUp->setEnabled( false ); pTrackDown->setEnabled( false ); lTrackTitle->setEnabled( false ); lTrackTitle->setText( "" ); pTrackTitleEdit->hide(); lTrackArtist->setEnabled( false ); lTrackArtist->setText( "" ); pTrackArtistEdit->hide(); lTrackComposer->setEnabled( false ); lTrackComposer->setText( "" ); pTrackComposerEdit->hide(); tTrackComment->setEnabled( false ); tTrackComment->setReadOnly( true ); tTrackComment->setText( "" ); pTrackCommentEdit->hide(); pTrackUp->setEnabled( false ); pTrackDown->setEnabled( false ); return; } else if( selectedTracks.count() > 1 ) { if( selectedTracks.first() > 1 ) pTrackUp->setEnabled( true ); else pTrackUp->setEnabled( false ); if( selectedTracks.last() < trackList->topLevelItemCount() ) pTrackDown->setEnabled( true ); else pTrackDown->setEnabled( false ); QString trackListString = ""; if( selectedTracks.count() == trackList->topLevelItemCount() ) { trackListString = i18n("All tracks"); } else { trackListString = i18n("Tracks") + QString().sprintf( " %02i", selectedTracks.at(0) ); for( int i=1; isetTitle( trackListString ); const QString title = tags.at(selectedTracks.at(0))->title; bool equalTitles = true; const QString artist = tags.at(selectedTracks.at(0))->artist; bool equalArtists = true; const QString composer = tags.at(selectedTracks.at(0))->composer; bool equalComposers = true; const QString comment = tags.at(selectedTracks.at(0))->comment; bool equalComments = true; for( int i=1; ititle ) equalTitles = false; if( artist != tags.at(selectedTracks.at(i))->artist ) equalArtists = false; if( composer != tags.at(selectedTracks.at(i))->composer ) equalComposers = false; if( comment != tags.at(selectedTracks.at(i))->comment ) equalComments = false; } if( equalTitles ) { lTrackTitle->setEnabled( true ); lTrackTitle->setText( title ); pTrackTitleEdit->hide(); } else { lTrackTitle->setEnabled( false ); lTrackTitle->setText( "" ); pTrackTitleEdit->show(); } if( cArtist->currentText() == i18n("Various Artists") && equalArtists ) { lTrackArtist->setEnabled( true ); lTrackArtist->setText( artist ); pTrackArtistEdit->hide(); } else if( cArtist->currentText() == i18n("Various Artists") ) { lTrackArtist->setEnabled( false ); lTrackArtist->setText( "" ); pTrackArtistEdit->show(); } else { lTrackArtist->setEnabled( false ); lTrackArtist->setText( cArtist->currentText() ); pTrackArtistEdit->hide(); } if( cComposer->currentText() == i18n("Various Composer") && equalComposers ) { lTrackComposer->setEnabled( true ); lTrackComposer->setText( composer ); pTrackComposerEdit->hide(); } else if( cComposer->currentText() == i18n("Various Composer") ) { lTrackComposer->setEnabled( false ); lTrackComposer->setText( "" ); pTrackComposerEdit->show(); } else { lTrackComposer->setEnabled( false ); lTrackComposer->setText( cComposer->currentText() ); pTrackComposerEdit->hide(); } if( equalComments ) { tTrackComment->setEnabled( true ); tTrackComment->setReadOnly( false ); tTrackComment->setText( comment ); pTrackCommentEdit->hide(); } else { tTrackComment->setEnabled( false ); tTrackComment->setReadOnly( true ); tTrackComment->setText( "" ); pTrackCommentEdit->show(); } } else { if( selectedTracks.first() > 1 ) pTrackUp->setEnabled( true ); else pTrackUp->setEnabled( false ); if( selectedTracks.last() < trackList->topLevelItemCount() ) pTrackDown->setEnabled( true ); else pTrackDown->setEnabled( false ); tagGroupBox->setTitle( i18n("Track") + QString().sprintf(" %02i",selectedTracks.at(0)) ); lTrackTitle->setEnabled( true ); lTrackTitle->setText( tags.at(selectedTracks.at(0))->title ); pTrackTitleEdit->hide(); if( cArtist->currentText() == i18n("Various Artists") ) { lTrackArtist->setEnabled( true ); lTrackArtist->setText( tags.at(selectedTracks.at(0))->artist ); pTrackArtistEdit->hide(); } else { lTrackArtist->setEnabled( false ); lTrackArtist->setText( cArtist->currentText() ); pTrackArtistEdit->hide(); } if( cComposer->currentText() == i18n("Various Composer") ) { lTrackComposer->setEnabled( true ); lTrackComposer->setText( tags.at(selectedTracks.at(0))->composer ); pTrackComposerEdit->hide(); } else { lTrackComposer->setEnabled( false ); lTrackComposer->setText( cComposer->currentText() ); pTrackComposerEdit->hide(); } tTrackComment->setEnabled( true ); tTrackComment->setReadOnly( false ); tTrackComment->setText( tags.at(selectedTracks.at(0))->comment ); pTrackCommentEdit->hide(); } } void CDOpener::artistChanged( const QString& text ) { trackList->setColumnHidden( Column_Artist, text != i18n("Various Artists") ); trackChanged(); } void CDOpener::composerChanged( const QString& text ) { trackList->setColumnHidden( Column_Composer, text != i18n("Various Composer") ); trackChanged(); } void CDOpener::trackTitleChanged( const QString& text ) { if( !lTrackTitle->isEnabled() ) return; for( int i=0; itopLevelItem( selectedTracks.at(i)-1 ); if( item ) item->setText( Column_Title, text ); tags.at(selectedTracks.at(i))->title = text; } } void CDOpener::trackArtistChanged( const QString& text ) { if( !lTrackArtist->isEnabled() ) return; for( int i=0; itopLevelItem( selectedTracks.at(i)-1 ); if( item ) item->setText( Column_Artist, text ); tags.at(selectedTracks.at(i))->artist = text; } } void CDOpener::trackComposerChanged( const QString& text ) { if( !lTrackComposer->isEnabled() ) return; for( int i=0; itopLevelItem( selectedTracks.at(i)-1 ); if( item ) item->setText( Column_Composer, text ); tags.at(selectedTracks.at(i))->composer = text; } } void CDOpener::trackCommentChanged() { QString text = tTrackComment->toPlainText(); if( !tTrackComment->isEnabled() ) return; for( int i=0; icomment = text; } } void CDOpener::editTrackTitleClicked() { lTrackTitle->setEnabled( true ); lTrackTitle->setFocus(); pTrackTitleEdit->hide(); trackTitleChanged( lTrackTitle->text() ); } void CDOpener::editTrackArtistClicked() { lTrackArtist->setEnabled( true ); lTrackArtist->setFocus(); pTrackArtistEdit->hide(); trackArtistChanged( lTrackArtist->text() ); } void CDOpener::editTrackComposerClicked() { lTrackComposer->setEnabled( true ); lTrackComposer->setFocus(); pTrackComposerEdit->hide(); trackComposerChanged( lTrackComposer->text() ); } void CDOpener::editTrackCommentClicked() { tTrackComment->setEnabled( true ); tTrackComment->setReadOnly( false ); tTrackComment->setFocus(); pTrackCommentEdit->hide(); trackCommentChanged(); } void CDOpener::fadeIn() { fadeTimer.start( 50 ); fadeMode = 1; cdOpenerOverlayWidget->show(); } void CDOpener::fadeOut() { fadeTimer.start( 50 ); fadeMode = 2; } void CDOpener::fadeAnim() { if( fadeMode == 1 ) { fadeAlpha += 255.0f/50.0f*8.0f; } else if( fadeMode == 2 ) { fadeAlpha -= 255.0f/50.0f*8.0f; } if( fadeAlpha <= 0.0f ) { fadeAlpha = 0.0f; fadeMode = 0; cdOpenerOverlayWidget->hide(); } else if( fadeAlpha >= 255.0f ) { fadeAlpha = 255.0f; fadeMode = 0; } else { fadeTimer.start( 50 ); } QPalette newPalette = cdOpenerOverlayWidget->palette(); newPalette.setBrush( QPalette::Window, brushSetAlpha( newPalette.window(), 192.0f/255.0f*fadeAlpha ) ); cdOpenerOverlayWidget->setPalette( newPalette ); newPalette = lOverlayLabel->palette(); newPalette.setBrush( QPalette::WindowText, brushSetAlpha( newPalette.windowText(), fadeAlpha ) ); lOverlayLabel->setPalette( newPalette ); } void CDOpener::proceedClicked() { int trackCount = 0; for( int i=0; itopLevelItemCount(); i++ ) { if( trackList->topLevelItem(i)->checkState(0) == Qt::Checked ) trackCount++; } if( trackCount == 0 ) { KMessageBox::error( this, i18n("Please select at least one track in order to proceed.") ); return; } if( options->currentConversionOptions() && options->currentConversionOptions()->outputDirectoryMode == OutputDirectory::Source ) { options->setOutputDirectoryMode( (int)OutputDirectory::MetaData ); } cdOpenerWidget->hide(); pSaveCue->hide(); pCDDB->hide(); cEntireCd->hide(); options->show(); page = ConversionOptionsPage; QFont font; font.setBold( false ); lSelector->setFont( font ); font.setBold( true ); lOptions->setFont( font ); pProceed->hide(); pAdd->show(); } void CDOpener::addClicked() { ConversionOptions *conversionOptions = options->currentConversionOptions(); if( conversionOptions ) { QList tracks; QList tagList; const int trackCount = cdda_audio_tracks( cdDrive ); if( cEntireCd->isEnabled() && cEntireCd->isChecked() ) { tags.at(0)->title = lAlbum->text(); tags.at(0)->artist = cArtist->currentText(); tags.at(0)->composer = cComposer->currentText(); tags.at(0)->album = lAlbum->text(); tags.at(0)->disc = iDisc->value(); tags.at(0)->discTotal = iDiscTotal->value(); tags.at(0)->year = iYear->value(); tags.at(0)->genre = cGenre->currentText(); const long size = CD_FRAMESIZE_RAW * (cdda_track_lastsector(cdDrive,trackCount)-cdda_track_firstsector(cdDrive,1)); tags.at(0)->length = (8 * size) / (44100 * 2 * 16); tagList.append( tags.at(0) ); tracks.append( 0 ); } else { for( int i=0; itopLevelItemCount(); i++ ) { if( trackList->topLevelItem(i)->checkState(0) == Qt::Checked ) { if( cArtist->currentText() != i18n("Various Artists") ) tags.at(i+1)->artist = cArtist->currentText(); if( cComposer->currentText() != i18n("Various Composer") ) tags.at(i+1)->composer = cComposer->currentText(); tags.at(i+1)->album = lAlbum->text(); tags.at(i+1)->disc = iDisc->value(); tags.at(i+1)->discTotal = iDiscTotal->value(); tags.at(i+1)->year = iYear->value(); tags.at(i+1)->genre = cGenre->currentText(); const long size = CD_FRAMESIZE_RAW * (cdda_track_lastsector(cdDrive,i+1)-cdda_track_firstsector(cdDrive,i+1)); tags.at(i+1)->length = (8 * size) / (44100 * 2 * 16); tagList.append( tags.at(i+1) ); tracks.append( i+1 ); } } } options->accepted(); emit addTracks( device, tracks, trackCount, tagList, conversionOptions, command ); accept(); } else { KMessageBox::error( this, i18n("No conversion options selected.") ); } } void CDOpener::saveCuesheetClicked() { QString filename = KFileDialog::getSaveFileName( QDir::homePath(), "*.cue" ); if( filename.isEmpty() ) return; QFile cueFile( filename ); if( cueFile.exists() ) { const int ret = KMessageBox::questionYesNo( this, i18n("A file with this name already exists.\n\nDo you want to overwrite the existing one?"), i18n("File already exists") ); if( ret == KMessageBox::No ) return; } if( !cueFile.open( QIODevice::WriteOnly ) ) return; QString content; content.append( "REM COMMENT \"soundKonverter " + QString(SOUNDKONVERTER_VERSION_STRING) + "\"\n" ); content.append( "TITLE \"" + lAlbum->text() + "\"\n" ); content.append( "PERFORMER \"" + cArtist->currentText() + "\"\n" ); content.append( "SONGWRITER \"" + cComposer->currentText() + "\"\n" ); content.append( "FILE \"\" WAVE\n" ); for( int i=1; itrack ) ); content.append( " TITLE \"" + tags.at(i)->title + "\"\n" ); content.append( " PERFORMER \"" + tags.at(i)->artist + "\"\n" ); content.append( " SONGWRITER \"" + tags.at(i)->composer + "\"\n" ); const long size = CD_FRAMESIZE_RAW * cdda_track_firstsector(cdDrive,i); const long length = (8 * size) / (44100 * 2 * 16); const long frames = (8 * size) / (588 * 2 * 16); content.append( QString().sprintf(" INDEX 01 %02li:%02li:%02li\n",length/60,length%60,frames%75) ); } QTextStream ts( &cueFile ); ts << content; cueFile.close(); } // void CDOpener::itemHighlighted( QTreeWidgetItem *item, int column ) // { // for( int i=0; itreeWidgetItem() ) // playerWidgets[i]->show(); // else if( !playerWidgets.at(i)->isPlaying() ) // playerWidgets[i]->hide(); // } // } void CDOpener::startPlayback( int track ) { for( int i=0; iisPlaying() ) playerWidgets[i]->trackChanged( track ); } mediaController->setCurrentTitle( track ); mediaObject->play(); } void CDOpener::stopPlayback() { mediaObject->stop(); } void CDOpener::playbackTitleChanged( int title ) { for( int i=0; iisPlaying() ) || ( i+1 == title && !playerWidgets.at(i)->isPlaying() ) ) playerWidgets[i]->trackChanged( title ); } } void CDOpener::playbackStateChanged( Phonon::State newstate, Phonon::State oldstate ) { Q_UNUSED(oldstate) if( newstate == Phonon::StoppedState ) { playbackTitleChanged( 0 ); } else if( newstate == Phonon::PlayingState ) { playbackTitleChanged( mediaController->currentTitle() ); } } ./soundkonverter-2.0.5/opener/PaxHeaders.25599/urlopener.cpp0000644000175000001440000000006212105142352022007 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/urlopener.cpp0000644000175000001440000001037012105142352021421 0ustar00danielusers00000000000000// // C++ Implementation: opener // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "urlopener.h" #include "../options.h" #include "../config.h" #include #include #include #include #include #include #include // TODO enable proceed button only if at least one file got selected // copy'n'paste error ??? // TODO message box if url can't be added -> maybe in file list UrlOpener::UrlOpener( Config *_config, QWidget *parent, Qt::WFlags f ) : KDialog( parent, f ), config( _config ) { setCaption( i18n("Add url") ); setWindowIcon( KIcon("network-workgroup") ); setButtons( 0 ); page = FileOpenPage; QWidget *widget = new QWidget(); setMainWidget( widget ); QGridLayout *mainGrid = new QGridLayout( widget ); QGridLayout *topGrid = new QGridLayout( widget ); mainGrid->addLayout( topGrid, 0, 0 ); lSelector = new QLabel( i18n("1. Enter url"), widget ); QFont font; font.setBold( true ); lSelector->setFont( font ); topGrid->addWidget( lSelector, 0, 0 ); lOptions = new QLabel( i18n("2. Set conversion options"), widget ); topGrid->addWidget( lOptions, 0, 1 ); // draw a horizontal line QFrame *lineFrame = new QFrame( widget ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); mainGrid->addWidget( lineFrame, 1, 0 ); QVBoxLayout *urlBox = new QVBoxLayout(); mainGrid->addLayout( urlBox, 2, 0 ); urlBox->addSpacing( 60 ); urlRequester = new KUrlRequester( widget ); urlRequester->setMode( KFile::File | KFile::ExistingOnly ); urlBox->addWidget( urlRequester ); urlBox->addStretch(); options = new Options( config, i18n("Select your desired output options and click on \"Ok\"."), widget ); mainGrid->addWidget( options, 2, 0 ); adjustSize(); options->hide(); // add a horizontal box layout for the control elements QHBoxLayout *controlBox = new QHBoxLayout(); mainGrid->addLayout( controlBox, 5, 0 ); controlBox->addStretch(); pProceed = new KPushButton( KIcon("go-next"), i18n("Proceed"), widget ); controlBox->addWidget( pProceed ); connect( pProceed, SIGNAL(clicked()), this, SLOT(proceedClickedSlot()) ); pAdd = new KPushButton( KIcon("dialog-ok"), i18n("Ok"), widget ); controlBox->addWidget( pAdd ); pAdd->hide(); connect( pAdd, SIGNAL(clicked()), this, SLOT(okClickedSlot()) ); pCancel = new KPushButton( KIcon("dialog-cancel"), i18n("Cancel"), widget ); controlBox->addWidget( pCancel ); connect( pCancel, SIGNAL(clicked()), this, SLOT(reject()) ); // Prevent the dialog from beeing too wide because of the directory history if( parent && width() > parent->width() ) setInitialSize( QSize(parent->width()-10,sizeHint().height()) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "UrlOpener" ); restoreDialogSize( group ); } UrlOpener::~UrlOpener() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "UrlOpener" ); saveDialogSize( group ); } void UrlOpener::proceedClickedSlot() { if( page == FileOpenPage ) { if( !urlRequester->url().isValid() ) { KMessageBox::information( this, i18n("The Url you entered is invalid. Please try again.") ); return; } urls = urlRequester->url(); urlRequester->hide(); options->show(); page = ConversionOptionsPage; QFont font; font.setBold( false ); lSelector->setFont( font ); font.setBold( true ); lOptions->setFont( font ); pProceed->hide(); pAdd->show(); } } void UrlOpener::okClickedSlot() { if( page == ConversionOptionsPage ) { ConversionOptions *conversionOptions = options->currentConversionOptions(); if( conversionOptions ) { options->accepted(); emit open( urls, conversionOptions ); accept(); } else { KMessageBox::error( this, i18n("No conversion options selected.") ); } } } ./soundkonverter-2.0.5/opener/PaxHeaders.25599/fileopener.cpp0000644000175000001440000000013212255306740022133 xustar000000000000000030 mtime=1387630048.454963372 30 atime=1387630048.454963372 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/fileopener.cpp0000644000175000001440000001753212255306740021556 0ustar00danielusers00000000000000// // C++ Implementation: opener // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "fileopener.h" #include "../options.h" #include "../config.h" #include "../codecproblems.h" #include #include #include #include #include #include #include #include FileOpener::FileOpener( Config *_config, QWidget *parent, Qt::WFlags f ) : KDialog( parent, f ), dialogAborted( false ), config( _config ) { setCaption( i18n("Add Files") ); setWindowIcon( KIcon("audio-x-generic") ); setButtons( 0 ); QWidget *widget = new QWidget(); setMainWidget( widget ); QGridLayout *mainGrid = new QGridLayout( widget ); QStringList filterList; QStringList allFilter; const QStringList formats = config->pluginLoader()->formatList( PluginLoader::Decode, PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); foreach( QString format, formats ) { QString extensionFilter = config->pluginLoader()->codecExtensions(format).join(" *."); if( extensionFilter.length() == 0 ) continue; extensionFilter = "*." + extensionFilter; allFilter += extensionFilter; filterList += extensionFilter + "|" + i18n("%1 files",format.replace("/","\\/")); } filterList.prepend( allFilter.join(" ") + "|" + i18n("All supported files") ); filterList += "*.*|" + i18n("All files"); options = new Options( config, i18n("Select your desired output options and click on \"Ok\"."), widget ); mainGrid->addWidget( options, 1, 0 ); // add a horizontal box layout for the control elements QHBoxLayout *controlBox = new QHBoxLayout(); mainGrid->addLayout( controlBox, 2, 0 ); controlBox->addStretch(); pAdd = new KPushButton( KIcon("dialog-ok"), i18n("Ok"), widget ); controlBox->addWidget( pAdd ); connect( pAdd, SIGNAL(clicked()), this, SLOT(okClickedSlot()) ); pCancel = new KPushButton( KIcon("dialog-cancel"), i18n("Cancel"), widget ); controlBox->addWidget( pCancel ); connect( pCancel, SIGNAL(clicked()), this, SLOT(reject()) ); // add the control elements formatHelp = new QLabel( "" + i18n("Are you missing some file formats?") + "", widget ); connect( formatHelp, SIGNAL(linkActivated(const QString&)), this, SLOT(showHelp()) ); fileDialog = new KFileDialog( KUrl(QDir::homePath()), filterList.join("\n"), this, formatHelp ); fileDialog->setWindowTitle( i18n("Add Files") ); fileDialog->setMode( KFile::Files | KFile::ExistingOnly ); connect( fileDialog, SIGNAL(accepted()), this, SLOT(fileDialogAccepted()) ); connect( fileDialog, SIGNAL(rejected()), this, SLOT(reject()) ); const int dialogReturnCode = fileDialog->exec(); if( dialogReturnCode == QDialog::Rejected ) dialogAborted = true; // Prevent the dialog from beeing too wide because of the directory history if( parent && width() > parent->width() ) setInitialSize( QSize(parent->width()-10,sizeHint().height()) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "FileOpener" ); restoreDialogSize( group ); } FileOpener::~FileOpener() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "FileOpener" ); saveDialogSize( group ); } void FileOpener::fileDialogAccepted() { QStringList errorList; // codec @0 files @1 solutions QMap< QString, QList > problems; QString fileName; urls.clear(); urls = fileDialog->selectedUrls(); const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; for( int i=0; ipluginLoader()->getCodecFromFile( urls.at(i), &mimeType, checkM4a ); if( !config->pluginLoader()->canDecode(codecName,&errorList) ) { fileName = urls.at(i).pathOrUrl(); if( codecName.isEmpty() ) codecName = mimeType; if( codecName.isEmpty() ) codecName = fileName.right(fileName.length()-fileName.lastIndexOf(".")-1); if( problems.value(codecName).count() < 2 ) { problems[codecName] += QStringList(); problems[codecName] += QStringList(); } problems[codecName][0] += fileName; if( !errorList.isEmpty() ) { problems[codecName][1] += errorList; } else { problems[codecName][1] += i18n("This file type is unknown to soundKonverter.\nMaybe you need to install an additional soundKonverter plugin.\nYou should have a look at your distribution's package manager for this."); } urls.removeAt(i); i--; } } QList problemList; for( int i=0; i= 0x040500 problems[problem.codecName][1].removeDuplicates(); #else QStringList found; for( int j=0; j 0 ) { CodecProblems *problemsDialog = new CodecProblems( CodecProblems::Decode, problemList, this ); problemsDialog->exec(); } if( urls.count() <= 0 ) reject(); } void FileOpener::okClickedSlot() { ConversionOptions *conversionOptions = options->currentConversionOptions(); if( conversionOptions ) { options->accepted(); emit open( urls, conversionOptions ); accept(); } else { KMessageBox::error( this, i18n("No conversion options selected.") ); } } void FileOpener::showHelp() { QList problemList; QMap problems = config->pluginLoader()->decodeProblems(); for( int i=0; iexec(); } ./soundkonverter-2.0.5/opener/PaxHeaders.25599/fileopener.h0000644000175000001440000000006212054666405021606 xustar000000000000000020 atime=1357667573 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/fileopener.h0000644000175000001440000000203612054666405021220 0ustar00danielusers00000000000000// // C++ Interface: opener // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef FILEOPENER_H #define FILEOPENER_H #include #include class Config; class Options; class QLabel; class ConversionOptions; class KDialog; class KPushButton; class KFileDialog; /** @author Daniel Faust */ class FileOpener : public KDialog { Q_OBJECT public: FileOpener( Config *_config, QWidget *parent=0, Qt::WFlags f=0 ); ~FileOpener(); /** true if the file dialog was aborted (don't execute the dialog) */ bool dialogAborted; private: Config *config; KFileDialog *fileDialog; Options *options; KUrl::List urls; KPushButton *pAdd; KPushButton *pCancel; QLabel *formatHelp; private slots: void fileDialogAccepted(); void okClickedSlot(); void showHelp(); signals: void open( const KUrl::List& files, ConversionOptions *conversionOptions ); }; #endif ./soundkonverter-2.0.5/opener/PaxHeaders.25599/playlistopener.h0000644000175000001440000000006212054666405022530 xustar000000000000000020 atime=1357667573 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/playlistopener.h0000644000175000001440000000203512054666405022141 0ustar00danielusers00000000000000// // C++ Interface: opener // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef PLAYLISTOPENER_H #define PLAYLISTOPENER_H #include #include class Config; class Options; class QLabel; class ConversionOptions; class KDialog; class KPushButton; class KFileDialog; /** @author Daniel Faust */ class PlaylistOpener : public KDialog { Q_OBJECT public: PlaylistOpener( Config *_config, QWidget *parent=0, Qt::WFlags f=0 ); ~PlaylistOpener(); /** true if the file dialog was aborted (don't execute the dialog) */ bool dialogAborted; private: Config *config; KFileDialog *fileDialog; Options *options; KUrl::List urls; KPushButton *pAdd; KPushButton *pCancel; QLabel *formatHelp; private slots: void fileDialogAccepted(); void okClickedSlot(); signals: void open( const KUrl::List& files, ConversionOptions *conversionOptions ); }; #endif ./soundkonverter-2.0.5/opener/PaxHeaders.25599/diropener.cpp0000644000175000001440000000013212255306740021772 xustar000000000000000030 mtime=1387630048.454963372 30 atime=1387630048.454963372 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/opener/diropener.cpp0000755000175000001440000001775412255306740021426 0ustar00danielusers00000000000000 #include "diropener.h" #include "../config.h" #include "../options.h" #include "../codecproblems.h" #include #include #include #include #include #include #include #include #include #include #include DirOpener::DirOpener( Config *_config, Mode _mode, QWidget *parent, Qt::WFlags f ) : KDialog( parent, f ), dialogAborted( false ), config( _config ), mode( _mode ) { setCaption( i18n("Add folder") ); setWindowIcon( KIcon("folder") ); if( mode == Convert ) { setButtons( KDialog::User1 | KDialog::Cancel ); } else if( mode == ReplayGain ) { setButtons( KDialog::Ok | KDialog::Cancel ); } setButtonText( KDialog::User1, i18n("Proceed") ); setButtonIcon( KDialog::User1, KIcon("go-next") ); connect( this, SIGNAL(user1Clicked()), this, SLOT(proceedClicked()) ); connect( this, SIGNAL(okClicked()), this, SLOT(addClicked()) ); page = DirOpenPage; QWidget *widget = new QWidget(); QGridLayout *mainGrid = new QGridLayout( widget ); QGridLayout *topGrid = new QGridLayout(); mainGrid->addLayout( topGrid, 0, 0 ); setMainWidget( widget ); lSelector = new QLabel( i18n("1. Select directory"), widget ); QFont font; font.setBold( true ); lSelector->setFont( font ); topGrid->addWidget( lSelector, 0, 0 ); lOptions = new QLabel( i18n("2. Set conversion options"), widget ); topGrid->addWidget( lOptions, 0, 1 ); // draw a horizontal line QFrame *lineFrame = new QFrame( widget ); lineFrame->setFrameShape( QFrame::HLine ); lineFrame->setFrameShadow( QFrame::Sunken ); mainGrid->addWidget( lineFrame, 1, 0 ); if( mode == ReplayGain ) { lSelector->hide(); lOptions->hide(); lineFrame->hide(); } // Dir Opener Widget dirOpenerWidget = new QWidget( widget ); mainGrid->addWidget( dirOpenerWidget, 2, 0 ); QVBoxLayout *box = new QVBoxLayout( dirOpenerWidget ); QHBoxLayout *directoryBox = new QHBoxLayout(); box->addLayout( directoryBox ); QLabel *labelFilter = new QLabel( i18n("Directory:"), dirOpenerWidget ); directoryBox->addWidget( labelFilter ); uDirectory = new KUrlRequester( QDir::homePath(), dirOpenerWidget ); uDirectory->setMode( KFile::Directory | KFile::ExistingOnly | KFile::LocalOnly ); directoryBox->addWidget( uDirectory ); QLabel *labelDirectory = new QLabel( i18n("Only add selected file formats:"), dirOpenerWidget ); box->addWidget( labelDirectory ); QHBoxLayout *fileTypesBox = new QHBoxLayout(); box->addLayout( fileTypesBox ); QStringList codecList; fileTypes = new KListWidget( dirOpenerWidget ); if( mode == Convert ) { codecList = config->pluginLoader()->formatList( PluginLoader::Decode, PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); } else if( mode == ReplayGain ) { codecList = config->pluginLoader()->formatList( PluginLoader::ReplayGain, PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); } for( int i = 0; i < codecList.size(); i++ ) { if( codecList.at(i) == "audio cd" ) continue; QListWidgetItem *newItem = new QListWidgetItem( codecList.at(i), fileTypes ); newItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsUserCheckable ); newItem->setCheckState( Qt::Checked ); } QVBoxLayout *fileTypesFormatsBox = new QVBoxLayout(); fileTypesBox->addLayout( fileTypesFormatsBox ); fileTypesFormatsBox->addWidget( fileTypes ); QLabel *formatHelp = new QLabel( "" + i18n("Are you missing some file formats?") + "", this ); connect( formatHelp, SIGNAL(linkActivated(const QString&)), this, SLOT(showHelp()) ); fileTypesFormatsBox->addWidget( formatHelp ); QVBoxLayout *fileTypesButtonsBox = new QVBoxLayout(); fileTypesBox->addLayout( fileTypesButtonsBox ); fileTypesButtonsBox->addStretch(); pSelectAll = new KPushButton( KIcon("edit-select-all"), i18n("Select all"), dirOpenerWidget ); fileTypesButtonsBox->addWidget( pSelectAll ); connect( pSelectAll, SIGNAL(clicked()), this, SLOT(selectAllClicked()) ); pSelectNone = new KPushButton( KIcon("application-x-zerosize"), i18n("Select none"), dirOpenerWidget ); fileTypesButtonsBox->addWidget( pSelectNone ); connect( pSelectNone, SIGNAL(clicked()), this, SLOT(selectNoneClicked()) ); cRecursive = new QCheckBox( i18n("Recursive"), dirOpenerWidget ); cRecursive->setChecked( true ); cRecursive->setToolTip( i18n("If checked, files from subdirectories will be added, too.") ); fileTypesButtonsBox->addWidget( cRecursive ); fileTypesButtonsBox->addStretch(); // Conversion Options Widget options = new Options( config, i18n("Select your desired output options and click on \"Ok\"."), widget ); mainGrid->addWidget( options, 2, 0 ); adjustSize(); options->hide(); const KUrl url = KFileDialog::getExistingDirectoryUrl( uDirectory->url(), this ); if( !url.isEmpty() ) uDirectory->setUrl( url ); else dialogAborted = true; // Prevent the dialog from beeing too wide because of the directory history if( parent && width() > parent->width() ) setInitialSize( QSize(parent->width()-10,sizeHint().height()) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "DirOpener" ); restoreDialogSize( group ); } DirOpener::~DirOpener() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "DirOpener" ); saveDialogSize( group ); } void DirOpener::proceedClicked() { if( page == DirOpenPage ) { dirOpenerWidget->hide(); options->show(); page = ConversionOptionsPage; QFont font; font.setBold( false ); lSelector->setFont( font ); font.setBold( true ); lOptions->setFont( font ); setButtons( KDialog::Ok | KDialog::Cancel ); } } void DirOpener::addClicked() { QStringList selectedCodecs; for( int i = 0; i < fileTypes->count(); i++ ) { if( fileTypes->item(i)->checkState() == Qt::Checked ) selectedCodecs += fileTypes->item(i)->text(); } if( mode == Convert ) { ConversionOptions *conversionOptions = options->currentConversionOptions(); if( conversionOptions ) { hide(); options->accepted(); emit open( uDirectory->url(), cRecursive->checkState() == Qt::Checked, selectedCodecs, conversionOptions ); accept(); } else { KMessageBox::error( this, i18n("No conversion options selected.") ); } } else if( mode == ReplayGain ) { hide(); emit open( uDirectory->url(), cRecursive->checkState() == Qt::Checked, selectedCodecs ); accept(); } } void DirOpener::selectAllClicked() { for( int i = 0; i < fileTypes->count(); i++ ) { fileTypes->item(i)->setCheckState( Qt::Checked ); } } void DirOpener::selectNoneClicked() { for( int i = 0; i < fileTypes->count(); i++ ) { fileTypes->item(i)->setCheckState( Qt::Unchecked ); } } void DirOpener::showHelp() { QList problemList; QMap problems = ( mode == Convert ) ? config->pluginLoader()->decodeProblems() : config->pluginLoader()->replaygainProblems(); for( int i=0; iexec(); } ./soundkonverter-2.0.5/PaxHeaders.25599/icons0000644000175000001440000000006211310436555017046 xustar000000000000000020 atime=1357667220 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/icons/0000755000175000001440000000000011310436555016534 5ustar00danielusers00000000000000./soundkonverter-2.0.5/icons/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211132453425021660 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/icons/CMakeLists.txt0000644000175000001440000000005011132453425021264 0ustar00danielusers00000000000000kde4_install_icons(${ICON_INSTALL_DIR}) ./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi16-app-soundkonverter-replaygain.png0000644000175000001440000000006210762501270026372 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/icons/hi16-app-soundkonverter-replaygain.png0000755000175000001440000000153010762501270026005 0ustar00danielusers00000000000000PNG  IHDRabKGD pHYs  tIME . IDAT8ˍ[HSq9-yu r)f e&])"Azͧ0'.Lh\eZk۹^L!/yb|"ΓI"7u+f4j{d,Ο,9eڼr)6FtXkmK!Prmlx_^Z=rl߁![W!לR^).-?f#NGuLtn~dze3x7kSo{QcvNi5&9b#_seIKr>_W{tҘZrogWG :=v%:Ut3ᐅWx&{Y@#0ܑm [H D)U˩-_c@~nM><2Q"M c~#$D׏Iʈ'y=WrÛ/w> uxig9`ӥ\zZ%K%CCIiԎ*|T(nDy.5k|Yw Uu&R;<;џ}* X$3ӑS<"6K-$5@ɐVRHʕɤL.xN# PȔ (fq=8";bk_x U uKuS }ͣ]Bh6RMJ/!hT/ҪZ.\ 0^vfIENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi48-app-soundkonverter.png0000644000175000001440000000006210762501270024246 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/icons/hi48-app-soundkonverter.png0000755000175000001440000000761110762501270023667 0ustar00danielusers00000000000000PNG  IHDR00WbKGD pHYs  )IDAThZitGzZe"˖W++` $,!}c佬3Cf@$8/;IH2,Im0`1زdɖmɲvYjuA`y;3;窻U[piS \k0LdɊu=8㷨#y|hq㳇_" FD ``~s`f% (3>OWb(o^MkW,f"ܺP"^]`lG_黯(휩Qx_-hfK7?\'1}䯤 CB,|N(;]/ gU=tי`CA,I_z6J35p |ZqI՜;fnƊ]J|H-[CLwd0ʊkw " Ĉ4( gr:tź?*%gvȈZG.m#SUHgdN͛3Kl YqaWw?qL~}e_q×w8@Rdຼ$5bKG0716>.j7XQZB@7Ch*=3Ǻ& "{]LIvs^KO?5f23FZhn@ӡ:bFPsg-[:#!=D }(1ibkp|(CIRPNFX"O9F.R Ϋ"UQXӅP "8^?}IYz'of8/rgK QuKtqRH >H,S)i<8=YN)#"$I(EРI$A0$73˿m{ a]ȡY)ZjEY~lHm,z*#>k\?y1VJUd4q^_1%}{ʉmgT>T &+L@1I}d@ڀ^alĻ!&E@Xq0z%yFBu;|nHQprZ89o8fy 6-U`xx W(2("vQ{_qS xy}ʜ9.FPRκhhlbQ6|AHk:^ƤH )~i)\K4(]cyLnv*EPT&Tr4I87}ӧ'| Bi&uP]{{pZ#PҟR$hM I!l^ /(UWe6eBc'Bd8z[Nțww!vc[ =k"˩j9wȡPb ?'IH2He0E qyuC#hv:&ܻښa'!Kon`x}yQχէ 8Ms'G **5"J#eH"<ϣz; I?;Q;11hYBvC!h{ϳCNҲk?3Tgg5^Ч&d1' aw $@hRf&aTd#d "c8x jNnX>i6՟=*\ Cv՘拞v z^?CvsM*oIz{qzp=19@ tf8#Z?)6$,c C@(cČBL6?"geWc ZG`t"2^f0Yc}I`hY;׿sfUٕ%s]mXCc,vkAU7#(@zq=6Kw#@(YwWJbf`(XP]Ъk_[{.I}7B%kSbųr~c,yΗ ;BTjQ"r9tr` (\F-Aa8y4+%!wڼ+'Bv~B5d[j./X57VI>9;,۵;ќ L~9!isk9 ㉑`Pns8LQ'L>\"`U3OƮO˳N#0gGCz4qB_=xxmAFpeC]g$6A8>c|6 &! ǁ \XKGbp+N^T.oɒlC 6/vlx $gZU^׃p~6QBjJ VJ2ޞSE%l@Oo%Ťe*НbҀwt/g%Ƴ_@, 0! G_lR`qt/,˜ڂ)fAߨ l]!\Yf:I!/:D0*  }mM F˺P\L5yΦ8=(S=Gs\ˋ[V-Ƅ\II@J h@\yt: !HJqok K[tǺyoЃDM TG-l|C~s?/, <vdeSTq.3H9H J a={F :Ş)<լQXN$RKEgoelFE olVz!xx 0iby%d{}p40vq1C N@IPaqԠo`%.STQ6$M^1p*xU+sc!wKBIJ;GH |RdC ,M]nyusrWgi92Nf ;6eh&'ẩ嘘WNhXÕ;lXf܀3-dϠ{~^q9X>Դ֒S3v%敔6ot(6!N5kڥ B$sC޲X;M3P>nf|A<}}ќ˗#6 l5ʊ&ejhLJyhv:a 7<CSGL?alv: )" 9vݡ x,rܭ::qPdZ:mPx݆ς{Uj&^R{sPrҵLL+đӣ!|v%Ѻ WIc8=}d:j!A*_K_6H?QKc3RA-yLZHV,I<įwb[Ya>ѩESY9˕_Q['$IENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi64-app-soundkonverter.png0000644000175000001440000000006210762501270024244 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/icons/hi64-app-soundkonverter.png0000755000175000001440000001400110762501270023654 0ustar00danielusers00000000000000PNG  IHDR@@iqbKGD pHYs  IDATxy|TUgSJ*$y s! FAo@kkۭ>ڷkk+`rնFۊ< d*S%SU3Gϩx㕷>Tsj{^'>;Mt99O[ɡ+ {.w1z͇O=6?EO õG>hnI_6n 24-횓?^1Ƭ-ú2'TEt%unZ-> Ӗ6=F`~h G5aL]l$ҦggIi^T&Y^z 1g\l125Χ^ݴ޲n_x\m?W30a ]9RT\5m쥭t۹>s߅cj|pX e5Tyj!9N3 %(9Bns~%`OJ2R?"wOGtUUi1@@ƬDyߒ׎ټ}cmlmޣ@$ԦlA;@vF&aT-1!  7ż_fЁљk~iߞitL&mE'{40+PhatĵG!d Lib̎@#ç| Zom Nv,fɤl3HlpAolA|el ۤ0'l@F\НGX/,Y$PGI?zFM#Y=TUYIX6;^^d 0sfFZ:<2b;5pwn-UxU49so(c3gg^\7˲lP]߱?墓vO-߻ Q!A_"*ʑɀ {:7H˚8==%d]1a{VP@ݯVKwz9G]:.c1_zLr"@tbPL 5nvy9/k4#J^hD^Xme1;l [z;~xJ|:P6ѮS8g-+]@[4k("Hp*HT=E`{/ǒEe&j(% Ha@MDdd089aw\;׵TVL8hX=T4fP hCh54< PMaQhLdٽqrY<>9N,V;~"%g= w724QXk+aҳqYw%2YJP"0{U :b9+8EѠ?)MhYTZ/Hhe==K_ߊYgfj晶?Ts=eF?}|-nVE:h%HSK+1Q@ ]-7b.`hP`zzĂ-X b#%*,F"Mڹ 3Ĥ]] ,T.1L9) )~ CCO5)GS1PZD9e~wOިn; %3S:ÎOAfe"`3e:W. QOhvJ*f(i [qEsϜAo 5BR腋Y(_Թ`W8zfv ir @d@ 0AR#JЄ]ЎwO:Ϩބ`B.vƟ_iߩJ˪ĪM>s.!*~T~q9Y##4%,|5fzDZYE,R*:̡Qt#aC`h$ xGB,JPTzCg ]@ۥP;< F hP3EYFhZ#yӓf)u_h, P2K0ߜt7w9w]B" ̀c h ̀i$Ae(DFH4*_W`f6JXթRod]c hrC-MXI>W^>68c{0TlE] 18 i* jqPq)Ęq  q; ~nԩ1. *-DB*Xeߝ>ֹ{`௲,`}=W:NшGjϺ=u} omtE,~F8XS[F2lHJ-3Y)HJMhBc*{;._ ӿX?02H$S;֔DE1#D(j-(ESue&ި֠FP}Ǜ%q˳DegABL @3>o~TQnzŅΠc(#vg#h Ł""85IA E17cNͽ8)\V2}<N{pr = SbMgG\zaAS4B2A2O;9301?J4hm%? g>痹a;DJ $P !|$ t~SQZaOPG0 t#Zq\Q9x XՋO;&T9@6ӫ]ov(*|4x]boJ1'8o3@E9ʟm au>o܊&h[Hf=pc v%jS̎Yה|n\K8岉Nb2DxXhnר}0 ko:?3caK->U$&r bx>\G/p39~a3Q1s*FFO 4E#uzW\,J))5|qI#?y @RXFՉ[{=;rrtܜT9@A FERQ<@-jD9F{e`(dp|~/.Td" j{i.-Od8g/ FҖn Y@Q :CK hZ&u/@* #C b1.ǯ3V󿨰Xv9.75fTozf97B1 ãgOyQKXӱNܸbN Ĩ< *1X  ($ԲXڞۨ U? L&Q,a֭ZQd^/\@ fuZмP y*dog{Qd9i¨0 O ªK }+rrj`peeE $8yF$bptEh'\ŐfĀL*Ka 5b x-R(0E5S(#tܴzBI璒:2 C>{$ ᵃ&6Ȳ7̹:9+<1(2SqMƜٗ<6 y9?d}r)_st: #cRV+`f3`2MlT\ܤjŻ.MEijmf]v!ٚ#gZ}4kz ZF1* %%0&o97}R{oЇ2YИ}mS#5>a9?_D6^&)J"zpɚL&VL~V(S(?5*"SNx>a+/f3qZ <mzʊ(=Z4+\;7xgjY,`=:쇽QeyAGe1]+o1<5NejF@wãиR.Ѿ)zf]B՜9NL(DQhoi+vOGk`([֣4oT Bڐ迱6 +FL) Y9hj?˴."S^De'4:pɬ7?40AI1V+oYƜZ}{]'NI2MIEEu:@8<؁|a˕ȴe#0 E%^TTS6H7q<4Ȑ:̛] 穀RZI{3Wϊ0B宐GeKeE]&;I\o7߰|Ζey4Aѫ̤nCW-+2rN6Tm*6JU7'k3<%&u|2WͶ.W1t[*3(umIENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi16-app-soundkonverter.png0000644000175000001440000000006210762501270024241 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.231422398 ./soundkonverter-2.0.5/icons/hi16-app-soundkonverter.png0000755000175000001440000000141710762501270023660 0ustar00danielusers00000000000000PNG  IHDRabKGD pHYs  IDAT8˕IL_ۙ:-`bi@)[ $,I5`( 1b1'^<@ w!!-j X-NE |}yMecکpB8,YHKXb4d];G⾺JY&*4ѝů̱Dc*(H-)lqK#r3YTd#r>aqmZ.wO][dV( ۞e7 g_y}0)[0d;̱:Th0^&6+kTƨY7*{k7G4Q΀7趋yRPQM|x.rX,ez[hrgyr/.Uzʼn-ME^dDTA32t^vDVo}x`>4q`30Y .g`ZΨu&OPڶܘz_@YD D(B4ECa̫i{0QB5vDCBe8sT>!$wJYd\ DTqQ![2X$El,!AOkTUgNgw+,o[`dlcb#HM&yiYP݁CRC-W tymANr/G G,ZپP!gk%Ϡ8Ma:8ܚ]^+K\S}/MʂqSS4X3_߾B~5dg'V4^TY ΂l6GGvV,o/54''䨲?5 z,Cm~k,uLK)5kO}y-ߦH*uVWT`_>?U"#3o\id5v,fdIa99{s?>_>q!GxU :7EtxchX&]ʎ׮Z}ocrOȮ+q"A YOmG|& )0 6&+99|#`7g4I|ȱ_6zύ[\VfjFI8wlfa>V~\5]vNVdqQ̌HM4US9F^OU=׻=*"~37${z7:'&%ET<Ѷ[$!Zi_/I)0-_vDK{yƒLzUvZ%!BLAg*3yj- oĊ'Dfe_ 47]]Hk3"gK@ǤF4,utg(+꽁9j\)[,^6n fPSҧM%:;yI^/^Q_mk\L 0 ЪļYJIYLwKy,nr[6s^)hCn\SAy /nV߸l}c5e9eI\# BcT(si<ղOY 4U댤DpG[;V wu4}ℴ8"!Z{H @B>/GY]'ymi6APVQ:BJ8jY3S&̹)5ϺW_ca @8ir~(sbܟțM3Q7}ȨV~dg8ƨOC")oaR4UXBR@ N2K՞>d̙'dʻcsfVpo.iͧ n-_ ]0 QըhRV4рA;IAG[op'vU|.YP%au۲ $D9%MA7X=cAO܆7xA!'F&Ĥm/8dn7fpm6>bZ.u|ψK컟vhҗТ07K3 ~71kSt_c^}S֩/^V=hI2ZDt&&v%PVĦdSMZ~xuRS=y Z>;12$ AX . @"^ͷt+FQR5F~gJt}@*".3E:R46e%F&i3/gw&Ƨ펎]ڏEIr@ ayB u(Pn%HT "e@Rs|.!cZy !.4cKrrZKS4$I@P H!:}oZRCF%4[T0*\BD0zO,̝x&60#``Pǂ^\sH3?xfZC\@KGDXƩӿ~f6. 0 bX-C|/\e fAR`  FP MrS3p`}E28_@#"}dl fu[50.ALj;ؙ[se;Zw\e=R.o@(P'3 h鳀i>( @2R~wшyth*~RHK/ ʬϲ(kBO]Jr9Nƫw* m̵0H@ @pr,x2r,xAc"4Ah }  79$:(I zР^#xw>l5I!$#0&kPx|<`Ai/eft7w/C;4~Lqd/suB4P(UDƏ꒦KL>r^pPR%rrV3!ir@"Ȕj}b2* w 2ABKPLMKRtP$<+PI u .{ذ<TIENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi32-app-soundkonverter-replaygain.png0000644000175000001440000000006210762501267026376 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/icons/hi32-app-soundkonverter-replaygain.png0000755000175000001440000000375010762501267026017 0ustar00danielusers00000000000000PNG  IHDR szzbKGD pHYs  tIME 6<uIDATXýiPTWׯf;i%jbјTgR)qIfTeKdRXf,'ƌq  dmMޛNĸ{?%qi%)99z{zRQ~]R'G_t/1E Z7}k;@\:"XN5naaǗ&}b}moB+fMSV}J?6ݪ ? `viTeWOd$W[?orY0ƣgSW,C&Qs߅AbU7yۮd#5J#&fNP/OrgN_`d'Kے+))SY:i~7oy@WxcGq2>=Z2749Ǎ/NYhaZ" 9ۿSìy0Lߟ{lp;bgh-*bǐ܀vUz{ri/qULP=x#z؋#>[a{@00ZDh>=g-`2}m7P -(UdXҦo .~u +IF{d6 !;00H]#ߛst@~jX: 8F$߰jpFz6TxV{EaۧqD6'n*8{'XNtyAj-=ÍqNzmzrx&Ų1+cάi'}==u|Vet9DHKawZů|Kw'|5gj`1[@tZksG=. .va@8[pc)$U&”S/ir! !.pCT~  "ao")1@@= q DH"jHTqa]6/hRZ@$8> kʘj[w3_Kh ~H7Ő|Y1inFݸ[\!Hq~zsL"TXÜW}T))콱7`$B ș q\ MF( ͸X;>8-PYg!imA 7AQxv?x"&+pfʲ"֕5 I&!X: H~*X3e*v-tm$fO&f qw{ALL0'N+gIsP{A{`C嘣Q)"-APd"EZADq%mNrbr-eE^PC `S%ѐIENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi22-app-soundkonverter.png0000644000175000001440000000006210762501270024236 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/icons/hi22-app-soundkonverter.png0000755000175000001440000000226110762501270023653 0ustar00danielusers00000000000000PNG  IHDRĴl;bKGD pHYs  QIDAT8˭mLWRadL@V39.1T$d s[22'Ȳ%3c#sƗEpЖEEJKi{T pns=nWybr閪zWTRňɷj흺ej7;2k˓O*9X([mmXL^4T0z1{)uuRu̲kp 8I;֓QZ<82ŻD!צ]rgS0{/Sr&1E e0)cS2ўN4/6r28l<ӿ[pwR|MJv\e [yKGa_]:g6ϰhG"/BB2 `+ ~6%E7K+<͉Ou+s`} h5HZO@oeSTR/>7iQyr舶Qb޽YWN\j9㇚O[[aU[f&$ދVWmiNrWuo: .N3(A#G72LT ]'$B&sxc~7#ܐuwP/NyUɂ%?d9t9GT"1+ ۴E`"wo@ Hd}i*BWXC:NͻI,JV%^'Ɋ ַq ߜ^6-PxXMEKhQ\TG՜˫VIENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi22-app-soundkonverter-replaygain.png0000644000175000001440000000006210762501267026375 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/icons/hi22-app-soundkonverter-replaygain.png0000755000175000001440000000244210762501267026013 0ustar00danielusers00000000000000PNG  IHDRĴl;bKGD pHYs  tIME (PIDAT8˝kLSgV8r\J- K9-8EA [2-nLfmf6fft[昢V"b ^9==g6E'yȾBϚA͔,^SھB\qwKI򫖷8[{-IJ4T~UvwX(j}=NEJ)־+oՉ9u**a@w)ut @V#v˂ ;;?Hiu.#1Qi ֫nʐ_z>[O̘Ojz:J֘ ʸ2r`ؾŽ w.ΝA2@OKz^nwv7=򤫛 | &. )T'7}yl״#!0ySZaY|1V9 |,A/;j/1]İ"Q5y#jo9DpR!GRUEr>bSw2dȇiM:m>0 _ hq2ry ˑo( 弁:}09E(GKLjSxX"~I 2@" |^eiwFeA6wB 6Pŋ }2p3@c:DƷo7, aDb vIr[.H/wU'0n>#?rhEh,bJ"ϥz"+Rʍ(u.qc?YG0/![mm'E%p4c>GWTĸ 3^YڎO;,(T? *Hl,xQj'l{>-ߥϥi~Q0`HX9TsnFϳ vVlIENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi64-app-soundkonverter-replaygain.png0000644000175000001440000000006210762501267026403 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/icons/hi64-app-soundkonverter-replaygain.png0000755000175000001440000001320010762501267026013 0ustar00danielusers00000000000000PNG  IHDR@@iqbKGD pHYs  tIME 5c IDATxyTյ眪:UU]=TDݍ݀2 '(!'ћxMrI\i ( (C]5uϾ|M&мΧ{Y{U{B#?tѤwdEvt_"wCplbޣ[[,s&=}\7Ed6y\|&Wv_^O~{оJ$bQ>tɔcVYzʎ 8H{BYtw':jg%a7cqDML#X/!,R'ݱc}XfU'=Ժ(U "0b-,9Cp l?OX͵Ww7?`*H|OG][rdȐ ju5,piGBYAGrY0}o`K`æ){t,T1O&,@ "DdV5kgrk| ~_%̚۾ܳ?u~D$R7`52/cH p`fZldߧhDǐc'?/z<5?54:264VbW>LfL@oAGP (19[ a^Irk{um>rh&j#p<N{ЯBc4RZTˡEध)K-7x/l#KӑiKCo |>:P7qh- L2dԚHcxHʳ ^xK2KM!l Z ݓGX8Q2A) i1O@oѡL_kS[ćG#;ƚy1P0Zçĕ XcݱU>;|ç@gaDmeV-e0w#5,J \z@[:td'% omO{;$Y5?LᏳg_=z:)%|קp1nqJ۷qx;sLN9GQ?\`ړM^2m4h3Җ|=Ɠ/Fw?^g5m3OwZxoS8p8rl-R!{[B*-vt\^ Wn|`̾/8 AkkrT<۽7~ڛw_47lu,Yp=2XAW{þ7vgӧ>ا^RKM*m%Vrrz^er.J~ۗ<~ɪsu9 b\ PK݁9 xBlſwx^^H~KeMdݺ$}GvwO?M1dcPB:m/g_[~յ ~Yadh}lb#`l1h'Pg '[U5=hj];[l`㳥=eNvµV}@w? (rt#[l94=@dMcrt7(mibWދx~1 [}| ihB[C5Jkj)`bI[_k>Ɓ'~H*O}2|J!6CNOh0tܲVgb*N+f!!M)hooGEUa6+u6vaL[-7{wONd0 _ղ7^'h{bǮıc䘗ȧX4Y9>5T`=pwF]<>s񍣻WxiQM1HQ1{&dEEavg {t6\E;|q]_y7-P9ԩlsI/G` xS=x2e G =~q '\EORfM+*@tmZ@,#N`VE9oR)INO|چYo*yxa˼~ ylӺ}Zg-( ouz5#53jIK LJ.~Vu}]wh|9;wfga`5(̱p)Ri^o[csA]S{uE(D8cY>[7\V Eb\.@"|Xچf؅=b.tP2lN#_KOtUtY.vay MvkIIY=;g<%OGF;s-U  r\85M^4 {*pڤ (n a|$'džL.3QU%EPs1=>`Vc=Su=w`6 ӍD$g9 oJ^ɤHdG01gF?+hҐc QxAXf5^0s3WDߚ=*5(Bk q+ћr45tJQ_[ώo5ej :ŸIce=ԴlZ v$BS#bGBMyv&x-e4wc_"z"qS] wDZPh~Ϟmjyқ.Ml^Tp͜eH؇)`į=tp$;aiYHZIϸ}÷ S bJHԻ_vu.k^2qX:}X8Ϟ;މ 76]uM˖[ *nYs-w~Fg:EUV]E2:dB &}J˺ s],(ä#ե[ {>*Dð^s-k_[[5x~β>|^UQA(')QaVc,MCQt硤h $In7~c;?l1sojF7KkDnc&d#d`S;  9N uP7@yJ LY(m3< w'ͨ.\cN1jF$& D "hEQbpφn=عz'9j,h9ˬ4 "#$E)XA*rfáU`F Q _o Lf" uN#{Y5lD2(A"+ tc? 肉=LdZeatFA"IDL!R! P}B:'X@錴-k{`k\2G]ˬ$}( EW~^y:}@΢󱘁1C(P Pg$CH#~iQAW %PyP9};* (Ps-$ FfZ5'Tkh 8vf :J{f!B I5 ^Q!B XFAu b2]f\p5a4_Jp[u1=MQN!EUlYN)Rk Y&*qDHADP TC+1%"x Ӂ6!}4$e"_ !L4^VI컮?r|LV@@Vų$GQ['K*~ܶS>=RJLh  ^xZʧ,@@?ͯ(d?8:*(ʂQVʂP)Pՠz\(HȳhDV0NC)*!+"T")9y9Uo7y9xG Dυ(<сڝ +e 0n̈́b'bACQT0lQ߼TzA5UUrZl̙Du}wwNsE-QUOFSPɂ:D[s%.^֚R ,xQF T 1#f"(mx颬^O[{xOܒz}DÉFFUQLs_WjslsǐەHϔlY;{9_f#D_I^D,#HA%Ȋ`H( %0QXk06?Lޱ>&,;ۻtL48u\ xl3;1I|q1`?$ɐeJ24:= `PN[.x~N}74C_ .>3Xe$CEH G2h@YrzG+EdiuQ'OZR $Ҵ$03*xSr!)*ܙ|AUUܱANF:g;B =p1" 3H§ I$IHqR!gTED-kbLY4\t;%PI&|џ(bXZ=  "$jlD$Osm#YLj8Y~La1 HL 1(` $eZ-':?M{a!y|zU78>ؿ~4gԩ2osU2d٠O=$$R&ʦ_a^ЪQ34͔zCi>}pW3NH)Nώg62?b˴=eᡊJ/$\I1:€3FS:PXa~Iyw- hl gbYM A{FJ(Fd+2GeEy"[&7roq.pL1zȊJ,&lduʫ^/Y 6IENDB`./soundkonverter-2.0.5/icons/PaxHeaders.25599/hi32-app-soundkonverter.png0000644000175000001440000000006210762501270024237 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/icons/hi32-app-soundkonverter.png0000755000175000001440000000406610762501270023661 0ustar00danielusers00000000000000PNG  IHDR szzbKGD pHYs  IDATXŖ{PSWǿuCH$A4/pU\[UV֝]NvutgYg:j֢[t"CAHBBHrX/NK3߹w9s~=鮝))w>w,Hfe# 44=.ȑ(-"UO~RոdLN l{M)ʤq(4dixk];{(?q ڔ4 s;o` J{Sgr j@w E)?= dkmi4i; D\D壾o `/~fQ]6@9z^&cZDR}ȧxf^ ?(ba}*Ƹ "&GL^"wDJT[$%̭>Kib4::ñ{4/tr@]rWH1& RčZ#nn{H" A"yg\`9&buWÎv/HojEֺn$T<¯|{Qsj2aIf?_tKky\yt`|I>@p^5vo[=[dӭT nYܤ: Y8!aBFFC—ÿ R 8b3)93#M=suUƏ7Nɿt(=վxE2 HU<"H$A {`A JqS&O<-Y8|xɊt`U[>ךۚ:;&iA)8DѪT) #Qu (ԘEKU],gR;瘭V(B8t`zlAq292H5A!.\8/]o u: aD;-^c C{px&Ǧ_VeBKM W6AAi "~p99۝w_Ù2F āARW/;.Fe|“DeVvl8& g3`xeEU3 mQjs^3IdezA%MO2 c~Oi].tGGciтtbf#VTvǻőR!O4$qq7*?gʻ R<|\0$4HY} Li&2^ eTBV!.oK6._ql,0O|n+<ju:'}ҲQk\e O gS$ x0$F'&*utz= L'Mµ*|/ij7=s=%j56ޠ̘ I>D3 j^qx ; |d{O^tD(\O */ #ifndef _SOUNDKONVERTERVIEW_H_ #define _SOUNDKONVERTERVIEW_H_ #include #include class KPushButton; class QMenu; class KAction; class KActionMenu; class QToolButton; class ProgressIndicator; class ComboButton; class Config; class Logger; class CDManager; class FileList; class OptionsLayer; // class QPainter; // class KUrl; /** * This is the main view class for soundKonverter. Most of the non-menu, * non-toolbar, and non-statusbar (e.g., non frame) GUI code should go * here. * * @short Main view * @author Daniel Faust * @version 1.0 */ class soundKonverterView : public QWidget { Q_OBJECT public: /** Default constructor */ soundKonverterView( Logger *_logger, Config *_config, CDManager *_cdManager, QWidget *parent ); /** Destructor */ ~soundKonverterView(); void addConvertFiles( const KUrl::List& urls, QString _profile, QString _format, const QString& directory, const QString& notifyCommand = "" ); void loadAutosaveFileList(); KAction *start() { return startAction; } KActionMenu *stopMenu() { return stopActionMenu; } void startConversion(); void killConversion(); signals: /** Use this signal to change the content of the statusbar */ // void signalChangeStatusbar(const QString& text); /** Use this signal to change the content of the caption */ // void signalChangeCaption( const QString& text ); public slots: bool showCdDialog( const QString& device = "", QString _profile = "", QString _format = "", const QString& directory = "", const QString& notifyCommand = "" ); void loadFileList( bool user = true ); void saveFileList( bool user = true ); void updateFileList(); private slots: void addClicked( int index ); void showFileDialog(); void showDirDialog(); void showUrlDialog(); void showPlaylistDialog(); // connected to fileList /** The count of items in the file list has changed to @p count */ void fileCountChanged( int count ); /** The conversion has started */ void conversionStarted(); /** The conversion has stopped */ void conversionStopped( bool failed ); /** Conversion will continue/stop after current files have been converted */ void queueModeChanged( bool enabled ); private: Config *config; Logger *logger; CDManager *cdManager; FileList *fileList; OptionsLayer *optionsLayer; /** The combobutton for adding files */ ComboButton *cAdd; /** The button to start the conversion */ KPushButton *pStart; /** Tha start action */ KAction *startAction; /** The button to stop the conversion */ KPushButton *pStop; /** The menu for the stop button */ KActionMenu *stopActionMenu; KAction *killAction; KAction *stopAction; KAction *continueAction; /** Displays the current progress */ ProgressIndicator *progressIndicator; void cleanupParameters( QString *profile, QString *format ); signals: void progressChanged( const QString& progress ); void signalConversionStarted(); void signalConversionStopped( bool failed ); void showLog( const int logId ); }; #endif // _soundKonverterVIEW_H_ ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter_ripperplugin.desktop0000644000175000001440000000006211271066361025273 xustar000000000000000020 atime=1357667505 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/soundkonverter_ripperplugin.desktop0000644000175000001440000000021611271066361024703 0ustar00danielusers00000000000000[Desktop Entry] Type=ServiceType X-KDE-ServiceType=soundKonverter/RipperPlugin X-KDE-Derived=KPluginInfo Comment=soundKonverter ripper plugin ./soundkonverter-2.0.5/PaxHeaders.25599/combobutton.cpp0000644000175000001440000000006212005233434021040 xustar000000000000000020 atime=1357667505 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/combobutton.cpp0000755000175000001440000000525512005233434020463 0ustar00danielusers00000000000000 #include "combobutton.h" #include #include #include #include #include #include ComboButton::ComboButton( QWidget *parent ) : QWidget( parent ) { m_increaseHeight = 0; QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); m_box = new KComboBox( this ); grid->addWidget( m_box, 0, 0 ); connect( m_box, SIGNAL(activated(int)), this, SLOT(boxActivated(int)) ); setFocusProxy( m_box ); m_button = new KPushButton( QString(), this ); grid->addWidget( m_button, 0, 0 ); connect( m_button, SIGNAL(clicked()), this, SLOT(buttonClicked()) ); m_iconHight = m_button->iconSize().height(); // m_sizeMode = Max; balanceSize(); } ComboButton::~ComboButton() {} void ComboButton::balanceSize() { const int width = m_button->sizeHint().width(); const int height = ( m_box->sizeHint().height() > m_button->sizeHint().height() ) ? m_box->sizeHint().height() : m_button->sizeHint().height(); m_box->setFixedSize( width+19, height+m_increaseHeight ); m_box->view()->setMinimumWidth( m_box->view()->sizeHintForColumn(0) ); m_button->setFixedSize( width, height+m_increaseHeight ); m_button->setIconSize( QSize(m_iconHight+m_increaseHeight,m_iconHight+m_increaseHeight) ); } void ComboButton::repaintButton() { m_button->setText( m_box->currentText() ); m_button->setIcon( KIcon(m_box->itemIcon(m_box->currentIndex())) ); balanceSize(); } void ComboButton::insertItem( const QString &text, int index ) { if( index == -1 ) index = m_box->count(); m_box->insertItem( index, text ); if( text.count() > m_box->minimumContentsLength() ) m_box->setMinimumContentsLength( text.count() ); repaintButton(); } void ComboButton::insertItem( const KIcon &icon, const QString &text, int index ) { if( index == -1 ) index = m_box->count(); m_box->insertItem( index, icon, text ); if( text.count() > m_box->minimumContentsLength() ) m_box->setMinimumContentsLength( text.count() ); repaintButton(); } void ComboButton::increaseHeight( int height ) { m_increaseHeight = height; balanceSize(); } void ComboButton::boxActivated( int index ) { repaintButton(); emit clicked( index ); } void ComboButton::buttonClicked() { emit clicked( m_box->currentIndex() ); } // void ComboButton::setSizeMode( int mode ) // { // m_sizeMode = mode; // balanceSize(); // } // int ComboButton::sizeMode() // { // return m_sizeMode; // } void ComboButton::setFont( const QFont& font ) { m_button->setFont( font ); m_box->setFont( font ); } QFont ComboButton::font() { return m_button->font(); } ./soundkonverter-2.0.5/PaxHeaders.25599/convertitem.cpp0000644000175000001440000000006212105142352021043 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/convertitem.cpp0000644000175000001440000000543012105142352020456 0ustar00danielusers00000000000000 #include "convertitem.h" #include "filelistitem.h" #include #include ConvertItem::ConvertItem( FileListItem *item ) : fileListItem( item ) { getTime = replaygainTime = 0.0f; backendPlugin = 0; backendID = -1; take = 0; lastTake = 0; conversionPipesStep = -1; killed = false; internalReplayGainUsed = false; } ConvertItem::~ConvertItem() {} KUrl ConvertItem::generateTempUrl( const QString& trunk, const QString& extension, bool useSharedMemory ) { QString tempUrl; int i=0; do { if( useSharedMemory ) { tempUrl = "/dev/shm/" + QString("soundkonverter_temp_%1_%2_%3.%4").arg(trunk).arg(logID).arg(i).arg(extension); } else { tempUrl = KStandardDirs::locateLocal( "tmp", QString("soundkonverter_temp_%1_%2_%3.%4").arg(trunk).arg(logID).arg(i).arg(extension) ); } i++; } while( tempConvertUrls.contains(KUrl(tempUrl)) || QFile::exists(tempUrl) ); return KUrl(tempUrl); } void ConvertItem::updateTimes() { float totalTime = 0.0f; getTime = ( mode & ConvertItem::get ) ? 0.8f : 0.0f; // TODO file size? connection speed? totalTime += getTime; if( conversionPipes.count() > take ) { foreach( const ConversionPipeTrunk trunk, conversionPipes.at(take).trunks ) { float time = 0.0f; if( trunk.codecFrom == "audio cd" ) time += 1.0f; else if( trunk.codecFrom != "wav" ) time += 0.4f; if( trunk.codecTo != "wav" ) time += 1.0f; if( trunk.codecFrom == "wav" && trunk.codecTo == "wav" ) time += 0.4f; totalTime += time; convertTimes.append( time ); } } replaygainTime = ( mode & ConvertItem::replaygain ) ? 0.2f : 0.0f; totalTime += replaygainTime; const float length = fileListItem ? fileListItem->length : 200.0f; getTime *= length/totalTime; for( int i=0; i #include #include #include #include #include #include AboutPlugins::AboutPlugins( Config *_config, QWidget* parent, Qt::WFlags f ) : KDialog( parent, f ), config( _config ), currentPlugin( 0 ) { setCaption( i18n("About plugins") ); setWindowIcon( KIcon("preferences-plugin") ); setButtons( KDialog::Close ); setButtonFocus( KDialog::Close ); QWidget *widget = new QWidget( this ); setMainWidget( widget ); QHBoxLayout *box = new QHBoxLayout( widget ); QVBoxLayout *pluginListBox = new QVBoxLayout( widget ); box->addLayout( pluginListBox ); QLabel *installedPlugins = new QLabel( i18n("Installed plugins:"), this ); pluginListBox->addWidget( installedPlugins ); QListWidget *pluginsList = new QListWidget( this ); pluginListBox->addWidget( pluginsList ); connect( pluginsList, SIGNAL(currentTextChanged(const QString&)), this, SLOT(currentPluginChanged(const QString&)) ); QStringList pluginNames; QList codecPlugins = config->pluginLoader()->getAllCodecPlugins(); for( int i=0; iname(); } pluginNames.sort(); pluginsList->addItems( pluginNames ); pluginNames.clear(); QList filterPlugins = config->pluginLoader()->getAllFilterPlugins(); for( int i=0; iname(); } pluginNames.sort(); pluginsList->addItems( pluginNames ); pluginNames.clear(); QList replaygainPlugins = config->pluginLoader()->getAllReplayGainPlugins(); for( int i=0; iname(); } pluginNames.sort(); pluginsList->addItems( pluginNames ); pluginNames.clear(); QList ripperPlugins = config->pluginLoader()->getAllRipperPlugins(); for( int i=0; iname(); } pluginNames.sort(); pluginsList->addItems( pluginNames ); pluginsList->setFixedWidth( 180 ); box->addSpacing( 10 ); QVBoxLayout *pluginInfoBox = new QVBoxLayout( widget ); box->addLayout( pluginInfoBox ); aboutPluginLabel = new QLabel( this ); aboutPluginLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); aboutPluginLabel->setWordWrap( true ); aboutPluginLabel->setTextFormat( Qt::RichText ); pluginInfoBox->addWidget( aboutPluginLabel ); connect( aboutPluginLabel, SIGNAL(linkActivated(const QString&)), this, SLOT(showProblemInfo(const QString&)) ); pluginInfoBox->addStretch(); QHBoxLayout *configurePluginBox = new QHBoxLayout( widget ); pluginInfoBox->addLayout( configurePluginBox ); configurePlugin = new KPushButton( KIcon("configure"), "", widget ); configurePlugin->hide(); configurePluginBox->addWidget( configurePlugin ); configurePluginBox->addStretch(); connect( configurePlugin, SIGNAL(clicked()), this, SLOT(configurePluginClicked()) ); pluginsList->setCurrentRow(0); QListWidgetItem *currentItem = pluginsList->currentItem(); if( currentItem ) { currentPluginChanged( currentItem->text() ); } setInitialSize( QSize(500,300) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "AboutPlugins" ); restoreDialogSize( group ); } AboutPlugins::~AboutPlugins() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "AboutPlugins" ); saveDialogSize( group ); } void AboutPlugins::currentPluginChanged( const QString& pluginName ) { currentPlugin = config->pluginLoader()->backendPluginByName( pluginName ); if( !currentPlugin ) { aboutPluginLabel->setText( "" ); return; } QStringList info; info += i18n("About plugin %1:",pluginName); info += i18n("Plugin type: %1",currentPlugin->type()); QMap binaries = currentPlugin->binaries; QStringList binariesString; if( binaries.count() > 0 ) { binariesString += i18n("Backend binaries:"); } for( int i=0; i" + binaries.values().at(i) + ""); else binariesString += "" + i18n("%1 (not found)",binaries.keys().at(i)) + ""; } info += binariesString.join("
"); problemInfos.clear(); if( currentPlugin->type() == "codec" ) { CodecPlugin *codecPlugin = (CodecPlugin*)currentPlugin; QStringList codecsString; QMap encodeCodecs; QMap decodeCodecs; QList codecTable = codecPlugin->codecTable(); for( int i=0; ipluginLoader()->pluginEncodeProblems( pluginName, codecName ); list += encodeCodecs.values().at(i) ? "" + codecName + "" : "" + codecName + ""; } codecsString += i18n("Encode: %1",list.join(", ")); list.clear(); for( int i=0; ipluginLoader()->pluginDecodeProblems( pluginName, codecName ); list += decodeCodecs.values().at(i) ? "" + codecName + "" : "" + codecName + ""; } codecsString += i18n("Decode: %1",list.join(", ")); info += codecsString.join("
"); } else if( currentPlugin->type() == "filter" ) { CodecPlugin *codecPlugin = (CodecPlugin*)currentPlugin; QStringList codecsString; QMap encodeCodecs; QMap decodeCodecs; QList codecTable = codecPlugin->codecTable(); for( int i=0; ipluginLoader()->pluginEncodeProblems( pluginName, codecName ); list += encodeCodecs.values().at(i) ? "" + codecName + "" : "" + codecName + ""; } codecsString += i18n("Encode: %1",list.join(", ")); list.clear(); for( int i=0; ipluginLoader()->pluginDecodeProblems( pluginName, codecName ); list += decodeCodecs.values().at(i) ? "" + codecName + "" : "" + codecName + ""; } codecsString += i18n("Decode: %1",list.join(", ")); info += codecsString.join("
"); } else if( currentPlugin->type() == "replaygain" ) { ReplayGainPlugin *replaygainPlugin = (ReplayGainPlugin*)currentPlugin; QStringList codecs; QList codecTable = replaygainPlugin->codecTable(); for( int i=0; ipluginLoader()->pluginReplayGainProblems( pluginName, codecName ); codecs += codecTable.at(i).enabled ? "" + codecName + "" : "" + codecName + ""; } info += QString( i18n("Supported codecs:") + "
" + codecs.join(", ") ); } else if( currentPlugin->type() == "ripper" ) { } aboutPluginLabel->setText( info.join("

") ); if( currentPlugin->isConfigSupported(BackendPlugin::General,"") ) { configurePlugin->setText( i18n("Configure %1 ...",currentPlugin->name()) ); configurePlugin->show(); } else { configurePlugin->hide(); } } void AboutPlugins::configurePluginClicked() { if( currentPlugin ) { currentPlugin->showConfigDialog( BackendPlugin::General, "", this ); } } void AboutPlugins::showProblemInfo( const QString& problemId ) { QToolTip::showText( QCursor::pos(), problemInfos[problemId], aboutPluginLabel ); } ./soundkonverter-2.0.5/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000013212255306233020544 xustar000000000000000030 mtime=1387629723.722140821 30 atime=1387629723.721140834 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/CMakeLists.txt0000755000175000001440000000717412255306233020173 0ustar00danielusers00000000000000project(soundkonverter) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) find_package(KDE4 REQUIRED) include(KDE4Defaults) find_package(Cdparanoia REQUIRED) find_package(Kcddb REQUIRED) set(TAGLIB_MIN_VERSION "1.4") find_package(Taglib REQUIRED) include_directories(${KDE4_INCLUDES} ${QT_INCLUDES} ${TAGLIB_INCLUDES} ${CDPARANOIA_INCLUDE_DIR}) # all the warnings about constructions set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") # strict ISO C and ISO C++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic") # implicit conversions # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion") # implicit conversions from signed to unsigned # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-conversion") add_subdirectory(plugins) include(MacroOptionalAddSubdirectory) macro_optional_add_subdirectory( po ) set(soundkonvertercore_SRCS core/backendplugin.cpp core/conversionoptions.cpp core/codecwidget.cpp core/codecplugin.cpp core/filterplugin.cpp core/replaygainplugin.cpp core/ripperplugin.cpp ) kde4_add_library(soundkonvertercore SHARED ${soundkonvertercore_SRCS}) target_link_libraries(soundkonvertercore ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} ${KDE4_KIO_LIBS}) install(TARGETS soundkonvertercore DESTINATION ${LIB_INSTALL_DIR}) set(soundkonverter_SRCS configdialog/configdialog.cpp configdialog/configpagebase.cpp configdialog/configgeneralpage.cpp configdialog/configbackendspage.cpp configdialog/configadvancedpage.cpp configdialog/configcoverartpage.cpp metadata/tagengine.cpp metadata/MetaReplayGain.cpp opener/fileopener.cpp opener/diropener.cpp opener/cdopener.cpp opener/urlopener.cpp opener/playlistopener.cpp replaygainscanner/replaygainscanner.cpp replaygainscanner/replaygainfilelist.cpp replaygainscanner/replaygainfilelistitem.cpp replaygainscanner/replaygainprocessor.cpp global.cpp main.cpp soundkonverter.cpp soundkonverterapp.cpp soundkonverterview.cpp codecproblems.cpp codecoptimizations.cpp combobutton.cpp config.cpp conversionoptionsmanager.cpp convert.cpp convertitem.cpp filelist.cpp filelistitem.cpp logger.cpp logviewer.cpp options.cpp optionssimple.cpp optionsdetailed.cpp optionseditor.cpp optionslayer.cpp pluginloader.cpp progressindicator.cpp outputdirectory.cpp aboutplugins.cpp ) kde4_add_executable(soundkonverter ${soundkonverter_SRCS}) target_link_libraries(soundkonverter ${KDE4_KDEUI_LIBS} ${KDE4_KFILE_LIBS} ${KDE4_KIO_LIBS} ${KDE4_SOLID_LIBRARY} ${KDE4_PHONON_LIBS} ${TAGLIB_LIBRARIES} kcddb ${CDPARANOIA_LIBRARIES} soundkonvertercore) install(TARGETS soundkonverter DESTINATION ${BIN_INSTALL_DIR}) install(FILES soundkonverter.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) install(FILES soundkonverterui.rc DESTINATION ${DATA_INSTALL_DIR}/soundkonverter) install(FILES soundkonverter_codecplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) install(FILES soundkonverter_filterplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) install(FILES soundkonverter_replaygainplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) install(FILES soundkonverter_ripperplugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) install(FILES soundkonverter-rip-audiocd.desktop DESTINATION ${DATA_INSTALL_DIR}/solid/actions) add_subdirectory(icons) add_subdirectory(images) macro_display_feature_log() # uninstall target configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverterapp.cpp0000644000175000001440000000013212255306740022304 xustar000000000000000030 mtime=1387630048.573961884 30 atime=1387630048.573961884 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/soundkonverterapp.cpp0000755000175000001440000000507612255306740021732 0ustar00danielusers00000000000000 #include "soundkonverterapp.h" #include "soundkonverter.h" #include #include #include #include soundKonverterApp::soundKonverterApp() : KUniqueApplication() { mainWindow = new soundKonverter(); setActiveWindow( mainWindow ); } soundKonverterApp::~soundKonverterApp() {} int soundKonverterApp::newInstance() { KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); static bool first = true; bool visible = true; bool autoclose = false; bool autostart = false; bool activateMainWindow = true; autoclose = args->isSet( "autoclose" ); autostart = args->isSet( "autostart" ); const QString profile = args->getOption( "profile" ); const QString format = args->getOption( "format" ); const QString directory = args->getOption( "output" ); const QString notifyCommand = args->getOption( "command" ); if( args->isSet( "invisible" ) ) { autoclose = true; autostart = true; visible = false; mainWindow->showSystemTray(); } if( first && QFile::exists(KStandardDirs::locateLocal("data","soundkonverter/filelist_autosave.xml")) ) { if( !visible ) { visible = true; autoclose = false; autostart = false; mainWindow->show(); } mainWindow->show(); kapp->processEvents(); mainWindow->loadAutosaveFileList(); } const QString device = args->getOption( "rip" ); if( !device.isEmpty() ) { const bool success = mainWindow->ripCd( device, profile, format, directory, notifyCommand ); if( !success && first ) { kapp->quit(); return 0; } } if( visible ) mainWindow->show(); mainWindow->setAutoClose( autoclose ); if( args->isSet( "replaygain" ) ) { KUrl::List urls; for( int i=0; icount(); i++ ) { urls.append( args->arg(i) ); } if( !urls.isEmpty() ) { mainWindow->addReplayGainFiles( urls ); activateMainWindow = false; } } else { KUrl::List urls; for( int i=0; icount(); i++ ) { urls.append( args->arg(i) ); } if( !urls.isEmpty() ) mainWindow->addConvertFiles( urls, profile, format, directory, notifyCommand ); } first = false; args->clear(); if( activateMainWindow ) mainWindow->activateWindow(); if( autostart ) mainWindow->startConversion(); return 0; } ./soundkonverter-2.0.5/PaxHeaders.25599/main.cpp0000644000175000001440000000006212054666405017445 xustar000000000000000020 atime=1357667505 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/main.cpp0000755000175000001440000000530412054666405017063 0ustar00danielusers00000000000000 #include "soundkonverterapp.h" #include "soundkonverter.h" #include "global.h" #include #include #include #include #include #include static const char description[] = I18N_NOOP("soundKonverter is a frontend to various audio converters, Replay Gain tools and CD rippers.\n\nPlease file bug reports at https://bugs.launchpad.net/soundkonverter\nor simply send me a mail to hessijames@gmail.com"); static const char version[] = SOUNDKONVERTER_VERSION_STRING; int main(int argc, char **argv) { KAboutData about("soundkonverter", 0, ki18n("soundKonverter"), version, ki18n(description), KAboutData::License_GPL, ki18n("(C) 2005-2012 Daniel Faust"), KLocalizedString(), 0, "hessijames@gmail.com"); about.addAuthor( ki18n("Daniel Faust"), KLocalizedString(), "hessijames@gmail.com" ); about.addCredit( ki18n("David Vignoni"), ki18n("Nuvola icon theme"), 0, "http://www.icon-king.com" ); about.addCredit( ki18n("Scott Wheeler"), ki18n("TagLib"), "wheeler@kde.org", "http://ktown.kde.org/~wheeler" ); about.addCredit( ki18n("Marco Nelles"), ki18n("Audex"), 0, "http://opensource.maniatek.de/audex" ); about.addCredit( ki18n("Amarok developers"), ki18n("Amarok"), 0, "http://amarok.kde.org" ); about.addCredit( ki18n("All programmers of audio converters"), ki18n("Backends") ); KCmdLineArgs::init(argc, argv, &about); KCmdLineOptions options; options.add( "replaygain", ki18n("Open the Replay Gain tool an add all given files") ); options.add( "rip ", ki18n("List all tracks on the cd drive , 'auto' will search for a cd") ); options.add( "profile ", ki18n("Add all files using the given profile") ); options.add( "format ", ki18n("Add all files using the given format") ); options.add( "output ", ki18n("Output all files to ") ); options.add( "invisible", ki18n("Start soundKonverter invisible") ); options.add( "autostart", ki18n("Start the conversion immediately (enabled when using '--invisible')") ); options.add( "autoclose", ki18n("Close soundKonverter after all files are converted (enabled when using '--invisible')") ); options.add( "command ", ki18n("Execute after each file has been converted (%i=input file, %o=output file)") ); options.add( "+[files]", ki18n("Audio file(s) to append to the file list") ); KCmdLineArgs::addCmdLineOptions(options); soundKonverterApp::addCmdLineOptions(); if( !soundKonverterApp::start() ) { return 0; } soundKonverterApp app; // mainWin has WDestructiveClose flag by default, so it will delete itself. return app.exec(); } ./soundkonverter-2.0.5/PaxHeaders.25599/aboutplugins.h0000644000175000001440000000006212105142351020664 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/aboutplugins.h0000644000175000001440000000152012105142351020273 0ustar00danielusers00000000000000 #ifndef ABOUTPLUGINS_H #define ABOUTPLUGINS_H #include class Config; class BackendPlugin; class QLabel; class KPushButton; /** * @short Shows the logs that are collected by the logger * @author Daniel Faust * @version 1.0 */ class AboutPlugins : public KDialog { Q_OBJECT public: /** Default Constructor */ AboutPlugins( Config *_config, QWidget *parent=0, Qt::WFlags f=0 ); /** Default Destructor */ ~AboutPlugins(); private: Config *config; BackendPlugin *currentPlugin; QLabel *aboutPluginLabel; KPushButton *configurePlugin; QMap problemInfos; private slots: void currentPluginChanged( const QString& pluginName ); void configurePluginClicked(); void showProblemInfo( const QString& problemId ); }; #endif // ABOUTPLUGINS_H ./soundkonverter-2.0.5/PaxHeaders.25599/options.cpp0000644000175000001440000000006212105142352020177 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/options.cpp0000755000175000001440000002213712105142352017620 0ustar00danielusers00000000000000 #include "options.h" #include "optionssimple.h" #include "optionsdetailed.h" #include "outputdirectory.h" #include "pluginloader.h" #include "config.h" #include #include #include Options::Options( Config *_config, const QString& text, QWidget *parent ) : QWidget( parent ), config( _config ) { QGridLayout *gridLayout = new QGridLayout( this ); gridLayout->setContentsMargins( 0, 0, 0, 0 ); tab = new KTabWidget( this ); gridLayout->addWidget( tab, 0, 0 ); connect( tab, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int)) ); optionsSimple = new OptionsSimple( config, text, this ); connect( optionsSimple, SIGNAL(optionsChanged()), this, SLOT(simpleOptionsChanged()) ); connect( optionsSimple->outputDirectory, SIGNAL(modeChanged(int)), this, SLOT(simpleOutputDirectoryModeChanged(int)) ); connect( optionsSimple->outputDirectory, SIGNAL(directoryChanged(const QString&)), this, SLOT(simpleOutputDirectoryChanged(const QString&)) ); optionsDetailed = new OptionsDetailed( config, this ); connect( optionsDetailed->outputDirectory, SIGNAL(modeChanged(int)), this, SLOT(detailedOutputDirectoryModeChanged(int)) ); connect( optionsDetailed, SIGNAL(currentDataRateChanged(int)), optionsSimple, SLOT(currentDataRateChanged(int)) ); connect( optionsDetailed, SIGNAL(customProfilesEdited()), optionsSimple, SLOT(updateProfiles()) ); connect( optionsSimple, SIGNAL(customProfilesEdited()), optionsDetailed, SLOT(updateProfiles()) ); optionsSimple->init(); optionsDetailed->init(); QString format; const QStringList formats = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)); if( config->data.general.defaultFormat == i18n("Last used") || config->data.general.defaultFormat == "Last used" ) { format = config->data.general.lastFormat; } else { format = config->data.general.defaultFormat; } if( !formats.contains(format) ) format.clear(); if( format.isEmpty() && formats.count() > 0 ) { if( formats.contains(config->data.general.lastFormat) ) format = config->data.general.lastFormat; else format = formats.at(0); } optionsDetailed->setCurrentFormat( format ); QString profile; if( config->data.general.defaultProfile == i18n("Last used") || config->data.general.defaultProfile == "Last used" ) { profile = "soundkonverter_last_used"; } else { profile = config->data.general.defaultProfile; } if( profile.isEmpty() ) profile = i18n("High"); optionsDetailed->setCurrentProfile( profile ); const int startTab = ( config->data.general.startTab == 0 ) ? config->data.general.lastTab : config->data.general.startTab - 1; tab->addTab( optionsSimple, i18n("Simple") ); tab->addTab( optionsDetailed, i18n("Detailed") ); tab->setCurrentIndex( startTab ); } Options::~Options() {} ConversionOptions *Options::currentConversionOptions() { return optionsDetailed->currentConversionOptions(); } bool Options::setCurrentConversionOptions( ConversionOptions *options ) { const bool success = optionsDetailed->setCurrentConversionOptions( options ); tabChanged( 0 ); // update optionsSimple return success; } void Options::simpleOutputDirectoryModeChanged( const int mode ) { if( optionsDetailed && optionsDetailed->outputDirectory ) optionsDetailed->outputDirectory->setMode( (OutputDirectory::Mode)mode ); config->data.general.lastOutputDirectoryMode = mode; } void Options::simpleOutputDirectoryChanged( const QString& directory ) { if( optionsDetailed && optionsDetailed->outputDirectory ) optionsDetailed->outputDirectory->setDirectory( directory ); } void Options::simpleOptionsChanged() { optionsDetailed->setCurrentFormat( optionsSimple->currentFormat() ); optionsDetailed->setCurrentProfile( optionsSimple->currentProfile() ); optionsDetailed->resetFilterOptions(); optionsDetailed->setReplayGainChecked( optionsSimple->isReplayGainChecked() ); QString toolTip; const bool replaygainEnabled = optionsDetailed->isReplayGainEnabled( &toolTip ); optionsSimple->setReplayGainEnabled( replaygainEnabled, toolTip ); } void Options::detailedOutputDirectoryModeChanged( const int mode ) { config->data.general.lastOutputDirectoryMode = mode; } void Options::tabChanged( const int pageIndex ) { if( pageIndex == 0 ) { // NOTE prevent signals from firing back disconnect( optionsSimple, SIGNAL(optionsChanged()), 0, 0 ); disconnect( optionsSimple->outputDirectory, SIGNAL(modeChanged(int)), 0, 0 ); disconnect( optionsSimple->outputDirectory, SIGNAL(directoryChanged(const QString&)), 0, 0 ); optionsSimple->updateProfiles(); optionsSimple->setCurrentProfile( optionsDetailed->currentProfile() ); optionsSimple->setCurrentFormat( optionsDetailed->currentFormat() ); QString toolTip; const bool replaygainEnabled = optionsDetailed->isReplayGainEnabled( &toolTip ); const bool replaygainChecked = optionsDetailed->isReplayGainChecked(); optionsSimple->setReplayGainEnabled( replaygainEnabled, toolTip ); optionsSimple->setReplayGainChecked( replaygainChecked ); optionsSimple->setCurrentPlugin( optionsDetailed->getCurrentPlugin() ); optionsSimple->outputDirectory->setMode( optionsDetailed->outputDirectory->mode() ); optionsSimple->outputDirectory->setDirectory( optionsDetailed->outputDirectory->directory() ); connect( optionsSimple, SIGNAL(optionsChanged()), this, SLOT(simpleOptionsChanged()) ); connect( optionsSimple->outputDirectory, SIGNAL(modeChanged(int)), this, SLOT(simpleOutputDirectoryModeChanged(int)) ); connect( optionsSimple->outputDirectory, SIGNAL(directoryChanged(const QString&)), this, SLOT(simpleOutputDirectoryChanged(const QString&)) ); } config->data.general.lastTab = tab->currentIndex(); } void Options::setProfile( const QString& profile ) { optionsSimple->setCurrentProfile( profile ); simpleOptionsChanged(); } void Options::setFormat( const QString& format ) { optionsSimple->setCurrentFormat( format ); simpleOptionsChanged(); } void Options::setOutputDirectoryMode( int mode ) { QString directory; optionsSimple->setCurrentOutputDirectoryMode( (OutputDirectory::Mode)mode ); if( mode == (int)OutputDirectory::Specify ) directory = config->data.general.specifyOutputDirectory; else if( mode == (int)OutputDirectory::Source ) directory = ""; else if( mode == (int)OutputDirectory::MetaData ) directory = config->data.general.metaDataOutputDirectory; else if( mode == (int)OutputDirectory::CopyStructure ) directory = config->data.general.copyStructureOutputDirectory; optionsSimple->setCurrentOutputDirectory( directory ); simpleOutputDirectoryModeChanged( (OutputDirectory::Mode)mode ); simpleOutputDirectoryChanged( directory ); } void Options::setOutputDirectory( const QString& directory ) { optionsSimple->setCurrentOutputDirectoryMode( OutputDirectory::Specify ); optionsSimple->setCurrentOutputDirectory( directory ); simpleOutputDirectoryModeChanged( OutputDirectory::Specify ); simpleOutputDirectoryChanged( directory ); } void Options::accepted() { const OutputDirectory::Mode mode = (OutputDirectory::Mode)config->data.general.lastOutputDirectoryMode; if( mode == OutputDirectory::MetaData ) { const QString path = config->data.general.metaDataOutputDirectory; if( config->data.general.lastMetaDataOutputDirectoryPaths.contains(path) ) config->data.general.lastMetaDataOutputDirectoryPaths.removeAll( path ); else if( config->data.general.lastMetaDataOutputDirectoryPaths.size() >= 5 ) config->data.general.lastMetaDataOutputDirectoryPaths.removeLast(); config->data.general.lastMetaDataOutputDirectoryPaths.prepend( path ); } else if( mode == OutputDirectory::Specify ) { const QString path = config->data.general.specifyOutputDirectory; if( config->data.general.lastNormalOutputDirectoryPaths.contains(path) ) config->data.general.lastNormalOutputDirectoryPaths.removeAll( path ); else if( config->data.general.lastNormalOutputDirectoryPaths.size() >= 5 ) config->data.general.lastNormalOutputDirectoryPaths.removeLast(); config->data.general.lastNormalOutputDirectoryPaths.prepend( path ); } else if( mode == OutputDirectory::CopyStructure ) { const QString path = config->data.general.copyStructureOutputDirectory; if( config->data.general.lastNormalOutputDirectoryPaths.contains(path) ) config->data.general.lastNormalOutputDirectoryPaths.removeAll( path ); else if( config->data.general.lastNormalOutputDirectoryPaths.size() >= 5 ) config->data.general.lastNormalOutputDirectoryPaths.removeLast(); config->data.general.lastNormalOutputDirectoryPaths.prepend( path ); } } ./soundkonverter-2.0.5/PaxHeaders.25599/logviewer.cpp0000644000175000001440000000006212105142352020507 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/logviewer.cpp0000644000175000001440000001131012105142352020114 0ustar00danielusers00000000000000 #include "logviewer.h" #include "logger.h" #include #include #include #include #include #include #include #include #include #include LogViewer::LogViewer( Logger* _logger, QWidget *parent, Qt::WFlags f ) : KDialog( parent, f ), logger( _logger ) { connect( logger, SIGNAL(removedProcess(int)), this, SLOT(processRemoved(int)) ); connect( logger, SIGNAL(updateProcess(int)), this, SLOT(updateProcess(int)) ); setCaption( i18n("Log Viewer") ); setWindowIcon( KIcon("view-list-text") ); setButtons( KDialog::User1 | KDialog::User2 | KDialog::Close ); setButtonText( KDialog::User1, i18n("Update") ); setButtonIcon( KDialog::User1, KIcon("view-refresh") ); connect( this, SIGNAL(user1Clicked()), this, SLOT(refillLogs()) ); setButtonText( KDialog::User2, i18n("Save to file...") ); setButtonIcon( KDialog::User2, KIcon("document-save") ); connect( this, SIGNAL(user2Clicked()), this, SLOT(save()) ); setButtonFocus( KDialog::Close ); QWidget *widget = new QWidget( this ); setMainWidget( widget ); QVBoxLayout *box = new QVBoxLayout( widget ); QHBoxLayout *topBox = new QHBoxLayout( widget ); box->addLayout( topBox ); QLabel *lItem = new QLabel( i18n("Log file:") ); topBox->addWidget( lItem ); topBox->setStretchFactor( lItem, 0 ); cItem = new KComboBox( this ); topBox->addWidget( cItem ); topBox->setStretchFactor( cItem, 1 ); connect( cItem, SIGNAL(activated(int)), this, SLOT(itemChanged()) ); kLog = new KTextEdit( this ); kLog->setTabStopWidth( kLog->tabStopWidth()/2 ); box->addWidget( kLog ); kLog->setTextInteractionFlags( Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard ); refillLogs(); setInitialSize( QSize(600,390) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "LogViewer" ); restoreDialogSize( group ); } LogViewer::~LogViewer() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "LogViewer" ); saveDialogSize( group ); } void LogViewer::refillLogs() { const int currentProcess = cItem->itemData(cItem->currentIndex()).toInt(); cItem->clear(); foreach( LoggerItem *log, logger->getLogs() ) { QString name = log->identifier; // TODO make the string width dependend on the window width if( name.length() > 73 ) name = name.left(35) + "..." + name.right(35); if( log->id == 1000 ) cItem->addItem( i18n("soundKonverter application log"), QVariant(log->id) ); else cItem->addItem( name, QVariant(log->id) ); } if( cItem->findData(currentProcess) != -1 ) cItem->setCurrentIndex( cItem->findData(currentProcess) ); else cItem->setCurrentIndex( 0 ); itemChanged(); } void LogViewer::itemChanged() { // HACK avoid Qt bug? changing the color of 'uncolored' text when switching the log file QTextCursor cursor = kLog->textCursor(); cursor.setPosition( 0 ); kLog->setTextCursor( cursor ); kLog->clear(); LoggerItem* item = logger->getLog( cItem->itemData(cItem->currentIndex()).toInt() ); if( !item ) return; foreach( const QString line, item->data ) kLog->append( line ); QPalette currentPalette = kLog->palette(); if( item->completed ) { currentPalette.setColor( QPalette::Base, QApplication::palette().base().color() ); } else { currentPalette.setColor( QPalette::Base, QColor(255,234,234) ); } kLog->setPalette( currentPalette ); } void LogViewer::save() { const QString fileName = KFileDialog::getSaveFileName( KUrl(), "*.txt\n*.log", this, i18n("Save log file") ); if( fileName.isEmpty() ) return; QFile file( fileName ); if( file.exists() ) { if( KMessageBox::questionYesNo(this,i18n("File already exists. Do you really want to overwrite it?")) == KMessageBox::No ) return; } if( !file.open(QIODevice::WriteOnly) ) { KMessageBox::error( this, i18n("Writing to file failed.\nMaybe you haven't got write permission.") ); return; } QTextStream textStream; textStream.setDevice( &file ); textStream << kLog->toPlainText(); file.close(); } void LogViewer::processRemoved( int id ) { Q_UNUSED(id) refillLogs(); } void LogViewer::updateProcess( int id ) { Q_UNUSED(id) refillLogs(); } void LogViewer::showLog( int id ) { if( cItem->findData(QVariant(id)) != -1 ) cItem->setCurrentIndex( cItem->findData(QVariant(id)) ); else cItem->setCurrentIndex( 0 ); itemChanged(); } ./soundkonverter-2.0.5/PaxHeaders.25599/optionsdetailed.h0000644000175000001440000000006212105142353021341 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/optionsdetailed.h0000755000175000001440000000417212105142353020761 0ustar00danielusers00000000000000 #ifndef OPTIONSDETAILED_H #define OPTIONSDETAILED_H #include #include #include #include class CodecPlugin; class Config; class ConversionOptions; class FilterPlugin; class OutputDirectory; class CodecWidget; class FilterWidget; class KComboBox; class KPushButton; class QGridLayout; class QLabel; class QToolButton; /** @author Daniel Faust */ class OptionsDetailed : public QWidget { Q_OBJECT public: OptionsDetailed( Config *_config, QWidget *parent=0 ); ~OptionsDetailed(); void init(); /** Return the current options */ ConversionOptions *currentConversionOptions( bool saveLastUsed = true ); /** Set the current options */ bool setCurrentConversionOptions( ConversionOptions *options ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); QString currentFormat(); void setCurrentFormat( const QString& format ); void resetFilterOptions(); void setReplayGainChecked( bool enabled ); bool isReplayGainEnabled( QString *toolTip = 0 ); bool isReplayGainChecked(); CodecPlugin *getCurrentPlugin(); OutputDirectory *outputDirectory; // this way it's easier to sync simple and detailed options // QSize sizeHint(); private: QGridLayout *grid; KComboBox *cFormat; QLabel *lPlugin; KComboBox *cPlugin; KPushButton *pConfigurePlugin; CodecWidget *wPlugin; QMap wFilter; QCheckBox *cReplayGain; QLabel *lEstimSize; KPushButton *pProfileSave; QToolButton *pProfileLoad; Config *config; CodecPlugin *currentPlugin; // QSize size_hint; public slots: void somethingChanged(); void loadCustomProfileButtonClicked(); bool saveCustomProfile( bool lastUsed = false ); void updateProfiles(); private slots: void formatChanged( const QString& format ); void encoderChanged( const QString& encoder ); void configurePlugin(); signals: // connected to optionsSimple void currentDataRateChanged( int rate ); // void optionsChanged(); void customProfilesEdited(); }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/CHANGELOG0000644000175000001440000000013212255311522017213 xustar000000000000000030 mtime=1387631442.553118611 30 atime=1387631442.552118623 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/CHANGELOG0000644000175000001440000003217512255311522016636 0ustar00danielusers000000000000002.0.5: -Add: Catalan translation -Add: Swedish translation -Add: Chinese (Taiwan) translation -Add: Romanian translation -Fix: Don't mix up total tracks and total discs when reading vorbis comments 2.0.4: -Add: Slovenian translation 2.0.3: -Fix: Update normalize filter widget properly -Fix: Show more than one filter widget at a time -Fix: Load normalize options properly from saved profiles (could lead to a crash) 2.0.2: -Add: Italian translation -Fix: Find normalize properly 2.0.1: -Add: French translation 2.0.0: -Add: Update translations -Remove: French translation (only 58% translated) 1.9.90 (2.0.0 rc1): -Add: Option to not modify the audio stream of mp3 files when calculating Replay Gain -Add: libav plugin -Fix: Modify mp3 stream when forcing the recalculation of Replay Gain -Fix: Don't try to calculate Replay Gain if it is impossible -Fix: Down/upmixing with sox -Fix: Sox effects wouldn't work -Fix: Recognice mp3 and amr nb encoding support in ffmpeg/libav plugins -Fix: Crash when encoding with sox and without filters -Fix: Calculate Replay Gain if there is only one track in the album 1.9.80 (2.0.0 beta1): -Add: Parallel Replay Gain calculation in the Replay Gain tool -Add: Move tracks to new Album via context menu in the Replay Gain tool -Add: sox plugin with support for some new file formats (8svx, aiff, amr wb) -Add: Convert sample rate and sample size, downmix and apply effects (normalize, bass and treble) using sox -Add: Copy embedded covers for ogg files using METADATA_BLOCK_PICTURE -Add: Option to switch between COMMENT and DESCRIPTION as preferred comment field for ogg vorbis and flac files -Add: Option to select preferred total tracks/discs number fields for ogg vorbis and flac files -Add: Copy the tags total tracks/discs number, MusicBrainz Track Id and MusicBrainz Release Id -Add: Compression level option for the lame plugin -Add: Opus support (via opus-tools) -Change: Remember dimensions of the sub-windows and dialogs -Change: Sampling rate and number of channels can as of now only be changed through a filter plugin (currently only sox) -Change: Immediately start converting a file after adding it to the file list if the conversion is running in queue mode -Change: Quit soundKonverter when canceling the CD ripper dialog if soundKonverter was started with the --rip option -Change: Quit the Replay Gain tool when it gets closed -Change: Rename the m4a format to m4a/aac and alac to m4a/alac -Fix: Handle internal Replay Gain calculation properly -Fix: Don't accept dropping tracks onto albums with different codec or sampling rate in the Replay Gain tool -Fix: Better file type recognition -Fix: Output options control via command line parameters when ripping audio cds -Fix: User defined parameters for mpcenc when using a preset 1.6.4: -Fix: Don't stall when Replay Gain plugin returns error code (e.g. when trying to remove musepack gain) -Fix: Some memory leaks -Fix: Performance improvements when adding large directories -Fix: Recognize file type correctly if extension is upper case -Fix: Dropping directories on the Replay Gain tool wouldn't work 1.6.3: -Add: Brazilian Portuguese translation (by André Marcelo Alvarenga) -Fix: Make sure the file chooser dialog won't get overlayed by the options dialog in non-KDE environments 1.6.2: -Fix: Skip files that ought to be skipped instead of generating a new file name -Fix: Make saving custom profiles work again -Fix: Don't mix up the output directory history for metadata and normal mode -Fix: Show proper progress when applying album gain 1.6.1: -Fix: Don't try to restore the file list when calling soundKonverter while it is running 1.6.0: -Add: Update translations -Fix: When loading file lists some options were ignored 1.5.90 (1.6.0 rc1): -Add: Make the 'Failed' status click-able and open the log if clicked -Add: Make the file name of covers written to the output directory configureble -Change: Remove the info tab from the options editor -Change: Discard changes in the options editor when selecting a different file in file list -Fix: Problem dialog wasn't shown when dropping unsupported files on the soundKonverter or ReplayGain tool window -Fix: Show progress when decoding properly -Fix: Crash when in options editor opened items finished -Fix: Crash with ogg files containing covers but no mime type or description 1.5.0: -Add: Update translations 1.4.90 (1.5.0 rc1): -Add: Copy embedded covers for wma files -Add: Calculate Album Gain for albums in the conversion list -Add: Russian translation -Change: Replace Spanish Argentinan translation (es_AR) with Spanish (es) since KDE isn't able to use es_AR translations -Fix: Cdrom drive detection would fail with Ubuntu 12.04 (patch by Eike Thaden) -Fix: Musicbrainz lookup not working if data track present (patch by Eike Thaden) -Fix: Don't show data tracks in the CD ripper UI (patch by Eike Thaden) -Fix: Musicbrainz lookup would only work through the freedb gateway (patch by Eike Thaden) 1.4.0: -Add: Show progress bar when loading file lists 1.3.90 (1.4.0 rc1): -Add: TTA Enc plugin -Add: sad (Black & White audio file) support -Add: Improved saving of the last used conversion profile -Change: Reduce amount of alerts when dropping unsupported file types (like images) on the file list -Fix: Files added with "add directory" could fail 1.3.3: -Change: Piping is disabled by default, it can be activated in the config dialog though -Fix: Some piping bugs with vorbistools and ffmpeg -Fix: Crash when adding a directory 1.3.2: -Fix: Crash when trying to write covers (attempt #2) 1.3.1: -Add: Update translations -Fix: Crash when trying to write covers 1.3.0: -Add: Update translations 1.2.90 (1.3.0 rc1): -Add: Copy embedded covers for ogg (only reading), mp3, mp4 and flac files -Add: Option to copy embedded covers to the output directory -Add: Honor total disc numbers -Add: Session management -Change: By default log files won't be written to the hard drive anymore, it can be activated in the config dialog though -Fix: Conversion problems when using pipes with newer KDE/Qt versions -Fix: Don't write empty tags -Fix: Initial loading of conversion profiles 1.2.1: -Add: French translation -Fix: Make mplayer log less when decoding videos -Fix: Remove old log files on start up 1.2.0: -Add: Update translations -Remove: French, Serbian, Russian and Brazilian Portuguese translations since they are less than 80% complete 1.1.90 (1.2.0 rc1): -Add: Aften plugin -Add: Speex plugin -Add: Plugin info dialog -Add: Make it possible to use experimental codecs with ffmpeg -Add: Make it possible to use user defined arguments with ffmpeg -Add: Re-add aac/m4a encoding to the ffmpeg plugin -Change: Query ffmpeg for supported codecs 1.1.0: -Add: Estonian translation (by Mihkel Tõnnov) -Add: Serbian translation (by Slobodan Terzić) -Add: Spanish (Argentinian) translation (by akana_sfe) -Change: Only use wav as temp codec 1.0.90 (1.1.0 rc1): -Add: Portuguese translation (by Sérgio Marques) -Add: Brazilian Portuguese translation (by Tex Weissffudder) -Add: Russian translation (by Alexey Ivanov) -Add: Inform the user if there is a better backend available for a given format (e.g. prefer lame over ffmpeg) -Add: Make it possible to choose the preferred extension for ogg vorbis files -Add: Playing CD tracks before ripping them -Add: Fluidsynth plugin -Add: Possibility to write temporary files to /dev/shm -Change: Prevent options dialogs from getting too wide -Change: Automatically remove FAT incompatible characters if output directory is on a FAT volume -Change: MusePack: Find mpenc, mpcdec and mpcgain backends, too -Fix: CDDB requests -Fix: Handle files with dollar signs and backticks (`) correctly -Fix: Filnames wouldn't be FAT compatible if output mode was copy directory structure -Fix: Display correct progress when applying Replay Gain to multiple ogg vorbis files -Fix: Replay Gain Scanner wouldn't work properly with files of different format 1.0.0: -Add: Option to choose between APE and ID3v2 tags for mp3gain and aacgain -Add: Hungarian translation (by Dr. Orosz Tamás) -Add: French translation (by Yannick Ernult) -Change: Make it possible to overwrite hidden lame parameters with the additional parameters option -Change: Distinguish between aac and m4a files, where aac is the transport stream and m4a an mp4 container with aac data; mp4 is the video container -Fix: Call neroAacEnc with the correct bitrate -Fix: Undo mp3gain and aacgain changes correctly -Fix: Load the right Replay Gain plugin 0.9.95 (1.0.0 rc3): -Add: Updated czech translation (by Pavel Fric) -Add: Read Replay Gain in more formats -Add: Save last 5 output directory paths (accessible through the directory combobox) -Add: Option to specify how the Replay Gain scanner should group files -Change: Close soundkonverter if --autoclose was passed, even if the main window is visible -Change: Remove internal Replay Gain calculation from lame plugin since it's not writing tags -Change: Use PATH variable to find backends -Change: Activate Replay Gain tool when adding files -Fix: Display correct conversion options in the conversion options editor with multiple files selected -Fix: Apply output directory to the conversion options input widget -Fix: Don't update conversion options or tags in the conversion options editor with multiple files selected if they don't match -Fix: Make edit conversion options/tags buttons in the conversion options editor work -Fix: Fix possible crash in the log viewer -Fix: Handle files with quotation characters (") correctly -Fix: When adding multiple files of different formats, the formats wouldn't be recognized correctly 0.9.94 (1.0.0 rc2): -Add: Updated czech translation (by Pavel Fric) -Fix: Tint items in the Replay Gain scanner red while calculating Replay Gain -Fix: Make the Replay Gain scanner skip file with calculated tags -Fix: Ensure items in the file list and Replay Gain file list get redrawn after an update -Fix: Hide open directory dialog before scanning the directory to show the progressbar -Fix: Don't crash when deleting file list items -Fix: Don't recognize vorbis files as flac -Fix: Call lame with correct --abr and --cbr parameters 0.9.93 (1.0.0 rc1): -Add: Video formats for ffmpeg and mplayer -Add: German translation -Change: Re-enable the CD ripper (using paranoia again) -Change: Save frames properly when generating cuesheet files -Fix: Retry conversion if file output size is too small -Fix: Delete temp files properly if a conversion pipe failed -Fix: alac extensions -Fix: Some bugs in the CD ripper dialog -Fix: Drag'n'drop directories wouldn't work -Fix: Make shortcuts work 0.9.92 (1.0.0 beta3): -Add: User defined command line arguments for lame and some new plugins -Add: User defined command to execute after a file has been converted -Add: Create action menus for the file manager -Add: Flake plugin -Add: TwoLame plugin (Warning: Corrupted a file while testing) -Add: Monkey's Audio Compressor plugin -Add: WavPack and Wv Gain plugin -Add: shorten plugin -Add: MusePack codec and replaygain plugins -Change: Disable CD ripper, due to some incompatibilitys with kde (still accessible through the command line though) -Change: Create temp files in the kde-user temp dir -Change: Remove partially converted files on abort or fail -Change: Remove old KDE4 action menus created by soundKonverter 0.3 -Fix: Remove audio/mpeg mime type from mp1 and mp2 codecs in the ffmpeg and mplayer plugins because it would conflict with mp3 -Fix: soundKonverter would get stuck when trying to add replaygain (add argument for mp3gain/aacgain to lower gain to avoid clipping) -Fix: soundkonverter would crash when trying to rip a cd or add files if the options widget can't be initialized correctly -Fix: The options widget wasn't initialized correctly causing some crashes -Fix: Don't truncate text in the combo button (add files, etc.) -Fix: Try the plugin selected by the user in the detailed tab at first -Fix: The options editor dialog would show wrong data 0.9.91 (1.0.0 beta2): -Add: flac and metaflac plugins -Add: faac, neroaac and aacgain plugins -Add: timidity plugin -Add: Enclosing %x space holders in the output directory with "[]" will only activate the space holder if the tag is not empty -Add: Czech translation (by Pavel Fric) -Change: use input file name as output file name if output mode is set to "metadata" and the file name can't be filled with either the track number or title -Change: added message box to warn the user when trying to rip audio cds with kde < 4.4.0 -Change: don't close soundkonverter when started invisible but the conversion was aborted by the user -Change: don't save file list after each succeeded conversion because it was slowing down the conversion when converting a lot of files -Fix: File conflict handling -Fix: Update file list if configuration changed -Fix: Rip CDs by passing parameters to soundkonverter -Fix: Replay Gain tool would only process one file/album -Fix: Downloading files from remote locations -Fix: Options editor wouldn't save modified tags -Fix: Hitting the button "edit tags" in the options editor wouldn't work -Fix: The options editor would cause a crash when files where removed from the file list -Fix: Race condition when trying to convert multiple files having the same output file name simultaneously 0.9.90 (1.0.0 beta1): First usable release of the soundKonverter 1.0 series ./soundkonverter-2.0.5/PaxHeaders.25599/options.h0000644000175000001440000000006212105142352017644 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/options.h0000755000175000001440000000305412105142352017262 0ustar00danielusers00000000000000 #ifndef OPTIONS_H #define OPTIONS_H #include class OptionsSimple; class OptionsDetailed; class Config; class ConversionOptions; class KTabWidget; /** * @short The widget, where we can set our output options * @author Daniel Faust * @version 0.3 */ class Options : public QWidget { Q_OBJECT public: /** Constructor */ Options( Config *_config, const QString& text, QWidget *parent=0 ); /** Destructor */ ~Options(); /** Return the current options */ ConversionOptions *currentConversionOptions(); /** Set the current options */ bool setCurrentConversionOptions( ConversionOptions* optionsptions ); public slots: /** Set the current profile */ void setProfile( const QString& profile ); /** Set the current format */ void setFormat( const QString& format ); /** Set the current output directory mode */ void setOutputDirectoryMode( int mode ); /** Set the current output directory */ void setOutputDirectory( const QString& directory ); /** Should be called if the conversion options have been accepted by the user */ void accepted(); private: Config *config; KTabWidget *tab; OptionsSimple *optionsSimple; OptionsDetailed *optionsDetailed; private slots: void tabChanged( const int pageIndex ); void simpleOutputDirectoryModeChanged(const int mode); void simpleOutputDirectoryChanged(const QString&); void simpleOptionsChanged(); void detailedOutputDirectoryModeChanged(const int mode); }; #endif // OPTIONS_H ./soundkonverter-2.0.5/PaxHeaders.25599/outputdirectory.h0000644000175000001440000000006212105142353021437 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/outputdirectory.h0000755000175000001440000000335012105142353021054 0ustar00danielusers00000000000000 #ifndef OUTPUTDIRECTORY_H #define OUTPUTDIRECTORY_H #include #include class FileListItem; class Config; class KComboBox; class KLineEdit; class KPushButton; /** * @short The input area for the output directory * @author Daniel Faust * @version 0.3 */ class OutputDirectory : public QWidget { Q_OBJECT public: enum Mode { MetaData = 0, Source = 1, Specify = 2, CopyStructure = 3 }; /** Constructor */ OutputDirectory( Config *_config, QWidget *parent = 0 ); /** Destructor */ ~OutputDirectory(); Mode mode(); void setMode( Mode mode ); QString directory(); void setDirectory( const QString& directory ); QString filesystem(); static KUrl calcPath( FileListItem *fileListItem, Config *config, const QStringList& usedOutputNames = QStringList() ); static KUrl changeExtension( const KUrl& url, const QString& extension ); static KUrl uniqueFileName( const KUrl& url, const QStringList& usedOutputNames ); static KUrl makePath( const KUrl& url ); static QString vfatPath( const QString& path ); static QString ntfsPath( const QString& path ); public slots: //void setActive( bool ); void enable(); void disable(); private slots: void modeChangedSlot( int ); void directoryChangedSlot( const QString& ); void selectDir(); void gotoDir(); private: void updateMode( Mode ); static QString filesystemForDirectory( const QString& dir = "" ); KComboBox *cMode; KComboBox *cDir; KPushButton *pDirSelect; KPushButton *pDirGoto; Config *config; signals: void modeChanged( int ); void directoryChanged( const QString& ); }; #endif // OUTPUTDIRECTORY_H ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter_filterplugin.desktop0000644000175000001440000000006212105142357025254 xustar000000000000000020 atime=1360315631 30 ctime=1387631578.232422386 ./soundkonverter-2.0.5/soundkonverter_filterplugin.desktop0000644000175000001440000000021612105142357024664 0ustar00danielusers00000000000000[Desktop Entry] Type=ServiceType X-KDE-ServiceType=soundKonverter/FilterPlugin X-KDE-Derived=KPluginInfo Comment=soundKonverter filter plugin ./soundkonverter-2.0.5/PaxHeaders.25599/convert.h0000644000175000001440000000006212105142352017631 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/convert.h0000644000175000001440000000753412105142352017253 0ustar00danielusers00000000000000 #ifndef CONVERT_H #define CONVERT_H #include "filelistitem.h" #include #include #include #include #include class BackendPlugin; class CDManager; class Config; class ConvertItem; class FileList; class Logger; class KJob; /** * @short The conversion engine * @author Daniel Faust */ class Convert : public QObject { Q_OBJECT public: Convert( Config *_config, FileList *_fileList, Logger *_logger, QObject *parent ); ~Convert(); void cleanUp(); private: /** Copy the file with the file list item @p item to a temporary directory and download if necessary */ void get( ConvertItem *item ); /** Convert the file */ void convert( ConvertItem *item ); /** Apply a filter to the file after it has been decoded in convert() */ void convertNextBackend( ConvertItem *item ); /** Calculate replaygain tags of the file with the convert item @p item */ void replaygain( ConvertItem *item ); /** Write the tags of the file with the convert item @p item */ void writeTags( ConvertItem *item ); /** Run the userscript for the convert item @p item */ void executeUserScript( ConvertItem *item ); /** Decide, what to do next with out item @p item */ void executeNextStep( ConvertItem *item ); /** Make another try for @p item */ void executeSameStep( ConvertItem *item ); /** Remove item @p item and emit the state @p state */ void remove( ConvertItem *item, FileListItem::ReturnCode returnCode = FileListItem::Succeeded ); /** holds all active files */ QList items; /** holds all items that are waiting for album gain QMap< album name,convert items list > */ QMap< QString, QList > albumGainItems; Config *config; CDManager* cdManager; FileList *fileList; Logger* logger; QMap usedOutputNames; struct LogQueue { int id; BackendPlugin *plugin; QStringList messages; }; QList pluginLogQueue; QTimer updateTimer; private slots: /** The file is being moved */ void kioJobProgress( KJob *job, unsigned long percent ); /** The file has been moved */ void kioJobFinished( KJob *job ); /** Get the process' output */ void processOutput(); /** The process has exited */ void processExit( int exitCode, QProcess::ExitStatus exitStatus ); /** A plugin has finished converting a file */ void pluginProcessFinished( int id, int exitCode ); /** A plugin has something to log */ void pluginLog( int id, const QString& message ); /** sums up the progresses of all processes and sends it to the ProgressIndicator */ void updateProgress(); public slots: // connected to FileList /** Add a new @p item to the item list and start */ void add( FileListItem *fileListItem ); /** Stop the item with the file list item @p item in the item list and remove it */ void kill( FileListItem *fileListItem ); /** the file list item @p item will get removed */ void itemRemoved( FileListItem *fileListItem ); /** Change the process priorities */ // void priorityChanged( int ); signals: // connected to FileList /** The conversion of an item has finished and the state is reported */ void finished( FileListItem *fileListItem, FileListItem::ReturnCode returnCode, bool waitingForAlbumGain = false ); /** The next track from the device can be ripped while the track is being encoded */ void rippingFinished( const QString& device ); // connected to Logger /** Tell the logger that the process has finished */ void finishedProcess( int id, bool succeeded, bool waitingForAlbumGain = false ); // connected to ProgressIndicator void updateTime( float timeProgress ); void timeFinished( float timeDelta ); }; #endif // CONVERT_H ./soundkonverter-2.0.5/PaxHeaders.25599/optionslayer.cpp0000644000175000001440000000006212105142353021235 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/optionslayer.cpp0000755000175000001440000001075512105142353020661 0ustar00danielusers00000000000000 #include "optionslayer.h" #include "options.h" #include "config.h" #include #include #include #include #include #include #include OptionsLayer::OptionsLayer( Config *config, QWidget *parent ) : QWidget( parent ) { QGridLayout *gridLayout = new QGridLayout( this ); gridLayout->setContentsMargins( 20, 20, 20, 20 ); // gridLayout->setContentsMargins( 0, 0, 0, 0 ); frame = new QFrame( this ); gridLayout->addWidget( frame, 0, 0 ); frame->setFrameShape( QFrame::StyledPanel ); frame->setFrameShadow( QFrame::Raised ); frame->setAutoFillBackground( true ); QPalette palette = frame->palette(); QBrush brush = palette.window(); QBrush oldBrush = brush; // brush.setColor( QColor(230,236,238) ); // 223,230,231 // brush.setColor( QColor(223,230,231) ); palette.setBrush( QPalette::Window, brush ); frame->setPalette( palette ); QVBoxLayout *frameLayout = new QVBoxLayout( frame ); frameLayout->setContentsMargins( 3, 3, 3, 3 ); // frameLayout->setSpacing( 0 ); options = new Options( config, i18n("Select your desired output options and click on \"Ok\"."), this ); frameLayout->addWidget( options ); QHBoxLayout *buttonBox = new QHBoxLayout(); buttonBox->setContentsMargins( 0, 0, 6, 6 ); frameLayout->addLayout( buttonBox ); buttonBox->addStretch(); pOk = new KPushButton( KIcon("dialog-ok"), i18n("Ok"), this ); buttonBox->addWidget( pOk ); connect( pOk, SIGNAL(clicked()), this, SLOT(ok()) ); pCancel = new KPushButton( KIcon("dialog-cancel"), i18n("Cancel"), this ); buttonBox->addWidget( pCancel ); connect( pCancel, SIGNAL(clicked()), this, SLOT(abort()) ); palette = options->palette(); brush = palette.window(); palette.setBrush( QPalette::Window, brush ); options->setPalette( palette ); setAutoFillBackground( true ); connect( &fadeTimer, SIGNAL(timeout()), this, SLOT(fadeAnim()) ); fadeAlpha = 0.0f; } OptionsLayer::~OptionsLayer() {} void OptionsLayer::fadeIn() { pOk->setDisabled( false ); pCancel->setDisabled( false ); fadeTimer.start( 50 ); fadeMode = 1; QPalette newPalette = palette(); newPalette.setBrush( QPalette::Window, brushSetAlpha( newPalette.window(), 0 ) ); setPalette( newPalette ); newPalette = frame->palette(); newPalette.setBrush( QPalette::Window, brushSetAlpha( newPalette.window(), 0 ) ); frame->setPalette( newPalette ); frame->hide(); show(); } void OptionsLayer::fadeOut() { urls.clear(); fadeTimer.start( 50 ); fadeMode = 2; frame->hide(); } void OptionsLayer::fadeAnim() { if( fadeMode == 1 ) fadeAlpha += 255.0f/50.0f*8.0f; else if( fadeMode == 2 ) fadeAlpha -= 255.0f/50.0f*8.0f; if( fadeAlpha <= 0.0f ) { fadeAlpha = 0.0f; fadeMode = 0; hide(); } else if( fadeAlpha >= 255.0f ) { fadeAlpha = 255.0f; fadeMode = 0; frame->show(); } else { fadeTimer.start( 50 ); } QPalette newPalette = palette(); newPalette.setBrush( QPalette::Window, brushSetAlpha( newPalette.window(), 192.0f/255.0f*fadeAlpha ) ); setPalette( newPalette ); newPalette = frame->palette(); newPalette.setBrush( QPalette::Window, brushSetAlpha( newPalette.window(), 230.0f/255.0f*fadeAlpha ) ); frame->setPalette( newPalette ); } void OptionsLayer::addUrls( const KUrl::List& _urls ) { urls += _urls; } void OptionsLayer::abort() { fadeOut(); } void OptionsLayer::ok() { ConversionOptions *conversionOptions = options->currentConversionOptions(); if( conversionOptions ) { options->accepted(); pOk->setDisabled( true ); pCancel->setDisabled( true ); kapp->processEvents(); emit done( urls, conversionOptions, command ); emit saveFileList(); fadeOut(); } else { KMessageBox::error( this, i18n("No conversion options selected.") ); // possibly unneeded i18n string } } void OptionsLayer::setProfile( const QString& profile ) { options->setProfile( profile ); } void OptionsLayer::setFormat( const QString& format ) { options->setFormat( format ); } void OptionsLayer::setOutputDirectory( const QString& directory ) { options->setOutputDirectory( directory ); } void OptionsLayer::setCommand( const QString& _command ) { command = _command; } void OptionsLayer::setCurrentConversionOptions( ConversionOptions *conversionOptions ) { options->setCurrentConversionOptions( conversionOptions ); } ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter.desktop.template0000644000175000001440000000006212105142357024302 xustar000000000000000020 atime=1360315631 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/soundkonverter.desktop.template0000755000175000001440000000045712105142357023724 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Name=soundKonverter Exec=soundkonverter %U Icon=soundkonverter Type=Application _GenericName=Audio file converter, CD ripper and Replay Gain tool Terminal=false Categories=AudioVideo;Audio;AudioVideoEditing;KDE; X-DocPath=https://github.com/HessiJames/soundkonverter/wiki ./soundkonverter-2.0.5/PaxHeaders.25599/conversionoptionsmanager.cpp0000644000175000001440000000006212105142352023640 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/conversionoptionsmanager.cpp0000644000175000001440000000534612105142352023261 0ustar00danielusers00000000000000// // C++ Implementation: conversionoptionsmanager // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "conversionoptionsmanager.h" #include "core/conversionoptions.h" #include "pluginloader.h" ConversionOptionsManager::ConversionOptionsManager( PluginLoader *_pluginLoader ) : pluginLoader( _pluginLoader ) { idCounter = 0; } ConversionOptionsManager::~ConversionOptionsManager() { for( int i=0; ipluginName == conversionOptions->pluginName ) { if( elements.at(i).conversionOptions->equals(conversionOptions) ) // NOTE equals gets reimplemented by the plugins { elements[i].references++; return elements.at(i).id; } } } ConversionOptionsElement newElement; newElement.id = idCounter++; newElement.conversionOptions = conversionOptions; newElement.references = 1; elements.append( newElement ); return newElement.id; } int ConversionOptionsManager::increaseReferences( int id ) { for( int i=0; i ConversionOptionsManager::getAllIds() { QList ids; for( int i=0; i */ #include "soundkonverterview.h" #include "filelist.h" #include "filelistitem.h" #include "combobutton.h" #include "progressindicator.h" #include "optionslayer.h" #include "config.h" #include "logger.h" #include "opener/fileopener.h" #include "opener/diropener.h" #include "opener/cdopener.h" #include "opener/urlopener.h" #include "opener/playlistopener.h" #include "convert.h" #include "options.h" #include "codecproblems.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include soundKonverterView::soundKonverterView( Logger *_logger, Config *_config, CDManager *_cdManager, QWidget *parent ) : QWidget( parent ), config( _config ), logger( _logger ), cdManager( _cdManager ) { setAcceptDrops( true ); // the grid for all widgets in the main window QGridLayout* gridLayout = new QGridLayout( this ); fileList = new FileList( logger, config, this ); gridLayout->addWidget( fileList, 1, 0 ); gridLayout->setRowStretch( 1, 1 ); connect( fileList, SIGNAL(fileCountChanged(int)), this, SLOT(fileCountChanged(int)) ); connect( fileList, SIGNAL(conversionStarted()), this, SLOT(conversionStarted()) ); connect( fileList, SIGNAL(conversionStopped(bool)), this, SLOT(conversionStopped(bool)) ); connect( fileList, SIGNAL(queueModeChanged(bool)), this, SLOT(queueModeChanged(bool)) ); connect( fileList, SIGNAL(showLog(int)), this, SIGNAL(showLog(int)) ); optionsLayer = new OptionsLayer( config, this ); fileList->setOptionsLayer( optionsLayer ); optionsLayer->hide(); gridLayout->addWidget( optionsLayer, 1, 0 ); connect( optionsLayer, SIGNAL(done(const KUrl::List&,ConversionOptions*,const QString&)), fileList, SLOT(addFiles(const KUrl::List&,ConversionOptions*,const QString&)) ); connect( optionsLayer, SIGNAL(saveFileList()), fileList, SLOT(save()) ); // add a horizontal box layout for the add combobutton to the grid QHBoxLayout *addBox = new QHBoxLayout(); addBox->setContentsMargins( 1, 2, 1, 0 ); // determined by experiments gridLayout->addLayout( addBox, 3, 0 ); // create the combobutton for adding files to the file list cAdd = new ComboButton( this ); QFont font = cAdd->font(); //font.setWeight( QFont::DemiBold ); font.setPointSize( font.pointSize() + 3 ); cAdd->setFont( font ); cAdd->insertItem( KIcon("audio-x-generic"), i18n("Add files...") ); cAdd->insertItem( KIcon("folder"), i18n("Add folder...") ); cAdd->insertItem( KIcon("media-optical-audio"), i18n("Add CD tracks...") ); cAdd->insertItem( KIcon("network-workgroup"), i18n("Add url...") ); cAdd->insertItem( KIcon("view-media-playlist"), i18n("Add playlist...") ); cAdd->increaseHeight( 6 ); addBox->addWidget( cAdd, 0, Qt::AlignVCenter ); connect( cAdd, SIGNAL(clicked(int)), this, SLOT(addClicked(int)) ); cAdd->setFocus(); addBox->addSpacing( 10 ); startAction = new KAction( KIcon("system-run"), i18n("Start"), this ); connect( startAction, SIGNAL(triggered()), fileList, SLOT(startConversion()) ); pStart = new KPushButton( KIcon("system-run"), i18n("Start"), this ); pStart->setFixedHeight( pStart->size().height() ); pStart->setEnabled( false ); startAction->setEnabled( false ); addBox->addWidget( pStart, 0, Qt::AlignVCenter ); connect( pStart, SIGNAL(clicked()), fileList, SLOT(startConversion()) ); stopActionMenu = new KActionMenu( KIcon("process-stop"), i18n("Stop"), this ); stopActionMenu->setDelayed( false ); killAction = new KAction( KIcon("flag-red"), i18n("Stop immediatelly"), this ); stopActionMenu->addAction( killAction ); connect( killAction, SIGNAL(triggered()), fileList, SLOT(killConversion()) ); stopAction = new KAction( KIcon("flag-yellow"), i18n("Stop after current conversions are completed"), this ); stopActionMenu->addAction( stopAction ); connect( stopAction, SIGNAL(triggered()), fileList, SLOT(stopConversion()) ); continueAction = new KAction( KIcon("flag-green"), i18n("Continue after current conversions are completed"), this ); stopActionMenu->addAction( continueAction ); connect( continueAction, SIGNAL(triggered()), fileList, SLOT(continueConversion()) ); queueModeChanged( true ); pStop = new KPushButton( KIcon("process-stop"), i18n("Stop"), this ); pStop->setFixedHeight( pStop->size().height() ); pStop->hide(); stopActionMenu->setEnabled( false ); pStop->setMenu( stopActionMenu->menu() ); addBox->addWidget( pStop, 0, Qt::AlignVCenter ); addBox->addSpacing( 10 ); progressIndicator = new ProgressIndicator( this, ProgressIndicator::Feature( ProgressIndicator::FeatureSpeed | ProgressIndicator::FeatureTime ) ); addBox->addWidget( progressIndicator, 0, Qt::AlignVCenter ); connect( progressIndicator, SIGNAL(progressChanged(const QString&)), this, SIGNAL(progressChanged(const QString&)) ); connect( fileList, SIGNAL(timeChanged(float)), progressIndicator, SLOT(timeChanged(float)) ); connect( fileList, SIGNAL(finished(bool)), progressIndicator, SLOT(finished(bool)) ); Convert *convert = new Convert( config, fileList, logger, this ); connect( fileList, SIGNAL(convertItem(FileListItem*)), convert, SLOT(add(FileListItem*)) ); connect( fileList, SIGNAL(killItem(FileListItem*)), convert, SLOT(kill(FileListItem*)) ); connect( fileList, SIGNAL(itemRemoved(FileListItem*)), convert, SLOT(itemRemoved(FileListItem*)) ); connect( convert, SIGNAL(finished(FileListItem*,FileListItem::ReturnCode,bool)), fileList, SLOT(itemFinished(FileListItem*,FileListItem::ReturnCode,bool)) ); connect( convert, SIGNAL(rippingFinished(const QString&)), fileList, SLOT(rippingFinished(const QString&)) ); connect( convert, SIGNAL(finishedProcess(int,bool,bool)), logger, SLOT(processCompleted(int,bool,bool)) ); connect( convert, SIGNAL(updateTime(float)), progressIndicator, SLOT(update(float)) ); connect( convert, SIGNAL(timeFinished(float)), progressIndicator, SLOT(timeFinished(float)) ); } soundKonverterView::~soundKonverterView() {} void soundKonverterView::addClicked( int index ) { if( index == 0 ) { showFileDialog(); } else if( index == 1 ) { showDirDialog(); } else if( index == 2 ) { showCdDialog(); } else if( index == 3 ) { showUrlDialog(); } else { showPlaylistDialog(); } } void soundKonverterView::showFileDialog() { FileOpener *dialog = new FileOpener( config, this ); // dialog->resize( size().width() - 10, size().height() ); if( !dialog->dialogAborted ) { connect( dialog, SIGNAL(open(const KUrl::List&,ConversionOptions*)), fileList, SLOT(addFiles(const KUrl::List&,ConversionOptions*)) ); dialog->exec(); disconnect( dialog, SIGNAL(open(const KUrl::List&,ConversionOptions*)), 0, 0 ); fileList->save( false ); } delete dialog; } void soundKonverterView::showDirDialog() { DirOpener *dialog = new DirOpener( config, DirOpener::Convert, this ); if( !dialog->dialogAborted ) { connect( dialog, SIGNAL(open(const KUrl&,bool,const QStringList&,ConversionOptions*)), fileList, SLOT(addDir(const KUrl&,bool,const QStringList&,ConversionOptions*)) ); dialog->exec(); disconnect( dialog, SIGNAL(open(const KUrl&,bool,const QStringList&,ConversionOptions*)), 0, 0 ); fileList->save( false ); } delete dialog; } bool soundKonverterView::showCdDialog( const QString& device, QString _profile, QString _format, const QString& directory, const QString& notifyCommand ) { QString profile = _profile; QString format = _format; cleanupParameters( &profile, &format ); bool success = false; QString message; QStringList errorList; if( !config->pluginLoader()->canDecode("audio cd",&errorList) ) { QList problemList; CodecProblems::Problem problem; problem.codecName = "audio cd"; problem.solutions = errorList; problemList += problem; CodecProblems *problemsDialog = new CodecProblems( CodecProblems::AudioCd, problemList, this ); problemsDialog->exec(); return false; } // create a new CDOpener object for letting the user add some tracks from a CD CDOpener *dialog = new CDOpener( config, device, this ); if( !dialog->noCdFound ) { if( !profile.isEmpty() ) dialog->setProfile( profile ); if( !format.isEmpty() ) dialog->setFormat( format ); if( !directory.isEmpty() ) dialog->setOutputDirectory( directory ); if( !notifyCommand.isEmpty() ) dialog->setCommand( notifyCommand ); connect( dialog, SIGNAL(addTracks(const QString&,QList,int,QList,ConversionOptions*,const QString&)), fileList, SLOT(addTracks(const QString&,QList,int,QList,ConversionOptions*,const QString&)) ); dialog->exec(); disconnect( dialog, SIGNAL(addTracks(const QString&,QList,int,QList,ConversionOptions*,const QString&)), 0, 0 ); if( dialog->result() == QDialog::Accepted ) { success = true; fileList->save( false ); } } else { KMessageBox::error( this, i18n("No CD device found") ); } delete dialog; return success; } void soundKonverterView::showUrlDialog() { UrlOpener *dialog = new UrlOpener( config, this ); connect( dialog, SIGNAL(open(const KUrl::List&,ConversionOptions*)), fileList, SLOT(addFiles(const KUrl::List&,ConversionOptions*)) ); dialog->exec(); disconnect( dialog, SIGNAL(open(const KUrl::List&,ConversionOptions*)), 0, 0 ); delete dialog; fileList->save( false ); } void soundKonverterView::showPlaylistDialog() { PlaylistOpener *dialog = new PlaylistOpener( config, this ); // dialog->resize( size().width() - 10, size().height() ); if( !dialog->dialogAborted ) { connect( dialog, SIGNAL(open(const KUrl::List&,ConversionOptions*)), fileList, SLOT(addFiles(const KUrl::List&,ConversionOptions*)) ); dialog->exec(); disconnect( dialog, SIGNAL(open(const KUrl::List&,ConversionOptions*)), 0, 0 ); fileList->save( false ); } delete dialog; } void soundKonverterView::addConvertFiles( const KUrl::List& urls, QString _profile, QString _format, const QString& directory, const QString& notifyCommand ) { KUrl::List k_urls; QStringList errorList; // codec @0 files @1 solutions QMap< QString, QList > problems; QString fileName; const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; for( int i=0; ipluginLoader()->getCodecFromFile( urls.at(i), &mimeType, checkM4a ); if( codecName == "inode/directory" || config->pluginLoader()->canDecode(codecName,&errorList) ) { k_urls += urls.at(i); } else { fileName = urls.at(i).pathOrUrl(); if( codecName.isEmpty() ) codecName = mimeType; if( codecName.isEmpty() ) codecName = fileName.right(fileName.length()-fileName.lastIndexOf(".")-1); if( problems.value(codecName).count() < 2 ) { problems[codecName] += QStringList(); problems[codecName] += QStringList(); } problems[codecName][0] += fileName; if( !errorList.isEmpty() ) { problems[codecName][1] += errorList; } else { problems[codecName][1] += i18n("This file type is unknown to soundKonverter.\nMaybe you need to install an additional soundKonverter plugin.\nYou should have a look at your distribution's package manager for this."); } } } QList problemList; for( int i=0; i= 0x040500 problems[problem.codecName][1].removeDuplicates(); #else QStringList found; for( int j=0; j 0 ) { CodecProblems *problemsDialog = new CodecProblems( CodecProblems::Decode, problemList, this ); problemsDialog->exec(); } if( k_urls.count() > 0 ) { QString profile = _profile; QString format = _format; cleanupParameters( &profile, &format ); if( !profile.isEmpty() && !format.isEmpty() && !directory.isEmpty() ) { Options *options = new Options( config, "", 0 ); options->hide(); options->setProfile( profile ); options->setFormat( format ); options->setOutputDirectory( directory ); ConversionOptions *conversionOptions = options->currentConversionOptions(); delete options; if( conversionOptions ) { fileList->addFiles( k_urls, conversionOptions, notifyCommand ); } else { // FIXME error message, null pointer for conversion options // KMessageBox::error( this, i18n("Sorry, this shouldn't happen.\n\nPlease report this bug and attach the following error message:\n\nsoundKonverterView::addConvertFiles; Options::currentConversionOptions returned 0"), i18n("Internal error") ); KMessageBox::error( this, "Sorry, this shouldn't happen.\n\nPlease report this bug and attach the following error message:\n\nsoundKonverterView::addConvertFiles; Options::currentConversionOptions returned 0", "Internal error" ); } } else { optionsLayer->addUrls( k_urls ); if( !profile.isEmpty() ) optionsLayer->setProfile( profile ); if( !format.isEmpty() ) optionsLayer->setFormat( format ); if( !directory.isEmpty() ) optionsLayer->setOutputDirectory( directory ); if( !notifyCommand.isEmpty() ) optionsLayer->setCommand( notifyCommand ); optionsLayer->fadeIn(); } } fileList->save( false ); } void soundKonverterView::loadAutosaveFileList() { fileList->load( false ); } void soundKonverterView::startConversion() { fileList->startConversion(); } void soundKonverterView::killConversion() { fileList->killConversion(); } void soundKonverterView::fileCountChanged( int count ) { pStart->setEnabled( count > 0 ); startAction->setEnabled( count > 0 ); } void soundKonverterView::conversionStarted() { pStart->hide(); startAction->setEnabled( false ); pStop->show(); stopActionMenu->setEnabled( true ); emit signalConversionStarted(); } void soundKonverterView::conversionStopped( bool failed ) { pStart->show(); startAction->setEnabled( true ); pStop->hide(); stopActionMenu->setEnabled( false ); emit signalConversionStopped( failed ); } void soundKonverterView::queueModeChanged( bool enabled ) { stopAction->setVisible( enabled ); continueAction->setVisible( !enabled ); } void soundKonverterView::loadFileList( bool user ) { fileList->load( user ); } void soundKonverterView::saveFileList( bool user ) { fileList->save( user ); } void soundKonverterView::updateFileList() { fileList->updateAllItems(); } void soundKonverterView::cleanupParameters( QString *profile, QString *format ) { QString old_profile = *profile; QString old_format = *format; QString new_profile; QString new_format; const QStringList formatList = config->pluginLoader()->formatList( PluginLoader::Encode, PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); if( formatList.contains(old_format) ) { new_format = old_format; } else { foreach( const QString format, formatList ) { if( config->pluginLoader()->codecExtensions(format).contains(old_format) ) { new_format = format; break; } } } if( old_profile.toLower() == i18n("Very low").toLower() || old_profile.toLower() == "very low" || old_profile.toLower() == "very_low" ) { new_profile = i18n("Very low"); new_format = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy)).contains(new_format) ? new_format : ""; } else if( old_profile.toLower() == i18n("Low").toLower() || old_profile.toLower() == "low" ) { new_profile = i18n("Low"); new_format = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy)).contains(new_format) ? new_format : ""; } else if( old_profile.toLower() == i18n("Medium").toLower() || old_profile.toLower() == "medium" ) { new_profile = i18n("Medium"); new_format = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy)).contains(new_format) ? new_format : ""; } else if( old_profile.toLower() == i18n("High").toLower() || old_profile.toLower() == "high" ) { new_profile = i18n("High"); new_format = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy)).contains(new_format) ? new_format : ""; } else if( old_profile.toLower() == i18n("Very high").toLower() || old_profile.toLower() == "very high" || old_profile.toLower() == "very_high" ) { new_profile = i18n("Very high"); new_format = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy)).contains(new_format) ? new_format : ""; } else if( old_profile.toLower() == i18n("Lossless").toLower() || old_profile.toLower() == "lossless" ) { new_profile = i18n("Lossless"); new_format = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Lossless).contains(new_format) ? new_format : ""; } else if( old_profile.toLower() == i18n("Hybrid").toLower() || old_profile.toLower() == "hybrid" ) { new_profile = i18n("Hybrid"); new_format = config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Hybrid).contains(new_format) ? new_format : ""; } else if( config->data.profiles.contains(old_profile) ) { new_profile = old_profile; ConversionOptions *conversionOptions = config->data.profiles.value( new_profile ); if( conversionOptions ) new_format += conversionOptions->codecName; } *profile = new_profile; *format = new_format; } #include "soundkonverterview.moc" ./soundkonverter-2.0.5/PaxHeaders.25599/logger.cpp0000644000175000001440000000006212105142352017763 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/logger.cpp0000644000175000001440000001206212105142352017375 0ustar00danielusers00000000000000 #include "logger.h" #include #include #include #include #include LoggerItem::LoggerItem() {} LoggerItem::~LoggerItem() {} Logger::Logger( QObject *parent) : QObject( parent ) { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "General" ); writeLogFiles = group.readEntry( "writeLogFiles", false ); LoggerItem *item = new LoggerItem(); item->identifier = "soundKonverter"; item->id = 1000; item->completed = true; item->succeeded = true; item->file.setFileName( KStandardDirs::locateLocal("data",QString("soundkonverter/log/%1.log").arg(item->id)) ); if( writeLogFiles ) { // TODO error handling item->file.open( QIODevice::WriteOnly ); item->textStream.setDevice( &(item->file) ); } processes.append( item ); srand( (unsigned)time(NULL) ); } Logger::~Logger() { for( QList::Iterator it = processes.begin(); it != processes.end(); ++it ) { if( (*it)->file.isOpen() ) (*it)->file.close(); if( (*it)->file.exists() ) (*it)->file.remove(); delete *it; } } // void Logger::cleanUp() // { // for( QList::Iterator it = processes.begin(); it != processes.end(); ++it ) // { // if( (*it)->id != 1000 ) // { // emit removedProcess( (*it)->id ); // (*it)->file.close(); // (*it)->file.remove(); // delete *it; // } // } // processes.clear(); // } int Logger::registerProcess( const QString& identifier ) { LoggerItem *item = new LoggerItem(); item->identifier = identifier; item->id = getNewID(); item->completed = false; item->file.setFileName( KStandardDirs::locateLocal("data",QString("soundkonverter/log/%1.log").arg(item->id)) ); if( writeLogFiles ) { // TODO error handling item->file.open( QIODevice::WriteOnly ); item->textStream.setDevice( &(item->file) ); } processes.append( item ); log( item->id, i18n("Identifier") + ": " + item->identifier ); log( item->id, i18n("Log ID") + ": " + QString::number(item->id) ); emit updateProcess( item->id ); return item->id; } void Logger::log( int id, const QString& data ) { for( QList::Iterator it = processes.begin(); it != processes.end(); ++it ) { if( (*it)->id == id ) { (*it)->data.append( data ); if( (*it)->data.count() > 10000 ) (*it)->data.removeFirst(); if( writeLogFiles && (*it)->file.isOpen() ) { (*it)->textStream << data; (*it)->textStream << "\n"; (*it)->textStream.flush(); } if( id == 1000 ) emit updateProcess( id ); return; } } } int Logger::getNewID() { bool ok; int id; do { id = rand(); ok = true; for( QList::Iterator it = processes.begin(); it != processes.end(); ++it ) { if( (*it)->id == id ) ok = false; } } while( !ok ); return id; } LoggerItem* Logger::getLog( int id ) { for( QList::Iterator it = processes.begin(); it != processes.end(); ++it ) { if( (*it)->id == id ) return *it; } return 0; } QList Logger::getLogs() { /* QList items; for( QList::Iterator it = processes.begin(); it != processes.end(); ++it ) { if( (*it)->completed ) items.append( *it ); } return items;*/ return processes; } void Logger::processCompleted( int id, bool succeeded, bool waitingForAlbumGain ) { Q_UNUSED( waitingForAlbumGain ) LoggerItem* removeItem = 0; QTime time = QTime::currentTime(); for( int i=0; itime < time && processes.at(i)->completed && processes.at(i)->succeeded && processes.at(i)->id != 1000 ) { time = processes.at(i)->time; removeItem = processes.at(i); } else if( processes.at(i)->id == id ) { processes.at(i)->succeeded = succeeded; processes.at(i)->completed = true; processes.at(i)->time = processes.at(i)->time.currentTime(); processes.at(i)->data.append( i18n("Finished logging") ); if( processes.at(i)->file.isOpen() ) { processes.at(i)->textStream << i18n("Finished logging"); processes.at(i)->file.close(); } emit updateProcess( id ); } } if( removeItem && processes.count() > 11 ) { emit removedProcess( removeItem->id ); if( removeItem->file.exists() ) removeItem->file.remove(); processes.removeAt( processes.indexOf(removeItem) ); delete removeItem; } } void Logger::updateWriteSetting( bool _writeLogFiles ) { writeLogFiles = _writeLogFiles; } ./soundkonverter-2.0.5/PaxHeaders.25599/replaygainscanner0000644000175000001440000000012012255306740021434 xustar000000000000000030 mtime=1387630048.572961897 20 atime=1357667220 30 ctime=1387631578.234422361 ./soundkonverter-2.0.5/replaygainscanner/0000755000175000001440000000000012255306740021127 5ustar00danielusers00000000000000./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainfilelist.cpp0000644000175000001440000000013212255306740026107 xustar000000000000000030 mtime=1387630048.572961897 30 atime=1387630048.571961909 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/replaygainscanner/replaygainfilelist.cpp0000755000175000001440000011106212255306740025526 0ustar00danielusers00000000000000 #include "replaygainfilelist.h" #include "logger.h" #include "config.h" #include "codecproblems.h" #include #include #include #include #include #include #include #include #include ReplayGainFileList::ReplayGainFileList( Config *_config, Logger *_logger, QWidget *parent ) : QTreeWidget( parent ), config( _config ), logger( _logger ) { queue = false; lastAlbumItem = 0; setAcceptDrops( true ); setDragEnabled( true ); setItemDelegate( new ReplayGainFileListItemDelegate(this) ); setColumnCount( 3 ); QStringList labels; labels.append( i18n("File") ); labels.append( i18n("Track") ); labels.append( i18n("Album") ); setHeaderLabels( labels ); // header()->setClickEnabled( false ); setSelectionBehavior( QAbstractItemView::SelectRows ); setSelectionMode( QAbstractItemView::ExtendedSelection ); setSortingEnabled( false ); setDragDropMode( QAbstractItemView::InternalMove ); QGridLayout *grid = new QGridLayout( this ); grid->setRowStretch( 0, 1 ); grid->setRowStretch( 2, 1 ); grid->setColumnStretch( 0, 1 ); grid->setColumnStretch( 2, 1 ); pScanStatus = new QProgressBar( this ); pScanStatus->setMinimumHeight( pScanStatus->height() ); pScanStatus->setFormat( "%v / %m" ); pScanStatus->hide(); grid->addWidget( pScanStatus, 1, 1 ); grid->setColumnStretch( 1, 2 ); collapseAction = new KAction( KIcon("view-process-all"), i18n("Collapse all"), this ); collapseAction->setShortcut( Qt::CTRL | Qt::Key_Minus ); connect( collapseAction, SIGNAL(triggered()), this, SLOT(collapseAll()) ); addAction( collapseAction ); expandAction = new KAction( KIcon("view-process-all-tree"), i18n("Expand all"), this ); expandAction->setShortcut( Qt::CTRL | Qt::Key_Plus ); connect( expandAction, SIGNAL(triggered()), this, SLOT(expandAll()) ); addAction( expandAction ); // processAddAction = new KAction( KIcon("list-add"), i18n("Calculate Replay Gain"), this ); // connect( processAddAction, SIGNAL(triggered()), this, SLOT(processAddSelectedItems()) ); // processRemoveAction = new KAction( KIcon("list-remove"), i18n("Remove Replay Gain"), this ); // connect( processRemoveAction, SIGNAL(triggered()), this, SLOT(processRemoveSelectedItems()) ); // killAction = new KAction( KIcon("process-stop"), i18n("Stop calculation"), this ); // connect( killAction, SIGNAL(triggered()), this, SLOT(killSelectedItems()) ); moveAction = new KAction( KIcon ("folder-new"), i18n("Move to new Album"), this ); connect( moveAction, SIGNAL(triggered()), this, SLOT(moveSelectedItems()) ); removeAction = new KAction( KIcon("edit-delete"), i18n("Remove"), this ); removeAction->setShortcut( QKeySequence::Delete ); connect( removeAction, SIGNAL(triggered()), this, SLOT(removeSelectedItems()) ); addAction( removeAction ); contextMenu = new QMenu( this ); setContextMenuPolicy( Qt::CustomContextMenu ); connect( this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showContextMenu(const QPoint&)) ); } ReplayGainFileList::~ReplayGainFileList() {} void ReplayGainFileList::dragEnterEvent( QDragEnterEvent *event ) { if( event->mimeData()->hasFormat("text/uri-list") || event->source() == this ) event->acceptProposedAction(); } void ReplayGainFileList::dragMoveEvent( QDragMoveEvent *event ) { if( itemAt(event->pos()) && static_cast(itemAt(event->pos()))->type != ReplayGainFileListItem::Track ) QTreeWidget::dragMoveEvent(event); } void ReplayGainFileList::dropEvent( QDropEvent *event ) { const QList q_urls = event->mimeData()->urls(); KUrl::List k_urls; KUrl::List k_urls_dirs; QStringList errorList; // codec @0 files @1 solutions QMap< QString, QList > problems; QString fileName; if( event->source() == this ) { ReplayGainFileListItem *destination = static_cast(itemAt(event->pos())); if( !destination ) { QTreeWidget::dropEvent(event); } else { bool canDrop = true; if( destination->type == ReplayGainFileListItem::Album ) { QList q_items = selectedItems(); foreach( QTreeWidgetItem *q_item, q_items ) { ReplayGainFileListItem *item = (ReplayGainFileListItem*)q_item; if( item->codecName != destination->codecName || item->samplingRate != destination->samplingRate ) { canDrop = false; break; } } } if( canDrop ) { QTreeWidget::dropEvent(event); } else { KMessageBox::error( this, i18n("Some tracks can't be added to the album because either the codec or the sampling rate is different.") ); } } // remove album, if last child was dragged out of it for( int i=0; itype == ReplayGainFileListItem::Album ) { if( item->childCount() == 0 ) { delete item; i--; } } } } else { const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; foreach( QUrl url, q_urls ) { QString mimeType; QString codecName = config->pluginLoader()->getCodecFromFile( url, &mimeType, checkM4a ); if( mimeType == "inode/directory" ) { k_urls_dirs += url; } else if( config->pluginLoader()->canReplayGain(codecName,0,&errorList) ) { k_urls += url; } else { if( codecName.isEmpty() && !mimeType.startsWith("audio") && !mimeType.startsWith("video") && !mimeType.startsWith("application") ) continue; if( mimeType == "application/x-ole-storage" || // Thumbs.db mimeType == "application/x-wine-extension-ini" || mimeType == "application/x-cue" || mimeType == "application/x-k3b" || mimeType == "application/pdf" || mimeType == "application/x-trash" || mimeType.startsWith("application/vnd.oasis.opendocument") || mimeType.startsWith("application/vnd.openxmlformats-officedocument") || mimeType.startsWith("application/vnd.sun.xml") ) continue; fileName = KUrl(url).pathOrUrl(); if( codecName.isEmpty() ) codecName = mimeType; if( codecName.isEmpty() ) codecName = fileName.right(fileName.length()-fileName.lastIndexOf(".")-1); if( problems.value(codecName).count() < 2 ) { problems[codecName] += QStringList(); problems[codecName] += QStringList(); } problems[codecName][0] += fileName; if( !errorList.isEmpty() ) { problems[codecName][1] += errorList; } else { problems[codecName][1] += i18n("This file type is unknown to soundKonverter.\nMaybe you need to install an additional soundKonverter plugin.\nYou should have a look at your distribution's package manager for this."); } } } QList problemList; for( int i=0; i= 0x040500 problems[problem.codecName][1].removeDuplicates(); #else QStringList found; for( int j=0; j 0 ) { CodecProblems *problemsDialog = new CodecProblems( CodecProblems::ReplayGain, problemList, this ); problemsDialog->exec(); } if( k_urls.count() > 0 ) { addFiles( k_urls ); } foreach( KUrl url, k_urls_dirs ) { addDir( url, true, config->pluginLoader()->formatList(PluginLoader::ReplayGain,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)) ); } event->acceptProposedAction(); } } void ReplayGainFileList::resizeEvent( QResizeEvent *event ) { if( event->size().width() < 300 ) return; setColumnWidth( Column_File, event->size().width()-160 ); setColumnWidth( Column_Track, 80 ); setColumnWidth( Column_Album, 80 ); } int ReplayGainFileList::countDir( const QString& directory, bool recursive, int count ) { QDir dir( directory ); dir.setFilter( QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Readable ); dir.setSorting( QDir::Unsorted ); count += dir.count(); if( recursive ) { dir.setFilter( QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Readable ); const QStringList list = dir.entryList(); foreach( const QString fileName, list ) { count = countDir( directory + "/" + fileName, recursive, count ); } } if( tScanStatus.elapsed() > ConfigUpdateDelay * 10 ) { pScanStatus->setMaximum( count ); kapp->processEvents(); tScanStatus.start(); } return count; } int ReplayGainFileList::listDir( const QString& directory, const QStringList& filter, bool recursive, int count ) { QString codecName; QDir dir( directory ); dir.setFilter( QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Readable ); dir.setSorting( QDir::LocaleAware ); const QStringList list = dir.entryList(); const bool containsAac = filter.contains("m4a/aac"); const bool containsAlac = filter.contains("m4a/alac"); const bool checkM4a = ( containsAac || containsAlac ) && containsAac != containsAlac; foreach( const QString fileName, list ) { QFileInfo fileInfo( directory + "/" + fileName ); const bool isDir = fileInfo.isDir(); // NOTE checking for isFile might not work with all file names if( isDir && recursive ) { count = listDir( directory + "/" + fileName, filter, recursive, count ); } else if( !isDir ) { count++; codecName = config->pluginLoader()->getCodecFromFile( directory + "/" + fileName, 0, checkM4a ); if( filter.contains(codecName) ) { addFiles( KUrl(directory + "/" + fileName), codecName ); } if( tScanStatus.elapsed() > ConfigUpdateDelay * 10 ) { pScanStatus->setValue( count ); tScanStatus.start(); } } } return count; } void ReplayGainFileList::addFiles( const KUrl::List& fileList, const QString& _codecName ) { ReplayGainFileListItem *newAlbumItem, *newTrackItem; QString codecName; foreach( KUrl url, fileList ) { if( !_codecName.isEmpty() ) { codecName = _codecName; } else { const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; codecName = config->pluginLoader()->getCodecFromFile( url, 0, checkM4a ); if( !config->pluginLoader()->canReplayGain(codecName,0) ) continue; } TagData *tags = config->tagEngine()->readTags( url ); const int length = tags ? tags->length : 200; const int samplingRate = tags ? tags->samplingRate : 0; if( tags && !tags->album.simplified().isEmpty() ) { newAlbumItem = 0; newTrackItem = 0; // search for an existing album for( int j=0; jtype == ReplayGainFileListItem::Album && topLevelItem(j)->codecName == codecName && topLevelItem(j)->samplingRate == samplingRate && ( ( config->data.general.replayGainGrouping == Config::Data::General::AlbumDirectory && topLevelItem(j)->albumName == tags->album && topLevelItem(j)->url.toLocalFile() == url.directory() ) || ( config->data.general.replayGainGrouping == Config::Data::General::Album && topLevelItem(j)->albumName == tags->album ) || ( config->data.general.replayGainGrouping == Config::Data::General::Directory && topLevelItem(j)->url.toLocalFile() == url.directory() ) ) ) { newTrackItem = new ReplayGainFileListItem( topLevelItem(j) ); newTrackItem->type = ReplayGainFileListItem::Track; newTrackItem->codecName = codecName; newTrackItem->samplingRate = samplingRate; newTrackItem->url = url; newTrackItem->tags = tags; newTrackItem->length = length; break; } } // no existing album found if( !newTrackItem ) { // create album element newAlbumItem = new ReplayGainFileListItem( this, lastAlbumItem ); newAlbumItem->type = ReplayGainFileListItem::Album; newAlbumItem->codecName = codecName; newAlbumItem->samplingRate = samplingRate; newAlbumItem->url = url.directory(); if( config->data.general.replayGainGrouping == Config::Data::General::AlbumDirectory ) { newAlbumItem->albumName = tags->album; newAlbumItem->setToolTip( Column_File, url.directory() ); } else if( config->data.general.replayGainGrouping == Config::Data::General::Album ) { newAlbumItem->albumName = tags->album; } else { newAlbumItem->albumName = url.directory(); } newAlbumItem->setExpanded( true ); newAlbumItem->setFlags( newAlbumItem->flags() ^ Qt::ItemIsDragEnabled ); lastAlbumItem = newAlbumItem; updateItem( newAlbumItem, true ); // create track element newTrackItem = new ReplayGainFileListItem( newAlbumItem ); newTrackItem->type = ReplayGainFileListItem::Track; newTrackItem->codecName = codecName; newTrackItem->samplingRate = samplingRate; newTrackItem->url = url; newTrackItem->tags = tags; newTrackItem->length = length; } } else { newTrackItem = new ReplayGainFileListItem( this ); newTrackItem->type = ReplayGainFileListItem::Track; newTrackItem->codecName = codecName; newTrackItem->samplingRate = samplingRate; newTrackItem->url = url; newTrackItem->tags = tags; newTrackItem->length = length; } updateItem( newTrackItem, true ); emit timeChanged( newTrackItem->length ); } // emit fileCountChanged( topLevelItemCount() ); } void ReplayGainFileList::addDir( const KUrl& directory, bool recursive, const QStringList& codecList ) { pScanStatus->setValue( 0 ); pScanStatus->setMaximum( 0 ); pScanStatus->show(); // show the status while scanning the directories tScanStatus.start(); const int count = countDir( directory.toLocalFile(), recursive ); pScanStatus->setMaximum( count ); kapp->processEvents(); listDir( directory.toLocalFile(), codecList, recursive ); pScanStatus->hide(); // hide the status bar, when the scan is done } void ReplayGainFileList::updateItem( ReplayGainFileListItem *item, bool initialUpdate ) { if( !item ) return; if( item->type == ReplayGainFileListItem::Album ) { item->setText( Column_File, item->albumName + " (" + item->codecName + ", " + QString::number(item->samplingRate) + " Hz)" ); } else { if( config->data.general.replayGainGrouping == Config::Data::General::Album ) item->setText( Column_File, item->url.pathOrUrl() ); else item->setText( Column_File, item->url.fileName() ); if( item->tags && item->tags->tagsRead & TagData::TrackGain ) { item->setText( Column_Track, QString().sprintf("%+.2f dB",item->tags->trackGain) ); } else { item->setText( Column_Track, "?" ); } if( item->tags && item->tags->tagsRead & TagData::AlbumGain ) { item->setText( Column_Album, QString().sprintf("%+.2f dB",item->tags->albumGain) ); } else { item->setText( Column_Album, "?" ); } } if( !initialUpdate ) { update( indexFromItem( item, 0 ) ); update( indexFromItem( item, 1 ) ); update( indexFromItem( item, 2 ) ); } } void ReplayGainFileList::startProcessing( ReplayGainPlugin::ApplyMode _mode ) { // iterate through all items and set the state to "Waiting" ReplayGainFileListItem *item, *child; for( int i=0; itype == ReplayGainFileListItem::Track ) { bool isStopped = false; if( item ) { switch( item->state ) { case ReplayGainFileListItem::Waiting: break; case ReplayGainFileListItem::Processing: break; case ReplayGainFileListItem::Stopped: isStopped = true; break; } } if( isStopped ) { item->state = ReplayGainFileListItem::Waiting; updateItem( item ); } } else { for( int j=0; jchildCount(); j++ ) { child = (ReplayGainFileListItem*)item->child(j); bool isStopped = false; if( child ) { switch( child->state ) { case ReplayGainFileListItem::Waiting: break; case ReplayGainFileListItem::Processing: break; case ReplayGainFileListItem::Stopped: isStopped = true; break; } } if( isStopped ) { child->state = ReplayGainFileListItem::Waiting; updateItem( child ); } } bool isStopped = false; if( item ) { switch( item->state ) { case ReplayGainFileListItem::Waiting: break; case ReplayGainFileListItem::Processing: break; case ReplayGainFileListItem::Stopped: isStopped = true; break; } } if( isStopped ) { item->state = ReplayGainFileListItem::Waiting; updateItem( item ); } } } mode = _mode; queue = true; // emit queueModeChanged( queue ); emit processStarted(); processNextItem(); } void ReplayGainFileList::cancelProcess() { queue = false; // emit queueModeChanged( queue ); ReplayGainFileListItem *item, *child; for( int i=0; itype == ReplayGainFileListItem::Track ) { bool canKill = false; if( item ) { switch( item->state ) { case ReplayGainFileListItem::Waiting: break; case ReplayGainFileListItem::Processing: canKill = true; break; case ReplayGainFileListItem::Stopped: break; } } if( canKill ) emit killItem( item ); } else { bool canKill = false; if( item ) { switch( item->state ) { case ReplayGainFileListItem::Waiting: break; case ReplayGainFileListItem::Processing: canKill = true; break; case ReplayGainFileListItem::Stopped: break; } } if( canKill ) { emit killItem( item ); } else { for( int j=0; jchildCount(); j++ ) { child = (ReplayGainFileListItem*)item->child(j); bool canKill = false; if( child ) { switch( child->state ) { case ReplayGainFileListItem::Waiting: break; case ReplayGainFileListItem::Processing: canKill = true; break; case ReplayGainFileListItem::Stopped: break; } } if( canKill ) emit killItem( child ); } } } } } void ReplayGainFileList::processNextItem() { if( !queue ) return; int count = processingCount(); // look for waiting files for( int i=0; idata.general.numReplayGainFiles; i++ ) { ReplayGainFileListItem *item = topLevelItem(i); bool calcGain = false; if( item->state != ReplayGainFileListItem::Waiting ) continue; if( item->type == ReplayGainFileListItem::Track ) { if( mode == ReplayGainPlugin::Force || mode == ReplayGainPlugin::Remove || !item->tags || !(item->tags->tagsRead & TagData::TrackGain) || !(item->tags->tagsRead & TagData::AlbumGain) ) calcGain = true; } else { bool albumGainDifferent = false; bool childProcessing = false; float albumGain = 0; for( int j=0; jchildCount(); j++ ) { ReplayGainFileListItem *child = (ReplayGainFileListItem*)item->child(j); if( child->state != ReplayGainFileListItem::Waiting ) { childProcessing = true; break; } if( j == 0 ) { if( child->tags && child->tags->tagsRead & TagData::AlbumGain ) { albumGain = child->tags->albumGain; } else { albumGainDifferent = true; break; } } else if( !child->tags || child->tags->albumGain != albumGain || !(child->tags->tagsRead & TagData::AlbumGain) ) { albumGainDifferent = true; break; } } if( mode == ReplayGainPlugin::Force || mode == ReplayGainPlugin::Remove || ( !childProcessing && albumGainDifferent ) ) calcGain = true; } if( calcGain ) { if( item->type == ReplayGainFileListItem::Album ) { for( int j=0; jchildCount(); j++ ) { ReplayGainFileListItem *child = (ReplayGainFileListItem*)item->child(j); child->state = ReplayGainFileListItem::Processing; updateItem( child ); } } item->state = ReplayGainFileListItem::Processing; updateItem( item ); count++; emit processItem( item, mode ); } else { if( item->type == ReplayGainFileListItem::Album ) { for( int j=0; jchildCount(); j++ ) { ReplayGainFileListItem *child = (ReplayGainFileListItem*)item->child(j); if( child->state == ReplayGainFileListItem::Waiting ) { child->state = ReplayGainFileListItem::Stopped; child->returnCode = ReplayGainFileListItem::Skipped; } } } item->state = ReplayGainFileListItem::Stopped; item->returnCode = ReplayGainFileListItem::Skipped; } } if( count == 0 ) itemFinished( 0, ReplayGainFileListItem::Succeeded ); } int ReplayGainFileList::waitingCount() { int count = 0; ReplayGainFileListItem *item; for( int i=0; istate == ReplayGainFileListItem::Waiting ) count++; } return count; } int ReplayGainFileList::processingCount() // TODO use ReplayGainProcessor { ReplayGainFileListItem *item, *child; int count = 0; for( int i=0; itype == ReplayGainFileListItem::Track ) { if( item->state == ReplayGainFileListItem::Processing ) count++; } else if( item->type == ReplayGainFileListItem::Album ) { if( item->state == ReplayGainFileListItem::Processing ) { count++; } else { for( int j=0; jchildCount(); j++ ) { child = (ReplayGainFileListItem*)item->child(j); if( child->state == ReplayGainFileListItem::Processing ) { count++; break; } } } } } return count; } void ReplayGainFileList::itemFinished( ReplayGainFileListItem *item, ReplayGainFileListItem::ReturnCode returnCode ) { if( item ) { item->state = ReplayGainFileListItem::Stopped; item->returnCode = returnCode; if( item->type == ReplayGainFileListItem::Track ) item->tags = config->tagEngine()->readTags( item->url ); updateItem( item ); if( item->type == ReplayGainFileListItem::Album ) { for( int j=0; jchildCount(); j++ ) { ReplayGainFileListItem *child = (ReplayGainFileListItem*)item->child(j); child->state = ReplayGainFileListItem::Stopped; child->returnCode = returnCode; child->tags = config->tagEngine()->readTags( child->url ); updateItem( child ); } } } if( waitingCount() > 0 && queue ) { processNextItem(); } else if( processingCount() == 0 ) { queue = false; // emit queueModeChanged( queue ); // float time = 0; // for( int i=0; ilength; // } // emit finished( time ); emit finished( false ); emit processStopped(); // emit fileCountChanged( topLevelItemCount() ); } } void ReplayGainFileList::showContextMenu( const QPoint& point ) { QList q_items = selectedItems(); bool canRemove = q_items.count() > 0; bool canStart = q_items.count() > 0; bool canMove = q_items.count() > 0; bool canKill = q_items.count() > 0; foreach( QTreeWidgetItem *q_item, q_items ) { ReplayGainFileListItem *item = (ReplayGainFileListItem*)q_item; if( item->type == ReplayGainFileListItem::Track ) { switch( item->state ) { case ReplayGainFileListItem::Waiting: canKill = false; break; case ReplayGainFileListItem::Processing: canRemove = false; canStart = false; canMove = false; break; case ReplayGainFileListItem::Stopped: canKill = false; break; } } else { canMove = false; if( item->state == ReplayGainFileListItem::Processing ) { canRemove = false; canStart = false; } else { for( int j=0; jchildCount(); j++ ) { ReplayGainFileListItem *child = (ReplayGainFileListItem*)item->child(j); switch( child->state ) { case ReplayGainFileListItem::Waiting: canKill = false; break; case ReplayGainFileListItem::Processing: canRemove = false; canStart = false; break; case ReplayGainFileListItem::Stopped: canKill = false; break; } } } } } contextMenu->clear(); contextMenu->addAction( collapseAction ); contextMenu->addAction( expandAction ); // if( canStart || canKill ) // { // contextMenu->addSeparator(); // } // if( canStart ) // { // contextMenu->addAction( processAddAction ); // contextMenu->addAction( processRemoveAction ); // } // if( canKill ) // { // contextMenu->addAction( killAction ); // } if( canMove ) { contextMenu->addSeparator(); contextMenu->addAction( moveAction ); } if( canRemove ) { contextMenu->addSeparator(); contextMenu->addAction( removeAction ); } contextMenu->popup( viewport()->mapToGlobal(point) ); } // void ReplayGainFileList::processAddSelectedItems() // { // foreach( QTreeWidgetItem *q_item, selectedItems() ) // { // ReplayGainFileListItem *item = (ReplayGainFileListItem*)q_item; // // if( item->type == ReplayGainFileListItem::Track ) // { // if( item->state != ReplayGainFileListItem::Processing ) // { // } // } // else // { // if( item->state != ReplayGainFileListItem::Processing ) // { // } // else // { // for( int j=0; jchildCount(); j++ ) // { // ReplayGainFileListItem *child = (ReplayGainFileListItem*)item->child(j); // // } // } // } // emit processItem( item, ReplayGainPlugin::Force ); // } // } // void ReplayGainFileList::processRemoveSelectedItems() // { // foreach( QTreeWidgetItem *q_item, selectedItems() ) // { // ReplayGainFileListItem *item = (ReplayGainFileListItem*)q_item; // // emit processItem( item, ReplayGainPlugin::Remove ); // } // } // void ReplayGainFileList::killSelectedItems() // { // // } void ReplayGainFileList::moveSelectedItems() { ReplayGainFileListItem *newAlbumItem = 0; const QList q_items = selectedItems(); foreach( QTreeWidgetItem *q_item, q_items ) { ReplayGainFileListItem *item = dynamic_cast(q_item); if( !item ) continue; if( !newAlbumItem ) { newAlbumItem = new ReplayGainFileListItem( this ); newAlbumItem->type = ReplayGainFileListItem::Album; newAlbumItem->albumName = i18n("New album"); newAlbumItem->codecName = item->codecName; newAlbumItem->samplingRate = item->samplingRate; newAlbumItem->url = KUrl(item->url.directory()); newAlbumItem->setExpanded( true ); newAlbumItem->setFlags( newAlbumItem->flags() ^ Qt::ItemIsDragEnabled ); } if( item->codecName == newAlbumItem->codecName && item->samplingRate == newAlbumItem->samplingRate ) { if( item->parent() ) item->parent()->takeChild( item->parent()->indexOfChild(q_item) ); else takeTopLevelItem( indexOfTopLevelItem(q_item) ); newAlbumItem->addChild( q_item ); } } if( newAlbumItem ) updateItem( newAlbumItem ); } void ReplayGainFileList::removeSelectedItems() { ReplayGainFileListItem *item, *child; for( int i=0; itype == ReplayGainFileListItem::Track && item->isSelected() && item->state != ReplayGainFileListItem::Processing ) { emit timeChanged( -item->length ); delete item; i--; } else if( item->type == ReplayGainFileListItem::Album ) { for( int j=0; jchildCount(); j++ ) { child = (ReplayGainFileListItem*)item->child(j); if( child->type == ReplayGainFileListItem::Track && ( child->isSelected() || item->isSelected() ) && child->state != ReplayGainFileListItem::Processing ) { emit timeChanged( -child->length ); delete child; j--; } } if( item->childCount() == 0 ) { delete item; i--; } } } } ./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainfilelist.h0000644000175000001440000000006212105142357025552 xustar000000000000000020 atime=1360315631 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/replaygainscanner/replaygainfilelist.h0000755000175000001440000000664412105142357025200 0ustar00danielusers00000000000000 #ifndef REPLAYGAINFILELIST_H #define REPLAYGAINFILELIST_H #include "replaygainfilelistitem.h" #include "core/replaygainplugin.h" #include #include class Config; class Logger; class ConversionOptions; class QProgressBar; class KAction; // class QMenu; // NOTE Currently only one plugin can run at a time. If there should run more than one plugin simultaniously in the future seom things have to be rewritten. // - Like identifying items not only by their processId but also by the plugin, // - Qeue management /** * @short The file list of the Replay Gain scanner * @author Daniel Faust * @version 1.0 */ class ReplayGainFileList : public QTreeWidget { Q_OBJECT public: enum Columns { Column_File = 0, Column_Track = 1, Column_Album = 2 }; /** Constructor */ ReplayGainFileList( Config *_config, Logger *_logger, QWidget *parent=0 ); /** Destructor */ ~ReplayGainFileList(); ReplayGainFileListItem *topLevelItem( int index ) const { return static_cast( QTreeWidget::topLevelItem(index) ); } void addFiles( const KUrl::List& fileList, const QString& _codecName = "" ); void startProcessing( ReplayGainPlugin::ApplyMode _mode ); void removeAllReplayGain(); void cancelProcess(); private: Config *config; Logger *logger; /** Counts all files in a directory */ int countDir( const QString& directory, bool recursive, int count = 0 ); /** Lists all files in a directory and adds them to the file list */ int listDir( const QString& directory, const QStringList& filter, bool recursive, int count = 0 ); /** A progressbar, that is shown, when a directory is added recursive */ QProgressBar *pScanStatus; /** Update timer for the scan status */ QTime tScanStatus; void dragEnterEvent( QDragEnterEvent *event ); void dragMoveEvent( QDragMoveEvent *event ); void dropEvent( QDropEvent *event ); void resizeEvent( QResizeEvent *event ); bool queue; // NOTE currently always true ReplayGainPlugin::ApplyMode mode; QTreeWidgetItem *lastAlbumItem; QMenu *contextMenu; KAction *collapseAction; KAction *expandAction; // KAction *processAddAction; // KAction *processRemoveAction; // KAction *killAction; KAction *moveAction; KAction *removeAction; void processNextItem(); int waitingCount(); int processingCount(); void updateItem( ReplayGainFileListItem *item, bool initialUpdate = false ); public slots: void addDir( const KUrl& directory, bool recursive, const QStringList& codecList ); private slots: void showContextMenu( const QPoint& point ); // void processAddSelectedItems(); // void processRemoveSelectedItems(); // void killSelectedItems(); void moveSelectedItems(); void removeSelectedItems(); // connected to ReplayGainProcessor void itemFinished( ReplayGainFileListItem *item, ReplayGainFileListItem::ReturnCode returnCode ); signals: // connected to ProgressIndicator void timeChanged( float timeDelta ); void finished( bool reset ); // connected to ReplayGainScanner void processStarted(); void processStopped(); // connected to ReplayGainProcessor void processItem( ReplayGainFileListItem *item, ReplayGainPlugin::ApplyMode mode ); void killItem( ReplayGainFileListItem *item ); }; #endif // REPLAYGAINFILELIST_H ./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainprocessor.cpp0000644000175000001440000000006212106405146026310 xustar000000000000000020 atime=1360661094 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/replaygainscanner/replaygainprocessor.cpp0000644000175000001440000002507112106405146025726 0ustar00danielusers00000000000000 #include "replaygainprocessor.h" #include "config.h" #include "logger.h" #include "core/replaygainplugin.h" #include "replaygainfilelist.h" #include "global.h" #include #include #include ReplayGainProcessorItem::ReplayGainProcessorItem( ReplayGainFileListItem *_fileListItem ) : fileListItem( _fileListItem ) { backendPlugin = 0; backendID = -1; take = 0; killed = false; time = 0; } ReplayGainProcessorItem::~ReplayGainProcessorItem() {} ReplayGainProcessor::ReplayGainProcessor( Config *_config, ReplayGainFileList *_fileList, Logger *_logger ) : config( _config ), fileList( _fileList ), logger( _logger ) { connect( &updateTimer, SIGNAL(timeout()), this, SLOT(updateProgress()) ); QList replaygainPlugins = config->pluginLoader()->getAllReplayGainPlugins(); for( int i=0; ilog( item->logID, "
" + i18n("Applying Replay Gain") ); if( item->take > item->replaygainPipes.count() - 1 ) { logger->log( item->logID, "\t" + i18n("No more backends left to try :(") ); remove( item, ReplayGainFileListItem::Failed ); return; } item->backendPlugin = item->replaygainPipes.at(item->take).plugin; KUrl::List urlList; if( item->fileListItem->type == ReplayGainFileListItem::Track ) { urlList.append( item->fileListItem->url ); // item->fileListItem->state = ReplayGainFileListItem::Processing; } else { for( int j=0; jfileListItem->childCount(); j++ ) { ReplayGainFileListItem *child = (ReplayGainFileListItem*)item->fileListItem->child(j); urlList.append( child->url ); // child->state = ReplayGainFileListItem::Processing; } } item->backendID = qobject_cast(item->backendPlugin)->apply( urlList, item->mode ); if( item->backendID < 100 ) { switch( item->backendID ) { case BackendPlugin::BackendNeedsConfiguration: { logger->log( item->logID, "\t" + i18n("Replay Gain failed. The used backend needs to be configured properly.") ); remove( item, ReplayGainFileListItem::BackendNeedsConfiguration ); break; } case BackendPlugin::FeatureNotSupported: { logger->log( item->logID, "\t" + i18n("Replay Gain failed. The preferred plugin lacks support for a necessary feature.") ); item->take++; replaygain( item ); break; } case BackendPlugin::UnknownError: { logger->log( item->logID, "\t" + i18n("Replay Gain failed. Unknown Error.") ); item->take++; replaygain( item ); break; } } } else { if( !updateTimer.isActive() ) updateTimer.start( ConfigUpdateDelay ); } } void ReplayGainProcessor::pluginProcessFinished( int id, int exitCode ) { if( QObject::sender() == 0 ) { logger->log( 1000, QString("Error: pluginProcessFinished was called from a null sender. Exit code: %1").arg(exitCode) ); return; } foreach( ReplayGainProcessorItem *item, items ) { if( item->backendPlugin && item->backendPlugin == QObject::sender() && item->backendID == id ) { item->backendID = -1; if( item->killed ) { remove( item, ReplayGainFileListItem::StoppedByUser ); return; } if( exitCode == 0 ) { remove( item, ReplayGainFileListItem::Succeeded ); } else { logger->log( item->logID, "\t" + i18n("Replay Gain failed. Exit code: %1",exitCode) ); item->take++; replaygain( item ); } } } } void ReplayGainProcessor::pluginLog( int id, const QString& message ) { // log all cached logs that can be logged now for( int i=0; ibackendPlugin && items.at(j)->backendPlugin == pluginLogQueue.at(i).plugin && items.at(j)->backendID == pluginLogQueue.at(i).id ) { for( int k=0; klog( items.at(j)->logID, pluginLogQueue.at(i).messages.at(k) ); } pluginLogQueue.removeAt(i); i--; break; } } } if( message.trimmed().isEmpty() ) return; // search the matching process for( int i=0; ibackendPlugin && items.at(i)->backendPlugin == QObject::sender() && items.at(i)->backendID == id ) { logger->log( items.at(i)->logID, message ); return; } } // if the process can't be found; add to the log queue for( int i=0; i(QObject::sender()); newLog.id = id; newLog.messages = QStringList(message); pluginLogQueue += newLog; // logger->log( 1000, qobject_cast(QObject::sender())->name() + ": " + message.trimmed().replace("\n","\n\t") ); } void ReplayGainProcessor::add( ReplayGainFileListItem* fileListItem, ReplayGainPlugin::ApplyMode mode ) { QString identifier; if( fileListItem->type == ReplayGainFileListItem::Track ) { identifier = fileListItem->url.toLocalFile(); } else { identifier = config->data.general.replayGainGrouping == Config::Data::General::Directory ? fileListItem->url.pathOrUrl().right(fileListItem->url.pathOrUrl().length()-fileListItem->url.pathOrUrl().lastIndexOf("/")-1) : fileListItem->albumName; } logger->log( 1000, i18n("Adding new item to Replay Gain processing list: '%1'",identifier) ); ReplayGainProcessorItem *newItem = new ReplayGainProcessorItem( fileListItem ); items.append( newItem ); newItem->mode = mode; // register at the logger newItem->logID = logger->registerProcess( i18n("Replay Gain for %1",identifier) ); logger->log( 1000, "\t" + i18n("Got log ID: %1",newItem->logID) ); if( fileListItem->type == ReplayGainFileListItem::Track ) { newItem->time = fileListItem->length; } else { for( int j=0; jfileListItem->childCount(); j++ ) { ReplayGainFileListItem *child = (ReplayGainFileListItem*)newItem->fileListItem->child(j); newItem->time += child->length; } } newItem->replaygainPipes = config->pluginLoader()->getReplayGainPipes( fileListItem->codecName ); logger->log( newItem->logID, "\t" + i18n("Possible Replay Gain backends:") ); for( int i=0; ireplaygainPipes.size(); i++ ) { logger->log( newItem->logID, "\t\t" + newItem->replaygainPipes.at(i).plugin->name() ); } // (visual) feedback // fileListItem->state = ReplayGainFileListItem::Processing; newItem->progressedTime.start(); // and start replaygain( newItem ); } void ReplayGainProcessor::remove( ReplayGainProcessorItem *item, ReplayGainFileListItem::ReturnCode returnCode ) { QString exitMessage; if( returnCode == ReplayGainFileListItem::Succeeded && item->take > 0 ) returnCode = ReplayGainFileListItem::SucceededWithProblems; switch( returnCode ) { case ReplayGainFileListItem::Succeeded: exitMessage = i18nc("Conversion exit status","Normal exit"); break; case ReplayGainFileListItem::SucceededWithProblems: exitMessage = i18nc("Conversion exit status","Succeeded but problems occurred"); break; case ReplayGainFileListItem::StoppedByUser: exitMessage = i18nc("Conversion exit status","Aborted by the user"); break; case ReplayGainFileListItem::BackendNeedsConfiguration: exitMessage = i18nc("Conversion exit status","Backend needs configuration"); break; case ReplayGainFileListItem::Skipped: exitMessage = i18nc("Conversion exit status","Skipped"); break; case ReplayGainFileListItem::Failed: exitMessage = i18nc("Conversion exit status","An error occurred"); break; } logger->log( item->logID, "
" + i18n("Removing file from conversion list. Exit code %1 (%2)",returnCode,exitMessage) ); emit timeFinished( (float)item->time ); emit finished( item->fileListItem, returnCode ); // send signal to FileList emit finishedProcess( item->logID, returnCode == ReplayGainFileListItem::Succeeded ); // send signal to Logger items.removeAll( item ); delete item; if( items.size() == 0 ) updateTimer.stop(); } void ReplayGainProcessor::kill( ReplayGainFileListItem *fileListItem ) { foreach( ReplayGainProcessorItem *item, items ) { if( item->fileListItem == fileListItem ) { item->killed = true; if( item->backendID != -1 && item->backendPlugin ) { item->backendPlugin->kill( item->backendID ); } } } } void ReplayGainProcessor::updateProgress() { float time = 0.0f; // trigger flushing of the logger cache pluginLog( 0, "" ); foreach( ReplayGainProcessorItem *item, items ) { float fileProgress = 0.0f; if( item->backendID != -1 && item->backendPlugin ) { fileProgress = item->backendPlugin->progress( item->backendID ); } time += (float)item->time * fileProgress / 100.0f; logger->log( item->logID, "
\t" + i18n("Progress: %1",fileProgress) + "
" ); } emit updateTime( time ); } ./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainscanner.h0000644000175000001440000000013212255306740025372 xustar000000000000000030 mtime=1387630048.573961884 30 atime=1387630048.572961897 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/replaygainscanner/replaygainscanner.h0000755000175000001440000000275412255306740025020 0ustar00danielusers00000000000000 #ifndef REPLAYGAINSCANNER_H #define REPLAYGAINSCANNER_H #include class Config; class Logger; class ComboButton; class ReplayGainFileList; class ProgressIndicator; class QCheckBox; class KPushButton; class QTreeWidget; class KFileDialog; /** * @short The Replay Gain Tool * @author Daniel Faust */ class ReplayGainScanner : public KDialog { Q_OBJECT public: ReplayGainScanner( Config*, Logger*, QWidget *parent=0, Qt::WFlags f=0 ); ~ReplayGainScanner(); void addFiles( KUrl::List urls ); private slots: void addClicked( int ); void showDirDialog(); void showFileDialog(); void fileDialogAccepted(); void showHelp(); void calcReplayGainClicked(); void removeReplayGainClicked(); void cancelClicked(); void closeClicked(); void processStarted(); void processStopped(); void progressChanged( const QString& progress ); private: ComboButton *cAdd; QCheckBox *cForce; ReplayGainFileList *fileList; ProgressIndicator *progressIndicator; KPushButton *pTagVisible; KPushButton *pRemoveTag; KPushButton *pCancel; KPushButton *pClose; KFileDialog *fileDialog; Config *config; Logger *logger; signals: void addFile( const QString& ); void addDir( const QString&, const QStringList& filter = QStringList(), bool recursive = true ); void calcAllReplayGain( bool force ); void removeAllReplayGain(); void cancelProcess(); }; #endif // REPLAYGAINSCANNER_H ./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainprocessor.h0000644000175000001440000000006212105142357025756 xustar000000000000000020 atime=1360315631 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/replaygainscanner/replaygainprocessor.h0000644000175000001440000000613512105142357025374 0ustar00danielusers00000000000000 #ifndef REPLAYGAINPROCESSOR_H #define REPLAYGAINPROCESSOR_H #include "replaygainfilelistitem.h" #include #include #include #include #include class ReplayGainPlugin; class Config; class Logger; class ReplayGainFileList; class ReplayGainProcessorItem { public: ReplayGainProcessorItem( ReplayGainFileListItem *item ); ~ReplayGainProcessorItem(); /** a reference to the file list item, in case it's a convert item */ ReplayGainFileListItem *fileListItem; /** a list of replaygain pipes that are suitable for this item */ QList replaygainPipes; /** number of the current attempt to add replaygain (for the pipes lists) */ int take; ReplayGainPlugin::ApplyMode mode; /** the active plugin */ ReplayGainPlugin *backendPlugin; /** the id from the active plugin (-1 if false) */ int backendID; /** has the process been killed on purpose? */ bool killed; /** the id with that the item is registered at the logger */ int logID; int time; QTime progressedTime; }; class ReplayGainProcessor : public QObject { Q_OBJECT public: ReplayGainProcessor( Config *_config, ReplayGainFileList *_fileList, Logger *_logger ); ~ReplayGainProcessor(); private: /** Calculate replaygain tags of the file with the convert item @p item */ void replaygain( ReplayGainProcessorItem *item ); /** Remove item @p item and emit the state @p state */ void remove( ReplayGainProcessorItem *item, ReplayGainFileListItem::ReturnCode returnCode = ReplayGainFileListItem::Succeeded ); /** holds all active files */ QList items; Config *config; ReplayGainFileList *fileList; Logger *logger; struct LogQueue { int id; BackendPlugin *plugin; QStringList messages; }; QList pluginLogQueue; QTimer updateTimer; private slots: /** A plugin has finished converting a file */ void pluginProcessFinished( int id, int exitCode ); /** A plugin has something to log */ void pluginLog( int id, const QString& message ); /** sums up the progresses of all processes and sends it to the ProgressIndicator */ void updateProgress(); public slots: // connected to ReplayGainFileList /** Add a new @p fileListItem to the item list and start */ void add( ReplayGainFileListItem *fileListItem, ReplayGainPlugin::ApplyMode mode ); /** Stop the item with the file list item @p fileListItem in the item list and remove it */ void kill( ReplayGainFileListItem *fileListItem ); signals: // connected to FileList /** The conversion of an item has finished and the state is reported */ void finished( ReplayGainFileListItem *fileListItem, ReplayGainFileListItem::ReturnCode returnCode ); // connected to Logger /** Tell the logger that the process has finished */ void finishedProcess( int id, bool succeeded ); // connected to ProgressIndicator void updateTime( float timeProgress ); void timeFinished( float timeDelta ); }; #endif // REPLAYGAINPROCESSOR_H ./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainfilelistitem.h0000644000175000001440000000006212105142357026431 xustar000000000000000020 atime=1360315631 30 ctime=1387631578.233422373 ./soundkonverter-2.0.5/replaygainscanner/replaygainfilelistitem.h0000644000175000001440000000260612105142357026046 0ustar00danielusers00000000000000 #ifndef REPLAYGAINFILELISTITEM_H #define REPLAYGAINFILELISTITEM_H #include "core/replaygainplugin.h" #include "metadata/tagengine.h" #include #include #include #include class ReplayGainFileListItem : public QTreeWidgetItem { public: ReplayGainFileListItem( QTreeWidget *parent ); ReplayGainFileListItem( QTreeWidget *parent, QTreeWidgetItem *preceding ); ReplayGainFileListItem( QTreeWidgetItem *parent ); ~ReplayGainFileListItem(); enum Type { Track, Album } type; enum State { Waiting, Processing, Stopped } state; // code values will be displayed in the log files enum ReturnCode { Succeeded = 0, SucceededWithProblems = 1, StoppedByUser = 2, Skipped = 3, BackendNeedsConfiguration = 4, Failed = 5 } returnCode; KUrl url; QString albumName; QString codecName; int samplingRate; TagData *tags; int length; }; class ReplayGainFileListItemDelegate : public QItemDelegate { public: ReplayGainFileListItemDelegate( QObject *parent = 0 ); virtual void paint( QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; }; #endif // REPLAYGAINFILELISTITEM_H ./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainfilelistitem.cpp0000644000175000001440000000006212105142357026764 xustar000000000000000020 atime=1360922596 30 ctime=1387631578.234422361 ./soundkonverter-2.0.5/replaygainscanner/replaygainfilelistitem.cpp0000644000175000001440000001262212105142357026400 0ustar00danielusers00000000000000 #include "replaygainfilelistitem.h" // #include // NOTE needed by drag'n'drop events - but why? #include ReplayGainFileListItem::ReplayGainFileListItem( QTreeWidget *parent ) : QTreeWidgetItem( parent ), tags( 0 ) { state = Waiting; samplingRate = 0; } ReplayGainFileListItem::ReplayGainFileListItem( QTreeWidget *parent, QTreeWidgetItem *preceding ) : QTreeWidgetItem( parent, preceding ), tags( 0 ) { state = Waiting; samplingRate = 0; } ReplayGainFileListItem::ReplayGainFileListItem( QTreeWidgetItem *parent ) : QTreeWidgetItem( parent ), tags( 0 ) { state = Waiting; samplingRate = 0; } ReplayGainFileListItem::~ReplayGainFileListItem() { if( tags ) delete tags; } ReplayGainFileListItemDelegate::ReplayGainFileListItemDelegate( QObject *parent ) : QItemDelegate( parent ) {} // TODO margin void ReplayGainFileListItemDelegate::paint( QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { ReplayGainFileListItem *item = static_cast( index.internalPointer() ); QColor backgroundColor; painter->save(); QStyleOptionViewItem _option = option; bool isProcessing = false; bool isSucceeded = false; bool isFailed = false; if( item ) { switch( item->state ) { case ReplayGainFileListItem::Waiting: break; case ReplayGainFileListItem::Processing: isProcessing = true; break; case ReplayGainFileListItem::Stopped: switch( item->returnCode ) { case ReplayGainFileListItem::Succeeded: isSucceeded = true; break; case ReplayGainFileListItem::SucceededWithProblems: isSucceeded = true; break; case ReplayGainFileListItem::Skipped: break; case ReplayGainFileListItem::StoppedByUser: break; case ReplayGainFileListItem::BackendNeedsConfiguration: isFailed = true; break; case ReplayGainFileListItem::Failed: isFailed = true; break; } break; } } if( isProcessing ) { if( option.state & QStyle::State_Selected ) { backgroundColor = QColor(215,102,102); // hsv: 0, 134, 215 } else { backgroundColor = QColor(255,234,234); // hsv: 0, 21, 255 } } else if( isSucceeded ) { if( option.state & QStyle::State_Selected ) { backgroundColor = QColor(125,205,139); // hsv: 131, 100, 205 } else { backgroundColor = QColor(234,255,238); // hsv: 131, 21, 255 } } else if( isFailed ) { if( option.state & QStyle::State_Selected ) { backgroundColor = QColor(235,154, 49); // hsv: 34, 202, 235 } else { backgroundColor = QColor(255,204,156); // hsv: 29, 99, 255 } } else { if( option.state & QStyle::State_Selected ) { backgroundColor = option.palette.highlight().color(); } else { backgroundColor = option.palette.base().color(); } } painter->fillRect( option.rect, backgroundColor ); int m_left, m_top, m_right, m_bottom; item->treeWidget()->getContentsMargins( &m_left, &m_top, &m_right, &m_bottom ); //QRect m_rect = QRect( option.rect.x()+m_left, option.rect.y()+m_top, option.rect.width()-m_left-m_right, option.rect.height()-m_top-m_bottom ); QRect m_rect = QRect( option.rect.x()+m_left, option.rect.y(), option.rect.width()-m_left-m_right, option.rect.height() ); QRect textRect = painter->boundingRect( QRect(), Qt::AlignLeft|Qt::TextSingleLine, item->text(index.column()) ); if ( textRect.width() < m_rect.width() ) { painter->drawText( m_rect, Qt::TextSingleLine|Qt::TextExpandTabs, item->text(index.column()) ); } else { painter->drawText( m_rect, Qt::AlignRight|Qt::TextSingleLine|Qt::TextExpandTabs, item->text(index.column()) ); QLinearGradient linearGrad( QPoint(m_rect.x(),0), QPoint(m_rect.x()+15,0) ); linearGrad.setColorAt( 0, backgroundColor ); backgroundColor.setAlpha( 0 ); linearGrad.setColorAt( 1, backgroundColor ); painter->fillRect( m_rect.x(), m_rect.y(), 15, m_rect.height(), linearGrad ); } // painter->drawText( m_rect, Qt::TextSingleLine|Qt::TextExpandTabs, item->text(index.column()) ); // QItemDelegate::paint( painter, _option, index ); painter->restore(); // int progress = (index.row() != 0 ? 100 / index.row() : 0); // // // draw your cool progress bar here // QStyleOptionProgressBar opt; // opt.rect = option.rect; // opt.minimum = 0; // opt.maximum = 100; // opt.progress = progress; // opt.text = QString("%1%").arg(progress); // opt.textVisible = true; // QApplication::style()->drawControl(QStyle::CE_ProgressBar, &opt, painter, 0); // maybe even let default implementation draw list item contents? // QItemDelegate::paint(painter, option, index); } ./soundkonverter-2.0.5/replaygainscanner/PaxHeaders.25599/replaygainscanner.cpp0000644000175000001440000000013212255306740025725 xustar000000000000000030 mtime=1387630048.572961897 30 atime=1387630048.572961897 30 ctime=1387631578.234422361 ./soundkonverter-2.0.5/replaygainscanner/replaygainscanner.cpp0000755000175000001440000002747112255306740025356 0ustar00danielusers00000000000000 #include "replaygainscanner.h" #include "replaygainfilelist.h" #include "replaygainprocessor.h" #include "config.h" #include "logger.h" #include "combobutton.h" #include "opener/diropener.h" #include "codecproblems.h" #include "progressindicator.h" #include #include #include #include #include #include #include #include #include #include ReplayGainScanner::ReplayGainScanner( Config* _config, Logger* _logger, QWidget *parent, Qt::WFlags f ) : KDialog( parent, f ), config( _config ), logger( _logger ) { setButtons( 0 ); setCaption( i18n("Replay Gain tool") ); setWindowIcon( KIcon("soundkonverter-replaygain") ); QWidget *widget = new QWidget( this ); setMainWidget( widget ); QGridLayout* grid = new QGridLayout( widget ); QHBoxLayout* filterBox = new QHBoxLayout(); grid->addLayout( filterBox, 0, 0 ); cAdd = new ComboButton( widget ); cAdd->insertItem( KIcon("folder"), i18n("Add folder...") ); cAdd->insertItem( KIcon("audio-x-generic"), i18n("Add files...") ); filterBox->addWidget( cAdd ); connect( cAdd, SIGNAL(clicked(int)), this, SLOT(addClicked(int)) ); filterBox->addStretch(); cForce = new QCheckBox( i18n("Force recalculation"), this ); cForce->setToolTip( i18n("Recalculate Replay Gain tags for files that already have Replay Gain tags set.") ); filterBox->addWidget( cForce ); fileList = new ReplayGainFileList( config, logger, widget ); grid->addWidget( fileList, 1, 0 ); connect( fileList, SIGNAL(processStarted()), this, SLOT(processStarted()) ); connect( fileList, SIGNAL(processStopped()), this, SLOT(processStopped()) ); QHBoxLayout* progressBox = new QHBoxLayout(); grid->addLayout( progressBox, 2, 0 ); progressIndicator = new ProgressIndicator( this ); progressBox->addWidget( progressIndicator ); connect( fileList, SIGNAL(timeChanged(float)), progressIndicator, SLOT(timeChanged(float)) ); connect( fileList, SIGNAL(finished(bool)), progressIndicator, SLOT(finished(bool)) ); connect( progressIndicator, SIGNAL(progressChanged(const QString&)), this, SLOT(progressChanged(const QString&)) ); QHBoxLayout* buttonBox = new QHBoxLayout(); grid->addLayout( buttonBox, 3, 0 ); pTagVisible = new KPushButton( KIcon("list-add"), i18n("Tag untagged"), widget ); pTagVisible->setToolTip( i18n("Calculate Replay Gain tags for all files in the file list without Replay Gain tags.") ); buttonBox->addWidget( pTagVisible ); connect( pTagVisible, SIGNAL(clicked()), this, SLOT(calcReplayGainClicked()) ); pRemoveTag = new KPushButton( KIcon("list-remove"), i18n("Untag tagged"), widget ); pRemoveTag->setToolTip( i18n("Remove the Replay Gain tags from all files in the file list.") ); buttonBox->addWidget( pRemoveTag ); connect( pRemoveTag, SIGNAL(clicked()), this, SLOT(removeReplayGainClicked()) ); pCancel = new KPushButton( KIcon("dialog-cancel"), i18n("Cancel"), widget ); pCancel->hide(); buttonBox->addWidget( pCancel ); connect( pCancel, SIGNAL(clicked()), this, SLOT(cancelClicked()) ); buttonBox->addStretch(); pClose = new KPushButton( KIcon("dialog-close"), i18n("Close"), widget ); pClose->setFocus(); buttonBox->addWidget( pClose ); connect( pClose, SIGNAL(clicked()), this, SLOT(closeClicked()) ); ReplayGainProcessor *replayGainProcessor = new ReplayGainProcessor( config, fileList, logger ); connect( fileList, SIGNAL(processItem(ReplayGainFileListItem*,ReplayGainPlugin::ApplyMode)), replayGainProcessor, SLOT(add(ReplayGainFileListItem*,ReplayGainPlugin::ApplyMode)) ); connect( fileList, SIGNAL(killItem(ReplayGainFileListItem*)), replayGainProcessor, SLOT(kill(ReplayGainFileListItem*)) ); connect( replayGainProcessor, SIGNAL(finished(ReplayGainFileListItem*,ReplayGainFileListItem::ReturnCode)), fileList, SLOT(itemFinished(ReplayGainFileListItem*,ReplayGainFileListItem::ReturnCode)) ); connect( replayGainProcessor, SIGNAL(finishedProcess(int,bool)), logger, SLOT(processCompleted(int,bool)) ); connect( replayGainProcessor, SIGNAL(updateTime(float)), progressIndicator, SLOT(update(float)) ); connect( replayGainProcessor, SIGNAL(timeFinished(float)), progressIndicator, SLOT(timeFinished(float)) ); setInitialSize( QSize(600,400) ); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "ReplayGainTool" ); restoreDialogSize( group ); } ReplayGainScanner::~ReplayGainScanner() { KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group = conf->group( "ReplayGainTool" ); saveDialogSize( group ); } void ReplayGainScanner::addClicked( int index ) { if( index == 1 ) { showFileDialog(); } else { showDirDialog(); } } void ReplayGainScanner::showFileDialog() { QStringList filterList; QStringList allFilter; const QStringList formats = config->pluginLoader()->formatList( PluginLoader::ReplayGain, PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); foreach( QString format, formats ) { QString extensionFilter = config->pluginLoader()->codecExtensions(format).join(" *."); if( extensionFilter.length() == 0 ) continue; extensionFilter = "*." + extensionFilter; allFilter += extensionFilter; filterList += extensionFilter + "|" + i18n("%1 files",format.replace("/","\\/")); } filterList.prepend( allFilter.join(" ") + "|" + i18n("All supported files") ); filterList += "*.*|" + i18n("All files"); // add the control elements QLabel *formatHelp = new QLabel( "" + i18n("Are you missing some file formats?") + "", this ); connect( formatHelp, SIGNAL(linkActivated(const QString&)), this, SLOT(showHelp()) ); fileDialog = new KFileDialog( KUrl(QDir::homePath()), filterList.join("\n"), this, formatHelp ); fileDialog->setWindowTitle( i18n("Add Files") ); fileDialog->setMode( KFile::Files | KFile::ExistingOnly ); connect( fileDialog, SIGNAL(accepted()), this, SLOT(fileDialogAccepted()) ); fileDialog->exec(); } void ReplayGainScanner::fileDialogAccepted() { QStringList errorList; // codec @0 files @1 solutions QMap< QString, QList > problems; QString fileName; QList urls = fileDialog->selectedUrls(); const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; for( int i=0; ipluginLoader()->getCodecFromFile( urls.at(i), &mimeType, checkM4a ); if( !config->pluginLoader()->canReplayGain(codecName,0,&errorList) ) { fileName = urls.at(i).pathOrUrl(); if( codecName.isEmpty() ) codecName = mimeType; if( codecName.isEmpty() ) codecName = fileName.right(fileName.length()-fileName.lastIndexOf(".")-1); if( problems.value(codecName).count() < 2 ) { problems[codecName] += QStringList(); problems[codecName] += QStringList(); } problems[codecName][0] += fileName; if( !errorList.isEmpty() ) { problems[codecName][1] += errorList; } else { problems[codecName][1] += i18n("This file type is unknown to soundKonverter.\nMaybe you need to install an additional soundKonverter plugin.\nYou should have a look at your distribution's package manager for this."); } urls.removeAt(i); i--; } } QList problemList; for( int i=0; i= 0x040500 problems[problem.codecName][1].removeDuplicates(); #else QStringList found; for( int j=0; j 0 ) { CodecProblems *problemsDialog = new CodecProblems( CodecProblems::ReplayGain, problemList, this ); problemsDialog->exec(); } if( urls.count() > 0 ) fileList->addFiles( urls ); } void ReplayGainScanner::showHelp() { QList problemList; const QMap problems = config->pluginLoader()->replaygainProblems(); for( int i=0; iexec(); } void ReplayGainScanner::showDirDialog() { DirOpener *dialog = new DirOpener( config, DirOpener::ReplayGain, this ); if( !dialog->dialogAborted ) { connect( dialog, SIGNAL(open(const KUrl&,bool,const QStringList&)), fileList, SLOT(addDir(const KUrl&,bool,const QStringList&)) ); dialog->exec(); disconnect( dialog, SIGNAL(open(const KUrl&,bool,const QStringList&)), 0, 0 ); } delete dialog; } void ReplayGainScanner::addFiles( KUrl::List urls ) { fileList->addFiles( urls ); } void ReplayGainScanner::calcReplayGainClicked() { fileList->startProcessing( cForce->isChecked() ? ReplayGainPlugin::Force : ReplayGainPlugin::Add ); } void ReplayGainScanner::removeReplayGainClicked() { fileList->startProcessing( ReplayGainPlugin::Remove ); } void ReplayGainScanner::cancelClicked() { fileList->cancelProcess(); } void ReplayGainScanner::closeClicked() { if( pCancel->isVisible() ) { const int ret = KMessageBox::questionYesNo( this, i18n("There are still Replay Gain jobs running.\nDo you really want to cancel them?") ); if( ret == KMessageBox::Yes ) { fileList->cancelProcess(); } else { return; } } accept(); } void ReplayGainScanner::processStarted() { pTagVisible->hide(); pRemoveTag->hide(); pCancel->show(); } void ReplayGainScanner::processStopped() { pTagVisible->show(); pRemoveTag->show(); pCancel->hide(); } void ReplayGainScanner::progressChanged( const QString& progress ) { setCaption( progress + " - " + i18n("Replay Gain tool") ); } ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter.desktop0000644000175000001440000000013212255310033022460 xustar000000000000000030 mtime=1387630619.001830554 30 atime=1387630134.327889812 30 ctime=1387631578.234422361 ./soundkonverter-2.0.5/soundkonverter.desktop0000755000175000001440000000317112255310033022100 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Name=soundKonverter Exec=soundkonverter %U Icon=soundkonverter Type=Application GenericName=Audio file converter, CD ripper and Replay Gain tool GenericName[ca]=Convertidor d'arxius d'àudio, extractor de CD i eina Replay Gain GenericName[cs]=Převaděč zvukových souborů, vytahovač stop z CD a nástroj na vyrovnání hlasitosti přehrávaných skladeb GenericName[de]=Audio-Datei Konverter, CD Ripper und Replay Gain Werkzeug GenericName[es]=Conversor de archivos de audio, extractor de CD y herramienta Replay Gain GenericName[et]=Helifailide teisendaja, CD-rippija ja helitugevuse parandustööriist GenericName[fr]=Convertisseur de fichiers audio, extracteur de CD et outil de Replay Gain GenericName[hu]=Audiofájl-konverter, CD-beolvasó és hangerő-korrekciós eszköz GenericName[it]=Convertitore di file audio, estrattore di CD e strumento Replay Gain GenericName[pt]=Conversor de áudio, extração de CD e análise Replay Gain GenericName[pt_BR]=Conversor de arquivo de áudio, extração de CD e ferramenta Replay Gain GenericName[ro]=Convertor de fișiere audio, uneltă de extras CD-uri si aplicat Replay Gain GenericName[ru]=Аудиоконвертер, CD-риппер и инструмент выравнивания громкости GenericName[sl]=Pretvornik zvočni datotek, zajemalnik CD-jev in orodje za jakost predvajanja GenericName[sv_SE]=Ljudfilkonverterare, CD-rippare och Replay Gain-verktyg GenericName[zh_TW]=音樂格式轉換、CD 擷取、播放增益工具 Terminal=false Categories=AudioVideo;Audio;AudioVideoEditing;KDE; X-DocPath=https://github.com/HessiJames/soundkonverter/wiki ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverterapp.h0000644000175000001440000000006212105142357021747 xustar000000000000000020 atime=1360315631 30 ctime=1387631578.234422361 ./soundkonverter-2.0.5/soundkonverterapp.h0000755000175000001440000000125212105142357021363 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTERAPP_H #define SOUNDKONVERTERAPP_H #include class soundKonverter; /** * @short The soundKonverter application. It controlles ensures that there can only run one instance of soundKonverter. * @author Daniel Faust * @version 0.3 */ class soundKonverterApp : public KUniqueApplication { Q_OBJECT public: /** Constructor */ soundKonverterApp(); /** Destructor */ ~soundKonverterApp(); /** This function is called, when a new instance of soundKonverter should be created */ virtual int newInstance(); // private: soundKonverter *mainWindow; }; #endif // SOUNDKONVERTERAPP_H ./soundkonverter-2.0.5/PaxHeaders.25599/optionssimple.cpp0000644000175000001440000000006212105142353021412 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.234422361 ./soundkonverter-2.0.5/optionssimple.cpp0000755000175000001440000003730612105142353021037 0ustar00danielusers00000000000000 #include "optionssimple.h" #include "config.h" #include "outputdirectory.h" #include "global.h" #include "codecproblems.h" #include #include #include #include #include #include #include #include #include #include #include #include #include // FIXME when changing the output directory, check if the profile is a user defined and set it to 'User defined', if it is // TODO hide lossless/hybrid/etc. when not available OptionsSimple::OptionsSimple( Config *_config, /*OptionsDetailed* _optionsDetailed,*/ const QString &text, QWidget *parent ) : QWidget( parent ), config( _config ) { QGridLayout *grid = new QGridLayout( this ); grid->setMargin( 10 ); grid->setSpacing( 10 ); QLabel *lQuality = new QLabel( i18n("Quality:"), this ); grid->addWidget( lQuality, 0, 0 ); QHBoxLayout *topBoxQuality = new QHBoxLayout(); grid->addLayout( topBoxQuality, 0, 1 ); cProfile = new KComboBox( this ); topBoxQuality->addWidget( cProfile ); connect( cProfile, SIGNAL(activated(int)), this, SLOT(profileChanged()) ); topBoxQuality->addSpacing( 3 ); pProfileRemove = new KPushButton( KIcon("edit-delete"), i18n("Remove"), this ); topBoxQuality->addWidget( pProfileRemove ); pProfileRemove->setToolTip( i18n("Remove the selected profile") ); pProfileRemove->hide(); connect( pProfileRemove, SIGNAL(clicked()), this, SLOT(profileRemove()) ); pProfileInfo = new KPushButton( KIcon("dialog-information"), i18n("Info"), this ); topBoxQuality->addWidget( pProfileInfo ); pProfileInfo->setToolTip( i18n("Information about the selected profile") ); // cProfile->setFixedHeight( pProfileInfo->minimumSizeHint().height() ); connect( pProfileInfo, SIGNAL(clicked()), this, SLOT(profileInfo()) ); topBoxQuality->addStretch( ); topBoxQuality->addSpacing( 10 ); QLabel *lFormat = new QLabel( i18n("Format:"), this ); grid->addWidget( lFormat, 0, 2 ); QHBoxLayout *topBoxFormat = new QHBoxLayout(); grid->addLayout( topBoxFormat, 0, 3 ); cFormat = new KComboBox( this ); topBoxFormat->addWidget( cFormat ); // connect( cFormat, SIGNAL(activated(int)), this, SLOT(formatChanged()) ); connect( cFormat, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); topBoxFormat->addSpacing( 3 ); pFormatInfo = new KPushButton( KIcon("dialog-information"), i18n("Info"), this ); topBoxFormat->addWidget( pFormatInfo ); pFormatInfo->setToolTip( i18n("Information about the selected file format") ); // cFormat->setFixedHeight( pFormatInfo->minimumSizeHint().height() ); connect( pFormatInfo, SIGNAL(clicked()), this, SLOT(formatInfo()) ); topBoxFormat->addSpacing( 3 ); QLabel *formatHelp = new QLabel( "" + i18n("More formats...") + "", this ); topBoxFormat->addWidget( formatHelp ); connect( formatHelp, SIGNAL(linkActivated(const QString&)), this, SLOT(showHelp()) ); topBoxFormat->addStretch( ); QLabel *lOutput = new QLabel( i18n("Destination:"), this ); grid->addWidget( lOutput, 1, 0 ); QHBoxLayout *middleBox = new QHBoxLayout(); grid->addLayout( middleBox, 1, 1, 1, 3 ); outputDirectory = new OutputDirectory( config, this ); middleBox->addWidget( outputDirectory ); connect( outputDirectory, SIGNAL(modeChanged(int)), this, SLOT(outputDirectoryChanged()) ); connect( outputDirectory, SIGNAL(directoryChanged(const QString&)), this, SLOT(outputDirectoryChanged()) ); QHBoxLayout *estimSizeBox = new QHBoxLayout(); grid->addLayout( estimSizeBox, 2, 0 ); estimSizeBox->addStretch(); lEstimSize = new QLabel( QString(QChar(8776))+"? B / min." ); lEstimSize->hide(); // hide for now because most plugins report inaccurate data estimSizeBox->addWidget( lEstimSize ); QLabel *lOptional = new QLabel( i18n("Optional:") ); grid->addWidget( lOptional, 3, 0 ); QHBoxLayout *optionalBox = new QHBoxLayout(); grid->addLayout( optionalBox, 3, 1 ); cReplayGain = new QCheckBox( i18n("Calculate Replay Gain tags"), this ); optionalBox->addWidget( cReplayGain ); connect( cReplayGain, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); optionalBox->addStretch(); QLabel *lInfo = new QLabel( text, this ); grid->addWidget( lInfo, 4, 0, 1, 4, Qt::AlignVCenter | Qt::AlignCenter ); grid->setRowStretch( 4, 1 ); grid->setColumnStretch( 1, 1 ); grid->setColumnStretch( 3, 1 ); } OptionsSimple::~OptionsSimple() {} void OptionsSimple::init() { updateProfiles(); } void OptionsSimple::setReplayGainEnabled( bool enabled, const QString& toolTip ) { cReplayGain->setEnabled(enabled); cReplayGain->setToolTip(toolTip); if( !enabled ) { QPalette notificationPalette = cReplayGain->palette(); notificationPalette.setColor( QPalette::Disabled, QPalette::WindowText, QColor(174,127,130) ); cReplayGain->setPalette( notificationPalette ); } } void OptionsSimple::setReplayGainChecked( bool enabled ) { cReplayGain->setChecked(enabled); } QString OptionsSimple::currentProfile() { return cProfile->currentText(); } QString OptionsSimple::currentFormat() { return cFormat->currentText(); } bool OptionsSimple::isReplayGainChecked() { return cReplayGain->isChecked(); } void OptionsSimple::updateProfiles() { const QString lastProfile = cProfile->currentText(); QStringList sProfile; cProfile->clear(); sProfile += i18n("Very low"); sProfile += i18n("Low"); sProfile += i18n("Medium"); sProfile += i18n("High"); sProfile += i18n("Very high"); sProfile += i18n("Lossless"); // sProfile += i18n("Hybrid"); // currently unused sProfile += config->customProfiles(); sProfile += i18n("User defined"); cProfile->addItems( sProfile ); if( cProfile->findText(lastProfile) != -1 ) { cProfile->setCurrentIndex( cProfile->findText(lastProfile) ); } else { profileChanged(); } } void OptionsSimple::profileInfo() { const QString sProfileString = cProfile->currentText(); QString info; if( sProfileString == i18n("Very low") ) { info = i18n("Encoding files with a very low quality can be useful if you have a mobile device where your storage space is limited.\nIt is not recommended to save your music in this quality without a copy of higher quality."); } else if( sProfileString == i18n("Low") ) { info = i18n("Encoding files with a low quality can be useful if you have a mobile device where your storage space is limited.\nIt is not recommended to save your music in this quality without a copy of higher quality."); } else if( sProfileString == i18n("Medium") ) { info = i18n("Encoding files with a medium quality is a compromise between quality and file size.\nMost people might not hear much of a difference to the original files but you should only use it to save music if your storage space is limited."); } else if( sProfileString == i18n("High") ) { info = i18n("Encoding files with a high quality is a good choice if you have enough storage space available. You can use this to save your music."); } else if( sProfileString == i18n("Very high") ) { info = i18n("Encoding files with a very high quality is fine if you have enough storage space."); } else if( sProfileString == i18n("Lossless") ) { info = i18n("Encoding files lossless will preserve the quality of the original file.\nIt is only then useful if the original file has a good quality (e.g. audio CD).\nThe file size will be big, so you should only use it if you have enough storage space."); } else if( sProfileString == i18n("Hybrid") ) { // info = i18n("This produces two files. One lossy compressed playable file and one correction file.\nBoth files together result in a file that is equivalent to the input file."); } else if( sProfileString == i18n("User defined") ) { info = i18n("You can define your own profile in the \"Detailed\" tab."); } else // the info button is hidden when showing user defined profiles { info = i18n("This is a user defined profile."); } KMessageBox::information( this, info, i18n("Profile info for %1",sProfileString) ); } void OptionsSimple::profileRemove() { const QString profileName = cProfile->currentText(); const int ret = KMessageBox::questionYesNo( this, i18n("Do you really want to remove the profile: %1").arg(profileName), i18n("Remove profile?") ); if( ret == KMessageBox::Yes ) { QDomDocument list("soundkonverter_profilelist"); QFile listFile( KStandardDirs::locateLocal("data","soundkonverter/profiles.xml") ); if( listFile.open( QIODevice::ReadOnly ) ) { if( list.setContent( &listFile ) ) { QDomElement root = list.documentElement(); if( root.nodeName() == "soundkonverter" && root.attribute("type") == "profilelist" ) { QDomElement profileElement; QDomNodeList conversionOptionsElements = root.elementsByTagName("conversionOptions"); for( int i=0; idata.profiles[profileName]; config->data.profiles.remove(profileName); root.removeChild(conversionOptionsElements.at(i)); break; } } } } listFile.close(); } if( listFile.open( QIODevice::WriteOnly ) ) { updateProfiles(); emit customProfilesEdited(); QTextStream stream(&listFile); stream << list.toString(); listFile.close(); } } } void OptionsSimple::formatInfo() { const QString format = cFormat->currentText(); const QString info = config->pluginLoader()->codecDescription(format); if( !info.isEmpty() ) { KMessageBox::information( this, info, i18n("Format info for %1",format), QString(), KMessageBox::Notify | KMessageBox::AllowLink ); } else { KMessageBox::information( this, i18n("Sorry, no format information available.") ); } } void OptionsSimple::profileChanged() { const QString profile = cProfile->currentText(); const QString lastFormat = cFormat->currentText(); cFormat->clear(); pProfileRemove->hide(); pProfileInfo->show(); if( profile == i18n("Very low") || profile == i18n("Low") || profile == i18n("Medium") || profile == i18n("High") || profile == i18n("Very high") ) { cFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Lossy) ); } else if( profile == i18n("Lossless") ) { cFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Lossless) ); } else if( profile == i18n("Hybrid") ) { cFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Hybrid) ); } else if( profile == i18n("User defined") ) { cFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)) ); } else { foreach( const QString profileName, config->data.profiles.keys() ) { if( profileName == profile ) { ConversionOptions *conversionOptions = config->data.profiles.value( profileName ); if( conversionOptions ) { cFormat->addItem( conversionOptions->codecName ); outputDirectory->setMode( (OutputDirectory::Mode)conversionOptions->outputDirectoryMode ); outputDirectory->setDirectory( conversionOptions->outputDirectory ); cReplayGain->setChecked( conversionOptions->replaygain ); pProfileRemove->show(); pProfileInfo->hide(); } break; } } } if( cFormat->findText(lastFormat) != -1 ) { cFormat->setCurrentIndex( cFormat->findText(lastFormat) ); } somethingChanged(); } // void OptionsSimple::formatChanged() // { // QStringList errorList; // cReplayGain->setEnabled( config->pluginLoader()->canReplayGain(cFormat->currentText(),currentPlugin,&errorList) ); // if( !cReplayGain->isEnabled() ) // { // if( !errorList.isEmpty() ) // { // errorList.prepend( i18n("Replay Gain is not supported for the %1 file format.\nPossible solutions are listed below.",cFormat->currentText()) ); // } // else // { // errorList += i18n("Replay Gain is not supported for the %1 file format.\nPlease check your distribution's package manager in order to install an additional Replay Gain plugin.",cFormat->currentText()); // } // cReplayGain->setToolTip( errorList.join("\n\n") ); // } // else // { // cReplayGain->setToolTip( "" ); // } // } void OptionsSimple::outputDirectoryChanged() { const QString profileName = cProfile->currentText(); ConversionOptions *conversionOptions = config->data.profiles.value( profileName ); if( conversionOptions ) { if( conversionOptions->outputDirectoryMode != outputDirectory->mode() || conversionOptions->outputDirectory != outputDirectory->directory() ) { cProfile->setCurrentIndex( cProfile->findText(i18n("User defined")) ); profileChanged(); } } } void OptionsSimple::somethingChanged() { emit optionsChanged(); } void OptionsSimple::currentDataRateChanged( int dataRate ) { if( dataRate > 0 ) { const QString dataRateString = Global::prettyNumber(dataRate,"B"); lEstimSize->setText( QString(QChar(8776))+" "+dataRateString+" / min." ); lEstimSize->setToolTip( i18n("Using the current conversion options will create files with approximately %1 per minute.").arg(dataRateString) ); } else { lEstimSize->setText( QString(QChar(8776))+" ? B / min." ); lEstimSize->setToolTip( "" ); } } void OptionsSimple::setCurrentProfile( const QString& profile ) { // TODO check profile (and don't change, if not available) cProfile->setCurrentIndex( cProfile->findText(profile) ); profileChanged(); } void OptionsSimple::setCurrentFormat( const QString& format ) { cFormat->setCurrentIndex( cFormat->findText(format) ); // formatChanged(); } void OptionsSimple::setCurrentOutputDirectory( const QString& directory ) { outputDirectory->setDirectory( directory ); outputDirectoryChanged(); } void OptionsSimple::setCurrentOutputDirectoryMode( int mode ) { outputDirectory->setMode( (OutputDirectory::Mode)mode ); outputDirectoryChanged(); } void OptionsSimple::showHelp() { QList problemList; QMap problems = config->pluginLoader()->encodeProblems(); for( int i=0; iexec(); } ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter_codecplugin.desktop0000644000175000001440000000006210723037124025043 xustar000000000000000020 atime=1357667506 30 ctime=1387631578.234422361 ./soundkonverter-2.0.5/soundkonverter_codecplugin.desktop0000644000175000001440000000021410723037124024451 0ustar00danielusers00000000000000[Desktop Entry] Type=ServiceType X-KDE-ServiceType=soundKonverter/CodecPlugin X-KDE-Derived=KPluginInfo Comment=soundKonverter codec plugin ./soundkonverter-2.0.5/PaxHeaders.25599/po0000644000175000001440000000012012255311022016332 xustar000000000000000030 mtime=1387631122.994113648 20 atime=1357667220 30 ctime=1387631578.286421711 ./soundkonverter-2.0.5/po/0000755000175000001440000000000012255311022016025 5ustar00danielusers00000000000000./soundkonverter-2.0.5/po/PaxHeaders.25599/ro.po0000644000175000001440000000013212255310031017371 xustar000000000000000030 mtime=1387630617.654847394 30 atime=1387630617.635847631 30 ctime=1387631578.279421798 ./soundkonverter-2.0.5/po/ro.po0000644000175000001440000031045212255310031017011 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Arthur Țițeică , 2013 # roentgen , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: roentgen \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/soundkonverter/" "language/ro/)\n" "Language: ro\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==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" "2:1));\n" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Despre extensii" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Extensii instalate:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Despre extensia %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Tipul extensiei: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Executabile platformă:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (găsit la: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (nu a fost găsit)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Codecuri suportate:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Momentan dezactivat." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Codare: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Decodare: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Configurează %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Soluții pentru problemele de platformă" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Ai instalat sau înlăturat platforme iar setările tale pentru soundkonverter " "pot fi optimizate." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Pentru codarea fișierelor %1 platforma '%2' poate fi înlocuită cu '%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Pentru extragerea CD-urilor audio platforma '%1' poate fi înlocuită cu '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Pentru decodarea fișierelor %1 platforma '%2' poate fi înlocuită cu '%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Pentru a aplica Replay Gain fișierelor %1 platforma '%2' poate fi înlocuită " "cu '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignoră" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Repară" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter nu a găsit niciun pachet lipsă.\n" "Dacă iți lipsesc unele formate de fișiere va fi nevoie să instalezi extensii " "adiționale cu ajutorul managerului de pachete al distribuției tale." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Unele din extensiile instalate nu funcționează.\n" "Soluțiile posibile sunt afișate mai jos." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Unele fișiere nu pot fi decodate.\n" "Soluțiile posibile sunt afișate mai jos." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Replay Gain nu este suportat pentru unele fișiere.\n" "Soluțiile posibile sunt afișate mai jos." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Extragerea CD-urilor audio nu este suportată de nicio extensie instalată.\n" "Te rog verifică cu ajutorul managerului de pachete al distribuției tale cum " "poți instala o extensie de extragere CD pentru soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Extragerea CD-urilor audio nu este momentan suportată deoarece lipsesc " "platforme.\n" "Soluțiile posibile sunt afișate mai jos." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Soluții posibile pentru %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "sau" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Fișiere afectate:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Ultimul folosit" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Înaltă" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "copertă" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Încearcă intern" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Foarte joasă" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Joasă" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Medie" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Foarte înaltă" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Fără pierderi" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Hibrid" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Definit de utilizator" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Convertește cu soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Adaugă Replay Gain cu soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avansat" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Extensia preferată pentru fișierele ogg vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "" "Câmpul preferat pentru eticheta de comentariu pentru fișierele ogg vorbis și " "flac:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Unele aplicații folosesc câmpul DESCRIPTION deși câmpul COMMENT este cel " "corect.\n" "Comentariile vor fi scrise în câmpul selectat, la citirea etichetelor câmpul " "selectat va fi preferat." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Câmpul preferat pentru eticheta de număr total de piese pentru fișiere ogg " "vorbis și flac:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Numărul total de piese va fi scris în câmpul selectat, la citirea " "etichetelor va fi preferat câmpul selectat.\n" "Când se folosește câmpul TRACKNUMBER, numărul piesei și numărul total de " "piese vor fi scrise în același câmp, separate printr-un slash ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Câmpul preferat pentru eticheta de număr total de discuri pentru fișierele " "ogg vorbis si flac:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Numărul total de discuri va fi scris în câmpul selectat, la citirea " "etichetelor va fi preferat câmpul selectat.\n" "Când se folosește câmpul DISCNUMBER, numărul discului și numărul total de " "discuri vor fi scrise în același câmp, separate printr-un slash ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Folosește întotdeauna nume de fișiere compatibile FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Înlocuiește unele caractere speciale cum ar fi '?' cu '_'.\n" "Dacă dosarul de ieșire se află pe un sistem de fișiere FAT vor fi folosite " "automat nume de fișiere compatibile FAT, indeferent de această opțiune." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Debug" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Scrie fișiere de jurnal pe disc" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Scrie fișierele jurnal pe disc în timpul conversiei.\n" "Poate fi folositor când intervine o blocare și nu poți accesa jurnalul cu " "vizualizatorul de jurnale.\n" "Fișierele jurnal vor fi scrise în %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Experimental" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Păstrează fișierele temporare în memorie până când mărimea estimată este mai " "mare decât:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Nu stoca în memorie fișierele cu mărime estimată mai mare decât această " "valoare pentru a evita folosirea swap." #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Se pare că nu este montat un sistem de fișiere în /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Folosește pipe când este posibil" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Folosind pipe nu mai este necesar să se utilizeze fișiere temporare și " "astfel performanța va fi crescută.\n" "Totuși fii atent, unele platforme generează erori în acest mod." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Decodor" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Codor" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Mută %1 o poziție mai sus" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Mută %1 o poziție mai jos" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Despre %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Extragere CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Folosește extensia:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtre" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Activează extensiile:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Priorități" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Configurează prioritățile extensiilor pentru formatul:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Arată optimizările posibile" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Ai schimbat setările curente.\n" "Vrei să le salvezi?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Setările au fost modificate" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Se vor alege cele mai bune platforme pentru toate formatele și noile " "preferințe vor fi salvate imediat.\n" "\n" "Vrei să continui?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "Toate setările de platforme par optime, nu este nimic de făcut." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Se salvează coperțile în dosarul de ieșire" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Salvează coperțile înglobate în dosarul de ieșire" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Întotdeauna" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Doar dacă înglobarea coperților în fișiere nu este posibilă" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Niciodată" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Nume de fișier pentru copertă (când se salvează în dosarul de ieșire)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Descrierea coperții înglobate" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Numele de fișier pentru coperta implcită" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Nume de fișier pentru coperta implcită:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Șirurile următoare sunt metacaractere și vor fi înlocuite\n" "cu informația din datele meta:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Descriere copertă\n" "%r - Rol copertă" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Setări" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "General" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Imagine copertă" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Platforme" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Interfață utilizator" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Pornește în modul:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Simplu" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Detaliat" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Profilul implicit:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Formatul implicit:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Conversie" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Gestionarea conflictelor:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Generează un nou nume de fișier" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Sări peste fișier" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Fă asta dacă fișierul de ieșire există deja" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Numărul de fișiere ce vor fi convertite concomitent:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Nu ar trebui să setezi acest număr mai mare decât numărul nucleelor din " "procesor.\n" "Au fost detectate %1 nuclee de procesor." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Aplică gain album asupra fișierelor convertite" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Ține piesele aceluiași album în lista de fișiere pentru a aplica gain album " "pentru toate fișierele." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Unealtă Replay Gain" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Grupează fișierele în unealta Replay Gain după:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Etichete album și dosare" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Doar după etichete album" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Doar după dosare" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Numărul de elemente procesate concomitent:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Se accesează fișierul" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Se copiază \"%1\" în \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Nu au mai rămas platforme de încercat ;(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Conversie" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Conversia a eșuat. Cel puțin una din platformele folosite trebuie " "configurată corect." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Conversia a eșuat. Extensia preferată nu are suport pentru o funcție " "necesară." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Conversia a eșuat. Eroare necunoscută." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Se extrage" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Decodificare" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Se aplică filtrul" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Codificare" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Se sare peste Replay Gain. Gain album va fi calculat mai târziu" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Se aplică Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Se scriu etichetele" #: convert.cpp:542 msgid "Running user script" msgstr "Se rulează script utilizator" #: convert.cpp:567 msgid "Executing next step" msgstr "Se execută pasul următor" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Etichetele au fost citite cu succes" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Nu se pot citi etichetele" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Se șterge: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "A intervenit o eroare. Cod eroare: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Conversia a eșuat. Cod ieșire: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Piesă CD %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Piesă CD %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "S-a obținut ID jurnal: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Număr piesă: %1, dispozitiv: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Posibile strategii de conversie:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Tip sistem de fișiere: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "A apărut o eroare, mărimea fișierului de ieșire este mai puțin de 1 procent " "din mărimea fișierului sursă" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Conversia a eșuat, se încearcă din nou. Codul de ieșire: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Se elimină fișierul de ieșire parțial convertit" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Ieșire normală" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Finalizat cu succes dar au apărut probleme" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Platforma necesită configurare" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Nu există destul spațiu pe dispozitivul de ieșire" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Fișierul deja există" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "A intervenit o eroare" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Se rulează comanda: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "" #: convert.cpp:1182 msgid "Conversion time" msgstr "Durata conversiei" #: convert.cpp:1183 msgid "Output file size" msgstr "Mărimea fișierului de ieșire" #: convert.cpp:1184 msgid "File size ratio" msgstr "" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Necunoscut" #: convert.cpp:1325 msgid "Filter" msgstr "Filtru" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Progres: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Se omoară procesul la cererea utilizatorului" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Pentru a codifica fișiere %1 trebuie să instalezi '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Pentru a decodifica fișiere %1 trebuie să instalezi '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "" #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' ar trebui să fie livrat de către distribuția ta." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Poți descărca '%1' la %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "" #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "" #: filelist.cpp:48 msgid "State" msgstr "Stare" #: filelist.cpp:49 msgid "Input" msgstr "Intrare" #: filelist.cpp:50 msgid "Output" msgstr "Ieșire" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Calitate" #: filelist.cpp:79 msgid "Edit options..." msgstr "Editare opțiuni..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Începe conversia" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Oprește conversia" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Șterge" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... și încă %1 fișiere" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Va fi sărit" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Se așteaptă" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "" #: filelist.cpp:583 msgid "Stopped" msgstr "Oprit" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Platforma nu este configurată" #: filelist.cpp:593 msgid "Disc full" msgstr "Disc plin" #: filelist.cpp:603 msgid "Failed" msgstr "Eșuat" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Conversia a eșuat.\n" "Verifică jurnalul pentru mai multe informații." #: filelist.cpp:630 msgid "CD track %1" msgstr "Piesă CD %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Dorești suprascrierea listei curente de fișiere?\n" "\n" "Dacă nu, lista de fișiere salvată va fi anexată." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identificator" #: logger.cpp:91 msgid "Log ID" msgstr "ID jurnal" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Vizualizator de jurnal" #: logviewer.cpp:28 msgid "Update" msgstr "Actualizează" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Salvează în fișier..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Fișier jurnal:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Jurnalul aplicației soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Salvează fișierul jurnal" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Fișierul există deja. Chiar dorești să-l suprascrii?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Scrierea în fișier a eșuat.\n" "Poate nu ai permisiuni de scriere." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Tematica de pictograme Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Dezvoltatori Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Deschide unealta Replay Gain și adaugă toate fișierele date" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "" #: main.cpp:35 msgid "Add all files using the given format" msgstr "" #: main.cpp:36 msgid "Output all files to " msgstr "" #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Pornește soundKonverter în mod invizibil" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Fișier(e) audio de adăugat în listă" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Neclasificat" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "32x32 PNG fișier pictogramă" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Fișier pictogramă" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Copertă față" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Copertă spate" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Foto CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Poză artist" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Poză formație" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Ilustrații legate de piesă" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Emblema formaței" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Emblema editorului" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Adaugă piese de pe CD" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Selectează piesele de pe CD" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Setează opțiunile de conversie" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artist:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Artiști diverși" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Compozitor:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Compozitori diverși" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Nr. disc:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "din" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "An:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Gen:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Extrage" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Piesă" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artist" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Compozitor" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Titlu" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Durată" #: opener/cdopener.cpp:246 msgid "Player" msgstr "" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Nicio piesă selectată" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Titlu:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Comentariu:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "" #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Salvează cue sheet..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Cerere CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Extrage întregul CD într-un fișier" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Continuă" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "OK" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Renunță" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Alege dispozitivul CD-ROM" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Au fost găsite mai multe dispozitive CD-ROM. Te rog alege unul:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): CD Audio cu %3 piese" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Necunoscut" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Te rog așteaptă, se încearcă descărcarea datelor CDDB ..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Alege înregistrarea CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "S-au găsit mai multe înregistrări CDDB. Te rog alege una:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Toate piesele" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Piese" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Te rog selectează măcar o piesă pentru a continua." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Nu s-a selectat nicio opțiune de conversie." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Un fișier cu acest nume există deja.\n" "\n" "Vrei să-l suprascrii pe cel existent?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Fișierul deja există" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Adaugă dosar" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Selectează dosar" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Dosar:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Adaugă doar formatele de fișiere selectate:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Lipsesc unele formate de fișiere?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Selectează tot" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Nu selecta nimic" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Recursiv" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Dacă este bifat vor fi adăugate și fișierele din subdosare." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Adaugă fișiere" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 fișiere" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Toate fișierele suportate" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Toate fișierele" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Adaugă listă de redare" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Fișierele următoare nu au fost găsite:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Fișierele nu au fost găsite" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Adaugă url" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Introdu url" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "Url-ul introdus nu este valid. Te rog încearcă din nou." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Format:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Folosește extensia:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destinație:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Calculează etichete Replay Gain" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Salvează opțiunile curente într-un profil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Încarcă profile salvate" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Profil nou" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Introdu un nume pentru noul profil:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Nu poți salva un profil fără nume." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Numele profilului este gol" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Nu poți suprascrie profilele încorporate." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Profilul există deja" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Un profil cu acest nume există deja.\n" "\n" "Vrei să-l suprascrii pe cel existent?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Precedentul" #: optionseditor.cpp:42 msgid "Next" msgstr "Următorul" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Editare opțiuni conversie" #: optionseditor.cpp:74 msgid "Tags" msgstr "Etichete" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Coperți:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Editare" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Nr. piesă:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Editare etichete" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Niciun fișier selectat" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Tip copertă:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Descriere:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Mărime:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pixeli (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Tip mime:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 fișiere" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Calitate:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Înlătură profilul selectat" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Info" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informații despre profilul selectat" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informații despre formatul fișierului selectat" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Mai multe formate..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Opțional:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Îți poți defini propriul profil în fila \"Detaliat\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Acesta este un profil definit de urilizator." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Informații profil pentru %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Chiar dorești să înlături profilul: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Înlături profilul?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Înformații despre format pentru %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Ne pare rău, nu sunt disponibile informații despre format." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "după datele meta" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Dosarul sursă" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Specifică dosarul de ieșire" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Copiază structura de dosare" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Alege un dosar de ieșire" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Deschide dosarul de ieșire cu Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Artist necunoscut" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Album necunoscut" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Fără comentariu" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Gen necunoscut" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Compozitor necunoscut" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Titlu necunoscut" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "nou" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Mod:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Rată de biți" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Rată de biți:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Compilează ffmpeg cu suport pentru %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Configurează %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Activează codecurile experimentale" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "" #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Nivelul de compresie:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Folosește fișierul SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Mediu" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Standard" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Exterm" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Nebun" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Specifică rata de biți" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Codifică folosind o rată de biți constantă.\n" "Funcționează doar cu 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Codificare rapidă" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Mod rată de biți:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variabil" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Medie" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Constant" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Mod stereo:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automat" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Stereo simplu" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Mono dublu" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Despre %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME este un codor MP3 de calitate înaltă și gratuit.\n" "Îl poți obține de la: http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Activează codecuri experimentale în dialogul de configurare libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Compilează libav cu suport pentru %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" "Poți folosi una din configurările MusePack presetate sau setările personale." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "calitate joasă (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "calitate joasă/medie (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "calitate medie (~130 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "calitate înaltă (~180 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "calitate excelentă (~210 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "calitate excelentă (~240 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "calitate excelentă (~270 kbps abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "Poți descărca '%1' la '%2' după introducerea unei adrese de email." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' se află de obicei în pachetul '%2' și ar trebui să fie livrat de " "distribuția ta." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Canale necuplate" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Folosește un flux mono per canal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame este un codor gratuit MP2.\n" "Îl poți obține de la: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Nivel calitate de la -50 până la 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "'%1' se află de obicei în pachetul '%2' care poate fi descărcat la %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Rapid" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Calitate înaltă" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Calitate foarte înaltă" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalizează" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Activează codecuri experimentale în dialogul de configurare sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Compilează sox cu suport pentru %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Calitatea schimbării de rată de eșantionare:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Rapid" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Nivel calitate de la 9 la 0 unde 0 este cea mai înaltă calitate." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Efect:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Dezactivat" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Înlătură acest efect" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Adaugă" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Adaugă un alt efect" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalizează:\n" "Modifică volumul astfel încât toate fișierele să aibă aceeași intensitate" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Joase:\n" "Amplifică frecvențele joase" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Înalte:\n" "Amplifică frecvențele înalte" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Rata de eșantionare:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Mărimea de eșantionare:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Canale:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Utilizează formatul de etichetă:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Modifică fluxul audio" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" #: progressindicator.cpp:85 msgid "Speed:" msgstr "Viteză:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Timp rămas:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Terminat" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Fișier" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Restrânge tot" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Desfășoară tot" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Mută într-un album nou" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Unele piese nu pot fi adăugate la album deoarece codecul sau rata de " "eșantionare sunt diferite." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Album nou" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Aplicarea Replay Gain a eșuat. Platforma folosită trebuie configurată corect." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Aplicarea Replay Gain a eșuat. Extensia preferată nu are suport pentru o " "funcție necesară." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Aplicarea Replay Gain a eșuat. Eroare necunoscută." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Aplicarea Replay Gain a eșuat. Cod de ieșire: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Se adaugă un nou element în lista de procesare Replay Gain: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain pentru %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Posibile platforme Replay Gain:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Sărit" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Adaugă dosar..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Adaugă fișiere..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Forțează recalcularea" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Recalculează etichetele Replay Gain pentru toate fișierele care au deja " "etichete Replay Gain." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Etichetează ce e fără etichete" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Calculează etichete Replay Gain pentru fișierele din listă ce nu conțin " "etichete Replay Gain." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Înlătură etichetele existente" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Înlătură etichetele Replay Gain din toate fișierele din listă" #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Închide" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Încă exista sarcini Replay Gain în derulare.\n" "Dorești să renunți la ele?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Acesta este soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Compilat cu TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Se înlătură vechiul fișier: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Vezi jurnale..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Unealtă Replay Gain" #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Despre extensii..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Adaugă piese CD..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Adaugă url..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Adaugă listă de redare..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Încarcă listă de fișiere" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Salvează listă de fișiere" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Începe" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Oprește" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Oprește imediat" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Oprește după ce conversiile curente au fost completate" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Continuă după ce conversiile curente au fost completate" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Nu a fost găsit un dispozitiv CD" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Unelte" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Arthur Țițeică" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "arthur.titeica@gmail.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "" "Convertor de fișiere audio, uneltă de extras CD-uri si aplicat Replay Gain" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Extrage CD audio cu soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211577726762021207 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.279421798 ./soundkonverter-2.0.5/po/CMakeLists.txt0000644000175000001440000000171511577726762020624 0ustar00danielusers00000000000000find_package(Gettext REQUIRED) if (NOT GETTEXT_MSGMERGE_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install msgmerge binary") endif (NOT GETTEXT_MSGMERGE_EXECUTABLE) if (NOT GETTEXT_MSGFMT_EXECUTABLE) MESSAGE(FATAL_ERROR "Please install msgfmt binary") endif (NOT GETTEXT_MSGFMT_EXECUTABLE) FILE(GLOB _po_files *.po) SET(_gmoFiles) FOREACH(_current_PO_FILE ${_po_files}) GET_FILENAME_COMPONENT(_lang ${_current_PO_FILE} NAME_WE) SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) add_custom_command(OUTPUT ${_gmoFile} COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" DEPENDS ${_current_PO_FILE} ) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/ RENAME soundkonverter.mo) LIST(APPEND _gmoFiles ${_gmoFile}) ENDFOREACH(_current_PO_FILE) ADD_CUSTOM_TARGET(pofiles ALL DEPENDS ${_gmoFiles}) ./soundkonverter-2.0.5/po/PaxHeaders.25599/pt_BR.po0000644000175000001440000000013212255310031017757 xustar000000000000000030 mtime=1387630617.734846394 30 atime=1387630617.710846694 30 ctime=1387631578.279421798 ./soundkonverter-2.0.5/po/pt_BR.po0000644000175000001440000034444712255310031017412 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # André Marcelo Alvarenga , 2013 # André Marcelo Alvarenga , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: HessiJames \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "soundkonverter/language/pt_BR/)\n" "Language: pt_BR\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Sobre os plugins" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Plugins instalados:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Sobre o plugin %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Tipo de plugin: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Binários da infraestrutura:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (encontrado em: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (não encontrado)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Codecs suportados:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Atualmente desativado." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Codificar: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Decodificar: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Configurar %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Soluções para problemas de infraestrutura" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Você instalou ou removeu infraestruturas e as configurações do " "soundKonverter podem ser otimizadas." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Para codificar arquivos %1, a infraestrutura '%2' pode ser substituída por " "'%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Para extrair CDs de áudio, a infraestrutura '%1' pode ser substituída por " "'%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Para decodificar arquivos %1, a infraestrutura '%2' pode ser substituída por " "'%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Para aplicar Replay Gain nos arquivos %1, a infraestrutura '%2' pode ser " "substituída por '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignorar" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Corrigir" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "O soundKonverter não conseguiu encontrar pacotes que faltam.\n" "Se estiver faltando algum formato de arquivo, você precisa instalar o plugin " "através do gerenciador de pacotes da sua distribuição." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Alguns plugins não estão funcionando.\n" "As soluções possíveis são mostradas abaixo." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Alguns arquivos não foram decodificados.\n" "As soluções possíveis são mostradas abaixo." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Nem todos os arquivos têm suporte a Replay Gain.\n" "As soluções possíveis são mostradas abaixo." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Os plugins instalados não tem suporte a extração de CDs.\n" "Procure no gerenciador de pacotes da sua distribuição algum plugin para " "extração de CDs através do soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Não há suporte a extração de CDs de áudio porque você não possui as " "infraestruturas necessárias.\n" "As soluções possíveis são mostradas abaixo." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Soluções possíveis para %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "ou" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Arquivos afetados:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Última utilização" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Alta" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "capa" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Interna" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Muito baixa" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Baixa" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Média" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Muito alta" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Sem perda" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Híbrido" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Definido pelo usuário" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Converter com o soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Adicionar Replay Gain com o soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avançado" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Extensão preferida para nomes de arquivo ogg vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "" "Campo preferido para a etiqueta de comentário de arquivos ogg vorbis e flac:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Alguns aplicativos usam o campo DESCRIÇÃO, embora o correto seja o campo " "COMENTÁRIO.\n" "Os comentários serão gravados no campo selecionado e ao ler as etiquetas, o " "campo selecionado será o preferido." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Campo preferido para a etiqueta do número de faixas de arquivos ogg vorbis e " "flac:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "O número de faixas será gravado no campo selecionado e ao ler as etiquetas, " "o campo selecionado será o preferido.\n" "Ao usar o campo TRACKNUMBER, o número da faixa e o número de faixas serão " "gravados no mesmo campo e separados por uma barra ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Campo preferido para a etiqueta do número de discos de arquivos ogg vorbis e " "flac:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "O número de discos será gravado no campo selecionado e ao ler as etiquetas, " "o campo selecionado será o preferido.\n" "Ao usar o campo DISCNUMBER, o número do disco e o número de discos serão " "gravados no mesmo campo e separados por uma barra ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Sempre usar nomes compatíveis com FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Substitui alguns caracteres especiais, tais como '?' por '_'.\n" "Se a pasta de destino for um sistema de arquivos FAT, os nomes compatíveis " "com este sistema serão utilizados automaticamente, independentemente desta " "opção." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Depurar" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Gravar registros no disco" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Gravar registros no disco durante a conversão.\n" "Pode ser útil se ocorrer uma falha e o usuário não consiga acessar o arquivo " "de registro com o visualizador de registros.\n" "Os registros serão gravados em %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Experimental" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Armazenar os arquivos temporários na memória a menos que o tamanho estimado " "seja maior que:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Não armazenar os arquivos temporários se for esperado que ele seja maior que " "o valor na memória, para evitar a utilização do disco" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Parece que não há um sistema de arquivos montado em /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Usar canais quando possível" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Os canais tornam desnecessária a utilização de arquivos temporários, " "melhorando o desempenho.\n" "No entanto, como algumas infraestruturas podem apresentar erros, esta opção " "deve ser usada com precaução." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Decodificador" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Codificador" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Mover %1 uma posição para cima" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Mover %1 uma posição para baixo" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Sobre o %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Extrator de CDs" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Usar o plugin:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtros" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Ativar os plugins:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioridades" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Configurar as prioridades do plugin para o formato:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Mostrar as otimizações possíveis" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Você alterou as configurações atuais.\n" "Deseja salvá-las?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Configurações alteradas" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Isto irá escolher a melhor infraestrutura para todos os formatos e salvar as " "novas preferências imediatamente.\n" "\n" "Deseja continuar?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Parece que as configurações das infraestruturas já foram otimizadas, não " "havendo nada a ser feito." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Salvar capas na pasta de destino" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Salvar capas incorporadas na pasta de destino" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Sempre" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "" "Somente se não for possível incorporar as capas nos arquivos de destino" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Nunca" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Nome do arquivo de capa (ao salvar na pasta de destino)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "A descrição da capa incorporada" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "O nome de arquivo padrão da capa" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Nome de arquivo padrão da capa:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "As linhas abaixo mostram os caracteres especiais que serão\n" "substituídos pelas informações dos metadados:\n" "\n" "%a - Artista\n" "%b - Álbum\n" "%d - Descrição da capa\n" "%r - Tipo de capa" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Configurações" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Geral" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Arte da capa" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Infraestruturas" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Interface do usuário" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Iniciar no modo:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Simples" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Detalhado" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Perfil padrão:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Formato padrão:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Conversão" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Administração de conflitos:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Gerar novo nome de arquivo" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Ignorar o arquivo" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "O que fazer se o arquivo de destino já existir" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Número de arquivos a converter ao mesmo tempo:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Você não deve definir um número superior ao de núcleos do processador " "instalado.\n" "Foi/Foram detectado(s) %1 núcleo(s) do processador." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Aplicar ganho de álbum aos arquivos convertidos" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Manter as músicas do mesmo álbum à espera na lista de arquivos, para aplicar " "o ganho de álbum em todos os arquivos." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Ferramenta Replay Gain" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Agrupar arquivos na ferramenta Replay Gain por:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Etiquetas e pastas dos álbuns" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Apenas as etiquetas dos álbuns" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Apenas as pastas" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Número de itens a processar ao mesmo tempo:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Obtendo arquivo" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Copiando \"%1\" para \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Não há mais infraestruturas para testar :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Convertendo" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Falha na conversão. Existe pelo menos uma infraestrutura a ser configurada " "adequadamente." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Ocorreu uma falha na conversão. O plugin preferido não tem suporte a um " "recurso necessário." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Ocorreu uma falha na conversão. Erro desconhecido." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Extraindo" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Decodificando" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Aplicando o filtro" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Codificando" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Ignorando o Replay Gain para usar o Album Gain mais tarde" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Aplicando o Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Gravando etiquetas" #: convert.cpp:542 msgid "Running user script" msgstr "Executando o script do usuário" #: convert.cpp:567 msgid "Executing next step" msgstr "Executando a próxima etapa" #: convert.cpp:711 msgid "Read tags successfully" msgstr "As etiquetas foram lidas com sucesso" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Não foi possível ler as etiquetas" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Removendo: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Ocorreu um erro. Código: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Ocorreu um erro ao converter. Código: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Faixa de CD %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Faixa de CD %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Adicionando um novo item à lista de conversão: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Obtido o ID: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Número da faixa: %1, dispositivo: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Possíveis estratégias de conversão:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Tipo de sistema de arquivos: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Ocorreu um erro. O tamanho do arquivo de destino é inferior a um por cento " "do tamanho do arquivo original." #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Ocorreu uma falha na conversão. Tente novamente. Código: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Remover os arquivos parcialmente convertidos" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Saída normal" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Foi concluído, mas apresentou problemas" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Cancelado pelo usuário" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "A infraestrutura precisa de configuração" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Espaço insuficiente no dispositivo de destino" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "O arquivo já existe" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Ocorreu um erro" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Executando o comando: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Removendo o arquivo da lista de conversão. Código %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Duração da conversão" #: convert.cpp:1183 msgid "Output file size" msgstr "Tamanho do arquivo de destino" #: convert.cpp:1184 msgid "File size ratio" msgstr "Proporção do tamanho do arquivo" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Desconhecido" #: convert.cpp:1325 msgid "Filter" msgstr "Filtro" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Progresso: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave é um formato de áudio muito simples que não comprime o fluxo de áudio. " "Ele não perde a qualidade, mas o tamanho do arquivo é muito grande e não tem " "suporte a recursos avançados, com etiquetas.
Ele tem suporte a " "praticamente todos os programas e dispositivos.

http://pt.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) é um formato de áudio com perdas e bastante " "popular. Ele é muito usado pela Apple Inc.
No soundKonverter \"aac\" " "refere-se apenas ao codec. Para obter um arquivo com recursos de marcação, " "use \"m4a/aac\".

http://pt.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) é um formato de áudio com perdas e bastante " "popular. Ele é muito usado pela Apple Inc.
No soundKonverter \"m4c/aac\" " "refere-se apenas a um arquivo de áudio MPEG-4 codificado com AAC.

http://pt." "wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) é um formato de áudio sem perdas. Ele é " "muito usado pela Apple Inc.
No soundKonverter \"m4a/alac\" refere-se " "apenas a um arquivo de áudio MPEG-4 codificado com ALAC.

http://en.wikipedia.org/wiki/" "Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis é um formato de áudio com perdas e bastante popular.
Ele é " "livre de quaisquer restrições legais.

http://pt.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus é um formato de áudio com perdas, criado para comunicação em tempo real " "na Internet.
Ele pode englobar uma ampla variedade de taxas de bits, com " "alta qualidade e livre de quaisquer restrições legais.

http://en.wikipedia.org/" "wiki/Opus\n" " (audio format)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 ou MPEG-2 Audio Layer III (MP3) é o mais popular formato de áudio com " "perdas.
Ele tem suporte por praticamente todos os reprodutores de áudio, " "apesar de ter algumas restrições legais.

http://en.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) é um formato de áudio sem perdas.
Ele é " "livre de quaisquer restrições legais.

http://pt.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) é um formato de áudio com perdas desenvolvido pela " "Microsoft.

http://en.wikipedia.org/wiki/Windows\n" " Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 ou AC-3 é parte da família de formatos Dolby Digital.
Ele foi criado " "para uso em filmes (p.ex., DVDs) e tem suporte a som surround.

http://en.wikipedia.org/" "wiki/Dolby\n" " Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 ou MPEG-2 Audio Layer II (MP2) é um antigo formato de áudio com " "perdas.

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) é usado principalmente para " "compressão de voz em comunicação móvel.

http://" "en.wikipedia.org/wiki/Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) é uma versão avançada do AMR NB que " "usa uma taxa de dados maior, tendo como resultado uma melhor qualidade." "
Ele deve ser usado apenas para compressão de voz.

http://en." "wikipedia.org/wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio é um formato de áudio sem perdas.

http://en.wikipedia.org/" "wiki/Monkey's Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex é um formato de áudio com perdas que foi criado para codificação de " "voz.
Ele é livre de quaisquer restrições legais. O Speex é considerado um " "formato obsoleto desde o lançamento do Opus.

http://en.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) é um formato de arquivo livre e com perdas, baseado no mp2 e " "otimizado para alta qualidade.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) é formato de áudio livre e sem perdas.

http://en.wikipedia.org/wiki/Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) é um formato de áudio livre e sem perdas.

http://en.wikipedia.org/wiki/" "TTA (codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) é um formato de áudio livre e sem perdas.

http://en.wikipedia.org/wiki/" "WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) é um padrão de formato de arquivo de áudio " "desenvolvido pela Electronic Arts para os modelos de computador Commodore-" "Amiga.

http://en." "wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) é um formato de áudio muito simples, " "que não comprime o fluxo de áudio. Ele é um formato sem perdas, mas o " "tamanho do arquivo é muito grande e não tem suporte a recursos avançados, " "como as marcas.

http://en.wikipedia.org/wiki/Audio " "Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Terminando o processo por solicitação do usuário" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Para codificar arquivos %1, você precisa instalar o '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Para decodificar arquivos %1, você precisa instalar o '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Para converter arquivos %1, você precisa instalar o '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Para calcular as etiquetas do Replay Gain de %1 arquivos, você precisa " "instalar o '%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' deve ter sido disponibilizado com a sua distribuição." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Uma vez que '%1' inclui codecs patenteados, é possível que não esteja " "incluído por padrão na sua distribuição. No entanto, muitas distribuições " "disponibilizam '%1' em repositório adicional." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Você pode baixar o '%1' em %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Para usar o filtro %1, você precisa instalar '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Para usar os filtros %1, você precisa instalar '%2'." #: filelist.cpp:48 msgid "State" msgstr "Estado" #: filelist.cpp:49 msgid "Input" msgstr "Entrada" #: filelist.cpp:50 msgid "Output" msgstr "Saída" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Qualidade" #: filelist.cpp:79 msgid "Edit options..." msgstr "Editar opções..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Iniciar a conversão" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Parar a conversão" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Remover" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Este tipo de arquivo não é reconhecido pelo soundKonverter.\n" "Pode ser necessário instalar um plugin adicional do soundKonverter.\n" "Verifique se o plugin existe no gerenciador de pacotes da sua distribuição." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... e mais %1 arquivo(s)" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Serão ignoradas" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Aguardando" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Aguardando o Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Parado" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Infraestrutura não configurada" #: filelist.cpp:593 msgid "Disc full" msgstr "Disco cheio" #: filelist.cpp:603 msgid "Failed" msgstr "Falhou" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Ocorreu um erro durante a conversão.\n" "Consulte o registro para mais informações." #: filelist.cpp:630 msgid "CD track %1" msgstr "%1 faixa do CD" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Deseja sobrescrever a lista de arquivos atual?\n" "\n" "Se negativo, a lista salva será adicionada." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identificador" #: logger.cpp:91 msgid "Log ID" msgstr "ID do registro" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Registro finalizado" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Visualizador de registros" #: logviewer.cpp:28 msgid "Update" msgstr "Atualizar" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Salvar no arquivo..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Arquivo de registro:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Registro do aplicativo soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Salvar registro em arquivo" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "O arquivo já existe. Deseja realmente sobrescrevê-lo?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Ocorreu um erro ao gravar o arquivo.\n" "Você pode não possuir permissão de gravação." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "O soundKonverter é uma interface gráfica para diversos conversores de áudio, " "extratores de CD e ferramentas Replay Gain.\n" "\n" "Se encontrar erros, reporte-os em https://bugs.launchpad.net/soundkonverter\n" "ou envie um e-mail para hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Tema de ícones Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Desenvolvedores do Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Todos os programadores de conversores de áudio" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "" "Abrir a ferramenta Replay Gain e adicionar todos os arquivos fornecidos" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "Listar todas as faixas da unidade , 'auto' procura por um CD" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Adicionar todos os arquivos usando o perfil fornecido" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Adicionar todos os arquivos usando o formato fornecido" #: main.cpp:36 msgid "Output all files to " msgstr "Gravar todos os arquivos em " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Iniciar o soundKonverter em segundo plano" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Iniciar a conversão imediatamente (ativado ao usar a opção '--invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Fechar o soundKonverter após converter todos os arquivos (ativado ao usar a " "opção '--invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Executar após converter cada um dos arquivos (%i=arquivo original, " "%o=arquivo destino)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Arquivo(s) de áudio para adicionar à lista de arquivos" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Não classificado" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "Ícone de arquivo PNG 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Ícone de arquivo" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Capa frontal" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Contracapa" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Panfleto" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Foto de CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Imagem do artista principal" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Imagem do artista" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Imagem do maestro" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Imagem da banda" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Imagem do compositor" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Imagem do letrista" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Imagem do local de gravação" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Imagem dos artistas durante a gravação" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Imagem dos artistas durante um espetáculo" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Imagem de um vídeo" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Imagem de um peixe grande e colorido" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Ilustração relacionada à faixa" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Logotipo da banda" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Logotipo da editora" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Adicionar faixas de CD" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Selecionar as faixas do CD" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Defina as opções de conversão" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artista:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Vários artistas" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Compositor:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Vários compositores" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Álbum:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Disco n°:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "de" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Ano:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Gênero:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Extrair" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Faixa" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artista" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Compositor" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Título" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Duração" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Reprodutor" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Nenhuma faixa selecionada" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Título:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Comentário:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Selecione as opções desejadas e clique em \"OK\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Criar arquivo cue..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Pesquisar no CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Extrair o CD inteiro para um arquivo" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "As infraestruturas instaladas não permitem a extração de CDs inteiros para " "um único arquivo.\n" "As soluções possíveis são mostradas abaixo.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "As infraestruturas instaladas não permitem a extração de CDs inteiros para " "um único arquivo.\n" "Verifique se o gerenciador de pacotes da sua distribuição disponibiliza a " "instalação de um plugin adicional, que permita a extração para um único " "arquivo." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Prosseguir" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "OK" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Cancelar" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Selecione a unidade de CD" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Foram encontradas várias unidades de CD. Selecione apenas uma:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Gravador de DVDs" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Gravador de CDs" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Reprodutor de DVDs" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Reprodutor de CDs" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): CD de áudio com %3 faixas" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Desconhecido" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Por favor, aguarde. Tentando baixar os dados do CDDB..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Selecione o registro CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Foram encontrados vários registros CDDB. Selecione apenas um:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Todas as faixas" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Faixas" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Selecione pelo menos uma faixa para prosseguir." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Nenhuma opção de conversão selecionada." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Já existe um arquivo com este nome.\n" "\n" "Deseja sobrescrevê-lo?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "O arquivo já existe" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Adicionar pasta" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Selecione a pasta" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Pasta:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Adicionar apenas os formatos de arquivo selecionados:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Estão faltando alguns formatos de arquivo?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Selecionar tudo" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Nenhuma seleção" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Recursivo" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Se assinalado, os arquivos das subpastas também serão adicionados." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Adicionar arquivos" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 arquivos" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Todos os arquivos suportados" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Todos os arquivos" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Adicionar lista de músicas" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Os arquivos a seguir não foram encontrados:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Arquivos não encontrados" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Adicionar URL" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Digite a URL" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "A URL digitada não é válida. Por favor, tente novamente." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Formato:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Usar o plugin:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destino:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Calcular as etiquetas Replay Gain" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Salvar as opções atuais como um perfil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Carregar os perfis salvos" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "O formato de arquivo %1 não tem suporte a Replay Gain.\n" "As soluções possíveis são mostradas abaixo." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "O formato de arquivo %1 não tem suporte a Replay Gain.\n" "Verifique se o gerenciador de arquivos da sua distribuição disponibiliza a " "instalação de um plugin Replay Gain." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "As etiquetas Replay Gain podem informar o volume das faixas ao seu " "reprodutor de músicas, para que possa ser ajustado de modo a reproduzir as " "faixas com um volume homogêneo." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Com as opções de conversão atuais será criado arquivos com aproximadamente " "%1 por minuto." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Novo perfil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Digite um nome para o novo perfil:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Você não pode salvar um perfil sem nome." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "O nome do perfil está em branco" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Você não pode sobrescrever os perfis predefinidos." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "O perfil já existe" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Já existe um perfil com este nome.\n" "\n" "Deseja sobrescrevê-lo?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Anterior" #: optionseditor.cpp:42 msgid "Next" msgstr "Próximo" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Editar as opções de conversão" #: optionseditor.cpp:74 msgid "Tags" msgstr "Etiquetas" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Capas:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Editar" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Faixa n°:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Editar etiquetas" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Nenhum arquivo selecionado" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "As etiquetas não puderam ser lidas, porque este não é um arquivo local.\n" "O soundKonverter tentará ler as etiquetas durante a conversão do arquivo.\n" "Se você quiser editar as etiquetas, clique no botão abaixo. No entanto, o " "soundKonverter\n" "não tentará ler as etiquetas após o download." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Ocorreu um erro na leitura das etiquetas deste arquivo.\n" "O soundKonverter tentará ler as etiquetas durante a conversão do arquivo.\n" "Se você quiser editar as etiquetas, clique no botão abaixo. No entanto, o " "soundKonverter não \n" "tentará ler as etiquetas pela segunda vez." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Tipo da capa:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Descrição:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Tamanho:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pixels (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Tipo MIME:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 arquivos" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Você selecionou vários arquivos com diferentes opções de conversão.\n" "É possível alterar as opções de todos os arquivos clicando no botão abaixo." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Ocorreu um erro na leitura das etiquetas de um ou mais arquivos.\n" "O soundKonverter tentará ler as etiquetas durante a conversão do arquivo.\n" "Se você quiser editar as etiquetas, clique no botão abaixo. No entanto, o " "soundKonverter não tentará\n" "ler as etiquetas pela segunda vez." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Qualidade:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Remover o perfil selecionado" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Informações" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informações sobre o perfil selecionado" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informações sobre o formato de arquivo selecionado" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Mais formatos..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Opcional:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "A codificação de arquivos com qualidade muito baixa pode ser útil se você " "tem um dispositivo móvel, onde o seu espaço de armazenamento é limitado.\n" "Não é recomendado salvar suas músicas nesta qualidade, a menos que você faça " "uma cópia com qualidade mais alta." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "A codificação de arquivos com qualidade baixa pode ser útil se você tem um " "dispositivo móvel, onde o seu espaço de armazenamento é limitado.\n" "Não é recomendado salvar suas músicas nesta qualidade, a menos que você faça " "uma cópia com qualidade mais alta." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "A codificação de arquivos com qualidade média tenta aliar qualidade e " "tamanho do arquivo.\n" "Muitas pessoas podem não perceber diferença em relação aos arquivos " "originais, mas você só deve usá-la para salvar músicas se o seu espaço de " "armazenamento for limitado." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "A codificação de arquivos com qualidade alta é uma boa escolha se você tiver " "espaço de armazenamento disponível. Você pode usá-la para salvar as suas " "músicas." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "A codificação de arquivos com qualidade muito alta é uma boa escolha se você " "tiver espaço de armazenamento disponível." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "A codificação de arquivos sem perdas manterá a qualidade do arquivo " "original.\n" "Ela será útil apenas se o arquivo original tiver boa qualidade (p.ex., CD de " "áudio).\n" "Como o tamanho do arquivo será grande, você só deve usá-la se tiver espaço " "de armazenamento suficiente." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Você pode definir o seu próprio perfil na aba \"Detalhado\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Este é um perfil definido pelo usuário." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Informações do perfil para %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Deseja realmente remover o perfil: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Remover o perfil?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Informações sobre %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Infelizmente, não existem informações sobre o formato." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Por metadados" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Pasta de origem" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Indicar a pasta de destino" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Copiar a estrutura da pasta" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Escolha a pasta de destino" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Abrir a pasta de destino com o Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Artista desconhecido" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Álbum desconhecido" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Sem comentário" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Gênero desconhecido" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Compositor desconhecido" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Título desconhecido" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "novo" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "" "O nome de todos os arquivos convertidos serão de acordo com o padrão " "especificado" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "As linhas abaixo mostram os caracteres especiais que serão\n" "substituídos pelas informações dos metadados:\n" "\n" "%a - Artista\n" "%b - Álbum\n" "%c - Comentário\n" "%d - Número do disco\n" "%g - Gênero\n" "%n - Número da faixa\n" "%p - Compositor\n" "%t - Título\n" "%y - Ano\n" "%f - Nome do arquivo original\n" "\n" "Você pode colocar os caracteres entre colchetes ('[' and ']') de modo a " "serem ignorados se o valor \n" "de substituição estiver vazio.\n" "Para poder usar os colchetes, você precisa digitá-los da seguinte forma " "('\\[' and '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" "Salvar todos os arquivos convertidos na mesma pasta dos arquivos originais" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Salvar todos os arquivos convertidos na pasta de destino indicada" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Copiar a estrutura de pastas para todos os arquivos convertidos" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Modo:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Taxa de bits" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Taxa de bits:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Argumentos adicionais do codificador:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Ativar os codecs experimentais na janela de configuração do ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Compilar o ffmpeg com suporte a %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Configurar %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Ativar os codecs experimentais" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Reinicie o soundKonverter para ativar as alterações." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Nível de compressão:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Usar arquivo SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Para converter dados midi em wave, você precisa do SoundFont para mapear os " "efeitos sonoros dos dados midi.\n" "Consulte %1 para obter os arquivos do SoundFont." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "O FluidSynth ainda não foi configurado. Você precisa definir um arquivo " "SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Ajuste:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Médio" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Padrão" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Extremo" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Insano" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Indicar a taxa de bits" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Codificar a uma taxa de bits constante.\n" "Só funciona com 80, 96, 112, 128, 160, 192, 224, 256 e 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Codificação rápida" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Usar um algoritmo de codificação rápida (resulta em qualidade inferior)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Modo de taxa de bits:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variável" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Média" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Constante" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "O nível de compressão vai de 9 a 0, sendo o 0 a melhor qualidade.\n" "(Quanto melhor a qualidade, mais lenta é a conversão e vice-versa.)\n" "O valor 2 é recomendado." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "Este ajuste deve ser usado na maioria das situações (~150 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Este ajuste deve ser usado na maioria das situações e apresenta uma\n" "elevada qualidade (~230 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Se você possuir uma boa audição e equipamento de alta qualidade, este ajuste " "irá gerar \n" "uma qualidade superior a do modo padrão (~280 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Este ajuste será exagerado para a maioria das pessoas e situações mas, se " "você pretende ter a melhor\n" "qualidade, independentemente do tamanho do arquivo, este é o ajuste a ser " "usado (320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "O nível de qualidade vai de 9 a 0, sendo o 0 a melhor qualidade.\n" "(Quanto melhor a qualidade, maior será o tamanho do arquivo e vice-versa.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Modo estéreo:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automático" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Simple Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Forced Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dual Mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Sobre o %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME é um codificador de MP3 livre e de alta qualidade.\n" "Você pode obtê-lo em: http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Ativar os codecs experimentais na janela de configuração da libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Compilar a libav com suporte a %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefone" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Miniatura" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Rádio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Braindead" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "Só usar os ajustes MusePack ou as suas próprias configurações." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "qualidade baixa (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "qualidade baixa/média (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "qualidade média (~130 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "qualidade alta (~180 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "qualidade superior (~210 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "qualidade excelente (~240 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "qualidade máxima (~270 kbps abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" "Você pode baixar '%1' em '%2', depois de indicar um endereço de e-mail." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "Normalmente, '%1' pertence ao pacote '%2', que deve estar presente na sua " "distribuição." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Canais desacoplados" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Usar um fluxo mono por canal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame é um codificador livre de MP2.\n" "Você pode obtê-lo em: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Nível de qualidade entre -50 e 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "Normalmente, '%1' pertence ao pacote '%2', que você pode baixar em %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Rápida" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Alta qualidade" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Qualidade muito alta" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Nivelar o volume" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Ativar os codecs experimentais na janela de configuração do sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Compilar o sox com suporte a %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Qualidade da alteração da taxa de amostragem:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Rápido" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "O nível de qualidade entre 0 e 9, onde o 0 é a melhor qualidade." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Efeito:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Desativado" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Remover este efeito" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Adicionar" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Adicionar outro efeito" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Nivelar o volume:\n" "Ajusta o volume para que todos os arquivos tenham um volume homogêneo" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Graves:\n" "Amplifica as frequências baixas" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Agudo:\\n\n" "Amplifica as frequências altas" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Taxa de amostragem:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Tamanho da amostragem:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Canais:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Estéreo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Usar o formato de etiqueta:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Modificar o fluxo de áudio" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Gravar os ajustes de ganho diretamente para os dados codificados. Desta " "forma, os ajustes funcionam com todos os reprodutores de MP3.\n" "É possível desfazer as alterações, pois os dados de correção também são " "gravados." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Para extrair as faixas do CD para um único arquivo, você precisa instalar o " "'cdparanoia'.\n" "Provavelmente este pacote está disponível na sua distribuição, mas o nome " "pode ser diferente." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Velocidade:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Tempo restante:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Concluído" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Arquivo" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Álbum" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Recolher tudo" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Expandir tudo" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Mover para o novo álbum" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Algumas faixas não podem ser adicionadas ao álbum porque o codec ou a taxa " "de amostragem são diferentes." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Novo álbum" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "O Replay Gain falhou. A infraestrutura usada precisa ser configurada de " "forma adequada." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "O Replay Gain falhou. O plugin preferido não tem suporte a um recurso " "necessário." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "O Replay Gain falhou. Erro desconhecido." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "O Replay Gain falhou. Código: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "" "Adicionando um novo item para a lista de processamento do Replay Gain: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain para %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Possíveis infraestruturas para Replay Gain:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Ignorado" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Adicionar pasta..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Adicionar arquivos..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Forçar novo cálculo" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Recalcular as etiquetas Replay Gain em arquivos que já possui estas " "etiquetas definidas." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Definir etiqueta" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Calcular as etiquetas Replay Gain em todos os arquivos da lista que ainda " "não possuem as etiquetas." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Remover etiqueta" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Remover as etiquetas Replay Gain de todos os arquivos da lista." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Fechar" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Ainda existem tarefas de Replay Gain em execução.\n" "Deseja realmente cancelar?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Este é o soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Compilado com a TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Não há suporte a leitura/gravação de capas para arquivos ogg/" "METADATA_BLOCK_PICTURE, flac e asf/wma. Para isto é necessário a TagLib 1.7." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Removendo o arquivo antigo: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Ver registros..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Ferramenta Replay Gain..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Sobre os plugins..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Adicionar faixas de CD..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Adicionar URL..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Adicionar lista de músicas..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Carregar a lista de arquivos" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Salvar a lista de arquivos" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Iniciar" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Parar" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Parar imediatamente" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Parar após a conclusão das conversões atuais" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Continuar após a conclusão das conversões atuais" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Nenhum dispositivo de CD encontrado" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Ferramentas" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "André Marcelo Alvarenga" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "alvarenga@kde.org" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Conversor de arquivo de áudio, extração de CD e ferramenta Replay Gain" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Extrair um CD de áudio com o soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/fr.po0000644000175000001440000000013212255310031017360 xustar000000000000000030 mtime=1387630617.793845656 30 atime=1387630617.768845969 30 ctime=1387631578.279421798 ./soundkonverter-2.0.5/po/fr.po0000644000175000001440000034712212255310031017004 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Yannick ERNULT , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: Yannick ERNULT \n" "Language-Team: French (http://www.transifex.com/projects/p/soundkonverter/" "language/fr/)\n" "Language: fr\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "À propos des greffons" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Greffons installés :" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "À propos du greffon %1 :" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Type du greffon : %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Modules :" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (trouvé à : %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (non trouvé)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Codecs supportés :" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Actuellement désactivé." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Encodage : %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Décodage : %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Configuration de %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Solutions pour les problèmes de module(s)" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Des modules ont été installés ou désinstallés et la configuration de " "soundKonverter peut être optimisée." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Pour encoder des fichiers en %1, le module '%2' peut être remplacé par '%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "Pour extraire des CD le module '%1' peut être remplacé par '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Pour décoder des fichiers %1, le module '%2' peut être remplacé par '%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Pour appliquer le Replay Gain aux fichiers '%1', le module '%2' peut être " "remplacé par '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignorer" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Réparer" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter n'a pu trouver aucun paquetage manquant.\n" "Si certains formats de fichier manquent, il vous faudra peut-être installer " "un greffon additionnel via le gestionnaire de paquets de votre distribution." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Certains des greffons installés ne fonctionnent pas.\n" "Voici, ci-dessous, les solutions possibles." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Le décodage a échoué pour certains fichiers.\n" "Voici, ci-dessous, les solutions possibles." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Replay Gain n'est pas supporté par certains fichiers.\n" "Voici, ci-dessous, les solutions possibles." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "L'extraction de CDs audio n'est supportée pas aucun greffon installé.\n" "Veuillez vérifier si votre gestionnaire de paquets vous propose un (des) " "module(s) extracteur(s) de CDs pour soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "L'extraction de CD n'est actuellement pas supporté car il manque des " "modules.\n" "Voici, ci-dessous, les solutions possibles." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Solutions possibles pour %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "ou" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Fichiers affectés :" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Utilisé en dernier" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Haut" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "couverture" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Essayez le module interne" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Très bas" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Bas" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Moyen" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Très haut" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Sans perte" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Hybride" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Défini par l'utilisateur" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Convertir avec soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Ajouter le Replay Gain avec soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avancé" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Nom de l'extension préférée pour les fichiers ogg vorbis :" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Commentaire préféré pour les fichiers ogg vorbis et flac :" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Certaines applications utilisent le champ DESCRIPTION même si c'est le champ " "COMMENT qui est correct.\n" "Les commentaires seront écrits dans le champ sélectionné, mais quand les " "tags seront lus c'est le champ associé qui sera préféré." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Tag préféré pour le nombre total des pistes concernant les fichiers ogg " "vorbis et flac :" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Le nombre total des pistes sera écrit dans le champ sélectionné, mais quand " "les tags seront lus c'est le champ associé qui sera préféré.\n" "Quand le champ TRACKNUMBER est utilisé, le numéro de piste et le nombre " "total de pistes seront écrits dans le même champ et seront séparés par un " "slash ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Tag préféré pour le nombre total de disques concernant les fichiers ogg " "vorbis et flac :" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Le nombre total des disques sera écrit dans le champ sélectionné, mais quand " "les tags seront lus c'est le champ associé qui sera préféré.\n" "Quand le champ DISCNUMBER est utilisé, le numéro de disque et le nombre " "total de disques seront écrits dans le même champ et seront séparés par un " "slash ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Utiliser toujours des noms de fichier compatible FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Remplacer certains caractères spéciaux comme '?' par '_'.\n" "Si le dossier de destination est sur un système de fichiers FAT, les noms de " "fichier compatibles FAT seront automatiquement utilisés indépendamment de " "cette option." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Déboguer" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Écrire les journaux de log sur le disque" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Écrire les journaux de log sur le disque dur pendant la conversion.\n" "Ceci peut être utile si un plantage survient et que vous ne pouvez pas " "accéder au journal de log en utilisant la visionneuse des journaux de log.\n" "Les journaux de log sont écrits dans %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Expérimental" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Stocker les fichiers temporaires dans la mémoire vive à moins que leur " "taille estimée soit plus grande que :" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Ne stockez pas en mémoire vive les fichiers qui sont susceptibles d'être " "plus gros que cette valeur afin d'éviter le swap" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "Mio" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Il semble qu’aucun système de fichiers ne soit monté sur /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Utiliser les chaînages quand c'est possible" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Les chaînages rendent les fichiers temporaires inutiles ce qui accroît les " "performances.\n" "Néanmoins certains modules provoquent des erreurs dans ce mode, à utiliser " "avec prudence." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Décodeur" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Encodeur" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Déplacer %1 vers le haut" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Déplacer %1 vers le bas" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "À propos de %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Extracteur de CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Utiliser le greffon :" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtres" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Activer les greffons :" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Priorités" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Configurer les priorités des greffons pour le format :" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Montrer les optimisations possibles" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Vous avez changé la configuration actuelle.\n" "Voulez-vous l'enregistrer?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Configuration changée" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Cette action choisit les meilleurs modules pour tous les formats et " "enregistre les nouvelles préférences immédiatement.\n" "\n" "Voulez-vous continuer?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "La configuration de tous les modules semble optimale, il n'y a rien à " "modifier." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Enregistrer les couvertures vers le dossier de destination" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Enregistrer les couvertures intégrées vers le dossier de destination" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Toujours" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "" "Seulement si intégrer les couvertures vers les fichiers de destination n'est " "pas possible" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Jamais" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "" "Nom de fichier pour la couverture (quand on enregistre vers un dossier)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Description de la couverture intégrée" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Nom par défaut de la couverture" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Nom par défaut de la couverture :" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Les caractères suivants sont des jokers qui seront remplacés\n" "par les informations des méta-données suivantes:\n" "\n" "%a - artiste\n" "%b - album\n" "%d - description de la couverture\n" "%r - rôle de la couverture" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Configuration" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Général" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Couverture" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Modules" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Interface de l'utilisateur" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Commencer avec le mode :" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "simple" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "détaillé" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Profil par défaut :" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Format par défaut :" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Conversion" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Gestion du conflit :" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Générer un nouveau nom de fichier" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Passer le fichier" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Effectuer cette action si le fichier de destination existe déjà" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Nombre de fichiers à convertir en même temps :" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Veillez à ne pas spécifier un nombre plus grand que le total des cœurs de " "votre processeur.\n" "Le système a détecté %1 cœur(s) dans votre processeur." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Appliquer le gain par album aux fichiers convertis" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Garder les chansons du même album en attente afin d'appliquer le gain par " "album à tous les fichiers." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Outil Replay Gain" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Grouper les fichiers dans l'outil Replay Gain par :" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Tags d'album et dossiers" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Tags d'album seulement" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Dossiers seulement" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Nombre d'éléments à traiter en même temps :" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Récupération du fichier" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Copie de \"%1\" vers \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Il n'y a plus de modules à essayer :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Conversion" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "La conversion a échoué. Au moins un des modules doit être configuré " "correctement." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "La conversion a échoué. Il manque une fonction nécessaire au greffon que " "vous avez choisi." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "La conversion a échoué. Erreur inconnue." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Extraction" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Décodage" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Application du filtre" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Encodage" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Passe le Replay Gain, l'Album Gain sera calculé plus tard" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Application du Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Écriture des tags" #: convert.cpp:542 msgid "Running user script" msgstr "Lancement du script de l'utilisateur" #: convert.cpp:567 msgid "Executing next step" msgstr "Exécution de la prochaine étape" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Les tags ont été lus avec succès" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Impossible de lire les tags" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Suppression : %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Une erreur est survenue. Code de l'erreur : %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "La conversion a échoué. Code de sortie : %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Piste %1 du CD : %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Piste %1 du CD" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Ajout de nouveaux éléments à la liste de conversion : '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Identification du journal de log : %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Numéro de piste : %1, périphérique : %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Stratégies de conversion possibles :" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Type du système de fichiers : %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Une erreur est survenue, la taille du fichier cible fait plus de 1 pour cent " "du fichier source" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "La conversion a échoué, essayez à nouveau. Code de sortie : -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Suppression des fichiers partiellement convertis" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Sortie normale" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Terminé mais il y a eu des problèmes" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Arrêté par l'utilisateur" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Le module doit être configuré" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Pas assez d'espace disque sur le périphérique de destination" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Le fichier existe déjà" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Une erreur est apparue" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Exécution de la commande : \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "" "Suppression du fichier de la liste de conversion. Code de sortie %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Temps de conversion" #: convert.cpp:1183 msgid "Output file size" msgstr "Taille du fichier de destination" #: convert.cpp:1184 msgid "File size ratio" msgstr "Ratio de la taille du fichier" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Inconnu" #: convert.cpp:1325 msgid "Filter" msgstr "Filtre" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Progression : %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave un format audio très simple qui ne compresse pas le flux sonore. C'est " "un format sans perte qui produit des fichiers de très grande taille et ne " "supporte pas les fonctions avancées telles que les tags.
Il est " "virtuellement reconnu par n'importe quel logiciel ou périphérique.

http://fr.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) est un format audio avec perte et populaire. Il " "est très utilisé par Apple Inc.
Dans soundKonverter, \"aac\" fait " "référence uniquement au codec. Pour obtenir un fichier avec des tags, " "utilisez \"m4a/aac\".

http://fr.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) est un format audio avec perte et populaire. Il " "est très utilisé par Apple Inc.
Dans soundKonverter, \"m4a/aac\" fait " "référence aux fichiers audios MPEG-4 encodés avec AAC.

http://fr.wikipedia." "org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) est un format audio sans perte. Il est " "très utilisé par Apple Inc.
Dans soundKonverter, \"m4a/alac\" fait " "référence aux fichiers audios MPEG-4 encodés avec ALAC.

http://fr.wikipedia.org/wiki/" "Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis est un format audio avec perte et populaire.
Il est libre de " "toute restriction légale.

http://fr.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus est un format audio avec perte créé spécifiquement pour les " "communications internet en temps réel.
Il peut couvrir un large éventail " "de débits en haute qualité et est libre de toute restriction légale." "

http://" "en.wikipedia.org/wiki/Opus (format audio)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 ou MPEG-2 Audio Layer III (MP3) est le format audio avec perte le " "plus populaire.
Il est virtuellement supporté par tous les lecteurs audio " "bien qu'il soit soumis à des restrictions légales.

http://fr.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) est un format audio sans perte.
Il est " "libre de toute restriction légale.

http://fr.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) est un format audio avec perte développé par " "Microsoft.

http://fr.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 or AC-3 fait partie de la famille des formats Dolby Digital.
Il a été " "créé pour les films (ex : DVD) et supporte le son surround.

http://fr.wikipedia.org/wiki/" "Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) est un ancien format audio avec perte." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) est principalement utilisé pour la " "compression des conversations des télécommunications mobiles.

http://en." "wikipedia.org/wiki/Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) est une version avancée d'AMR NB qui " "utilise un taux de données supérieur générant une meilleure qualité.
Il " "est conseillé de ne l'utiliser que pour la compression de conversation." "

http://en.wikipedia.org/wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio est un format audio sans perte.

http://fr.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex est un format audio avec perte spécifiquement destiné à la compression " "des conversations.
Il est libre de toute restriction légale. Depuis la " "sortie d'Opus, Speex est considéré comme obsolète.

http://fr.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) est un format audio libre avec perte basé sur le MP2 et " "optimisé pour une haute qualité.

http://fr.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) est un format audio libre et sans perte.

http://fr.wikipedia.org/wiki/" "Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) un format audio libre sans perte.

http://en.wikipedia.org/wiki/TTA " "(codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) est un format audio libre sans perte.

http://fr.wikipedia.org/wiki/WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) est un format audio développé par Electronic Arts " "pour les ordinateurs Commodore-Amiga.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) un format audio sans perte très simple " "qui ne compresse pas le flux sonore et qui produit de très gros fichiers. Il " "ne supporte pas les fonctions avancées telles que les tags.

http://fr." "wikipedia.org/wiki/Audio Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Fermeture forcée d'un processus sur demande utilisateur" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Pour encoder des fichiers %1, vous devez installer '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Pour décoder des fichiers %1, vous devez installer '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Pour transcoder des fichiers %1, vous devez installer '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Pour calculer des tags Replay Gain pour des fichiers %1, vous devez " "installer '%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' devrait être fourni avec votre distribution." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Puisque '%&' contient des codecs brevetés, il se peut qu'il ne soit pas " "inclus par défaut dans votre distribution. Beaucoup de distributions " "proposent '%1' dans un dépôt supplémentaire." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Vous pouvez télécharger '%1' à %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Pour utiliser le filtre %1, vous devez installer '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Pour utiliser les filtres %1, vous devez installer '%2'." #: filelist.cpp:48 msgid "State" msgstr "État" #: filelist.cpp:49 msgid "Input" msgstr "Origine" #: filelist.cpp:50 msgid "Output" msgstr "Destination" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Qualité" #: filelist.cpp:79 msgid "Edit options..." msgstr "Éditer les options..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Commencer la conversion" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Arrêter la conversion" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Supprimer" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Ce type de fichier est inconnu de soundKonverter.\n" "Vous devez peut-être installer un greffon supplémentaire pour " "soundKonverter.\n" "Consultez le gestionnaire de paquets de votre distribution." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... et %1 fichiers de plus" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Ne sera pas traiter" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "En attente" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "En attente de Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Arrêté" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Module non configuré" #: filelist.cpp:593 msgid "Disc full" msgstr "Disque plein" #: filelist.cpp:603 msgid "Failed" msgstr "Échec" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "La conversion a échoué.\n" "Consulter le journal de log pour plus d'informations." #: filelist.cpp:630 msgid "CD track %1" msgstr "Piste %1 du CD" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Voulez-vous remplacer la liste actuelle?\n" "Si non, la liste enregistrée sera ajoutée." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "j" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identificateur" #: logger.cpp:91 msgid "Log ID" msgstr "Identification du journal de log" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Écriture des journaux de log terminée" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Visionneuse des journaux de log" #: logviewer.cpp:28 msgid "Update" msgstr "Mettre à jour" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Sauvegarder vers un fichier..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Journal de log :" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Journal de log de soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Enregistrer le journal de log" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Le fichier existe déjà. Voulez-vous vraiment le remplacer?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "L'écriture vers le fichier a échoué.\n" "Vous n'avez peut-être pas les permissions en écriture." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter est une interface de différents convertisseurs audio, " "d'outils Replay Gain et d'extracteurs de CD.\n" "\n" "Merci d'envoyer les rapports de bug à https://bugs.launchpad.net/" "soundkonverter\n" "ou envoyez-moi simplement un courriel à hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Thème d'icônes Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Les développeurs d'Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Tous les programmeurs des convertisseurs audio" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Ouvrir l'outil Replay Gain et ajouter tous les fichiers" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "Lister toutes les pistes du lecteur , 'auto' recherchera un CD" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Ajouter tous les fichiers en utilisant le profile sélectionné" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Ajouter tous les fichiers en utilisant le format sélectionné" #: main.cpp:36 msgid "Output all files to " msgstr "Tous les fichiers iront dans " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Lancer soundKonverter en mode invisible" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Commencer la conversion immédiatement (activé quand on utilise '--invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Fermer soundKonverter après la conversion de tous les fichiers (activé quand " "on utilise '--invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Exécuter après chaque conversion de fichier (%i=fichier d'origine, " "%o=fichier de destination)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Fichier audio à ajouter à la liste" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Non classé" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "Icône PNG 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Icône" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Recto de la pochette" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Verso de la pochette" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Livret" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Photo du CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Image de l'artiste principal" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Image de l'artiste" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Image du leader du groupe" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Image du groupe" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Image du compositeur" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Image du parolier" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Image du lieu d'enregistrement" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Image des artistes pendant l'enregistrement" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Image des artistes pendant le spectacle" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Image d'une vidéo" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Image d'un grand poisson coloré" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Illustration de la piste" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Logo du groupe" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Logo du distributeur" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Ajouter des pistes CD" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Sélectionner des pistes CD" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Configurer les options de conversion" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artiste :" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Divers artistes" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Compositeur :" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Divers compositeurs" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album :" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Disque numéro :" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "sur" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Année :" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Genre :" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Extraire" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Piste" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artiste" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Compositeur" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Titre" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Longueur" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Joueur" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Aucune piste sélectionnée" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Titre :" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Commentaire :" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Sélectionner vos options de destination et cliquer sur \"OK\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Enregistrer le fichier \"cue sheet\"..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Requête CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Extraire tout le CD vers un fichier unique" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Les modules installés ne supportent pas l'extraction de tout le CD vers un " "fichier unique.\n" "Les solutions possibles sont listées ci-dessous.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Les modules installés ne supportent pas l'extraction de tout le CD vers un " "fichier unique.\n" "Merci de vérifier si votre gestionnaire de paquets peut vous proposer " "d'installer d'autres greffons qui supportent l'extraction vers un fichier " "unique." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Continuer" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Ok" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Annuler" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Sélectionner le lecteur" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Plusieurs lecteurs CD ont été détectés. Merci d'en sélectionner un :" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Graveur de DVD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Graveur de CD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Lecteur DVD" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Lecteur CD" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2) : CD avec %3 pistes" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Inconnu" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Merci de patienter, téléchargement des données CDDB en cours..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Sélectionner l'entrée CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Plusieurs entrées CDDB ont été trouvées. Merci d'en sélectionner une :" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Toutes les pistes" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Pistes" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Merci de sélectionner au moins une piste avant de continuer." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Aucune option de conversion sélectionnée." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Un fichier du même nom existe déjà.\n" "\n" "Voulez-vous le remplacer?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Le fichier existe déjà" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Ajouter un dossier" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Sélectionner un dossier" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Dossier :" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "N'ajouter que les formats sélectionnés :" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Est-ce qu'il vous manque certains formats de fichier?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Sélectionner tout" #: opener/diropener.cpp:130 msgid "Select none" msgstr "N'en sélectionner aucun" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Récursif" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Si coché, les fichiers des sous-dossiers seront ajoutés aussi." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Ajouter des fichiers" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "Fichiers %1" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Tous les fichiers supportés" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Tous les fichiers" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Ajouter une liste de lecture" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Les fichiers suivants n'ont pas été trouvés :\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Fichiers non trouvés" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Ajouter une URL" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Entrer une URL" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "" "L'URL que vous avez entrée n'est pas valide. Merci d'essayer à nouveau." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Format :" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Utiliser le greffon :" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destination :" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Calculer les tags Replay Gain" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Enregistrer les options actuelles comme profile" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Ouvrir des profiles enregistrés" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Replay Gain n'est pas supporté pour le format %1.\n" "Les solutions possibles sont listées ci-dessous." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Replay Gain n'est pas supporté pour le format %1.\n" "Merci de vérifier si votre gestionnaire de paquets vous propose d'installer " "un greffon Replay Gain supplémentaire." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Les tags Replay Gain peuvent communiquer le niveau sonore d'une piste à " "votre lecteur de musique.\n" "Il pourra ainsi ajuster le volume sonore de toutes les pistes pour les jouer " "avec le même niveau." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Utiliser les options de conversion actuelles créeront des fichiers avec " "approximativement %1 par minute." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Nouveau profile" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Entrer un nom pour le nouveau profile :" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Vous ne pouvez pas enregistrer un profile sans nom." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Le nom du profile est vide" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Vous ne pouvez pas remplacer les profiles intégrés." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Le profile existe déjà" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Un profile avec ce nom existe déjà.\n" "\n" "Voulez-vous le remplacer?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Précédent" #: optionseditor.cpp:42 msgid "Next" msgstr "Suivant" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Éditer les options de conversion" #: optionseditor.cpp:74 msgid "Tags" msgstr "Tags" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Couvertures :" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Éditer" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Piste numéro :" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Éditer les tags" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Aucun fichier sélectionné" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Les tags n'ont pas pu être lus car ce n'est pas un fichier local.\n" "soundKonverter essayera de lire les tags quand il convertira le fichier.\n" "Si vous voulez éditer les tags, vous pouvez appuyer sur le bouton ci-dessous " "mais, dans ce cas, soundKonverter n'essayera pas\n" "de lire les tags après téléchargement." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "La lecture des tags de ce fichier a échoué.\n" "soundKonverter essaiera de lire les tags une seconde fois quand il sera sur " "le point de convertir le fichier.\n" "Si vous voulez éditer les tags, vous pouvez appuyer sur le bouton ci-" "dessous. Dans ce cas, soundKonverter n'essaiera pas\n" "de relire les tags." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Type de couverture :" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Description :" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Taille :" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pixels (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Type MIME :" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "Fichiers %1" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Vous avez sélectionné plusieurs fichiers avec des options de conversion " "différentes.\n" "Vous pouvez changer les options de tous les fichiers en appuyant sur le " "bouton ci-dessous." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "La lecture des tags d'un ou de plusieurs fichiers a échoué.\n" "soundKonverter essaiera de lire les tags une seconde fois quand il sera sur " "le point de convertir le fichier.\n" "Si vous voulez éditer les tags, vous pouvez appuyer sur le bouton ci-" "dessous. Dans ce cas, soundKonverter n'essaiera pas\n" "de relire les tags." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Qualité :" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Supprimer le profile sélectionné" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Informations" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informations concernant le profile sélectionné" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informations concernant le format sélectionné" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Plus de formats..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Optionnel :" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Encoder des fichiers en qualité très faible peut être utile si vous avez un " "dispositif mobile où votre espace de stockage est limité.\n" "Il n'est pas recommandé de sauvegarder votre musique avec cette qualité sans " "avoir une copie de qualité supérieure." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Encoder des fichiers en qualité faible peut être utile si vous avez un " "dispositif mobile où votre espace de stockage est limité.\n" "Il n'est pas recommandé de sauvegarder votre musique avec cette qualité sans " "avoir une copie de qualité supérieure." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Encoder des fichiers en qualité moyenne est un compromis entre qualité et " "taille de fichier.\n" "La plupart des gens peuvent à peine faire la différence avec les fichiers " "originaux mais cette option pour sauvegarder de la musique n'est à utiliser " "que si votre espace de stockage est limité." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Encoder des fichiers en haute qualité est un bon choix si vous avez assez " "d'espace de stockage disponible. Vous pouvez l'utiliser pour sauvegarder " "votre musique." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Si vous avez assez d'espace de stockage disponible, vous pouvez encoder des " "fichiers en très haute qualité." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Encoder des fichiers vers du \"sans perte\" préservera la qualité du fichier " "d'origine.\n" "Ce n'est utile que si le fichier d'origine est d'une bonne qualité (ex : " "piste CD).\n" "La taille du fichier sera importante, ne l'utilisez que si vous avez assez " "d'espace de stockage." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "" "Vous pouvez définir votre propre profile dans l'onglet \"Options avancées\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Profile défini par l'utilisateur." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Informations sur le profile %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Voulez-vous vraiment supprimer le profile %1 ?" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Supprimer le profile ?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Informations sur le format %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Désolé, aucune information sur ce format." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Par méta-données" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Dossier source" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Choisissez un dossier de destination" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Copier la structure du dossier" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Choisissez un dossier de destination" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Ouvrir le dossier de destination avec Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Artiste inconnu" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Album inconnu" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Pas de commentaire" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Genre inconnu" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Compositeur inconnu" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Titre inconnu" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "Nouveau" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Nommer tous les fichiers convertis selon le modèle spécifié" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Les chaînes de caractères suivantes sont des caractères de remplacement qui " "seront substitués par les informations contenus dans les métadonnées :\n" "\n" "%a - Artiste\n" "%b - Album\n" "%c - Commentaire\n" "%d - Numéro de disque\n" "%g - Genre\n" "%n - Numéro de piste\n" "%p - Compositeur\n" "%t - Titre\n" "%y - Année\n" "%f - Nom de fichier original\n" "\n" "Vous pouvez mettre entre parenthèses ces caractères de remplacement et " "entourer des caractères avec des crochets ('[' et ']'),\n" "ainsi ils seront ignorés si la valeur de remplacement est vide.\n" "Pour pouvoir utiliser des crochets vous devrez les échapper avec un " "antislash ('\\[' et '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" "Enregistrer tous les fichiers convertis dans le même dossier que les " "fichiers d'origine" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "" "Enregistrer tous les fichiers convertis dans le dossier de destination choisi" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Copier toute la structure des dossiers de tous les fichiers convertis" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Mode :" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Débit" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Débit :" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Arguments supplémentaires de l'encodeur :" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Activer les codecs expérimentaux dans la configuration de ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Compiler ffmpeg avec le support de %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Configurer %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Activer les codecs expérimentaux" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Merci de redémarrer soundKonverter pour activer les changements." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Niveau de compression :" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Utiliser le fichier SoundFont :" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Pour convertir les données midi vers un format d'ondes, vous aurez besoin " "d'un SoundFont qui cartographiera les données midi en effets sonores.\n" "Jeter un œil à %1 pour obtenir des fichiers SoundFont." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "FluidSynth n'est pas encore configuré. Vous avez besoin de spécifier un " "fichier SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Profile :" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Moyen" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Standard" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Extrême" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Insensé" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Spécifier le débit" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "débit constant" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Encoder avec un débit constant.\n" "Ne fonctionne qu'avec 80, 96, 112, 128, 160, 192, 224, 256 et 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Encodage rapide" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Utiliser un algorithme rapide (la qualité de l'encodage sera légèrement " "moins bonne)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Type de débit :" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variable" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Moyen" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Constant" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Niveau de compression allant de 9 à 0, 0 étant la meilleure qualité.\n" "(Plus la qualité est élevée, plus la conversion sera lente et vice versa.)\n" "Une valeur de 2 est recommandée." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Ce profile (preset) devrait être quasi-transparent à la majorité des gens " "sur la majorité des musiques (environ 150 kbps en débit variable)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Ce profile (preset) devrait être transparent à la majorité des gens sur la " "majorité des musiques (environ 230 kbps en débit variable)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Si vous avez de très bonnes oreilles et un très bon équipement, grâce à ce " "profile (preset) vous aurez\n" "une qualité légèrement meilleure que le mode standard (environ 280 kbps en " "débit variable)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Ce profile (preset) est quasi inutile pour la plupart des gens et la plupart " "des situations, mais si vous devez avoir\n" "la qualité la plus haute possible sans tenir compte de la taille du fichier, " "c'est l'option qu'il vous faut (320 kbps en débit constant)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Niveau de compression allant de 9 à 0, 0 étant la meilleure qualité.\n" "(Plus la qualité est élevée, plus la taille du fichier sera importante et " "vice versa.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Mode stéréo :" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automatique" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Stéréo jointe" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Stéréo simple" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Stéréo jointe forcée" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Double mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "À propos de %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME est un encodeur libre MP3 de haute qualité.\n" "Vous pouvez l'obtenir ici : http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Activer les codecs expérimentaux dans la configuration de libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Compiler libav avec le support de %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Téléphone" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Miniature" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "\"Braindead\"" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "Utilisez soit une présélection MusePack soit vos propres paramètres." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "Basse qualité (~60 kbps en débit variable)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "basse/moyenne qualité (~90 kbps en débit variable)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "qualité moyenne (~130 kbps en débit variable)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "haute qualité (~180 kbps en débit variable)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "qualité excellente (~210 kbps en débit variable)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "très haute qualité (~240 kbps en débit variable)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "super qualité (~270 kbps en débit variable)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "Vous pouvez télécharger '%1' chez '%2' après avoir entré un courriel." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' est habituellement dans le paquet '%2' qui devrait être fourni avec " "votre distribution." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Canaux découplés" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Utiliser un flux mono par canal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "Twolame est un codec MP2 libre.\n" "Vous pouvez l'obtenir ici : http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Niveau de qualité de -50 à 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "" "'%1' est habituellement dans le paquet '%2' que vous pouvez télécharger chez " "%3." #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Rapide" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Haute qualité" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Très haute qualité" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normaliser" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Activer les codecs expérimentaux dans la configuration de sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Compiler sox avec le support de %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Qualité du taux d'échantillonage :" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Rapide" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Niveau de qualité de 9 à 0 où 0 est la qualité la plus élevée." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Effet :" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Désactivé" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Supprimer cet effet" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Ajouter" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Ajouter un autre effet" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normaliser :\n" "Changer le volume pour que tous les fichiers aient le même niveau sonore" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Basses :\n" "Amplifier les basses fréquences" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Aiguës :\n" "Amplifier les hautes fréquences" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Taux d'échantillonage" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Taille de l'échantillonage :" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Canaux :" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stéréo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Utiliser le format de tag :" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Modifier le flux audio" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Écrire les ajustements de gain directement dans les données des fichiers. " "L'ajustement fonctionnera ainsi avec tous les lecteurs MP3.\n" "Il sera toujours possible de renverser le processus puisque les données de " "correction seront écrites aussi." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Pour extraire des CD par piste ou vers un fichier simple, vous devez " "installer 'cdparanoia'.\n" "'cdparanoia' est habituellement fourni avec votre distribution, le nom du " "paquet peut varier." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Vitesse :" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Temps restant :" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Terminé" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Fichier" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Réduire tout" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Étendre tout" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Déplacer vers le nouvel album" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Certaines pistes ne peuvent pas être ajouter à l'album car le codec ou le " "taux d'échantillonage est différent." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Nouvel album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Replay Gain a échoué. Le module utilisé doit être configuré correctement." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Replay Gain a échoué. Une fonctionnalité nécessaire manque à votre greffon." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Replay Gain a échoué. Erreur inconnue." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Replay Gain a échoué. Code de sortie : %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "" "Ajouter un nouvel élément à la liste de traitement de Replay Gain : '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain pour %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Modules Replay Gain possibles :" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Ignoré" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Ajouter un dossier..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Ajouter des fichiers..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Forcer un nouveau calcul" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Recalculer les tags Replay Gain pour les fichiers qui ont déjà des tags " "Replay Gain." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Tag supprimé" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Calculer les tags Replay Gain pour tous les fichiers de la liste qui n'ont " "pas de tag Replay Gain." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Supprimer un tag" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Supprimer les tags Replay Gain de tous les fichiers de la liste." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Fermer" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Il y a encore des calculs Replay Gain en cours.\n" "Voulez-vous vraiment les annuler?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "SoundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Compilé avec TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "La lecture ou l'écriture des couvertures n'est pas supporté pour les " "fichiers ogg/METADATA_BLOCK_PICTURE, flac et asf/wma. Taglib 1.7 est requis." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Suppression de l'ancien fichier : %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Visionner les logs..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Outil Replay Gain..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "À propos des greffons ..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Ajouter des pistes CD..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Ajouter une URL..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Ajouter une liste de lecture..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Ouvrir une liste de fichiers" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Enregistrer la liste de fichiers" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Démarrer" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Arrêter" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Arrêter immédiatement" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Arrêter après avoir fini les conversions en cours" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Continuer après avoir fini les conversions en cours" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Aucun lecteur CD trouvé" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Outils" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Yannick ERNULT" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "yannick.ernult@laposte.net" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "" "Convertisseur de fichiers audio, extracteur de CD et outil de Replay Gain" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Extraire le CD avec soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/it.po0000644000175000001440000000013212255310031017365 xustar000000000000000030 mtime=1387630617.903844281 30 atime=1387630617.880844569 30 ctime=1387631578.280421786 ./soundkonverter-2.0.5/po/it.po0000644000175000001440000034310512255310031017006 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # FranzMari , 2013 # FranzMari , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: FranzMari \n" "Language-Team: Italian (http://www.transifex.com/projects/p/soundkonverter/" "language/it/)\n" "Language: it\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Riguardo i plugin" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Plugin installati:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Riguardo il plugin %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Tipo di plugin: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Eseguibili backend:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (trovato in: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (non trovato)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Codec supportati:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Attualmente disattivato." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Codifica: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Decodifica: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Configura %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Soluzioni per problemi di backend" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Hai installato o rimosso dei backend e le tue impostazioni di soundKonverter " "possono essere ottimizzate." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "Per codificare %1 file il backend '%2' può essere sostituito con '%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Per estrarre i CD audio il backend '%1' può essere sostituito con '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Per decodificare %1 file il backend '%2' può essere sostituito con '%3'" #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Per applicare il Replay Gain ai file %1 il backend '%2' può essere " "sostituito con '%3'" #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignora" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Ripara" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter non trova alcuni pacchetti mancanti\n" "Se mancano alcuni formati di file potrebbe essere necessario installare " "plugin aggiuntivi tramite il gestore di pacchetti della propria " "distribuzione." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Alcuni plugin installati non funzionano.\n" "Le possibili soluzioni sono elencate qui sotto." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Alcuni file non possono essere decodificati.⏎ Le possibili soluzioni solo " "elencate qui sotto." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Alcuni file non supportano il Replay Gain.⏎ Le possibili soluzioni sono " "elencate qui sotto." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "L'estrazione di CD audio non è supportata da alcun plugin installato.⏎ " "Controlla il gestore di pacchetti della tua distribuzione per ottenere un " "plugin per l'estrazione dei CD per soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "L'estrazione di CD audio non è al momento supportata a causa della mancanza " "di backend. ⏎ Le possibili soluzioni sono elencate qui sotto." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Possibili soluzioni per %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "oppure" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "File interessati:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Usato l'ultima volta" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Alta" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "copertina" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Prova internamente" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Molto bassa" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Bassa" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Media" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Molto alta" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Senza perdita" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Ibrida" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Definita dall'utente" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Converti con soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Aggiungi Replay Gain con soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avanzato" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Estensione preferita per i file ogg vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Campo etichetta di commento preferito per i file ogg vorbis e flac:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Alcune applicazioni usano il campo DESCRIPTION anche se il campo COMMENT è " "quello corretto.\n" "I commenti saranno scritti nel campo selezionato, che durante la lettura " "verrà preferito." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Campo preferito per il numero totale delle tracce dei file ogg vorbis e flac:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Il numero totale delle tracce verrà scritto nel campo selezionato, che " "durante la lettura verrà preferito.\n" "Usando il campo TRACKNUMBER, il numero della traccia ed il numero totale " "delle tracce saranno scritti nello stesso campo, separati da una slash ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Campo preferito per il numero totale dei dischi dei file ogg vorbis e flac:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Il numero totale dei dischi verrà scritto nel campo selezionato, che durante " "la lettura verrà preferito.\n" "Usando il campo DISCNUMBER, il numero del disco ed il numero totale dei " "dischi saranno scritti nello stesso campo, separati da una slash ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Usa sempre nomi dei file di output compatibili con FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Sostituisci alcuni caratteri speciali come '?' con '_'.\n" "Se la cartella di destinazione si trova in un file system FAT, verranno " "automaticamente usati nomi compatibili con esso, indipendentemente da questa " "opzione." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Debug" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Scrivi i file di log sul disco" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Scrivi i file di log sull'hard disk durante la conversione.\n" "Ciò può essere utile nel caso si verifichi un crash e non sia possibile " "accedere ai log usando il visualizzatore.\n" "I file di log verranno scritti su %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Sperimentale" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Salva i file temporanei in memoria a meno che la dimensione stimata del file " "sia maggiore di:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Non salvare i file che si presume occuperanno uno spazio maggiore di questo " "nella memoria, per evitare lo swapping" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Pare che nessun filesystem sia montato su /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Usa i pipe quando possibile" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "I pipe rendono inutile l'uso dei file temporanei, aumentando le " "prestazioni.\n" "Alcuni backend possono però provocare errori in questa modalità, quindi fai " "attenzione." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Decodificatore" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Codificatore" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Sposta in alto di %1 posizioni" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Sposta in basso di %1 posizioni" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Riguardo %1..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Estrattore di CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Usa plugin:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtri" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Abilita plugin:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Priorità" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Configura la priorità dei plugin per il formato:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Mostra possibili ottimizzazioni" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Hai cambiato le impostazioni attuali.\n" "Le vuoi salvare?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Impostazioni modificate" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Questo sceglierà il miglior backend per tutti i formati e salverà le nuove " "preferenze immediatamente.\n" "\n" "Vuoi proseguire?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Tutte le configurazioni dei backend sembrano ottimali, niente da modificare." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Salva le copertine nella cartella di destinazione" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Salva le copertine integrate nella cartella di destinazione" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Sempre" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Solo se è impossibile integrare le copertine nei file di destinazione" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Mai" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "" "Nome del file per la copertina (quando salvata nella cartella di " "destinazione)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "La descrizione della copertina integrata" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Il nome predefinito del file della copertina" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Nome predefinito del file della copertina:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Le stringhe seguenti sono caratteri jolly che saranno sostituiti\n" "con le informazioni presenti nei meta data:\n" "\n" "%a - Artist \n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Impostazioni" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Generale" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Copertina" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Backends" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Interfaccia utente" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Avvia in modalità:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Semplice" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Dettagliato" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Profilo predefinito:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Formato predefinito:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Conversione" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Gestione dei conflitti:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Genera un nuovo nome del file" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Salta file" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Effettua questa operazione se il file di destinazione esiste già" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Numero di file da convertire per volta:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Non dovresti impostare questo numero con uno più alto del numero di core " "disponibili nel processore. \n" "Sono stati rilevati %1 core." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Applica l'album gain ai file convertiti" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Mantieni le canzoni dello stesso album in attesa nell'elenco dei file, per " "applicare l'album gain a tutti i file. " #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Strumento Replay Gain" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Raggruppa i file nello strumento Replay Gain per:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Etichette dell'album e cartelle" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Solo etichette dell'album" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Solo cartelle" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Numero di elementi da processare per volta:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Recupero file" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Copia \"%1\" in \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Non rimane nessun backend da provare :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Conversione" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Conversione fallita. Almeno uno dei backend utilizzati deve essere " "configurato correttamente." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Conversione fallita. Nel plugin preferito manca il supporto per una " "caratteristica necessaria." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Conversione fallita. Errore sconosciuto." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Estrazione" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Decodifica" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Applicazione filtro" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Codifica" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Salto il Replay Gain, l'Album Gain sarà calcolato successivamente" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Applicazione del Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Scrittura delle etichette" #: convert.cpp:542 msgid "Running user script" msgstr "Esecuzione dello script dell'utente" #: convert.cpp:567 msgid "Executing next step" msgstr "Esecuzione del passaggio successivo" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Lettura delle etichette riuscita" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Impossibile leggere le etichette" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Rimozione: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Si è verificato un errore. Codice d'errore: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Conversione fallita! Codice d'uscita . %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Traccia CD %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Traccia CD %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Aggiungi nuovo elemento alla lista di conversione: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "ID del log: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Traccia numero: %1, periferica: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Possibili strategie di conversione:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Tipo di fie system: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Si è verificato un errore, la dimensione del file di destinazione e " "inferiore all'uno percento di quella del file di origine" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Conversione fallita, provo di nuovo. Codice di uscita: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Rimuovi i file parzialmente convertiti." #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Uscita normale" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Terminato con successo, ma si sono verificati degli errori" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Interrotto dall'utente" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Il Backend necessita di essere configurato" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Non c'è abbastanza spazio nel dispositivo di destinazione" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "File già esistente" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Si è verificato un errore" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Esecuzione comando: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Rimozione file dalla lista di conversione. Codice d'uscita %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Tempo di conversione" #: convert.cpp:1183 msgid "Output file size" msgstr "Dimensione file di destinazione" #: convert.cpp:1184 msgid "File size ratio" msgstr "Rapporto dimensione file" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Sconosciuto" #: convert.cpp:1325 msgid "Filter" msgstr "Filtro" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Avanzamento" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave è un formato audio molto semplice che non comprime il flusso audio, " "quindi è senza perdita, ma la dimensione dei file è molto grande e non " "supporta caratteristiche avanzate come le etichette.
È supportato " "virtualmente da ogni software o dispositivo.

http://en.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) è un formato audio con perdita molto popolare. È " "ampiamente utilizzato da Apple Inc.
In soundKonverter \"aac\" si " "riferisce solo al codec. Per avere un file con supporto alle etichette " "utilizzare \"m4a/aac\".

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) è un formato audio con perdita molto popolare. È " "ampiamente utilizzato da Apple Inc.
In soundKonverter \"m4a/aac\" si " "riferisce ad un file audio MPEG-4 codificato con AAC.

http://en.wikipedia." "org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) è un formato audio senza perdita. È " "ampiamente utilizzato da Apple Inc.
In soundKonverter \"m4a/alac\" si " "riferisce ad un file audio MPEG-4 codificato con ALAC.

http://en.wikipedia.org/wiki/" "Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis è un formato audio con perdita molto popolare.
È libero da " "ogni restrizione legale.

http://en.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus è un formato audio con perdita ideato per le comunicazioni in tempo " "reale tramite internet.
Copre un'ampia gamma di bitrate ad alta qualità " "ed è libero da ogni restrizione legale.

http://en.wikipedia.org/wiki/Opus (audio " "format)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 o MPEG-2 Audio Layer III (MP3) è il formato audio con perdita più " "popolare.
È supportato virtualmente da tutti i riproduttori multimediali " "pur avendo alcune restrizioni legali.

http://en.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) è un formato audio senza perdita.
È " "libero da ogni restrizione legale.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) è un formato audio con perdita sviluppato da " "Microsoft.

http://en.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 o AC-3 fa parte della famiglia di formati Dolby Digital.
È stato " "ideato per essere utilizzato nei film (es. DVD) e supporta il surround." "

http://en." "wikipedia.org/wiki/Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) è un formato audio con perdita." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) è utilizzato soprattutto per la " "compressione vocale nelle comunicazioni mobili.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) è una versione avanzata di AMR NB che " "utilizza una velocità dati superiore, dando una qualità maggiore." "
Dovrebbe essere utilizzato solo per la compressione vocale.

http://en." "wikipedia.org/wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio è un formato audio senza perdita.

http://en.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex è un formato audio con perdita ideato per la codifica vocale.
È " "libero da ogni restrizione legale. A partire dal rilascio di Opus, Speex è " "considerato obsoleto.

http://en.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) è un formato con perdita libero, basato sull'mp2 ed " "ottimizzato per l'alta qualità.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) è un formato audio libero e senza perdita.

http://en.wikipedia.org/wiki/" "Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) è un formato audio libero e senza perdita.

http://en.wikipedia.org/wiki/" "TTA (codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) è un formato audio libero e senza perdita.

http://en.wikipedia.org/wiki/" "WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) è un formato audio standard sviluppato da " "Electronic Arts per la serie di computer Commodore-Amiga.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) è un formato audio molto semplice che " "non comprime il flusso audio, quindi è senza perdita, ma la dimensione dei " "file è molto grande e non supporta caratteristiche avanzate come le " "etichette.

http://en.wikipedia.org/wiki/Audio " "Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Interruzione processo su richiesta dell'utente" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Per codificare %1 file, devi installare '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Per decodificare %1 file, devi installare '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Per transcodificare %1 file, devi installare '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "Per calcolare i tag Replay Gain per %1 file, devi installare '%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' dovrebbe essere fornito dalla tua distribuzione." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Poiché '%1' include codec proprietari, non può essere incluso " "nell'installazione standard della tua distribuzione. molte distribuzioni " "forniscono '%1' in un repository software aggiuntivo." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Puoi scaricare '%1' da %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Per utilizzare il filtro %1, bisogna installare '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Per utilizzare i filtri %1, bisogna installare '%2'." #: filelist.cpp:48 msgid "State" msgstr "Stato" #: filelist.cpp:49 msgid "Input" msgstr "Input" #: filelist.cpp:50 msgid "Output" msgstr "Output" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Qualità" #: filelist.cpp:79 msgid "Edit options..." msgstr "Modifica opzioni..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Inizia conversione" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Ferma conversione" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Rimuovi" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Questo tipo di file è sconosciuto per soundKonverter.\n" "Probabilmente devi installare un plugin aggiuntivo.\n" "Dovresti dare un'occhiata al gestore di pacchetti della tua distribuzione " "per questo." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... e %1 ulteriori file" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Sarà saltato" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "In attesa" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "In attesa del Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Fermato" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Backend non configurato" #: filelist.cpp:593 msgid "Disc full" msgstr "Disco pieno" #: filelist.cpp:603 msgid "Failed" msgstr "Fallito" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "La conversione è fallita.\n" "Guarda il log per ulteriori informazioni." #: filelist.cpp:630 msgid "CD track %1" msgstr "Traccia CD %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Vuoi sovrascrivere l'attuale elenco dei file?\n" "\n" "Rispondendo no, l'elenco dei file salvato verrà accodato." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "g" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "o" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identificatore" #: logger.cpp:91 msgid "Log ID" msgstr "Log ID" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Log completato" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Visualizzatore di Log" #: logviewer.cpp:28 msgid "Update" msgstr "Aggiorna" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Salva su file..." #: logviewer.cpp:42 msgid "Log file:" msgstr "File di log:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Log dell'applicazione soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Salva il file di log" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Il file esiste già. Vuoi veramente sovrascriverlo?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Scrittura file fallita.\n" "Potresti non avere i permessi di scrittura." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter è un interfaccia per diversi convertitori audio, strumenti di " "Replay Gain ed estrattori di CD.\n" "\n" "Per favore, segnala eventuali errori su https://bugs.launchpad.net/" "soundkonverter\n" "o semplicemente inviami un'e-mail all'indirizzo hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Tema di icone Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Sviluppatori di Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Tutti i programmatori di convertitori audio" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Apri lo strumento di Replay Gain e aggiungi tutti i file indicati" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" "Elenca tutte le tracce presenti nell'unità ottica , 'auto' cercherà " "un CD" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Aggiungi tutti i file usando il profilo indicato" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Aggiungi tutti i file usando il formato indicato" #: main.cpp:36 msgid "Output all files to " msgstr "Esporta tutti i file in " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Avvia soundKonverter in modalità invisibile" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Avvia conversione immediatamente (abilitato quando si usa '--invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Chiudi soundKonverter dopo aver convertito tutti i file (abilitato quando si " "usa '--invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Esegui al termine della conversione di ciascun file (%i=file di " "origine, %o=file di destinazione)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "File(s) audio da aggiungere all'elenco dei file" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Non classificato" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "File icona 32x32 PNG" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "File icona" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Copertina anteriore" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Copertina posteriore" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Pagina libretto" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Foto CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Foto artista solista" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Foto artista" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Foto direttore" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Foto band" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Foto compositore" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Foto paroliere" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Foto del luogo di registrazione" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Foto dell'artista durante la registrazione" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Foto dell'artista durante un'esibizione" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Foto tratta da un video" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Foto di un grande pesce colorato" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Immagini relative alla traccia" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Logo band" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Logo dell'editore" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Aggiungi tracce CD" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Seleziona tracce CD" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Imposta opzioni di conversione" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artista:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Artisti Vari:" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Compositore:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Compositori Vari:" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Disco n°:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "di" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Anno:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Genere:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Estrai" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Traccia" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artista" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Compositore" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Titolo" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Durata" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Esecutore" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Nessuna traccia selezionata" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Titolo:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Commento:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Seleziona le opzioni di esportazione desiderate e clicca su \"Ok\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Salva file cue..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Richiedi CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Estrai l'intero cd in un unico file" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "I backend installati non supportano l'estrazione di un intero CD in un " "singolo file.\n" "Possibili soluzioni sono elencate di seguito.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "I backend installati non supportano l'estrazione di un intero CD in un " "singolo file.\n" "Dai un'occhiata al gestore di pacchetti della tua distribuzione per " "installarne uno compatibile con soundKonverter" #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Procedi" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Ok" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Cancella" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Seleziona l'unità CD-ROM" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Sono stati trovati più di un lettore CD-ROM. Sceglierne uno:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Masterizzatore DVD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Masterizzatore CD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Lettore DVD" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Lettore CD" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): CD audio con %3 tracce" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Sconosciuto" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Attendere, provo a scaricare i dati CDDB" #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Seleziona una voce CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Sono stati trovati più voci CDDB. Sceglierne uno:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Tutte le tracce" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Tracce" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Seleziona almeno una traccia per poter procedere." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Nessuna opzione di conversione selezionata." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Esiste già un file con questo nome.\n" "\n" "Vuoi sovrascrivere quello esistente?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Il file esiste già" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Aggiungi cartella" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Seleziona cartella" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Cartella:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Aggiungi solo i formati di file selezionati:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Manca qualche formato di file?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Seleziona tutto" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Seleziona nessuno" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Ricorsivo" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Se selezionato, verranno aggiunti anche i file nelle sottocartelle." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Aggiungi file" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 file" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Tutti i file supportati" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Tutti i file" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Aggiungi playlist" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Impossibile trovare i seguenti file:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "File non trovati" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Aggiungi indirizzo" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Inserisci indirizzo" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "L'indirizzo inserito non è valido. Prova di nuovo." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Formato:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Usa plugin:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destinazione:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Calcola i tag del Replay Gain" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Salva le opzioni attuali come un profilo" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Carica profili salvati" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Il Replay Gain non è supportato per il formato %1.\n" "Possibili soluzioni sono elencate di seguito." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Il Replay Gain non è supportato per il formato %1.\n" "Dai un'occhiata al gestore di pacchetti della tua distribuzione per " "installare un plugin aggiuntivo per il Replay Gain." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Le etichette Replay Gain possono indicare al lettore musicale il volume di " "ciascuna traccia\n" "così che possa regolarlo per riprodurre tutte le tracce alla stessa altezza." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Usando le opzioni di conversione attuali saranno creati approssimativamente " "%1 file al minuto" #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Nuovo profilo" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Inserisci un nome per il nuovo profilo:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Non puoi salvare un profilo senza nome." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Il nome del profilo è vuoto" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Non puoi sovrascrivere i profili integrati." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Profilo già esistente" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Un profilo con questo nome esiste già.\n" "\n" "Vuoi sovrascrivere quello esistente?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Precedente" #: optionseditor.cpp:42 msgid "Next" msgstr "Successivo" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Modifica opzioni di conversione" #: optionseditor.cpp:74 msgid "Tags" msgstr "Tag" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Copertine:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Modifica" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Traccia n°:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Modifica i tag" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Nessun file selezionato" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Impossibile leggere i tag, perché questo non è un file locale.\n" "soundKonverter proverà a leggere i tag prima di convertire il file.\n" "Se vuoi modificare i tag, premi il pulsante qui sotto, ma poi soundKonverter " "non proverà\n" "a leggere i tag dopo lo scaricamento." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Lettura dei tag di questo file fallita.\n" "soundKonverter proverà a leggere i tag prima di convertire il file.\n" "Se vuoi modificare i tag, premi il pulsante qui sotto, ma poi soundKonverter " "non proverà\n" "a leggere i tag dopo lo scaricamento." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Tipo copertina:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Descrizione:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Dimensione:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pixel (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Tipo Mime:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 file" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Hai selezionato più file con diverse opzioni di conversione.\n" "Puoi cambiare le opzioni per tutti i file premendo il pulsante qui sotto." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Lettura dei tag di uno o più file fallita.\n" "soundKonverter proverà a leggere i tag prima di convertire il file.\n" "Se vuoi modificare i tag, premi il pulsante qui sotto, ma poi soundKonverter " "non proverà\n" "a leggere i tag dopo lo scaricamento." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Qualità:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Rimuovi profilo selezionato" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Info" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informazioni riguardo il profilo selezionato" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informazioni riguardo il formato selezionato" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Più formati..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Opzionale:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Codificare i file con una qualità molto bassa può essere utile se si " "possiede un dispositivo mobile in cui lo spazio di archiviazione è " "limitato.\n" "Non è consigliato salvare la musica in questa qualità senza averne una copia " "di qualità superiore." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Codificare i file in qualità molto bassa può essere utile se si possiede un " "dispositivo mobile in cui lo spazio di archiviazione è limitato.\n" "Non è consigliato salvare la musica in questa qualità senza averne una copia " "di qualità superiore." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Codificare i file in qualità media è un compromesso tra qualità e dimensione " "del file.\n" "Molti utenti potrebbero non sentire grandi differenze rispetto ai file " "originali, ma i file andrebbero salvati in questo modo solo se lo spazio di " "archiviazione disponibile è limitato." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Codificare i file in qualità alta è una buona scelta se si ha abbastanza " "spazio di archiviazione a disposizione. È possibile salvare la propria " "musica in questo modo." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Codificare i file in qualità molto alta va bene se si ha abbastanza spazio " "di archiviazione a disposizione." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Codificare i file senza perdita manterrà la qualità del file originale.\n" "È utile solo se il file originale ha una buona qualità (es. CD audio).\n" "Il file avrà grandi dimensioni, perciò questo metodo andrebbe utilizzato " "solo se si possiede abbastanza spazio di archiviazione." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "È possibile definire il proprio profilo nella scheda \"Dettagliato\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Questo è un profilo definito dall'utente." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Informazioni sul profilo di %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Vuoi veramente rimuovere il profilo: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Rimuovere il profilo?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Informazioni sul formato di %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Spiacente, nessuna informazione disponibile sul formato." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Da meta data" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Cartella sorgente" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Specifica una cartella di destinazione" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Copia struttura della cartella" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Scegli una cartella di destinazione" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Apri la cartella di destinazione con Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Artista sconosciuto" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Album sconosciuto" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Nessun commento" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Genere sconosciuto" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Compositore sconosciuto" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Titolo sconosciuto" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "Nuovo" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Dai un nome a tutti i file convertiti in base allo schema specificato" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Le seguenti stringhe sono caratteri jolly che verranno sostituiti\n" "con le informazioni nei meta data:\n" "\n" "%a - Artista\n" "%b - Album\n" "%c - Commento\n" "%d - Numero disco\n" "%g - Genere\n" "%n - Numero traccia\n" "%p - Compositore\n" "%t - Titolo\n" "%y - Anno\n" "%f - Nome file originale\n" "\n" "Puoi mettere questi caratteri jolly tra parentesi quadre ('[' e ']')\n" "in modo che vengano ignorati se il valore corrispondente è nullo.\n" "Per utilizzare le parentesi quadre dovrai farle precedere da un backslash " "('\\[' e '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "Salva tutti i file convertiti nella stessa cartella dei file originali" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "" "Salva tutti i file convertiti nella cartella di destinazione specificata" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Copia l'intera struttura della cartella per tutti i file convertiti " #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Modalità:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Bit rate" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Bitrate:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Argomenti aggiuntivi del codificatore:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "" "Abilita i codec sperimentali nella finestra di configurazione di ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Compila ffmpeg con il supporto per %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Configura %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Abilita codec sperimentali" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Riavvia soundKonverter per rendere effettive le modifiche." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Livello di compressione:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Usa un file SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Per convertire i dati midi in formato wave serve un SoundFont che mappi i " "dati midi per gli effetti sonori.\n" "Dai un'occhiata a %1 per ottenere dei file SoundFont." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "FluidSynth non è ancora configurato. Serve un set di file SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Preimpostazione:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Medio" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Standard" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Estemo" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Folle" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Specifica Bit rate" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Codica usando un bit rate costante.\n" "Funziona solo con 80, 96, 112, 128, 160, 192, 224, 256 e 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Codifica veloce" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Usa un algoritmo di codifica più veloce (ridurrà leggermente la qualità del " "file prodotto)" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Modalità bitrate:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variabile" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Variabile" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Costante" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Livello di compressione da 9 a 0, dove 0 è la massima qualità.\n" "(Maggiore è la qualità, più lenta sarà la conversione e viceversa).\n" "Il livello consigliato è 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Questa preimpostazione dovrebbe garantire una discreta qualità del suono per " "la maggior parte degli utenti e della musica (~150 kbps vbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Questa preimpostazione dovrebbe garantire una buona qualità del suono per la " "maggior parte degli utenti e della musica\n" "ed ha una qualità abbastanza alta (~230 kbps vbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Se si possiede un buon impianto audio, questa preimpostazione garantirà\n" "una qualità leggermente più alta della modalità standard (~280 kbps vbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Questa preimpostazione potrebbe essere esagerata per la maggior parte degli " "utenti e delle situazioni, ma se si deve avere\n" "la massima qualità possibile, indipendentemente dalle dimensioni del file, " "questa è la via giusta (320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Livello di qualità da 9 a 0, dove 0 è la qualità più alta.\n" "(Maggiore è la qualità, più grande sarà la dimensione del file e viceversa)." #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Modalità Stereo:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automatico" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Unisci Canali Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Stereo semplice" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Forza unisci stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Mono doppio" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Riguardo %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME è un codificatore MP3 libero di alta qualità.\n" "Si può ottenere da: http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "" "Abilita i codec sperimentali nella finestra di configurazione di libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Compila libav con il supporto per %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefono" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Thumb" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Braindead" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" "Usa una delle preimpostazioni di MusePack o le tue impostazioni personali." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "Bassa qualità (~60 kbps vbr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "Qualità medio bassa (~90 kbps vbr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "Qualità media (~130 kbps vbr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "Qualità elevata (~180 kbps vbr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "Qualità eccellente (~210 kbps vbr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "Qualità eccellente (~240 kbps vbr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "Qualità eccellente (~270 kbps vbr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "Potrai scaricare '%1' da '%2' dopo aver inserito un indirizzo email." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' è solitamente incluso nel pacchetto '%2' che dovrebbe essere fornito " "dalla tua distribuzione." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Canali disaccoppiati" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Usa un flusso modo per canale" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLam è un codificatore MP2 libero.\n" "Si può ottenere da: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Livello qualità da -50 a 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "" "'%1' è solitamente incluso nel pacchetto '%2' che può essere scaricato da %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Veloce" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normale" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Qualità alta" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Qualità molto alta" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalizza" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Abilita i codec sperimentali nella finestra di configurazione di sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Compila sox con il supporto per %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Qualità della conversione della frequenza di campionamento:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Veloce" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Livello di qualità da 9 a 0, dove 0 è la qualità più alta." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Effetto:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Disabilitato" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Rimuovi questo effetto" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Aggiungi" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Aggiungi un altro effetto" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalizza:\n" "Regola il volume in modo che tutti i file abbiano la stessa altezza" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Bassi:\n" "Amplifica le frequenze basse" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Alti:\n" "Amplifica le frequenze alte" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Frequenza di campionamento:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Dimensione di campionamento:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Canali:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Usa formato etichetta:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Modifica il flusso audio" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Scrivi le informazioni sulla normalizzazione direttamente nel file " "codificato. In questo modo la normalizzazione funziona su tutti i lettori " "mp3.\n" "Sarà ancora possibile annullare i cambiamenti, poiché verranno scritti anche " "i dati di correzione." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Per estrarre i CD audio traccia per traccia o in un unico file, bisogna " "installare 'cdparanoia'.\n" "'cdparanoia' è solitamente fornito dalla tua distribuzione, il nome del " "pacchetto può variare." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Velocità:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Tempo rimanente:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Completato" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "File" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Contrai tutto" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Espandi tutto" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Sposta in un nuovo album" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Alcune tracce non possono essere aggiunte all'album perché il codec o la " "frequenza di campionamento sono differenti." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Nuovo album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Replay Gain fallito. Il backend utilizzato deve essere configurato " "correttamente." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Replay Gain fallito. Nel plugin preferito manca il supporto per una " "caratteristica necessaria." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Replay Gain fallito. Errore sconosciuto." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Replay Gain fallito. Codice d'uscita: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Aggiungi nuovo elemento all'elenco dei processi di Replay Gain: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain per %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Backend disponibili per Replay Gain:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Saltato" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Aggiungi cartella..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Aggiungi file..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Forza ricalcolo" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Ricalcola i tag Replay Gain per i file che hanno già dei tag Replay Gain " "impostati." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Etichetta i file non etichettati" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Ricalcola i tag Replay Gain per tutti i file della lista che non hanno dei " "tag Replay Gain." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Rimuovi etichetta dai file etichettati" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Rimuovi i tag Replay Gain da tutti i file nell'elenco." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Chiudi" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Alcuni processi di Replay Gain sono ancora in esecuzione.\n" "Vuoi davvero annullarli?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Questo è soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Compilato con TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Lettura e scrittura delle copertine non sono supportate per i file ogg/" "METADATA_BLOCK_PICTURE, flac e asf/wma. Per questo è necessario TagLib 1.7." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Rimuovi file vecchio: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Mostra log..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Strumento Replay Gain..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Riguardo i plugin..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Aggiungi tracce CD..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Aggiungi URL..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Aggiungi playlist..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Carica elenco file" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Salva elenco file" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Avvia" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Ferma" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Ferma immediatamente" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Ferma dopo aver completato le conversioni in corso" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Continua dopo aver completato le conversioni in corso" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Nessun supporto CD trovato" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Strumenti" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Francesco Marinucci" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "framarinucci@gmail.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Convertitore di file audio, estrattore di CD e strumento Replay Gain" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Estrai CD audio con soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/pt.po0000644000175000001440000000013212255310031017374 xustar000000000000000030 mtime=1387630617.961843556 30 atime=1387630617.938843843 30 ctime=1387631578.280421786 ./soundkonverter-2.0.5/po/pt.po0000644000175000001440000034076512255310031017026 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # HessiJames , 2012 # Sérgio Marques , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: Sérgio Marques \n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/" "soundkonverter/language/pt/)\n" "Language: pt\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Sobre os extras" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Extras instalados:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Sobre o \"plugin\" %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Tipo de \"plugin\": %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Binários da infrestrutura:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (encontrado em: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (não encontrado)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Codificadores suportados:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Atualmente inativo." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Codificação: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Descodificacão: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Configurar %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Soluções para erros de infraestrutura" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Você instalou ou removeu infraestruturas e as definições do soundKonverter " "podem ser otimizadas." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Para codificar ficheiros %1, a infraestrutura \"%2\" pode ser substituída " "por \"%3\"." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Para extrair CDs, a infraestrutura \"%1\" pode ser substituída por \"%2\"." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Para descodificar ficheiros %1, a infraestrutura \"%2\" pode ser substituída " "por \"%3\"." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Para aplicar Replay Gain a ficheiros %1, a infraestrutura \"%2\" pode ser " "substituída por \"%3\"." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignorar" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Corrigir" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "O soundKonverter não detetou quaiquer pacotes em falta.\n" "Se precisar de converter para outros formatos, tem que instalar os \"plugins" "\" através do gestor de pacotes da sua distribuição" #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Alguns dos extras não funcionam.\n" "As soluções possíveis são exibidas abaixo." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Alguns ficheiros não foram descodificados.\n" "As soluções possíveis são exibidas abaixo." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Nem todos os ficheiros têm suporte a Replay Gain.\n" "As soluções possíveis são exibidas abaixo." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "A extração de CDs não é suportada pelos extras instalados.\n" "Tente obter, através do seu gestor de pacotes, uma aplicação para extrair os " "Cds através do soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "A extração de CDs não é suportada, pois não possui a infraestrutura " "necessária.\n" "As soluções possíveis são exibidas abaixo." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Soluções possíveis para %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "ou" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Ficheiros afetados:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Último utilizado" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Alta" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "capa de álbum" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Interna" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Muito baixa" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Baixa" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Média" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Muito alta" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Sem perda" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Híbrido" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Definido pelo utilizador" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Converter com soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Adicionar Replay Gain com soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avançado" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Extensão de ficheiro preferencial para ficheiros flac e ogg:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Campo de comentário preferencial para ficheiros flac e ogg:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Algumas aplicações utilizam o campo DESCRIPTION apesar de o correto ser o " "campo COMMENT.\n" "Os comentários serão escritos no campo escolhido e ao ler os detalhes este " "campo também será preferido." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Campo de comentário para o número total de faixas nos ficheiros flac e ogg:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "O número total de faixas será guardado no campo escolhido. Ao ler os " "detalhes, este será o campo preferencial.\n" "Se utilizar o campo TRACKNUNBER, o número de faixa e o total de faixas será " "gravado no mesmo campo, sendo separados um uma barra ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Campo de comentário para o número total de discos nos ficheiros flac e ogg:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "O número total de discos será guardado no campo escolhido. Ao ler os " "detalhes, este será o campo preferencial.\n" "Se utilizar o campo DISCNUNBER, o número do disco e o total de discos será " "gravado no mesmo campo, sendo separados um uma barra ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Utilizar sempre nomes compativeis com FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Substitui o carácter especial \"?\" por \"_\".\n" "Se o diretório de destino for um sistema de ficheiros FAT, os nomes " "compatíveis com FAT serão utilizados automaticamente, independentemente " "desta opção." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Depuração" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Escrever registos no disco" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Escrever registos no disco durante a conversão.\n" "Pode ser útil se ocorrer um erro e o utilizador não consiga aceder ao " "ficheiro de registo com o visualizador de registos.\n" "Os registos vão ser gravados em %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Experimental" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Guardar ficheiros temporários em memória a menos que o seu tamanho seja " "superior a:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Não guardar ficheiros temporários se o tamanho estimado for superior a este " "valor" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Parece que não está montado qualquer sistema de ficheiros em /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Se possível, utilizar canais" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Os canais possibilitam a não utilização de ficheiros temporários, melhorando " "o desempenho.\n" "No entanto, algumas infraestruturas podem gerar erros, logo utilize com " "precaução." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Descodificador" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Codificador" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Mover %1 para cima" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Mover %1 para baixo" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Sobre %..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Extração de CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "\"Plugin\":" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtros" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Extras ativos:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioridade" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Configurar prioridades para o formato:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Mostrar otimizações possíveis" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Você alterou as definições atuais.\n" "Pretende gravar as alterações?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Definições alteradas" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Isto vai escolher as melhores infraestruturas para todos os formatos e " "gravar as preferências.\n" "\n" "Continuar?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Parece que as infraestruturas já foram otimizadas. Não existem otimizações a " "fazer." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Gravar capa de álbum no diretório de destino" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Gravar capas de álbum incorporadas no diretório de destino" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Sempre" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Só se não for possível incorporar as capas de álbum nos ficheiros" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Nunca" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Nome a dar à capa de álbum (ao gravar no diretório de destino)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "A descrição da capa" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "O nome pré-definido da capa" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Nome pré-definido da capa:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "As linhas abaixo mostram os caracteres especiais que serão substituídos " "pelas informações que existirem nos detalhes dos ficheiros:\n" "\n" "%a - Artista\n" "%b - Álbum\n" "%d - Descrição da capa\n" "%r - Tipo de capa" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Definições" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Geral" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Capa de álbum" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Infraestruturas" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Interface" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Iniciar no modo:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Básico" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Detalhado" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Perfil padrão:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Formato padrão:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Conversão" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Gestão de conflitos:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Gerar novo nome de ficheiro" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Ignorar ficheiro" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "O que fazer se o ficheiro de destino já existir" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Número de ficheiros a converter em simultâneo:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Você não deve definir um número de ficheiros superior aos processadores " "instalados.\n" "Foi/Foram detetado(s) %1 processador(es)." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Aplicar ganho de álbum aos ficheiros convertidos" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Manter faixas do mesmo álbum à espera na lista de ficheiros, para aplicar o " "ganho de álbum a todos os ficheiros." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Replay Gain" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Agrupar ficheiros na ferramenta Replay Gain por:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "\"Tags\" e diretórios dos álbuns" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Só \"tags\"" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Só diretórios" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Número de itens a processar em simultâneo:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "A obter ficheiro" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "A copiar \"%1\" para \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Já não existem mais infraestruturas para testar." #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "A converter" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Falha ao converter. Existe, pelo menos, uma infraestrutura por configurar." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Falha ao converter. O \"plugin\" utilizado não tem as funcionalidades " "necessárias." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Falha ao converter, Erro desconhecido." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "A extrair" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "A descodificar" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Aplicar filtro" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "A codificar" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Ignorar Replay Gain. Mais tarde, será utilizado o ganho de álbum." #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "A aplicar Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "A gravar \"tags\"" #: convert.cpp:542 msgid "Running user script" msgstr "A executar script de utilizador" #: convert.cpp:567 msgid "Executing next step" msgstr "A executar a etapa seguinte" #: convert.cpp:711 msgid "Read tags successfully" msgstr "As \"tags\" foram lidas" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Incapaz de ler as \"tags\"" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "A remover %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Ocorreu um erro. Código: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Falha ao converter. Código: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Faixa de CD %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Faixa de CD %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "A adicionar novo ficheiro à lista: \"%1\"" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Obtida a ID: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "N.º da faixa: %1, dispositivo %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Estratégias de conversão:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Sistema de ficheiros: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Ocorreu um erro. O tamanho do ficheiro criado é inferior a 1 % do tamanho do " "ficheiro original." #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Falha ao converter. Tente novamente. Código: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "A remover os ficheiros parciais" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Normal" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Terminado mas com erros" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Abortado pelo utilizador" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Tem que configurar a infraestrutura" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Sem espaço no dispositivo" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "O ficheiro já existe" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Ocorreu um erro" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "A executar o comando: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "A remover o ficheiro da lista de conversão. Código %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Duração da conversão" #: convert.cpp:1183 msgid "Output file size" msgstr "Tamanho do ficheiro de destino" #: convert.cpp:1184 msgid "File size ratio" msgstr "Rácio de tamanho" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Desconhecido" #: convert.cpp:1325 msgid "Filter" msgstr "Filtro" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Progresso: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave é um formato simples e que não comprime a emissão áudio. O formato não " "incorpora perdas mas o tamanho de ficheiro é grande e não tem suporte a " "opções avançadas.
É suportado por quase todos os dispositivos e programas." "

http://en.wikipedia.org/" "wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) é um formato com perdas. É muito utilizado nos " "dispositivos Apple Inc.
No soundKonverter \"aac\" refere-se apenas ao " "codificador. Para criar um ficheiro com possibilidade de adicionar detalhes, " "utilize \"m4a/aac\".

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) é um formato com perdas. É muito utilizado nos " "dispositivos Apple Inc.
No soundKonverter \"m4a/aac\" refere-se aos " "ficheiros MPEG-4 codificados com o formato AAC.

http://en.wikipedia.org/wiki/" "Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) é um formato sem perdas. É muito utilizado " "nos dispositivos Apple Inc.
No soundKonverter \"m4a/alac\" refere-se aos " "ficheiros MPEG-4 codificados com o formato ALAC.

http://en.wikipedia.org/wiki/Apple " "Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis é um formato com perdas.
Não possui quaisquer restições legais." "

http://en.wikipedia." "org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus é um formato com perdas criado para a comunicação na Internet." "
Abrange diversas taxas de dados/qualidades e não possui quaisquer " "restrições legais.

http://en.wikipedia.org/wiki/Opus (formato áudio)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 ou MPEG-2 Audio Layer III (MP3) é o formato áudio mais utilizado." "
É suportado por todos os reprodutores áudio mesmo possuindo restrições " "legais.

http://en." "wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) é um formato áudio sem perdas.
Não " "possui quaisquer restrições legais.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) é um formato áudio com perdas e é desenvolvido " "pela Microsoft.

http://en.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "O formato AC3 ou AC-3 faz parte da família Dolby Digital.
Foi " "desenvolvido para ser utilizado em filmes (ex: DVD) e possui suporte a som " "surround.

http://en.wikipedia.org/wiki/Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "O formato MPEG-1 ou MPEG-2 Audio Layer II (MP2) é bastanete antigo." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "O formato Adaptive Multi-Rate Narrow-Band (AMR NB) é utilizado, " "principalmente, para compressão de voz para comunicações móveis.

http://" "en.wikipedia.org/wiki/Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "O formato Adaptive Multi-Rate Wide-Band (AMR WB) é uma versão melhorada do " "formato AMR NB e que utiliza uma taxa de dados superior para obter uma " "melhor qualidade.
Este formato só deve ser utilizado para compressão de " "vozes.

http://en.wikipedia.org/wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio é um formato sem perdas.

http://en.wikipedia.org/wiki/Monkey's Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex é um formato com perdas criado para codificar vozes.
Não possui " "quaisquer restrições legais. Após a disponibilização do formato Opus, o " "formato Speex foi considerado obsoleto.

http://en.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) é um formato livre e com perdas baseado no formato mp2 mas " "otimizado para uma qualidade superior.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) é um formato livre e sem perdas.

http://en.wikipedia.org/wiki/Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) é um formato livre e sem perdas.

http://en.wikipedia.org/wiki/TTA (codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) é um formato livre e sem perdas.

http://en.wikipedia.org/wiki/WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) é um formato desenvolvido pela Electronic Arts " "para os computadores da série Commodore-Amiga.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) é um formato simples e que não comprime " "a emissão áudio. O formato não incorpora perdas mas o tamanho de ficheiro é " "grande e não tem suporte a opções avançadas.

http://en.wikipedia.org/" "wiki/Audio Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "A terminar processo a pedido do utilizador" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Para codificar ficheiros %1, tem que instalar \"%2\"." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Para descodificar ficheiros %1, tem que instalar \"%2\"." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Para converter ficheiros %1, tem que instalar \"%2\"." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Para calcular as \"tags\" Replay Gain de %1 ficheiro(s), tem que instalar " "\"%2\"." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "\"%1\" deve ter sido disponibilizado com a sua distribuição." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Uma vez que \"%1\" inclui codificadores patenteados, é possível que não " "esteja incluído na sua distribuição. No entanto, muitas distribuições " "disponibilizam \"%1\" em repositório adicionais." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Pode transferir \"%1\" em \"%2\"" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Para poder utilizar o filtro %1, tem que instalar %2." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Para poder utilizar os filtros %1, tem que instalar %2." #: filelist.cpp:48 msgid "State" msgstr "Estado" #: filelist.cpp:49 msgid "Input" msgstr "Origem" #: filelist.cpp:50 msgid "Output" msgstr "Destino" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Qualidade" #: filelist.cpp:79 msgid "Edit options..." msgstr "Editar opções..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Iniciar conversão" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Parar conversão" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Remover" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "O soundKonverter não reconhece o ficheiro.\n" "É possível que tenha que instalar um \"plugin\" adicional.\n" "Verifique se o \"plugin\" existe no gestor de pacotes da sua distribuição." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... e mais %1 ficheiro(s)" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Serão ignoradas" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Em espera" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "À espera de Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Parado" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Infraestrutura não configurada" #: filelist.cpp:593 msgid "Disc full" msgstr "O disco está cheio" #: filelist.cpp:603 msgid "Failed" msgstr "Falhou" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Ocorreu um erro durante a conversão.\n" "Consulte o registo para mais informações." #: filelist.cpp:630 msgid "CD track %1" msgstr "%1ª faixa do CD " #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Pretende substituir a atual lista de ficheiros?\n" "\n" "Caso não o pretenda, a lista gravada será adicionada." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identificador" #: logger.cpp:91 msgid "Log ID" msgstr "Id do registo" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Registo finalizado" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Visualizador de registos" #: logviewer.cpp:28 msgid "Update" msgstr "Atualizar" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Gravar no ficheiro..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Ficheiro de registo:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Registo do soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Gravar ficheiro de registo" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "O ficheiro já existe. Pretende substituir o ficheiro?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Falha ao gravar o ficheiro.\n" "Possui permissão de escrita?" #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "O soundKonverter é uma interface gráfica para diversos conversores áudio, " "extratores de CD e ferramentas Replay Gain.\n" "\n" "Se encontrar erros, reporte-os em https://bugs.launchpad.net/soundkonverter\n" "ou envie uma mensagem eletrónica para hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Tema de ícones Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "" "O formato Shorten é um codificador livre e sem perda de qualidade.\n" "Para mais informações: http://etree.org/shnutils/shorten/" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Programadores Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Todos os programadores dos codificadores" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Abrir a ferramenta Replay Gain e adicionar os ficheiros" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "A terminar processo a pedido do utilizador" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Adicionar ficheiro segundo um perfil" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Adiconar ficheiros segundo um formato" #: main.cpp:36 msgid "Output all files to " msgstr "Gravar ficheiros em " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Iniciar soundKonverter invisível" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Iniciar conversão imediatamente (ativo se utilizar a opção --invisible) " #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Fechar soundKonverter após converter os ficheiros (ativo se utilizar a opção " "--invisible)" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Executar após converter cada um dos ficheiros (%i=original, " "%o=destino)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Ficheiro(s) a adicionar à lista" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Não classificado" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "Ficheiro PNG 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Ícone" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Capa frontal" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Capa do verso" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Folheto" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Foto de CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Imagem do artista principal" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Imagem do artista" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Imagem do maestro" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Imagem da banda" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Imagem do compositor" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Imagem do escritor" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Imagem do local de gravação" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Imagem dos artistas durante a gravação" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Imagem dos artistas durante um espetáculo" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Imagem de um vídeo" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Imagem de um peixe grande e colorido" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Ilustração relacionada com a faixa" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Logótipo da banda" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Logótipo da editora" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Adicionar faixas de CD" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Selecionar as faixas" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Definir opções de conversão" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artista:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Diversos artistas" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Compositor:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Diversos compositores" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Álbum:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Disco n.º:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "de" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Ano:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Género:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Extrair" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Faixa" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artista" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Compositor" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Título" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Duração" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Reprodutor" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Nenhuma faixa selecionada" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Título:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Comentário:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Selecione as opções e clique em \"Aceitar\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Criar ficheiro cue..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Pesquisar CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Extrair todo o CD para um ficheiro" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "A infraestrutura atual não permite a extração de CDs para um ficheiro.\n" "As soluções possíveis são exibidas abaixo.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "A infraestrutura atual não permite a extração de CDs para um ficheiro.\n" "Verifique se existe, no gestor de pacotes, um \"plugin\" que lhe permita " "esta operação." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Continuar" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Aceitar" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Cancelar" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Selecione a unidade de CD" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Foram encontradas várias unidades. Escolha apenas uma:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Gravador de DVD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Gravador de CD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Reprodutor de DVD" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Reprodutor de CD" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): CD áudio com %3 faixas" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Desconhecido" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Aguarde enquanto se estabelece a ligação à CDDB..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Selecione a entrada CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Foram encontradas diversas entradas. Escolha apenas uma:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Todas as faixas" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Faixas" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Para continuar deve escolher, pelo menos, uma faixa." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Nenhuma opção selecionada." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Já existe um ficheiro com este nome.\n" "\n" "Pretende substituir o ficheiro existente?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "O ficheiro já existe" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Adicionar pasta" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Selecione o diretório" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Diretório:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Adicionar os formatos selecionados:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Faltam-lhe alguns formatos?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Selecionar tudo" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Não selecionar" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Recursivo" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Se ativa, os ficheiros nos subdiretórios serão adicionados" #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Adicionar ficheiros" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 ficheiros" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Todos os ficheiros suportados" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Todos os ficheiros" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Adicionar lista de reprodução" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Estes ficheiros não foram encontados:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Ficheiros não encontrados" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Adicionar url" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Indique o url" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "O url indicado é inválido. Tente novamente." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Formato:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "\"Plugin\":" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destino:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Calcular as \"tags\" Replay Gain" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Gravar opções atuais como perfil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Abrir perfis gravados" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "O formato %s não tem suporte a Replay Gain.\n" "As soluções possíveis são exibidas abaixo." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "O formato %1 não tem suporte a Replay Gain.\n" "Abra o gestor de pacotes da sua distribuição e instale um \"plugin\" de " "suporte a Replay Gain." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Os detalhes Replay Gain indicam ao reprodutor o nível máximo de som\n" "dos ficheiros de modo a que todas as faixas tenham o mesmo volume." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Com as opções atuais o soundKonverter criará, aproximadamente, %1 ficheiros " "por minuto." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Novo perfil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Indique o nome do novo perfil:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Não pode gravar um perfil sem nome." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "O nome do perfil está vazio." #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Não pode substituir os perfis padrão." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "O perfil já existe" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Já existe um perfil com este nome.\n" "\n" "Pretende substituir o perfil existente?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Anterior" #: optionseditor.cpp:42 msgid "Next" msgstr "Seguinte" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Editar opções de conversão" #: optionseditor.cpp:74 msgid "Tags" msgstr "\"Tags\"" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Capas de álbum:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Editar" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Faixa n.º:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Editar \"tags\"" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Nenhum ficheiro selecionado" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Por não ser um ficheiro local, as \"tags\" não puderam ser lidas.\n" "O soundKonverter vai tentar ler as \"tags\" ao converter o ficheiro.\n" "Se as quiser editar, clique no botão em baixo. No entanto, o soundKonverter " "não vai tentar\n" "ler as \"tags\" após a transferência." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Falha ao ler as \"tags\" do ficheiro.\n" "O soundKonverter vai tentar ler as \"tags\" ao converter o ficheiro.\n" "Se as quiser editar, clique no botão em baixo. No entanto, o soundKonverter " "não vai tentar\n" "ler as \"tags\" uma segunda vez." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Tipo de capa de álbum:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Descrição:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Tamanho:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pixeis (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Tipo Mime:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 ficheiros" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Os ficheiros possuem opções de conversão distintas.\n" "Pode alterar as opções de todos os ficheiros, clicando no botão em baixo." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Falha ao ler as \"tags\" de um ou mais ficheiros.\n" "O soundKonverter vai tentar ler as \"tags\" ao converter o ficheiro.\n" "Se as quiser editar, clique no botão em baixo. No entanto, o soundKonverter " "não vai tentar\n" "ler as \"tags\" uma segunda vez." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Qualidade:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Remover o perfil selecionado" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Info" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informações sobre o perfil selecionado" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informações sobre o formato selecionado" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Mais formatos..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Opcional:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "A codificação de ficheiros em fraca qualidade pode ser útil caso possua um " "dispositivo que seja limitado de espaço.\n" "Não deve gravar as suas faixas com este tipo de qualidade sem possuir uma " "cópia com melhor qualidade." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "A codificação de ficheiros em baixa qualidade pode ser útil caso possua um " "dispositivo que seja limitado de espaço.\n" "Não deve gravar as suas faixas com este tipo de qualidade sem possuir uma " "cópia com melhor qualidade." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "A codificação de ficheiros em média qualidade é o que possui a melhor " "relação entre qualidade e tamanho de ficheiro.\n" "A maioria das pessoas não nota diferenças entre os ficheiros originais e " "estes, mas esta qualidade só deve ser utilizada se possuir pouco espaço " "livre." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "A codificação de ficheiros em alta qualidade é uma boa escolha se possuir " "espaço livre." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "A codificação de ficheiros em extrema qualidade é uma boa escolha para quem " "tem muito espaço livre." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "A codificação de ficheiros sem perdas mantém a qualidade dos ficheiros " "originais.\n" "Pode ser útil se o ficheiro original possuir uma qualidade excelente (CD " "áudio)\n" "O tamanho do ficheiro criado será grande e esta qualidade só deve ser " "utilizada se possuir bastante espaço livre." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Pode definir o seu perfil no separador \"Detalhado\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Este perfil foi definido pelo utilizador." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Informações do perfil para %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Pretende mesmo remover o perfil: %1?" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Remover perfil?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Informações sobre %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Não existem informações sobre o formato." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Por metadados" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Diretório original" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Indique o diretório de destino" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Copiar estrutura do diretório" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Escolha o diretório de destino" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Abrir destino com o Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Artista desconhecido" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Álbum desconhecido" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Sem comentários" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Género desconhecido" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Compositor desconhecido" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Título desconhecido" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "novo" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Dar nome aos ficheiros de acordo com o padrão indicado" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "As linhas abaixo mostram os caracteres especiais que serão substituídos " "pelas informações que existirem nos detalhes dos ficheiros:\n" "\n" "%a - Artista\n" "%b - Álbum\n" "%c - Comentário\n" "%d - Número do disco\n" "%g - Género\n" "%n - Número da faixa\n" "%p - Compositor\n" "%t - Título\n" "%y - Ano\n" "%f - Nome do ficheiro original\n" "\n" "Pode colocar os caracteres entre parênteses retos e simpes ('[' and ']')\n" "de modo a que os caracteres sejam ignorados se o valor de substituição " "estiver vazio.\n" "Para poder utilizar os parênteses retos tem que os escrever na seguinte " "forma ('\\[' and '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "Gravar ficheiros convertidos no diretório dos ficheiros originais" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Gravar ficheiros convertidos num diretório especificado" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Copiar estrutura do diretório para todos os ficheiros convertidos" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Modo:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Taxa de dados" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Taxa de dados:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Argumentos extra do codificador:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Ativar codificadores experimentais na janela de diálogo ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Compilar ffmpeg com suporte a %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Configurar %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Ativar codificadores experimentais" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Reinicie o soundKonverter para aplicar as alterações." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Nível de compressão:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Utilizar ficheiro SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Para converter dados midi em dados wave, necessita do SoundFont para os " "efeitos sonoros.\n" "Consulte %1 para obter os ficheiros necessários." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "Ainda não configurou FluidSynth. Tem que definir um ficheiro SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Pré-ajuste:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Médio" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Padrão" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Extremo" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Ultra" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Especifique a taxa de dados" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Codificação a uma taxa constante.\n" "Só funciona para 80, 96, 112, 128, 160, 192, 224, 256 e 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Codificação rápida" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "Utilizar um algoritmo de codificação rápida (qualidade inferior)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Tipo de taxa de dados:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variável" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Média" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Constante" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "A compressão entre 0 e 9, em que 0 é a melhor qualidade.\n" "Quanto maior for a qualidade mais lenta será a conversão.\n" "Recomendamos o valor 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Este ajuste deve ser utilizado na maioria das situações (~150 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Este ajuste deve ser utilizado na maioria das situações.\n" "Apresenta uma elevada qualidade (~230 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Se possuir uma boa audição e equipamento de alta qualidade, este ajuste é o " "ideal para si.\n" "Apresenta uma qualidade superior à do modo padrão (~280 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Este ajuste será exagerado para a maioria das situações mas, se pretender a " "melhor qualidade,\n" "independentemente do tamanho de ficheiro, este é o ajuste que deve utilizar " "(320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "A qualidade entre 0 e 9, em que 0 é a melhor qualidade.\n" "Quanto melhor a qualidade, maior será o tamanho do ficheiro." #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Modo estéreo:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automático" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Simple Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Forced Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dual Mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Sobre %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "O LAME é um codificador MP3 de alta qualidade.\n" "Pode transferi-lo em: http://lame.sourceforge.net " #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Ativar codificadores experimentais no diálogo de configurações libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Compile a libav com suporte a with %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefone" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Thumb" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Rádio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Braindead" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "Só pode utilizar os ajustes MusePack ou as suas definições." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "baixa (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "média/baixa (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "média (~130 kbps abr)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "elevada (~180 kbps abr)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "excelente (~210 kbps abr)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "superior (~240 kbps abr)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "suprema (~270 kbps abr)" #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" "Pode transferir \"%1\" em \"%2\", depois de indicar um endereço eletrónico" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "Normalmente, \"%1\" pertence ao pacote \"%2\", que deve estar presente na " "sua distribuição." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Canais não agrupados:" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Utilizar emissão mono por canal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame é um codificador livre de MP2.\n" "Pode transferi-lo em: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "O nível de qualidade entre -50 e 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "" "Normalmente, \"%1\" pertence ao pacote \"%2\", que pode transferir em %3." #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Rápida" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Alta" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Excelente" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalizar" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Ativar codificadores experimentais no diálogo de configurações sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Compile o sox com suporte %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Qualidade da frequência:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Rápida" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Qualidade entre 9 e 0, sendo 0 a melhor qualidade." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Efeito:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Inativo" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Remover este efeito" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Adicionar" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Adicionar efeito" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalizar:\n" "Altera o volume para que todas as faixas tenham o mesmo nível" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Graves:\n" "Amplifica as frequências baixas" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Agudos:\n" "Amplifica as frequências altas" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Frequência:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Tamanho:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Canais" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Estéreo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Utilizar formato:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Modificar emissão áudio" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Escrever ajuste de ganho nos detalhes dos ficheiros. Deste modo, os detalhes " "serão carregados em todos os leitores mp3.\n" "Ainda assim, é possível anular as alterações pois a correção de dados também " "será escrita." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Para poder extrair as faixas do CD para um ficheiro, tem que instalar o " "pacote \"cdparanoia\".\n" "É provável que o pacote esteja disponível na sua distribuição. No entanto, " "pode ter outro nome." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Velocidade:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Tempo restante:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Terminado" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Ficheiro" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Álbum" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Recolher tudo" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Expandir tudo" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Mover para novo álbum" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Algumas faixas não podem ser adicionadas ao álbum porque o codificador ou " "frequência é diferente." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Novo álbum" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "Erro Replay Gain. Tem que configurar a infraestrutura." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Erro Replay Gain. O \"plugin\" utilizado não tem as funcionalidades " "necessárias." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Falha Replay Gain. Erro desconhecido." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Erro Replay Gain. Código: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Adicionar item à lista de tarefas Replay Gain: %1" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain para %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Estruturas Replay Gain possíveis:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Ignoradas" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Adicionar pasta..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Adicionar ficheiros..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Forçar novo cálculo" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Recalcular detalhes Replay Gain para todos os ficheiros da lista que já os " "tenham." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Criar \"tags\" nos ficheiros sem \"tags\"" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Calcular detalhes Replay Gain para todos os ficheiros da lista que não os " "tenham." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Remover \"tags\" nos ficheiros com \"tags\"" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Remover detalhes Replay Gain de todos os ficheiros na lista." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Fechar" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Ainda existem tarefas Replay Gain em curso.\n" "Quer cancelar as tarefas?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Este é o soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Compilado com TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "A leitura/ecrita de capas de álbum não é suportada para ficheiros ogg/" "METADATA_BLOCK_PICTURE, flac e asf/wma. Para o fazer, tem que instalar " "TagLib 1.7." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "A remover o ficheiro: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Ver registos..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Replay Gain..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Sobre os extras..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Adicionar faixas de CD..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Adicionar url..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Adicionar lista de reprodução..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Abrir lista de ficheiros" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Gravar lista de ficheiros" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Iniciar" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Parar" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Parar imediatamente" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Parar depois de terminar as conversões atuais" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Continuar após terminar as conversões atuais" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Nenhum dispositivo encontrado" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Ferramentas" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Sérgio Marques" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "smarquespt@gmail.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Conversor de áudio, extração de CD e análise Replay Gain" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Extrair um CD áudio com o soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/soundkonverter.pot0000644000175000001440000000013212255310031022225 xustar000000000000000030 mtime=1387630617.604848019 30 atime=1387630134.325889837 30 ctime=1387631578.280421786 ./soundkonverter-2.0.5/po/soundkonverter.pot0000644000175000001440000025266112255310031021654 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "" #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "" #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "" #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "" #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "" #: convert.cpp:515 msgid "Writing tags" msgstr "" #: convert.cpp:542 msgid "Running user script" msgstr "" #: convert.cpp:567 msgid "Executing next step" msgstr "" #: convert.cpp:711 msgid "Read tags successfully" msgstr "" #: convert.cpp:715 msgid "Unable to read tags" msgstr "" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "" #: convert.cpp:1038 msgid "File system type: %1" msgstr "" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "" #: convert.cpp:1182 msgid "Conversion time" msgstr "" #: convert.cpp:1183 msgid "Output file size" msgstr "" #: convert.cpp:1184 msgid "File size ratio" msgstr "" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "" #: convert.cpp:1325 msgid "Filter" msgstr "" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "" #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "" #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "" #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "" #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "" #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "" #: filelist.cpp:48 msgid "State" msgstr "" #: filelist.cpp:49 msgid "Input" msgstr "" #: filelist.cpp:50 msgid "Output" msgstr "" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "" #: filelist.cpp:79 msgid "Edit options..." msgstr "" #: filelist.cpp:81 msgid "Start conversion" msgstr "" #: filelist.cpp:83 msgid "Stop conversion" msgstr "" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "" #: filelist.cpp:583 msgid "Stopped" msgstr "" #: filelist.cpp:588 msgid "Backend not configured" msgstr "" #: filelist.cpp:593 msgid "Disc full" msgstr "" #: filelist.cpp:603 msgid "Failed" msgstr "" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" #: filelist.cpp:630 msgid "CD track %1" msgstr "" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "" #: logger.cpp:90 msgid "Identifier" msgstr "" #: logger.cpp:91 msgid "Log ID" msgstr "" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "" #: logviewer.cpp:28 msgid "Update" msgstr "" #: logviewer.cpp:31 msgid "Save to file..." msgstr "" #: logviewer.cpp:42 msgid "Log file:" msgstr "" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "" #: logviewer.cpp:127 msgid "Save log file" msgstr "" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" #: main.cpp:22 msgid "soundKonverter" msgstr "" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "" #: main.cpp:23 msgid "Daniel Faust" msgstr "" #: main.cpp:24 msgid "David Vignoni" msgstr "" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "" #: main.cpp:25 msgid "Scott Wheeler" msgstr "" #: main.cpp:25 msgid "TagLib" msgstr "" #: main.cpp:26 msgid "Marco Nelles" msgstr "" #: main.cpp:26 msgid "Audex" msgstr "" #: main.cpp:27 msgid "Amarok developers" msgstr "" #: main.cpp:27 msgid "Amarok" msgstr "" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "" #: main.cpp:35 msgid "Add all files using the given format" msgstr "" #: main.cpp:36 msgid "Output all files to " msgstr "" #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "" #: opener/cdopener.cpp:244 msgid "Title" msgstr "" #: opener/cdopener.cpp:245 msgid "Length" msgstr "" #: opener/cdopener.cpp:246 msgid "Player" msgstr "" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "" #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "" #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "" #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "" #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "" #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "" #: opener/diropener.cpp:126 msgid "Select all" msgstr "" #: opener/diropener.cpp:130 msgid "Select none" msgstr "" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "" #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "" #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" #: optionsdetailed.cpp:448 msgid "New profile" msgstr "" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "" #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "" #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" #: optionseditor.cpp:40 msgid "Previous" msgstr "" #: optionseditor.cpp:42 msgid "Next" msgstr "" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "" #: optionseditor.cpp:74 msgid "Tags" msgstr "" #: optionseditor.cpp:85 msgid "Covers:" msgstr "" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "" #: optionseditor.cpp:353 msgid "No file selected" msgstr "" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "" #: optionssimple.cpp:74 msgid "More formats..." msgstr "" #: optionssimple.cpp:96 msgid "Optional:" msgstr "" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "" #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "" #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "" #: outputdirectory.cpp:36 msgid "By meta data" msgstr "" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "" #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "" #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "" #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" #: progressindicator.cpp:85 msgid "Speed:" msgstr "" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "" #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "" #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "" #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "" #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "" #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "" #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "" #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "" #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "" #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "" #: soundkonverter.cpp:212 msgid "Load file list" msgstr "" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "" ./soundkonverter-2.0.5/po/PaxHeaders.25599/ru.po0000644000175000001440000000013212255310032017400 xustar000000000000000030 mtime=1387630618.022842793 30 atime=1387630617.993843156 30 ctime=1387631578.281421773 ./soundkonverter-2.0.5/po/ru.po0000644000175000001440000040713012255310032017020 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Дмитрий Михирев , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: HessiJames \n" "Language-Team: Russian (http://www.transifex.com/projects/p/soundkonverter/" "language/ru/)\n" "Language: ru\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "О плагинах" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Установленные плагины:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "О плагине %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Тип плагина: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Бекенды:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (найдено в: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (не найдено)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Поддерживаемые кодеки:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Сейчас отключено." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Кодировать: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Декодировать: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Настроить %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Решения проблем с бекендами" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Вы установили или удалили бекенды, и настройки soundKonverter можно улучшить." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "Для кодирования файлов %1 бекенд '%2' можно заменить на '%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Для извлечения данных с аудио-CD бекенд '%1' может быть заменён на '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "Для декодирования файлов %1 бекенд '%2' можно заменить на '%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Для выравнивания громкости файлов %1 бекенд '%2' можно заменить на '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Игнорировать" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Исправить" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter не нашёл недостающих пакетов.\n" "Если вам не хватает поддержки каких-то форматов, возможно, требуется " "установить дополнительный плагин через пакетный менеджер дистрибутива." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Некоторые из установленных плагинов не работают.\n" "Возможные решения приведены ниже." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Некоторые файлы не могут быть декодированы.\n" "Возможные решения приведены ниже." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Выравнивание громкости для некоторых файлов не поддерживается.\n" "Возможные решения приведены ниже." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Копирование данных с аудио-CD не поддерживается установленными плагинами.\n" "Воспользуйтесь менеджером пакетов своего дистрибутива, чтобы получить плагин " "для извлечения аудиоданных с CD." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Извлечение аудиоданных с CD не поддерживается из-за отсутствия бекендов.\n" "Возможные решения приведены ниже." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Возможные решения для %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "или" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Затронутые файлы:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Последнее использовавшееся" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Высокое" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "обложка" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Попробовать внутренний" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Очень низкое" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Низкое" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Среднее" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Очень высокое" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Без потерь" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Гибридное" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Определено пользователем" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Преобразовать с помощью soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Добавить выравнивание громкости с помощью soundConverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Подробно" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Предпочитаемый суффикс для имён файлов ogg vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Предпочитаемое поле комментария в тегах ogg и flac:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Некоторые приложения используют поле DESCRIPTION, даже если корректным " "является COMMENT.\n" "Комментарии будут записываться в выбранное поле, а при чтении тегов ему " "будет отдаваться предпочтение." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "Предпочитаемое поле числа дорожек в тегах off и flac:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Общее число дорожек будет записываться в выбранное поле, а при чтении тегов " "ему будет отдаваться предпочтение.\n" "При использовании поля TRACKNUMBER номер дорожки и общее число дорожек будут " "записываться в одно и то же поле через косую черту ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "Предпочитаемое поле числа дисков в тегах ogg и flac:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Общее число дисков будет записываться в выбранное поле, а при чтении тегов " "ему будет отдаваться предпочтение.\n" "При использовании поля DISCNUMBER номер диска и общее число дисков будут " "записываться в одно и то же поле через косую черту ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Всегда использовать имена файлов, совместимые с FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Заменяет некоторые специальные символы вроде '?' на '_'.\n" "Если каталог назначения находится в файловой системе FAT, совместимые с FAT " "имена файлов будут использованы автоматически независимо от этой опции." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Отладка" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Сохранять журналы на диск" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Записывать файлы журналов на диск во время преобразования.\n" "Это может оказаться полезным, если произойдёт крах программы и вы не сможете " "получить доступ к журналу с помощью просмотрщика журналов.\n" "Журналы будут сохраняться в %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Экспериментальный" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "Хранить временные файлы в памяти, пока расчётный размер не превышает:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Не держать в памяти файлы, которые предположительно будут больше этого " "значения, чтобы избежать использования подкачки" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "МиБ" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Похоже, файловая система в /dev/shm не смонтирована" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "По возможности использовать конвейеры" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Конвейеры делают необязательным использование временных файлов, тем самым " "увеличивая производительность.\n" "Однако некоторые бекенды могут вызывать ошибки в этом режиме, так что будьте " "осторожны." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Декодер" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Кодер" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Выравнивание громкости" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Переместить %1 на позицию вверх" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Переместить %1 на позицию вниз" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "О %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Извлечение данных с CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Использовать плагин:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Фильтры" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Включить плагины:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Приоритеты" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Настроить приоритеты плагинов для формата:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Показать возможные оптимизации" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Вы изменили текущие настройки.\n" "Хотите сохранить их?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Настройки изменены" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Будут выбраны наилучшие бекенды для всех форматов, и новые настройки будут " "сохранены немедленно.\n" "\n" "Хотите продолжить?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "Все настройки бекенда вроде бы оптимальны, нечего делать." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Сохранение обложек в каталог назначения" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Сохранять встроенные обложки в каталог назначения" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Всегда" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Только если внедрение обложек в выходные файлы невозможно" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Никогда" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Имя файла для обложки (при сохранении в каталог назначения)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Описание встроенных обложек" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Название файла обложки по умолчанию" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Название файла обложки по умолчанию:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Следующие строки являются шаблонами, которые будут заменены\n" "на информацию из метаданных:\n" "\n" "%a - Исполнитель\n" "%b - Альбом\n" "%d - Описание обложки\n" "%r - Назначение обложки" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Настройки" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Основные" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Изображения обложки" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Бекенды" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Пользовательский интерфейс" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Запуск в режиме:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Просто" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Подробно" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Профиль по умолчанию:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Формат по умолчанию:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Преобразование" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Обработка конфликтов:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Сгенерировать новое имя файла" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Пропустить файл" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Что делать, если файл уже существует" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Преобразовывать файлов в один заход:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Не следует устанавливать это число больше числа доступных процессорных " "ядер.\n" "Обнаружено процессорных ядер: %1" #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Применять поальбомное выравнивание к преобразованным файлам" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Хранить песни одного альбома в списке файлов, чтобы применить поальбомное " "выравнивание сразу ко всем файлам." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Инструмент выравнивания громкости" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Группировать файлы в инструменте выравнивания громкости по:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Имена альбомов и каталоги" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Только имена альбомов" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Только каталоги" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Количество позиций, обрабатываемых за раз:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Получение файла" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Копирование \"%1\" в \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Не осталось бекендов, чтобы попробовать :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Преобразование" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Преобразование не удалось. Хотя бы один бекенд нужно настроить правильно." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Преобразование не удалось. Предпочитаемый плагин не предоставляет " "необходимую функцию." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Преобразование не удалось. Неизвестная ошибка." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Ивлечение" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Декодирование" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Применяется фильтр" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Кодирование" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "" "Пропускаем выравнивание громкости, поальбомное выравнивание будет выполнено " "позже" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Применение выравнивание громкости" #: convert.cpp:515 msgid "Writing tags" msgstr "Запись тегов" #: convert.cpp:542 msgid "Running user script" msgstr "Запуск пользовательского сценария" #: convert.cpp:567 msgid "Executing next step" msgstr "Выполнение следующего шага" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Теги прочитаны успешно" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Невозможно прочитать теги" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Удаление: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Произошла ошибка. Код ошибки: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Преобразование не удалось. Код завершения: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Дорожка %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Дорожка %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Добавление нового пункта в список преобразования: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Получен ID журнала: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Номер дорожки: %1, устройство: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Возможные стратегии преобразования:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Тип файловой системы: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Произошла ошибка, размер выходного файла меньше одного процента от размера " "входного файла" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Преобразование не удалось, пробуем ещё раз. Код завершения: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Удаление частично преобразованного выходного файла" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Нормальный выход" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Успешно, но были проблемы" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Прервано пользователем" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Бекенд требует настройки" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Недостаточно места на устройстве назначения" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Файл уже существует" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Произошла ошибка" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Выполнение команды: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Удаление файла из списка преобразования. Код завершения: %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Время преобразования" #: convert.cpp:1183 msgid "Output file size" msgstr "Размер выходного файла" #: convert.cpp:1184 msgid "File size ratio" msgstr "Коэффициент сжатия" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Неизвестно" #: convert.cpp:1325 msgid "Filter" msgstr "Фильтр" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Ход выполнения: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave - это очень простой аудиоформат без сжатия, поэтому звук не теряет " "качества, но размер файла получается очень большим, кроме того не " "поддерживаются такие дополнительные возможности как теги.
Он " "поддерживается практически всеми программами и устройствами.

http://ru.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) - это популярный формат сжатия с потерями. Он " "широко применяется Apple Inc.
В soundKonverter \"aac\" означает только " "кодек. Чтобы получить файл с возможностью сохранения тегов используйте \"m4a/" "aac\".

http://ru.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) - это популярный формат сжатия с потерями. Он " "широко применяется Apple Inc.
В soundKonverter \"m4a/aac\" означает " "аудиофайл MPEG-4 кодированный с помощью AAC.

http://ru.wikipedia.org/wiki/" "Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) - это формат сжатия звука без потерь. Он " "широко применяется Apple Inc.
В soundKonverter \"m4a/alac\" означает " "аудиофайл MPEG-4 кодированный с помощью ALAC.

http://ru.wikipedia.org/wiki/Apple " "Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis - это популярный формат сжатия звука с потерями.
Он свободен " "от каких бы то ни было юридических ограничений.

http://ru.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus - это формат сжатия звука с потерями, разработанный для общения через " "Интернет в реальном времени.
Он покрывает широкий диапазон битрейтов с " "высоким качеством и свободен от каких бы то ни было юридических ограничений." "

http://ru.wikipedia.org/wiki/Opus (кодек)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 или MPEG-2 Audio Layer III (MP3) - самый популярный формат сжатия " "звука с потерями.
Он поддерживается практически всеми " "аудиопроигрывателями, хотя на его использование и наложены некоторые " "юридические ограничения.

http://ru.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) - это формат сжатия звука без потерь.
Он " "свободен от каких бы то ни было юридических ограничений.

http://ru.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) - это формат сжатия звука с потерями, " "разработанный Microsoft.

http://ru.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 или AC-3 - это часть семейства форматов Dolby Digital.
Он был " "разработан для кинофильмов (например на DVD) и поддерживает объёмный звук." "

http://ru." "wikipedia.org/wiki/Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 или MPEG-2 Audio Layer II (MP2) - старый формат сжатия звука с " "потерями.

http://ru.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) используется преимущественно для " "сжатия голоса в мобильной связи.

http://ru.wikipedia.org/wiki/AMR (сжатие звука)" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) - это усовершенствованная версия AMR " "NB с использованием более высокой плотности данных и, как следствие, более " "высоким качеством.
Всё же следует использовать её только для сжатия " "голоса.

http://ru.wikipedia.org/wiki/AMR (сжатие звука)" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio - это формат сжатия звука без потерь.

http://ru.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex - это формат сжатия звука с потерями, разработанный для кодирования " "голоса.
Он свободен от каких бы то ни было юридических ограничений. С " "момента появления Opus Speex считается устаревшим.

http://ru.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) - это свободный формат сжатия звука с потерями, основанный на " "mp2 и оптимизированый для высокого качества.

http://ru.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) - это свободный формат сжатия звука без потерь.

http://en.wikipedia.org/wiki/" "Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) - это свободный формат сжатия звука без потерь.

http://ru.wikipedia.org/wiki/TTA" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) - это свободный формат сжатия звука без потерь.

http://ru.wikipedia.org/wiki/" "WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) - это стандарт аудиофайлов, разработанный " "Electronic Arts для компьютеров серии Commodore-Amiga.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) - это очень простой аудиоформат без " "сжатия, поэтому звук не теряет качества, но размер файла получается очень " "большим, кроме того не поддерживаются такие дополнительные возможности как " "теги.

http://ru.wikipedia.org/wiki/Audio " "Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Уничтожение процесса по запросу пользователя" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Для кодирования файлов %1 необходимо установить '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Для декодирования файлов %1 необходимо установить '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Для перекодирования файлов %1 необходимо установить '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "Для выравнивания громкости файлов %1 необходимо установить '%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' должен поставляться с вашим дистрибутивом." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Поскольку '%1' включает патентованные кодеки, он может не включаться в " "установку по умолчанию вашего дистрибутива. Многие дистрибутивы предлагают " "'%1' в дополнительном репозитории ПО." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Вы можете загрузить '%1' с %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Для использования фильтра %1 необходимо установить '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Для использования фильтров %1 необходимо установить '%2'." #: filelist.cpp:48 msgid "State" msgstr "Состояние" #: filelist.cpp:49 msgid "Input" msgstr "Вход" #: filelist.cpp:50 msgid "Output" msgstr "Выход" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Качество" #: filelist.cpp:79 msgid "Edit options..." msgstr "Редактировать опции..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Начать преобразование" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Остановить преобразование" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Удалить" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Этот тип файлов незнаком soundKonverter.\n" "Возможно, необходимо установить дополнительный плагин.\n" "Поищите его в менеджере пакетов своего дистрибутива." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... и ещё %1 файлов" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Будет пропущено" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Ожидание" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Ожидание выравнивания громкости" #: filelist.cpp:583 msgid "Stopped" msgstr "Остановлено" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Бекенд не настроен" #: filelist.cpp:593 msgid "Disc full" msgstr "Диск полон" #: filelist.cpp:603 msgid "Failed" msgstr "Неудача" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Преобразование не удалось.\n" "Смотрите подробную информацию в журнале." #: filelist.cpp:630 msgid "CD track %1" msgstr "Дорожка %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Хотите переписать текущий список файлов?\n" "\n" "Если нет, сохранённый список файлов будет добавлен." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "д" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "ч" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "м" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "с" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "мс" #: logger.cpp:90 msgid "Identifier" msgstr "Идентификатор" #: logger.cpp:91 msgid "Log ID" msgstr "ID журнала" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Журналирование завершено" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Просмотрщик журналов" #: logviewer.cpp:28 msgid "Update" msgstr "Обновить" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Сохранить в файл..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Файл журнала:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Журнал soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Сохранить файл журнала" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Файл уже существует. Вы точно хотите переписать его?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Запись в файл не удалась.\n" "Возможно, у вас нет прав на запись." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter - это фронтенд к различным аудиоконвертерам, утилитам " "выравнивания громкости и и извлечения аудиоданных с CD.\n" "\n" "Пожалуйста, сообщайте об ошибках на https://bugs.launchpad.net/" "soundkonverter\n" "или просто пишите мне на адрес hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Тема значков Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Разработчики Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Все программисты аудиоконвертеров" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "" "Открыть инструмент выравнивания громкости и добавить все выбранные файлы" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "Получить все дорожки с CD-привода , 'авто' - поиск CD" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Добавить все файлы с использованием выбранного профиля" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Добавить все файлы с использованием выбранного формата" #: main.cpp:36 msgid "Output all files to " msgstr "Записать все файлы в " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Запустить soundKonverter невидимым" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Запустить преобразование немедленно (включено при использовании '--" "invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Завершить soundKonverter после того, как все файлы преобразованы (включено " "при использовании '--invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Выполнить после того, как все файлы преобразованы (%i=входной " "файл, %o=выходной файл)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Аудиофайл(ы) для добавления в список" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Разное" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "Значок PNG 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Значок файла" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Лицевая обложка" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Задняя обложка" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Страница вкладыша" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Фотография CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Изображение ведущего исполнителя" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Изображение исполнителя" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Изображение дирижёра" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Изображение коллектива" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Изображение композитора" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Изображение автора текста" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Изображение места записи" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Изображение исполнителей во время записи" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Изображение исполнителей во время выступления" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Изображение с видео" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Изображение большой цветастой рыбы." #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Иллюстрация к дорожке" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Логотип коллектива" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Логотип издателя" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Добавить дорожки" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Выберите дорожки" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Установите опции преобразования" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Исполнитель:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Разные исполнители" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Композитор:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Разные композиторы" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Альбом:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Диск №" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "из" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Год:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Жанр:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Рип" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Дорожка" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Исполнитель" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Композитор" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Название" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Длительность" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Проигрыватель" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Дорожка не выбрана" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Название:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Комментарий:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Выберите нужные опции вывода и щёлкните \"OK\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Сохранить список cue..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Запрос к CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Извлечь весь диск в один файл" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Извлечение всего CD в один файл не поддерживается установленными бекендами.\n" "Возможные решения перечислены ниже.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Извлечение всего CD в один файл не поддерживается установленными бекендами.\n" "Воспользуйтесь менеджером пакетов своего дистрибутива, чтобы установить " "дополнительный плагин, поддерживающий извлечение в один файл." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Продолжить" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "OK" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Отмена" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Выбрать привод CD-ROM" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Обнаружено несколько CD-приводов. Выберите один:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "DVD-рекордер" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "CD-рекордер" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "DVD-проигрыватель" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "CD-проигрыватель" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): Аудио-CD с %3 дорожками" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Неизвестно" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Подождите, пытаемся загрузить данные из CDDB..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Выбор записи CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Обнаружено несколько записей CDDB. Выберите, пожалуйста, одну:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Все дорожки" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Дорожки" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Пожалуйста, выберите хотя бы одну дорожку, чтобы продолжить." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Не выбраны опции преобразования." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Файл с таким именем уже существует.\n" "\n" "Хотите переписать существующий файл?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Файл уже существует" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Добавить папку" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Выберите каталог" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Каталог:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Добавить только файлы выбранных форматов:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Не хватает каких-то форматов?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Выбрать все" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Не выбирать ничего" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Рекурсивно" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Если отмечено, файлы из подкаталогов тоже будут добавлены." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Добавить файлы" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 файлов" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Все поддерживаемые файлы" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Все файлы" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Добавить список воспроизведения" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Следующие файлы не были найдены:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Файлы не найдены" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Добавить URL" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Введите URL" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "Вы ввели невалидный URL. Попробуйте ещё раз." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Формат:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Использовать плагин:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Назначение:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Рассчитать теги выравнивания громкости" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Сохранить текущие опции как профиль" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Загрузить сохранённые профили" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Выравнивание громкости для формата %1 не поддерживается.\n" "Возможные решения приведены ниже." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Выравнивание громкости для формата %1 не поддерживается.\n" "Воспользуйтесь менеджером пакетов своего дистрибутива, чтобы установить " "дополнительный плагин выравнивания громкости." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Выравнивание громкости подсказывает проигрывателю, насколько громкой " "является запись,\n" "благодаря чему он может подстроить уровень звука так, чтобы воспроизвести " "все записи с одной громкостью." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "При текущих настройках преобразования будет создаваться около %1 файлов в " "минуту." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Новый профиль" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Введите имя для нового профиля:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Нельзя сохранить профиль без имени." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Имя профиля пусто" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Нельзя переписывать встроенные профили." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Профиль уже существует" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Профиль с таким именем уже существует.\n" "\n" "Хотите переписать существующий профиль?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Назад" #: optionseditor.cpp:42 msgid "Next" msgstr "Далее" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Изменить опции преобразования" #: optionseditor.cpp:74 msgid "Tags" msgstr "Теги" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Обложки:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Правка" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Дорожка №:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Редактировать теги" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Файл не выбран" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Облако тегов не может быть прочитано, поскольку это не локальный файл.\n" "soundKonverter попытается прочитать теги при преобразовании файла.\n" "Если вы хотите отредактировать теги, нажмите кнопку внизу, но тогда " "soundKonverter не будет\n" "пытаться прочитать теги после загрузки." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Чтение тегов этого файла не удалось.\n" "soundKonverter предпримет вторую попытку чтения тегов при преобразовании " "файла.\n" "Если вы хотите отредактировать теги, нажмите кнопку внизу, но тогда " "soundKonverter не будет\n" "пытаться прочитать теги ещё раз." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Тип обложки:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Описание:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Размер:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 пикселей (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Тип MIME:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 Файлов" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Вы выбрали несколько файлов с разными опциями преобразования.\n" "Вы можете изменить опции всех файлов, нажав кнопку внизу." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Чтение тегов одного из файлов не удалось.\n" "soundKonverter предпримет вторую попытку чтения тегов при преобразовании " "файла.\n" "Если вы хотите отредактировать теги, нажмите кнопку внизу, но тогда " "soundKonverter не будет\n" "пытаться прочитать теги ещё раз." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Качество:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Удалить выбранный профиль" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Информация" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Информация о выбранном профиле" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Информация о выбранном формате" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Ещё форматы..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Дополнительно:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Кодирование файлов с очень низким качеством может пригодиться, если вы " "пользуетесь мобильным устройством с ограниченным объёмом памяти.\n" "Не рекомендуется хранить музыку такого качества, если отсутствует более " "качественная копия." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Кодирование файлов с низким качеством может пригодиться, если вы пользуетесь " "мобильным устройством с ограниченным объёмом памяти.\n" "Не рекомендуется хранить музыку такого качества, если отсутствует более " "качественная копия." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Кодирование файлов со средним качеством является компромиссом между " "качеством и размером файла.\n" "Большинство людей не смогут заметить особых отличий от оригинальных файлов, " "но всё же следует пользоваться этим вариантом только при нехватке дискового " "пространства." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Кодирование файлов с высоким качеством - хороший выбор при наличии " "достаточного дискового пространства. Этот вариант пригоден для хранения " "музыки." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Кодирование файлов с очень высоким качеством - неплохой выбор при наличии " "достаточного дискового пространства." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Кодирование файлов без потерь сохранит качество оригинала.\n" "Это имеет смысл только если оригинальные записи хорошего качества (например " "аудио-CD).\n" "Файлы получатся большого размера, так что следует использовать этот вариант " "только при наличии достаточного дискового пространства." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Вы можете определить свой собственный профиль на вкладке \"Подробно\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Это определённый пользователем профиль." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Информация о профиле %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Вы действительно хотите удалить профиль: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Удить профиль?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Информация о формате %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Извините, информация о формате недоступна." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "По метаданным" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Исходный каталог" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Указать каталог назначения" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Копировать структуру каталогов" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Выбрать каталог назначения" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Открыть каталог назначения в Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Исполнитель неизвестен" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Альбом неизвестен" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Без комментариев" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Жанр неизвестен" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Композитор неизвестен" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Название неизвестно" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "новый" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Именовать преобразованные файлы в соответствии с шаблоном" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Следующие строки - шаблоны, которые будут заменены\n" "информацией из метаданных:\n" "\n" "%a - Исполнитель\n" "%b - Альбом\n" "%c - Комментарий\n" "%d - Номер диска\n" "%g - Жанр\n" "%n - Номер дорожки\n" "%p - Композитор\n" "%t - Название\n" "%y - Год\n" "%f - Оригинальное название файла\n" "\n" "Эти шаблоны и окружающие их символы можно заключать в квадратные скобки ('[' " "и ']'),\n" "тогда они будут проигнорированы, если подставляемое значение пусто.\n" "Для использования квадратных скобок их следует экранировать обратной косой " "чертой ('\\[' и '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" "Сохранять преобразованные файлы в тот же каталог, где находятся исходные " "файлы" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Сохранять все преобразованные файлы в указанный каталог назначения" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Копировать структуру каталогов целиком для всех преобразованных файлов" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Режим:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Битрейт" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Битрейт:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Дополнительные аргументы кодировщика:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Включите экспериментальные кодеки в диалоге настройки ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Соберите ffmpeg с поддержкой %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Настроить %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Включить экспериментальные кодеки" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Пожалуйста, перезапустите soundKonverter, чтобы применить изменения." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Степень сжатия:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Использовать файл SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Чтобы преобразовать данные midi в звук необходим SoundFont, который " "устанавливает соответствие данных midi звуковым эффектам.\n" "Загляните на %1 чтобы получить файлы SoundFont." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "FluidSynth ещё не настроен. Необходимо указать файл SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Преднастройка:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Средний" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Обычный" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Экстремальный" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Сумасшедший" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Укажите битрейт" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "Постоянный" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Кодировать с постоянным битрейтом.\n" "Доступны только значения 80, 96, 112, 128, 160, 192, 224, 256 и 320 кбит/с" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Быстрое кодирование" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Использовать более быстрый алгоритм кодирования (приводит к несколько более " "низкому качеству)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Режим битрейта:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Переменный" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Средний" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Постоянный" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Уровень сжатия от 9 до 0, где 0 соответствует высочайшему качеству.\n" "(Чем выше качество, тем медленнее преобразование, и наоборот.)\n" "Рекомендуется использовать значение 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Эта предустановка должна подойти большинству людей для большинства музыки " "(~150 кбит/с ABR)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Эта предустановка, как правило, должна подойти большинству людей для " "большинства музыки\n" "и при этом обеспечивает довольно высокое качество (~230 кбит/с ABR)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Если у вас очень хороший слух и аналогичное оборудование, эта предустановка " "обеспечит\n" "чуть более высокое качество, чем стандартный режим (~280 кбит/с ABR)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Эта предустановка, как правило, избыточна для большинства людей и ситуаций, " "но если вам требуется\n" "самое высокое качество и не критичен размер файл, это ваш путь (320 кбит/с " "CBR)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Уровень качества от 9 до 0, где 0 - высочайшее качество.\n" "(Чем выше качество, тем больше размер файла, и наоборот.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Режим стерео:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Автоматически" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Объединённое стерео" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Простое стерео" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Принудительно объединённое стерео" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Удвоенное моно" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Около %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME - это свободный высококачественный MP3-энкодер.\n" "Вы можете получить его на http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Включите экспериментальные кодеки в диалоге настройки libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Скомпилируйте libav с поддержкой %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Телефон" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Радио" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" "Еспользуйте предварительные настройки MusePack или свои собственные " "установки." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "низкое качество (в среднем ~60 кбит/с)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "низкое/среднее качество (в среднем ~90 кбит/с)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "среднее качество (в среднем ~130 кбит/с)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "высокое качество (в среднем ~180 кбит/с)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "отличное качество (в среднем ~210 кбит/с)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "отличное качество (в среднем ~240 кбит/с)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "отличное качество (в среднем ~270 кбит/с)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "Вы можете загрузить '%1' с '%2' после ввода адреса электропочты." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' обычно находится в пакете '%2', который должен поставляться с вашим " "дистрибутивом." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Неспаренные каналы" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Использовать один моно поток на канал" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame - это свободный MP2-энкодер.\n" "Вы можете получить его на http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Уровень качества от -50 до 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "'%1' обычно находится в пакете '%2', который можно загрузить с %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Быстро" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Нормально" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Высокое качество" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Очень высокое качество" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Нормализовать" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Включите экспериментальные кодеки в диалоге настройки sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Скомпилируйте sox с поддержкой %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Качество передискретизации:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Быстро" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Уровень качества от 9 до 0, где 0 - высочайшее качество." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Эффект:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Отключено" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Удалить этот эффект" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Добавить" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Добавить другой эффект" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Нормализовать:\n" "Изменить уровень звука так, чтобы все файлы звучали с одинаковой громкостью." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "дБ" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Басы:\n" "Усиление низких частот" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Верхи:\n" "Усиление высоких частот" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Частота дискретизации:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Глубина звука:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Каналы:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Моно" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Стерео" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Использовать формат тегов:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Изменить аудиопоток" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Записать изменение громкости непосредственно в кодированные данные. Таким " "образом кодирование будет работать со всеми MP3-плеерами.\n" "Отмена изменений будет возможна, поскольку корректировочная информация также " "сохраняется." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Для извлечения данных с аудио-CD по дорожкам или в один файл необходимо " "установить 'cdparanoia'.\n" "'cdparanoia' обычно поставляется с дистрибутивом, имя пакета может " "отличаться." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Скорость:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Осталось времени:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Завершено" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Файл" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Альбом" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Свернуть всё" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Раскрыть всё" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Переместить в новый альбом" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Некоторые дорожки не могут быть добавлены в альбом, поскольку кодек или " "частота дискретизации отличается." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Новый альбом" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Выравнивание громкости не удалось. Используемый бекенд необходимо корректно " "настроить." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Выравнивание громкости не удалось. Предпочитаемый плагин не поддерживает " "необходимой функции." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Выравнивание громкости не удалось. Неизвестная ошибка." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Выравнивание громкости не удалось. Код завершения: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Добавление нового пункта в список выравнивания громкости: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Выравнивание громкости в %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Допустимые бекенды выравнивания громкости:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Пропущено" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Добавить папку..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Добавить файлы..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Принудительный пересчёт" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Пересчитать теги выравнивания громкости для файлов, в которых они уже " "установлены." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Добавить теги" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Рассчитать теги выравнивания громкости для всех файлов списка, в которых " "таких тегов нет." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Убрать теги" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Удалить теги выравнивания громкости изо всех файлов в списке." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Закрыть" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Задачи выравнивания громкости ещё выполняются.\n" "Действительно хотите отменить их?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Это soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Собрано с TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Чтение/запись обложек не поддерживается для ogg/METADATA_BLOCK_PICTURE, flac " "и asf/wma. Для этого требуется TagLib 1.7." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Удаление старого файла: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Показать журналы..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Инструмент выравнивания громкости..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "О плагинах..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Добавить дорожки с CD..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Добавить URL..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Добавить список воспроизведения..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Загрузить список файлов" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Сохранить список файлов" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Пуск" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Стоп" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Остановить немедленно" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Остановить по завершении текущих преобразований" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Продолжить после завершения текущих преобразований" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "CD-привод не найден" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Инструменты" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Дмитрий Михирев" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "mikhirev@gmail.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Аудиоконвертер, CD-риппер и инструмент выравнивания громкости" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Извлечь аудиоданные с CD с помощью soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/ca.po0000644000175000001440000000013212255310032017335 xustar000000000000000030 mtime=1387630618.076842118 30 atime=1387630618.053842406 30 ctime=1387631578.281421773 ./soundkonverter-2.0.5/po/ca.po0000644000175000001440000034462712255310032016770 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # kirek , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: kirek \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/soundkonverter/" "language/ca/)\n" "Language: ca\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Quant als complements" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Complements instal·lats:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Quant al complement %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Tipus de complement: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Binaris externs:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (trobat a: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (no trobat)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Còdecs suportats:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Actualment inhabilitats." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Codifica: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Descodifica: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Configura %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Solucions per els problemes dels binaris externs" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Has instal·lat o esborrat binaris externs i les configuracions de " "soundKonverter poden ser optimitzades." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Per codificar els fitxers %1 el binari extern '%2' pot ser substitut per " "'%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Per extreure CDs d'àudio el binari extern '%1' pot ser substitut per '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Per descodificar els fitxers %1 el binari extern '%2' pot ser substitut per " "'%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Per aplicar Replay Gain als fitxers %1 el binari extern '%2' pot ser " "substitut per '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignora" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Corregeix" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter no pot trobar alguns paquets que falten.\n" "Si troba a faltar alguns formats de fitxer pot ser que hagi d'instal·lar un " "complement addicional a través del gestor de paquets de la seva distribució." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Alguns dels complements instal·lats no funcionen.\n" "Les possibles solucions s'enumeren a continuació." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Alguns fitxers no poden ser descodificats.\n" "Les possibles solucions s'enumeren a continuació." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Replay Gain no està suportat per alguns fitxers.\n" "Les possibles solucions s'enumeren a continuació." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Extreure àudio dels CDs no està suportat per els complements instal·lats.\n" "Si us plau, doneu un cop d'ull al gestor de paquets de la vostra distribució " "per tal d'aconseguir un complement per la extracció d'àudio de cd per a " "soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Extreure àudio dels CDs no està suportat perquè manquen els binaris externs " "per fer-ho.\n" "Les possibles solucions s'enumeren a continuació." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Possibles solucions per %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "o" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Fitxers afectats:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Utilitzat per última vegada" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Alta" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "portada" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Interna" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Molt baixa" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Baixa" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Mitjana" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Molt alta" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Sense pèrdues" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Híbrid" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Definit per l'usuari" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Converteix amb soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Afegeix Reply Gain amb soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avançat" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Extensió de nom de fitxer preferit per els fitxers Ogg Vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "" "Camp d'etiqueta de comentari preferida per els fitxers Ogg Vorbis i FLAC:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Algunes aplicacions utilitzen el camp DESCRIPCIÓ tot i que el camp COMENTARI " "és el correcte.\n" "Els comentaris s'escriuen en el camp seleccionat, al llegir les etiquetes es " "prioritza el camp seleccionat." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Camp d'etiqueta de nombre total de pistes preferit per els fitxers Ogg " "Vorbis i FLAC:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "El nombre total de pistes s'escriurà en el camp seleccionat, al llegir les " "etiquetes es prioritza el camp seleccionat.\n" "Quan s'utilitza el camp nombre de pista (TRACKNUMBER), el nombre de pista i " "el nombre total de pistes s'escriuen en el mateix camp separat per una barra " "('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Camp d'etiqueta de nombre total de discs preferit per els fitxers Ogg Vorbis " "i FLAC:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "El nombre total de discs s'escriurà en el camp seleccionat, al llegir les " "etiquetes es prioritza el camp seleccionat.\n" "Quan s'utilitza el camp nombre de disc (DISCNUMBER), el nombre de disc i el " "nombre total de discs s'escriuen en el mateix camp separat per una barra " "('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Utilitza sempre noms de fitxer de sortida compatibles amb FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Substitueix alguns caràcters especials com '?' per '_'.\n" "Si el directori de sortida està en un sistema de fitxers FAT s'utilitzarà " "automàticament noms de fitxer compatibles amb FAT, independentment d'aquesta " "opció." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Depura" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Escriu els arxius de registre al disc" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Escriu els arxius de registre en el disc dur mentre és converteix.\n" "Això pot ser útil si es produeix un accident i no es pot accedir a l'arxiu " "de registre utilitzant el visor de registre. \n" "Els arxius de registre s'escriuen en %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Experimental" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Desa els fitxers temporals en la memòria a menys que la mida estimada sigui " "més de:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "No guardis fitxers a la memòria que s'esperi que siguin més grans que aquest " "valor per prevenir swapping" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Sembla que no hi ha cap sistema de fitxers muntat en /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Utilitza canonades quan sigui possible" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Les canonades fan innecessari la utilització de fitxers temporals, " "incrementant el rendiment.\n" "No obstant això, alguns binaris externs causen errors en aquesta mode, per " "tant sigués cautelós." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Descodificador" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Codificador" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Reply Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Moure %1 una posició cap amunt" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Moure %1 una posició cap avall" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Quant al %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Extractor de CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Utilitza el complement:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtres" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Habilita els complements:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioritats" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Configura les prioritats del complement per al format:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Mostra les optimitzacions possibles" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Has modificat la configuració actual.\n" "Vols desar-la?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Configuració modificada" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Això triarà els millors binaris externs per a tots els formats i guardarà " "les noves preferències immediatament.\n" "\n" "Voleu continuar?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Les configuracions dels binaris externs sembla òptima, no hi ha res a fer." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Desant portades en el directori de sortida" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Desa les portades incrustades en el directori de sortida" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Sempre" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "" "Només si la incrustació de les cobertes en els fitxers de sortida no és " "possible" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Mai" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Nom del fitxer de la portada (en desar-la al directori de sortida)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Descripció de la portada incrustada" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "El nom del fitxer de la portada per defecte" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Nom del fitxer de la portada per defecte:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Els següents textos són comodins que seran reemplaçats\n" "per la informació de les metadades:\n" "\n" "%a - Artista\n" "%b - Àlbum\n" "%d - Descripció de la portada\n" "%r - Tipus de portada" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Configuració" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "General" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Art de la portada" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Binaris externs" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Interfície d'usuari" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Comença en el Mode:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Simple" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Detallat" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Perfil per defecte:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Format per defecte:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Conversió" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Resolució de conflictes:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Genera un nom de fitxer nou" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Ometre el fitxer" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Fer això si ja existeix el fitxer de sortida" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Nombre de fitxers a convertir alhora:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "No assignis aquest número més alt que la quantitat de nuclis de processat " "instal·lats.\n" "S'han detectat %1 nuclis de processat." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Aplica el guany d'àlbum als fitxers convertits" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Mantindre les cançons del mateix àlbum esperant a la llista de fitxers per " "tal d'aplicar el guany de l'àlbum a tots els fitxers." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Eina de Replay Gain" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Agrupa els fitxers en la eina Replay Gain per:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Etiquetes d'àlbum i directoris" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Només etiquetes d'àlbum" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Només directoris" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Nombre de fitxers a processar alhora:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Obtenint el fitxer" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Copiant \"%1\" a \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "No hi ha més binaris externs per provar :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Convertint" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Error de conversió. Almenys un dels binaris externs utilitzats s'ha de " "configurar correctament." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Error de conversió. El complement preferit no té suport per a una funció " "necessària." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Error de conversió. Error desconegut." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Extraient" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Descodificant" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Aplicant filtre" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Codificant" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Ometent el Replay Gain, el guany d'àlbum es calcularà més endavant" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Aplicant el Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Escrivint les etiquetes" #: convert.cpp:542 msgid "Running user script" msgstr "Executant els scripts d'usuari" #: convert.cpp:567 msgid "Executing next step" msgstr "Executant el pas següent" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Lectura de les etiquetes amb èxit" #: convert.cpp:715 msgid "Unable to read tags" msgstr "No es poden llegir les etiquetes" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Esborrant: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "S'ha produït un error. Codi d'error: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Error de conversió. Codi de sortida: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Pista %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Pista %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Addició d'un article nou a la llista de conversió: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Obtingut ID de registre: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Nombre de pista : %1, dispositiu: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Estratègies de conversió possibles:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Tipus de sistema de fitxers: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "S'ha produït un error, la mida del fitxer de sortida és menor a l'u per cent " "de la mida del fitxer d'entrada" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Error de conversió, tornant a intentar-ho. Codi de sortida: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Esborrant el fitxer de sortida parcialment convertit" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Sortida normal" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Finalitzat però amb problemes" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Avortada per l'usuari" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "El binari extern necessita configurar-se" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "No hi ha prou espai en el dispositiu de sortida" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "El fitxer ja existeix" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "S'ha produït un error" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Executant l'ordre: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Eliminant fitxers de la llista de conversió. Codi de sortida %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Temps de conversió" #: convert.cpp:1183 msgid "Output file size" msgstr "Mida del fitxer de sortida" #: convert.cpp:1184 msgid "File size ratio" msgstr "Relació de la mida del fitxer" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Desconegut" #: convert.cpp:1325 msgid "Filter" msgstr "Filtre" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Progrés: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave és un format d'àudio molt senzill que comprimeix el flux d'àudio, per " "tant no té pèrdues, però la mida del fitxer és molt gran i no suporta " "característiques avançades com les etiquetes.
Està suportat per " "pràcticament qualsevol programari o dispositiu.

http://ca.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) és un popular format d'àudio amb pèrdua. És " "àmpliament utilitzat per Apple Inc.
En soundKonverter \"AAC\" es refereix " "només al còdec. Per tal d'obtenir un fitxer amb capacitats d'etiquetatge " "utilitzar \"M4A/AAC\".

http://ca.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) és un popular format d'àudio amb pèrdua. És " "àmpliament utilitzat per Apple Inc.
En soundKonverter \"M4A/AAC\" es " "refereix al àudio MPEG-4 codificat amb AAC.

http://ca.wikipedia.org/wiki/" "Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Àudio Còdec (ALAC) és un format d'àudio sense pèrdua. És " "àmpliament utilitzat per Apple Inc.
En soundKonverter \"m4a/alac\" es " "refereix a un arxiu MPEG-4 àudio codificat amb ALAC.

http://es.wikipedia.org/wiki/Apple " "Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis és un popular format d'àudio amb pèrdua.
Està lliure de de " "restriccions legals.

http://ca.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus és un format d'àudio amb pèrdua dissenyat per a la comunicació en temps " "real a través d'Internet.
Cobreix una àmplia gamma de taxes de bits amb " "una alta qualitat i està lliure de de restriccions legals.

http://en.wikipedia.org/" "wiki/Opus (audio format)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) és el format més popular d'àudio amb " "pèrdua.
Està suportat per gairebé tots els reproductors d'àudio, encara " "que té algunes restriccions legals.

http://ca.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) es un format d'àudio sense pèrdua.
Està " "lliure de de restriccions legals.

http://ca.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) es un format d'àudio amb pèrdua desenvolupat per " "Microsoft.

http://ca.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 or AC-3és part de la família dels formats Dolby Digital.
Va ser " "dissenyat per a ser utilitzat per a les pel·lícules (per exemple, DVD) i és " "compatible amb so envoltant.

http://ca.wikipedia.org/wiki/Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) es un format vell d'àudio amb pèrdua." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) s'utilitza principalment per a la " "compressió de la veu per a la comunicació mòbil.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) és una versió avançada d'AMR NB que " "utilitza una taxa de dades més alta resulta en una millor qualitat.
Tot i " "això, només s'ha d'utilitzar per a la compressió de la veu.

http://en." "wikipedia.org/wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio es un format d'àudio sense pèrdua.

http://es.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex és un format d'àudio amb pèrdua dissenyat per a la codificació de veu." "
Està lliure de de restriccions legals. Des del llançament de l'Opus, " "Speex esta considerat obsolet.

http://ca.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) és un format lliure d'àudio amb pèrdues basat en mp2 i " "optimitzat per a l'alta qualitat.

http://es.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) és un format lliure d'àudio sense pèrdues.

http://es.wikipedia.org/wiki/" "Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) és un format lliure d'àudio sense pèrdues.

http://es.wikipedia.org/" "wiki/True Audio Códec" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) és un format lliure d'àudio sense pèrdues.

http://en.wikipedia.org/wiki/" "WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) és un estàndard de format d'àudio desenvolupat " "per Electronic Arts per ordinadors Commodore-Amiga.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) és un format d'àudio molt senzill que " "no comprimeix el flux d'àudio, per tant no té pèrdues, però la mida del " "fitxer és molt gran i no suporta característiques avançades com les " "etiquetes.

http://ca.wikipedia.org/wiki/Audio " "Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Eliminant procés a petició de l'usuari" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Per tal de codificar els fitxers %1, cal instal·lar '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Per tal de descodificar els fitxers %1, cal instal·lar '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Per tal de transcodificar els fitxers %1, cal instal·lar '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Per tal de calcular les etiquetes de Replay Gain per els fitxers %1, cal " "instal·lar '%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' hauria de estar inclòs amb la teva distribució." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Degut que '%1' inclou còdecs patentats, podria no estar inclòs en la " "instal·lació per defecte de la teva distribució. Moltes distribucions " "ofereixen '%1' a un repositori de programari addicional." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Podeu descarregar '%1' a %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Per tal d'utilitzar el filtre %1, cal instal·lar '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Per tal d'utilitzar els filtres %1, cal instal·lar '%2'." #: filelist.cpp:48 msgid "State" msgstr "Estat" #: filelist.cpp:49 msgid "Input" msgstr "Entrada" #: filelist.cpp:50 msgid "Output" msgstr "Sortida" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Qualitat" #: filelist.cpp:79 msgid "Edit options..." msgstr "Editar opcions..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Comença la conversió" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Atura la conversió" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Elimina" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Aquest tipus de fitxer és desconegut per soundKonverter.\n" "Potser necessita instal·lar un complement soundKonverter addicional.\n" "Tindria que fer un cop d'ull al gestor de paquets de la vostra distribució " "per instal·lar-lo." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... i %1 fitxers més" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Serà omès " #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Esperant" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Esperant a Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Aturat" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Binari extern sense configurar" #: filelist.cpp:593 msgid "Disc full" msgstr "Disc ple" #: filelist.cpp:603 msgid "Failed" msgstr "Error" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Error en la conversió.\n" "Consulteu el registre per obtenir més informació." #: filelist.cpp:630 msgid "CD track %1" msgstr "Pista %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Voleu sobreescriure la llista de fitxers actual?\n" "\n" "En cas contrari, s'agregarà a la llista de fitxers guardats." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identificador" #: logger.cpp:91 msgid "Log ID" msgstr "ID de registre" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Finalitzat el registre" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Visor de registre" #: logviewer.cpp:28 msgid "Update" msgstr "Actualitza" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Desa el fitxer..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Registre:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Registre de l'aplicació soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Desa el registre" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "El fitxer ja existeix. Està segur que vols sobreescriure'l?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Error al escriure al fitxer.\n" "Potser no té permís d'escriptura." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter és una interfície per a diversos convertidors d'àudio, eines " "de Replay Gain i extractors de CD.\n" "Envieu els informes de error en https://bugs.launchpad.net/soundkonverter\n" "o simplement envieu-me un correu a hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Tema d'icones Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Desenvolupadors d'Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Tots els programadors de convertidors d'àudio" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Obre l'eina Replay Gain i afegeix tots els fitxers" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" "Enumera totes les pistes de la unitat , 'auto' buscarà un cd" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Afegeix tots els fitxers amb el perfil donat" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Afegeix tots els fitxers amb el format donat" #: main.cpp:36 msgid "Output all files to " msgstr "Bolca tots els fitxers al " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Inicia soundKonverter invisible" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Comença la conversió immediatament (activat quant s'utilitza '--invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Tanca soundKonverter quant tots els fitxers han sigut convertits (activat " "quant s'utilitza '--invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Executa després de que cada fitxer s'hagi convertit (%i=fitxer " "d'entrada, %o=fitxer de sortida)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Fitxer(s) d'àudio per annexar a la llista de fitxers" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Sense classificar" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "Icona PNG de 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Icona" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Portada" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Contraportada" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Fullet" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Foto del CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Imatge del artista principal" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Imatge del artista" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Imatge del director" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Imatge de la banda" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Imatge del compositor" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Imatge del lletrista" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Imatge del lloc de gravació" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Imatge dels artistes durant la gravació" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Imatge dels artistes durant la interpretació" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Imatge a partir d'un vídeo" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Imatge d'un peix gran, de color" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Il·lustració relacionada amb la pista" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Logotip de la banda" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Logotip de la discogràfica" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Afegeix pistes" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Selecciona les pistes del CD" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Estableix les opcions de conversió" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artista:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Varis Artistes" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Compositor:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Varis Compositors" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Àlbum:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Disc Núm.:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "de" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Any:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Gènere:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Extreure" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Pista" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artista" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Compositor" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Títol" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Duració" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Reproductor" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Cap pista seleccionada" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Títol:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Comentari:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Seleccioni les opcions de sortida que vulgueu i feu clic a \"Ok\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Desa el fitxer cue..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Busca en CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Extreu el CD complet en un fitxer" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Extreure un CD complet a un sol fitxer no està suportat per els binaris " "externs instal·lats.\n" "Les possibles solucions s'enumeren a continuació.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Extreure un CD complet a un sol fitxer no està suportat per els binaris " "externs instal·lats.\n" "Si us plau, doneu un cop d'ull al gestor de paquets de la vostra distribució " "per tal d'aconseguir un complement que suporti la extracció a un sol fitxer." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Seguir" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Ok" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Cancel·lar" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Elegiu la unitat de CD-ROM" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "S'han trobat múltiples unitats de CD-ROM. Elegiu una:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Gravadora de DVD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Gravadora de CD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Reproductor de DVD" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Reproductor de CD" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): CD d'àudio amb %3 pistes" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Desconegut" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Esperi si us plau, intentant descarregar dades CDDB ..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Seleccioni una entrada CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "S'han trobat múltiples entrades CDDB. Seleccioni una" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Totes les pistes" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Pistes" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Si us plau, seleccioni almenys una pista per a seguir." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "No s'ha seleccionat cap opció de conversió." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Un fitxer amb aquest nom ja existeix.\n" "\n" "Voleu sobreescriure l'existent?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "El fitxer ja existeix" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Afegeix una carpeta" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Seleccioni un directori" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Directori:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Només afegeix els formats de fitxer seleccionats:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Trobeu a faltar alguns formats de fitxer?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Seleccionna-ho tot" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Sense selecció" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Recursiu" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Si és selecciona, també s'agregaran els fitxers dels subdirectoris." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Afegeix fitxers" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 fitxers" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Tots els fitxers suportats" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Tots els fitxers" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Afegeix llista de reproducció" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Els següents fitxers no s'han trobat:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Fitxers no trobats" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Afegeix url" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Introdueix URL" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "La URL que has introduït no és valida. Torneu-ho a provar." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Format:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Utilitza el complement:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destí:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Calcula les etiquetes de Replay Gain" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Desa les preferències actuals com un perfil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Carrega els perfils guardats" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Replay Gain no està suportat per el format de fitxer %1.\n" "Les possibles solucions s'enumeren a continuació." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Replay Gain no està suportat per el format de fitxer %1.\n" "Si us plau, doneu un cop d'ull al gestor de paquets de la vostra distribució " "per tal d'instal·lar un complement addicional que suporti Replay Gain." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Les etiquetes Replay Gain poden dir al seu reproductor de música el volum el " "que té una pista\n" "pel que pot ajustar el volum per tal de reproduir totes les pistes amb la " "mateixa intensitat." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "L'ús de les opcions de conversió actuals crearà fitxers amb aproximadament " "%1 per minut." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Nou perfil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Introduïu un nom per al nou perfil:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "No es pot desar un perfil sense nom." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "El nom del perfil està buit" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "No és possible sobreescriure els perfils per defecte." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "El perfil ja existeix" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Un perfil amb aquest nom ja existeix.\n" "\n" "Voleu sobreescriure l'existent?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Anterior" #: optionseditor.cpp:42 msgid "Next" msgstr "Següent" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Edita les opcions de conversió" #: optionseditor.cpp:74 msgid "Tags" msgstr "Etiquetes" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Portades:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Edita" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Pista núm.:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Editar les etiquetes" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Cap fitxer seleccionat" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Les etiquetes no es poden llegir perquè no és un fitxer local.\n" "soundKonverter intentarà llegir les etiquetes, just abans de convertir el " "fitxer.\n" "Si voleu editar les etiquetes, pot polsar el botó de sota, si ho fa, " "soundKonverter no intentarà\n" "llegir les etiquetes després de la descàrrega." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Error al llegir les etiquetes d'aquest fitxer.\n" "soundKonverter intentarà llegir les etiquetes per segona vegada, just abans " "de convertir el fitxer.\n" "Si voleu editar les etiquetes, pot polsar el botó de sota, si ho fa, " "soundKonverter no intentarà\n" "llegir les etiquetes per segon cop." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Tipus de portada:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Descripció:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Mida:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 píxels (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Tipus MIME:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 Fitxers" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Ha seleccionat diversos fitxers amb diferents opcions de conversió.\n" "Podeu canviar les opcions de tots els fitxers prement el botó de sota." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Error al llegir les etiquetes d'un o més fitxers.\n" "soundKonverter intentarà llegir les etiquetes per segona vegada, just abans " "de convertir els fitxers.\n" "Si voleu editar les etiquetes, pot polsar el botó de sota, si ho fa, " "soundKonverter no intentarà\n" "llegir les etiquetes per segon cop." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Qualitat:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Elimina el perfil seleccionat" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Info" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informació sobre el perfil seleccionat" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informació sobre el format de fitxer seleccionat" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Més formats..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Opcional:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Codificar els fitxers amb una qualitat molt baixa pot ser útil si té un " "dispositiu mòbil on l'espai d'emmagatzematge és limitat.\n" "No es recomana guardar la seva música en aquesta qualitat sense una còpia de " "més qualitat." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Codificar els fitxers amb una qualitat baixa pot ser útil si té un " "dispositiu mòbil on l'espai d'emmagatzematge és limitat.\n" "No es recomana guardar la seva música en aquesta qualitat sense una còpia de " "més qualitat." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Codificar els fitxers amb una qualitat mitjana és un compromís entre " "qualitat i mida del fitxer.\n" "La majoria de les persones no poden apreciar massa diferència respecte els " "fitxers originals, però només s'ha d'utilitzar per guardar música si l'espai " "d'emmagatzematge és limitat." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Codificar els fitxers amb una alta qualitat és una bona opció si té prou " "espai d'emmagatzematge disponible. Pot utilitzar aquesta qualitat per " "guardar la seva música." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Codificar els fitxers amb una molt alta qualitat està molt bé si tens prou " "espai d'emmagatzematge." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Codificar els fitxers sense pèrdua preservarà la qualitat del fitxers " "original.\n" "Per tant només és útil si el fitxer original té una bona qualitat (per " "exemple, CD d'àudio).\n" "La mida del fitxer serà gran, per la qual cosa s'ha d'utilitzar només si té " "prou espai d'emmagatzematge." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Pot definir el seu propi perfil a la pestanya \"Detalls\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Aquest és un perfil definit per l'usuari." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Informació del perfil per %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Realment voleu eliminar el perfil: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Elimina el perfil?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Format d'informació per %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Ho sentim, no disposem de informació per aquest format." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Per les metadades" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Directori d'origen" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Especifiqui el directori de sortida" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Copia l'estructura del directori" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Tria un directori de sortida" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Obre el directori de sortida amb Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Artista desconegut" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Àlbum desconegut" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Sense comentari" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Gènere desconegut" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Compositor desconegut" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Títol desconegut" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "nou" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Anomena tots els arxius convertits d'acord amb el patró especificat" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Els següents textos són comodins que seran reemplaçats\n" "per la informació de les metadades:\n" "\n" "%a - Artista\n" "%b - Àlbum\n" "%c - Comentari\n" "%d - Nombre de disc\n" "%g - Gènere\n" "%n - Nombre de pista\n" "%p - Compositor\n" "%t - Títol\n" "%y - Any\n" "%f - Nom del fitxer original\n" "\n" "Pot posar entre claudàtors ('[' i ']') els comodins i caràcters " "circumdants \n" "per tal que s'ignorin si el valor que substitueixen és buit.\n" "Per poder utilitzar claudàtors haurà d'escapar-los amb una barra invertida " "('\\[' i '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" "Bolca tots els arxius convertits en el mateix directori que els fitxers " "originals" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "" "Bolca tots els arxius convertits en el directori de sortida especificat" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Copia tota l'estructura de directoris per a tots els arxius convertits" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Mode:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Taxa de bit" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Taxa de bits:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Arguments addicionals del codificador:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "" "Habilita els còdecs experimentals en el diàleg de configuració de ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Compili ffmpeg amb suport per %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Configura %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Habilita els còdecs experimentals" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Reinicii soundKonverter per activar els canvis." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Nivell de compressió:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Utilitza el fitxer SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Per convertir les dades MIDI a una forma d'ona és necessiri un SoundFont que " "correlaciona les dades MIDI als efectes de so. ⏎\n" "Fes una ullada a %1 per tal d'obtenir els fitxers SoundFont." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "FluidSynth encara no està configurat. Cal especificar un fitxer SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Valor predefinit:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Mitja" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Estàndard" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Extrem" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Dement" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Especifica una taxa de bit" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Codifica utilitzant una taxa de bit constant.\n" "Només funciona amb 80, 96, 112, 128, 160, 192, 224, 256 i 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Codificació ràpida" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Utilitza un algorisme de codificació més ràpid (la qualitat de sortida serà " "lleugerament inferior)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Mode de taxa de bit:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variable" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Mitjana" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Constant" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Nivell de compressió de 9 a 0, on 0 és la qualitat més alta.\n" "(Com més gran sigui la qualitat, més lenta serà la conversió i viceversa.)\n" "Es recomana un valor de 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Aquest valor predefinit ha de proporcionar un so gairebé transparent en la " "majoria dels casos (~150 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Aquest valor predefinit ha de proporcionar un so transparent a la majoria " "del casos i té una qualitat bastant alta (~230 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Si té molt bona oïda i equips de so, aquest valor predefinit proporcionarà " "generalment\n" "una lleugera millora de qualitat respecte el mode estàndard (~280 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Aquest valor predefinit sol ser excessiu per la majoria de la gent i " "situacions, però si ha de tenir\n" "la major qualitat possible sense tenir en compte la mida del fitxer, aquest " "és el camí a seguir (320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Nivell de qualitat de 9 a 0, on 0 és la qualitat més alta.\n" "(Com més gran sigui la qualitat, més gran serà el fitxer i viceversa.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Mode estèreo:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automàtic" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Simple Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Forced Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dual Mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Quant al %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME és un codificador de MP3 d'alta qualitat.\n" "Es pot aconseguir a: http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "" "Habilita els còdecs experimentals en el diàleg de configuració de libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Compili libav amb suport per %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Thumb" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Mort cerebral" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" "Utilitzar un dels valor predefinit de MusePack o be els teus propis " "ajustaments." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "baixa qualitat (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "baixa/mitjana qualitat (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "mitjana qualitat (~130 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "alta qualitat (~180 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "excel·lent qualitat (~210 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "excel·lent qualitat (~240 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "excel·lent qualitat (~270 kbps abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" "Pot descarregar '%1' a '%2' després d'introduir una adreça de correu " "electrònic." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' és troba en general en el paquet '%2' que tindria que estar inclòs amb " "la seva distribució." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Canals desacoblats" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Utilitza un flux mono per canal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame és un codificador MP2 lliure.\n" "Es pot aconseguir a: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Nivell de qualitat des de -50 fins a 50" #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "'%1' és troba en general en el paquet '%2' que pots descarregar a %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Ràpid" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Alta qualitat" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Molt alta qualitat" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalitza" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Habilita els còdecs experimentals en el diàleg de configuració de sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Compili sox amb suport per %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Canvia la qualitat de la taxa de mostratge:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Ràpid" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Nivell de qualitat de 9 a 0, on 0 és la qualitat més alta." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Efecte:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Inhabilitat" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Elimina el efecte" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Afegeix" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Afegeix un altre efecte" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalitza:\n" "Canvia el volum perquè tots els fitxers tinguin el mateix volum" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Baixos:\n" "Amplifica les freqüències baixes" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Aguts:\n" "Amplifica les freqüències altes" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Taxa de mostratge:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Mida de la mostra:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Canals:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Estèreo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Utilitza el format d'etiqueta:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Modifica el flux d'àudio" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Escriu els ajustos de guany directament en les dades codificades. D'aquesta " "manera l'ajust funciona amb tots els reproductors de mp3.\n" "Es poden desfer els canvis ja que també s'escriuran les dades de correcció." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Per extreure CDs d'àudio per pista o a un sol fitxer, cal instal·lar " "'cdparanoia'.\n" "'cdparanoia' normalment esta inclòs amb la seva distribució, però el nom del " "paquet pot variar." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Velocitat:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Temps restant:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Finalitzat" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Fitxer" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Àlbum" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Contraure tot" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Expandir tot" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Mou al nou Àlbum" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Algunes pistes no es poden afegir a l'àlbum, ja sigui perquè el còdec o la " "taxa de mostreig és diferent." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Nou àlbum" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Error de Replay Gain. El binari extern utilitzat s'ha de configurar " "correctament." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Error de Replay Gain. El complement preferit no té suport per a una funció " "necessària." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Error de Replay Gain. Error desconegut." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Error de Replay Gain. Codi de sortida: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Addició d'un nou article a la llista de processat de Replay Gain: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain per %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Possibles binaris externs per a Replay Gain:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Omès" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Afegeix una carpeta..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Afegeix fitxers..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Força el recàlcul" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Recalcula les etiquetes Replay Gain per els fitxers que ja tenen etiquetes " "Replay Gain." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Etiqueta sense etiquetar" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Calcula les etiquetes Replay Gain per a tots els fitxers de la llista sense " "etiquetes Replay Gain." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Treure etiqueta" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Elimina les etiquetes Replay Gain de tots els fitxers de la llista." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Tancar" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Encara hi ha treballs de Replay Gain en execució.\n" "Realment voleu cancel·lar-los?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Aquest és soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Compilat amb TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Lectura/escriptura de les cobertes no s'admet per a fitxers ogg/" "METADATA_BLOCK_PICTURE, flac i asf/wma. És necessari Taglib 1.7 per fer-ho." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Esborrant fitxer vell: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Veure registre..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Eina de Replay Gain..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Quant als complements..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Afegeix pistes..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Afegeix una URL..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Afegeix una llista de reproducció..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Carrega la llista de fitxers" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Desa la llista de fitxers" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Inicia" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Atura" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Atura immediatament" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Atura després de completar les conversions actuals" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Continua després de completar les conversions actuals" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "No s'ha trobat dispositiu de CD" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Eines" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Els seus noms" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "Els seus correus" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Convertidor d'arxius d'àudio, extractor de CD i eina Replay Gain" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Extreure CD d'àudio amb soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/hu.po0000644000175000001440000000013212255310246017375 xustar000000000000000030 mtime=1387630758.854082161 30 atime=1387630758.851082198 30 ctime=1387631578.283421748 ./soundkonverter-2.0.5/po/hu.po0000644000175000001440000034326312255310246017023 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Orosz Tamás, 2011 # otomi , 2011-2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: otomi \n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/soundkonverter/" "language/hu/)\n" "Language: hu\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "A bővítményekről" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Telepített bővítmények:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Bővítmény névjegye: %1" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Bővítmény típusa: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Háttérprogramok" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (itt található: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (nem található)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Támogatott kodekek:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Pillanatnyilag kikapcsolva." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Kódolás: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Dekódolás: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Beállítás %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Háttérprogram-problémák megoldásai" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Háttérprogramokat telepített vagy távolított el, a soundKonverter " "beállításai optimalizálhatók." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "A(z) %1 fáljok kódolásához a(z) '%2' háttérprogram lecserélhető erre: '%3'. " #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Audio CD-k beolvasásához a(z) '%1' háttérprogram lecserélhető erre: '%2'. " #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "A(z) %1 fáljok dekódolásához a(z) '%2' háttérprogram lecserélhető erre: " "'%3'. " #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "A(z) %1 fáljok hangerő-korrekciójához a(z) '%2' háttérprogram lecserélhető " "erre: '%3'. " #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Mellőzés" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Rögzítés" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "A soundKonverter nem talált hiányzó csomagokat.\n" "Amennyiben hiányol néhány fájlformátumot, kiegészítő bővítményeket kell " "telepítenie a csomagkezelője segítségével." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Valamelyik bővítmény nem működik.\n" "A lehetséges megoldások lentebb láthatók." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Némelyik fájl nem dekódolható.\n" "A lehetséges megoldások lentebb láthatók." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "A hangerő-korrekció nem támogat néhány fájlt.\n" "A lehetséges megoldások lentebb láthatók." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Valamelyik telepített bővítmény nem támogatja az Audio CD beolvasását.\n" "CD-beolvasó bővítmény beszerzéséhez nézzen körül a csomagkezelőben." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Hiányzó háttérprogramok miatt az Audio CD beolvasása nem támogatott.\n" "A lehetséges megoldások lentebb láthatók." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Lehetséges megoldások ehhez: %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "vagy" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Érintett fájlok:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Utoljára használt" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Jó" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "borító" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Próbálja a belsőt" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Nagyon gyenge" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Gyenge" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Megfelelő" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Nagyon jó" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Veszteségmentes" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Keverék" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Egyéni" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Konvertálás a soundKonverterrel" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "A hangerő-korrekció hozzáadása a soundKonverterhez" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Speciális" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Alapértelmezett kiterjesztés az ogg vorbis fájlokhoz:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Alapértelmezett megjegyzés mező az ogg vorbis és flac fájlokhoz:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Egyes alkalmazások a LEÍRÁS mezőt használják, holott a MEGJEGYZÉS lenne a " "helyes.\n" "A hozzászólások a kiválasztott mezőbe lesznek írva." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "Alapértelmezett 'összes szám' mező az ogg vorbis és flac fájlokhoz:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "Alapértelmezett 'összes lemez' mező az ogg vorbis és flac fájlokhoz:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Használjon FAT-kompatibilis kimeneti fájlneveket" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Speciális karakterek (pl. '?' vagy '_') helyettesítése.\n" "Ha a kimeneti könyvtár egy FAT fájlrendszeren helyezkedik el, akkor a " "program automatikusan FAT-kompatibilis fájlneveket alkalmaz, ettől a " "beállítástól függetlenül." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Hibakeresés" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Naplófájlok lemezre írása" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Naplófájlok írása a merevlemezre konvertálás közben.\n" "Akkor lehet hasznos, ha valamilyen hiba folytán nem fér hozzá a naplófájlhoz " "a megjelenítőben.\n" "A naplófájlok ide kerülnek: %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Kísérleti" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Az ideiglenes fájlokat tárolja a memóriában, ha a becsült méretük nem " "nagyobb, mint:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Ne tárolja az itt megadott értéknél nagyobb fájlokat a memóriában (a " "swapping elkerülése végett)" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Úgy látszik nincsen fájlrendszer csatolva itt: /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Adatcsatornák használata, ha lehetséges" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Az adatcsatornák használatával nélkülözhetők az ideiglenes fájlok, így " "növelhető a teljesítmény.\n" "Néhány háttérprogram hibát okozhat ebben a módban. Legyen óvatos!" #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Dekóder" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Kóder" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Hangerő-korrekció" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "%1 léptetése eggyel feljebb" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "%1 léptetése eggyel lejjebb" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Névjegy: %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "CD-beolvasás" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Bővítmény használata:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Szűrők" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Engedélyezett bővítmények:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioritások" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Bővítmény-prioritások beállítása a formátumhoz:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Mutassa a lehetséges optimalizálásokat" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Megváltoztatta a jelenlegi beállításokat.\n" "El szeretné menteni az újakat?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "A beállítások megváltoztak" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Ki fogja választani a legjobb háttérprogramot az összes formátumhoz és " "azonnal elmenti az új beállításokat.\n" "\n" "Folytatja?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "Minden háttérprogram beállítása jónak tűnik, nincs teendője." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "A borítók mentése a kimeneti könyvtárba" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "A beágyazott borítók mentése a kimeneti könyvtárba" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Mindig" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Csak ha nem sikerül beágyazni a borítót a kimeneti fájlba" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Soha" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "A borító fájlneve (ha menti a kimeneti könyvtárba)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "A beágyazott borító leírása" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Az alapértelmezett borító fájlneve" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Az alapértelmezett borító fájlneve:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Az alábbi karakterláncok helyettesítő karakterek a metaadatban:\n" "\n" "%a - előadó\n" "%b - album\n" "%d - borító leírása\n" "%r - cover role" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Beállítások" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Általános" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Borító" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Háttérprogramok" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Felhasználói felület" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Indítási mód:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Egyszerű" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Részletes" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Alapértelmezett profil:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Alapértelmezett formátum:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Konvertálás" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Konfliktuskezelés:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Új fájlnév előállítása" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Fájl kihagyása" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Ha a kimeneti fájl már létezik, tegye ezt" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Egyszerre konvertálandó fájlok száma:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Ez a szám nem lehet nagyobb, mint a telepített processzormagok száma.\n" "Az Ön gépében %1 processzormag található." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Hangerő-korrekció alkalmazása a konvertált fájlokra" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Az azonos albumhoz tartozó számok várólistán tartása hangerő-korrekció " "céljából" #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Hangerő-korrekciós eszköz" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Fájlok csoportosítása a hangerő-korrekciónál ez alapján:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Albumcímkék és könyvtárak" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Csak albumcímkék" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Csak könyvtárak" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Egyszerre feldolgozandó elemek száma:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Fájl megszerzése" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "\"%1\" másolása ide: \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Nincs több kipróbálható háttérprogram :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Konvertálás" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "A konvertálás meghiúsult. A használt háttérprogramok közül legalább egyet " "megfelelően be kell állítani." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "A konvertálás meghiúsult. Az alapértelmezett bővítmény nem támogat egy " "szükséges funkciót." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "A konvertálás meghiúsult. Ismeretlen hiba." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Beolvasás" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Dekódolás" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Szűrő alkalmazása" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Kódolás" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "" "Hangerő-korrekció kihagyása, az album hangereje később lesz meghatározva" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Hangerő-korrekció alkalmazása" #: convert.cpp:515 msgid "Writing tags" msgstr "Címkék írása" #: convert.cpp:542 msgid "Running user script" msgstr "Felhasználói szkript futtatása" #: convert.cpp:567 msgid "Executing next step" msgstr "A következő lépés végrehajtása" #: convert.cpp:711 msgid "Read tags successfully" msgstr "A címkék beolvasása sikerült" #: convert.cpp:715 msgid "Unable to read tags" msgstr "A címkék beolvasása nem sikerült" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Eltávolítás: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Hiba történt. Hibakód: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "A konvertálás meghiúsult. Hibakód: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "CD-szám %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "CD-szám %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Új elem hozzáadása a konvertálási listához: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Napló azonosító: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Szám: %1, eszköz: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Lehetséges konvertálási stratégiák:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "A fájlrendszer típusa: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Hiba történt, a kimeneti fájl mérete kevesebb mint egy százaléka a bemeneti " "fájl méretének" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "A konvertálás meghiúsult. Próbálja újra. Hibakód: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "A részben konvertált kimeneti fájl eltávolítása" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Normál kilépés" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Sikerült de hiba történt" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Felhasználó által megszakítva" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Be kell állítani a háttérprogramot" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Nincs elég hely a kimeneti eszközön" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "A fájl már létezik" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Hiba történt" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Parancs futtatása: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Fájl eltávolítása a konvertálási listából. Hibakód: %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Konvertálási idő" #: convert.cpp:1183 msgid "Output file size" msgstr "Kimeneti fájl mérete" #: convert.cpp:1184 msgid "File size ratio" msgstr "Fájlméret aránya" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Ismeretlen" #: convert.cpp:1325 msgid "Filter" msgstr "Szűrő" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Folyamat: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "A Wave egy nagyon egyszerű audioformátum, ami nem tömöríti a hang " "adatfolyamot, így veszteségmentes, de a fájl mérete nagyon nagy és nem " "támogat olyan haladó megoldásokat, mint a címkék.
Gyakorlatilag minden " "szoftver vagy eszköz támogatja.

http://en.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Az Advanced Audio Coding (AAC) egy veszteségesen tömörítő, népszerű " "audioformátum. Az Apple széles körben használja.
A soundKonverterben az " "\"aac\" csak a kodeket jelöli. Címkézhető fájlok kódolásához válassza az " "\"m4a/aac\"-t.

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Az Advanced Audio Coding (AAC) egy veszteségesen tömörítő, népszerű " "audioformátum. Az Apple széles körben használja.
A soundKonverterben az " "\"mp4/aac\" olyan MPEG-4 audiofájlt jelent, amit AAC-vel kódoltak. " "

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Az Apple Lossless Audio Codec (ALAC) egy veszteségmentesen tömörítő " "audioformátum. Az Apple széles körben használja.
A soundKonverterben az " "\"mp4/alac\" olyan MPEG-4 audiofájlt jelent, amit ALAC-kel kódoltak. " "

http://en." "wikipedia.org/wiki/Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Az Ogg Vorbis egy veszteségesen tömörítő, népszerű audioformátum. " "
Mindenféle törvényi szabályozástól mentes.

http://en.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Az Opus egy veszteségesen tömörítő audioformátum, valósidejű internetes " "kommunikációhoz kifejlesztve.
Széles bitráta tartományt lefed jó " "minőségben és mindenféle törvényi szabályozástól mentes.

http://en.wikipedia.org/" "wiki/Opus (audio format)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "Az MPEG-1 or MPEG-2 Audio Layer III (MP3) a legnépszerűbb, veszteségesen " "tömörítő audioformátum.
Gyakorlatilag minden lejátszó támogatja, habár " "törvényi szabályozás alatt áll.

http://en.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "A Free Lossless Audio Codec (FLAC) egy veszteségmentesen tömörítő " "audioformátum.
Mindenféle törvényi szabályozástól mentes.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "A Windows Media Audio (WMA) egy veszteségesen tömörítő audioformátum, amit a " "Microsoft fejlesztett ki.

http://en.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "Az AC3 vagy AC-3 a Dolby Digital családba tartozó audioformátum." "
Mozifilmekhez (pl. DVD) lett kifejlesztve és támogatja a térbeli " "hangzást.

http://en.wikipedia.org/wiki/Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "Az MPEG-1 vagy MPEG-2 Audio Layer II (MP2) egy régi, veszteségesen tömörítő " "audioformátum.

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Az Adaptive Multi-Rate Narrow-Band (AMR NB)-ot főként a mobilkommunikációs " "beszédtömörítésnél használják.

http://en.wikipedia.org/wiki/Adaptive " "Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Az Adaptive Multi-Rate Wide-Band (AMR WB) egy továbbfejlesztett változata az " "AMR NB-nek, ami a nagyobb adatsebesség miatt jobb minőségű.
Csak " "beszédtömörítéshez javasolt..

http://en.wikipedia.org/wiki/Adaptive Multi-" "Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "A Monkey's Audio egy veszteségmentesen tömörítő audioformátum.

http://en.wikipedia.org/" "wiki/Monkey's Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "A Speex egy veszteségesen tömörítő, beszéd kódolásához kifejlesztett " "audioformátum.
Minden törvényi szabályozástól mentes.Az Opus megjelenése " "óta a Speex elavultnak számít.

http://en.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "A Musepack egy ingyenes és veszteségesen tömörítő, az mp2-re alapuló " "fájlformátum, kiváló minőségre optimalizálva.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "A Shorten (SHN) egy ingyenes és veszteségmentesen tömörítő audioformátum." "

http://en.wikipedia." "org/wiki/Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "A True Audio (TTA) egy ingyenes és veszteségmentesen tömörítő audioformátum." "

http://en." "wikipedia.org/wiki/TTA (codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "A WavPack (WV) egy ingyenes és veszteségmentesen tömörítő audioformátum." "

http://en.wikipedia." "org/wiki/WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "A 8-Bit Sampled Voice (8SVX) egy audiofájl-formátum, amit az Electronic Arts " "fejlesztett ki a Commodore-Amiga számítógép-sorozathoz.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Az Audio Interchange File Format (AIFF) egy nagyon egyszerű audioformátum, " "ami nem tömöríti a hang-adatfolyamot, tehát veszteségmentes, de a fájlméret " "nagyon nagy és nem támogat olyan haladó megoldásokat, mint a címkék." "

http://en.wikipedia.org/wiki/Audio Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "A folyamat a felhasználó kérésére megszakítva" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "A(z) %1 fájlok kódolásához telepítenie kell a(z) '%2'-t." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "A(z) %1 fájlok kódolásához telepítenie kell a(z) '%2'-t." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "A(z) %2 fájlok kódolásához telepítenie kell a(z) '%2'-t." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Ahhoz, hogy hangerő-korrekciós adatokat számoljon '%1' fájlokhoz, " "telepítenie kell a(z) '%2'-t." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "A(z) '%1' rendszerint megtalálható a disztribúciójában." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Mivel a(z) '%1' szabadalommal védett kodekeket tartalmaz, valószínűleg nincs " "telepítve a rendszerén.\n" "Bizonyos disztribúcióknál lehetőség van a(z) '%1' kiegészítő " "szoftvertárolókból történő telepítésére. " #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "A(z) '%1'-t innen töltheti le: %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "A(z) %1 szűrő használatához telepítenie kell a(z) '%2'-t." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "A(z) %1 szűrők használatához telepítenie kell a(z) '%2'-t." #: filelist.cpp:48 msgid "State" msgstr "Állapot" #: filelist.cpp:49 msgid "Input" msgstr "Bemenet" #: filelist.cpp:50 msgid "Output" msgstr "Kimenet" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Minőség" #: filelist.cpp:79 msgid "Edit options..." msgstr "Beállítások szerkesztése..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Konvertálás indítása" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Konvertálás leállítása" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Eltávolítás" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "A soundKonverter nem ismeri ezt a fájlformátumot.\n" "Lehet, hogy kiegészítő bővítményeket kell telepítenie.\n" "Nézzen körül disztribúciója csomagkezelőjében." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... és %1 fájl" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Ki lesz hagyva" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Várakozás" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Várakozás a hangerő-korrekcióra" #: filelist.cpp:583 msgid "Stopped" msgstr "Leállítva" #: filelist.cpp:588 msgid "Backend not configured" msgstr "A háttérprogram nincs beállítva" #: filelist.cpp:593 msgid "Disc full" msgstr "A lemez megtelt" #: filelist.cpp:603 msgid "Failed" msgstr "Meghiúsult" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "A konvertálás meghiúsult.\n" "További részletek a naplófájlban." #: filelist.cpp:630 msgid "CD track %1" msgstr "CD-szám %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Felül kívánja írni a jelenlegi fájllistát?\n" "\n" "Ha nem, a mentett fájllista lesz csatolva." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "nap" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "ó" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "p" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "mp" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Azonosító" #: logger.cpp:91 msgid "Log ID" msgstr "Napló azonosító" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Naplózás befejezve" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Napló megjelenítő" #: logviewer.cpp:28 msgid "Update" msgstr "Frissítés" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Mentés fájlba..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Naplófájl:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "soundKonverter alkalmazásnapló" #: logviewer.cpp:127 msgid "Save log file" msgstr "Naplófájl mentése" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "A fájl már létezik. Tényleg felül szeretné írni?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "A fájl írása meghiúsult.\n" "Lehet, hogy nem adott jogosultságot az íráshoz." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "A soundKonverter audiokonverterek, hangerő-korrekciós eszközök és CD-másolók " "felülete.\n" "\n" "Hibabejelentés a https://bugs.launchpad.net/soundkonverter weboldalon vagy a " "hessijames@gmail.com e-mail címen." #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Nuvola ikontéma" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "Címkekönyvtár" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Amarok fejlesztők" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Az audiokonvertálók összes programozója" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "A hangerő-korrekció megnyitása és az összes adott fájl hozzáadása" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" "A(z) CD-meghajtó számainak listázása, az 'auto' mód CD-t keres" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Az összes fájl hozzáadása az adott profil szerint" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Az összes fájl hozzáadása az adott formátum szerint" #: main.cpp:36 msgid "Output all files to " msgstr "Minden fájl kimenete: " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "A soundKonverter láthatatlan indítása" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "A konvertálás azonnali indítása (elérhető az '--invisible' módban)" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "A soundKonverter bezárása a konvertálás befejezése után (elérhető az '--" "invisible' módban)" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "A(z) parancs futtatása az összes fájl konvertálása után " "(%i=bemeneti fájl, %o=kimeneti fájl)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Audiofájlok hozzáfűzése a fájllistához" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Vegyes" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "32x32 PNG ikon" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Fájl ikon" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Első borító" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Hátsó borító" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Ismertető" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "CD fotó" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "A főszereplő fotója" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "A művész fotója" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "A karmester fotója" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "A zenekar fotója" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "A zeneszerző fotója" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "A szövegíró fotója" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "A felvételi helyszín fotója" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Kép a felvételről" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Kép az előadásról" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Kép egy videóból" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Egy nagy, színes hal képe" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "A számhoz tartozó ábra" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Zenekar logója" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Kiadó logója" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "CD-számok hozzáadása" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. CD-számok kiválasztása" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Konvertálási beállítások " #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Előadó:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Különféle előadók" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Zeneszerző:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Különféle zeneszerzők" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Lemez száma:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "ennyiből" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Év:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Műfaj:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Beolvasás" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Szám" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Előadó" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Zeneszerző" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Cím" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Hossz" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Lejátszó" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Nincs szám kiválasztva" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Cím:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Megjegyzés:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Válassza ki a kívánt kimeneti beállításokat és nyomjon \"OK\"-t." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Zeneművek jegyzékének (cue sheet) mentése.." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "CDDB kérés" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Az egész CD beolvasása egy fájlba" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Az egész CD egy fájlba történő beolvasását nem támogatják a telepített " "háttérprogramok.\n" "A lehetséges megoldások lentebb láthatók.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Az egész CD egy fájlba történő beolvasását nem támogatják a telepített " "háttérprogramok.\n" "Nézzen körül disztribúciója csomagkezelőjében olyan kiegészítő bővítményért, " "ami támogatja a CD-k egy fájlba történő beolvasását." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Folytatás" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Ok" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Mégse" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "CD-meghajtó kiválasztása" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Több CD-olvasó található. Válasszon egyet:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "DVD-író" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "CD-író" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "DVD-lejátszó" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "CD-lejátszó" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): audio CD %3 számmal" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Ismeretlen" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Kérem, várjon, kísérlet a CDDB-adatok letöltésére..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "CDDB-bejegyzés kiválasztása" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Több CDDB-bejegyzést találtam. Kérem, válasszon egyet:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Minden szám" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Számok" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Válasszon ki legalább egy fájlt a folytatáshoz." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Nincsenek konvertálási beállítások kiválasztva." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Ezzel a névvel már létezik fájl.\n" "\n" "Szeretné felülírni a meglévőt?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "A fájl már létezik" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Mappa hozzáadása" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Könyvtár kiválasztása" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Könyvtár:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Csak az alábbi fájlformátumok hozzáadása:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Hiányol néhány fájlformátumot?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Mind kijelölése" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Kijelölés törlése" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Rekurzív" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Ha be van jelölve, az alkönyvtárak fájljai is hozzá lesznek adva." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Fájlok hozzáadása" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 fájl" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Minden támogatott fájl" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Minden fájl" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Lejátszólista hozzáadása" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "A következő fájlokat nem találtam:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "A fájlok nem találhatók" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "url hozzáadása" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Url beírása" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "A beírt url érvénytelen. Próbálja újra." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Formátum:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Bővítmény használata:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Leírás:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Hangerő-korrekciós adatok generálása" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "A jelenlegi beállítások mentése profilként" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Mentett profilok betöltése" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "A hangerő-korrekció nem támogatja az alábbi fájlformátumot: %1.\n" "A lehetséges megoldások lentebb láthatók." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "A hangerő-korrekció nem támogatja az alábbi fájlformátumot: %1.\n" "Ellenőrizze disztribúciójában a csomagkezelőt hangerő-korrekciós bővítmény " "telepítéséért." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "A hangerő-korrekciós adat megadja a zenelejátszónak, hogy milyen hangos a " "szám.\n" "Így az úgy állítja be a hangerőt, hogy minden szám egyforma hangos legyen." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "A jelenlegi konvertálási beállításokkal percenként %1 fájl készül el." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Új profil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Írjon be egy nevet az új profilnak:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Nem mentheti a profilt név nélkül." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "A profilnév üres" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "A beépített profilokat nem írhatja felül." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "A profil már létezik" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Ezzel a névvel már létezik profil.\n" "\n" "Szeretné felülírni a meglévőt?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Előző" #: optionseditor.cpp:42 msgid "Next" msgstr "Következő" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Konvertálási beállítások szerkesztése" #: optionseditor.cpp:74 msgid "Tags" msgstr "Címkék" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Borítók:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Szerkesztés" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Szám:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Címkék szerkesztése" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Nincs fájl kiválasztva" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "A címkék nem olvashatók, mivel ez nem egy helyi fájl.\n" "A soundKonverter megpróbálja beolvasni a címkéket a konvertálás során.\n" "Ha Ön szeretné szerkeszteni a címkéket, nyomja meg az alábbi gombot, de " "ekkor\n" " a soundKonverter nem próbálja meg beolvasni a címkéket a letöltés után." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "A címkék beolvasása közben hiba történt.\n" "A soundKonverter megpróbálja újból beolvasni a címkéket a konvertálás " "során.\n" "Ha Ön szeretné szerkeszteni a címkéket, nyomja meg az alábbi gombot, de " "ekkor\n" " a soundKonverter nem próbálja újból beolvasni a címkéket." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Borítótípus:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Leírás:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Méret:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 képpont (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "MIME típus:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 Fájl" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Több fájlt választott ki eltérő konvertálási beállításokkal.\n" "Az alábbi gomb megnyomásával megváltoztathatja az összes fájl beállítását." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "A címkék beolvasása közben hiba történt.\n" "A soundKonverter megpróbálja újból beolvasni a címkéket a konvertálás " "során.\n" "Ha Ön szeretné szerkeszteni a címkéket, nyomja meg az alábbi gombot, de " "ekkor\n" " a soundKonverter nem próbálja újból beolvasni a címkéket." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Minőség:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "A kiválasztott profil eltávolítása" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Információ" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Információ a kiválasztott profilról" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Információ a kiválasztott fájlformátumról" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Több formátum..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Tetszőleges:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Nagyon gyenge minőségű hangfájlok készülnek.\n" "Ez hasznos lehet egy hordozható eszköz esetén, ahol korlátozott a " "tárkapacitás.\n" "Nem ajánlott ilyen gyenge minőségű hangfájl készítése egy jobb minőségű " "másolat nélkül." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Gyenge minőségű hangfájlok készülnek.\n" "Ez hasznos lehet egy hordozható eszköz esetén, ahol korlátozott a " "tárkapacitás.\n" "Nem ajánlott ilyen gyenge minőségű hangfájl készítése egy jobb minőségű " "másolat nélkül." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "A fájlok közepes minőségű kódolása kompromisszum a minőség és a fájlméret " "között.\n" "A legtöbb ember nem hallja a különbséget az eredeti és a kódolt fájl között, " "de ezt csak akkor érdemes használni, ha korlátozott méretű tárhely áll " "rendelkezésre." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Kiváló minőségű hangfájlok készülnek.\n" "Használja ezt, ha van elég hely a lemezen." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Kiváló minőségű hangfájlok készülnek. Használja ezt, ha van elég hely a " "lemezen." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "A fájlok tömörítés nélküli kódolása megtartja azok eredeti minőségét.\n" "Csak akkor érdemes használni, ha az eredeti fájl jó minőségű (pl. audio " "CD).\n" "A fájlméret nagy lesz, csak akkor érdemes használni, ha elegendő tárhely áll " "rendelkezésre." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Létrehozhatja saját profilját a \"Részletek\" fül alatt." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Ez egy felhasználói profil." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "%1 profilinformáció" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Tényleg el kívánja távolítani a profilt: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "A profil eltávolítása?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "%1 formátuminformáció" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Sajnálom, nem érhető el formátuminformáció." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Metaadat szerint" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Forráskönyvtár" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Célkönyvtár megadása" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Könyvtárszerkezet másolása" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "A kimeneti könyvtár kiválasztása" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "A kimeneti könyvtár megnyitása a Dolphin fájlkezelővel" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Ismeretlen előadó" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Ismeretlen album" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Nincs megjegyzés" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Ismeretlen műfaj" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Ismeretlen zeneszerző" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Ismeretlen cím" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "új" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Minden konvertált fájl átnevezése a megadott minta alapján" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Az alábbi karakterláncok helyettesítő karakterek a metaadatban:\n" "\n" "%a - előadó\n" "%b - album\n" "%c - megjegyzés\n" "%d - lemez száma\n" "%g - műfaj\n" "%n - szám\n" "%p - szerző\n" "%t - cím\n" "%y - év\n" "%f - eredeti fájlnév\n" "\n" "A helyettesítő karaktereket szögletes zárójelbe teheti ('['és ']')\n" "így mellőzve lesznek, ha a mező üres.\n" "Szögletes zárójel írásához használja a backslash-t ('\\[' and '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "Minden konvertált fájl az eredeti fájl könyvtárába kerüljön" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Minden konvertált fájl a megadott kimeneti könyvtárba kerüljön" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Az egész könyvtárszerkezet másolása minden konvertált fájlnál" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Mód:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Bitráta" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Bitráta:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "További kódolási paraméterek:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Kísérleti kodekek engedélyezése az ffmpeg beállítási ablakában." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "ffmpeg-fordítás %1 támogatással." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Beállítás %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Kísérleti kodekek engedélyezése" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Indítsa újra a soundKonvertert a változtatások alkalmazásához." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Tömörítési szint:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "SoundFont fájl használata:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Midi adat hangfájllá konvertálásához egy SoundFont fájlra van szüksége, ami " "a midi adatot hangefektekké képzi le.\n" "A SoundFont fájlok beszerzéséhez nézzen szét itt: %1 ." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "A FluidSynth még nincs konfigurálva. Előbb be kell állítani egy SoundFont " "fájlt." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Előre beállított:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Megfelelő" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Szabványos" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Rendkívüli" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Őrületes" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Bitráta megadása" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "Konstans bitráta" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Kódolás konstans bitrátával.\n" "Csak 80, 96, 112, 128, 160, 192, 224 és 320 kbps esetén használható." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Gyors kódolás" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Használjon egy gyorsabb kódolási algoritmust (alig gyengébb minőséget " "eredményez)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Bitráta mód:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Változó" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Átlagos" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Konstans" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "A tömörítés szintje 9 és 0 között lehet, ahol 0 a legjobb minőség.\n" "(Minél jobb a minőség, annál lassabb a konverzió, és fordítva.) A 2-es szint " "ajánlott." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Ez a beállítás a legtöbb embernek a legtöbb zenéhez megfelelő (~150 kbps " "átlagos bitráta)" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Ez a beállítás a legtöbb embernek a legtöbb zenéhez megfelelő\n" "és elég jó minőségű (~230 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Ha nagyon jó hallása van és a berendezései is jók, ez a beállítás alig jobb " "minőséget nyújt,\n" "mint az átlagos (~280 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "A legtöbb esetben ez a beállítás nem szükséges, de amennyiben Önnek\n" "a legjobb minőség szükséges és nem számít a fájl mérete, válassza ezt(320 " "kbps konstans bitráta)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "A minőség szintje 9 és 0 között lehet, ahol 0 a legjobb minőség.\n" "(Minél jobb a minőség, annál nagyobb a fájlméret, és fordítva.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Sztereó:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automatikus" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Álsztereó" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Egyszerű sztereó" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Kényszerített álsztereó" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Duál monó" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Névjegy: %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "A LAME egy ingyenes kiváló minőségű MP3 kóder.\n" "Letöltheti a http://lame.sourceforge.net weboldalról." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Kísérleti kodekek engedélyezése a libav párbeszédablakában." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "libav fordítás %1 támogatással." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Bélyegkép" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Rádió" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Agyhalott" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "Használja valamelyik MusePacks beállítást vagy a sajátját." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "gyenge minőség (~60 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "gyenge/megfelelő minőség (~90 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "megfelelő minőség (~130 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "jó minőség (~180 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "kiváló minőség (~210 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "kiváló minőség (~240 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "kiváló minőség (~270 kbps átlagos bitráta)" #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" "A(z) '%1'-t egy érvényes e-mail cím megadása után innen töltheti le: %2 " #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "A(z) '%1' rendszerint a '%2' csomag része, ami megtalálható a " "disztribúciójában." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Nem párosított csatornák" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Egy mono adatfolyam használata csatornánként" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "A TwoLame egy ingyenes MP2 dekóder.\n" "Beszerezheti a http://www.twolane.org címen." #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "A minőség szintje -50 és 50 között." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "A(z) '%1' rendszerint a '%2' csomag része, ami innen tölthető le: %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Gyors" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normál" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Jó minőség" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Nagyon jó minőség" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalizálás" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Kísérleti kodekek engedélyezése a sox beállítási ablakában." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "sox-fordítás %1 támogatással." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Mintavételezési ráta megváltoztatása:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Gyors" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "A minőség szintje 9 és 0 között lehet, ahol 0 a legjobb minőség." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Effekt:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Letiltva" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "A kiválasztott effekt eltávolítása" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Hozzáadás" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Más effekt hozzáadása" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalizálás:\n" "Hangerő változtatása úgy, hogy a fájlok egyformán hangosak legyenek." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Mély:\n" "A mély frekvenciák felerősítése" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Magas:\n" "A magas frekvenciák felerősítése" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Mintavételezési ráta:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Mintavételezési méret:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Csatornák:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Monó" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Sztereó" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Címkeformátum használata:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Az audio adatfolyam módosítása" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Hangerő-beállítások írása közvetlenül a kódolt adatba. A beállítások így " "minden mp3-lejátszóval működnek.\n" "A változtatások visszavonása lehetséges, mert a korrekciós adatok is a " "fájlba íródnak." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Ahhoz, hogy audio CD-t írjon számonként vagy egy fájlba, telepítenie kell a " "cdparanoia-t. A cdparanoia rendszerint a disztribúció része, a csomag neve " "eltérhet." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Sebesség:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Hátralévő idő:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Befejezve" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Fájl" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Az összes összecsukása" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Az összes kibontása" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Áthelyezés új albumba" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Néhány szám nem adható az albumhoz, mert a kodek vagy a mintavételezési " "frekvencia eltérő." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Új album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "A konvertálás meghiúsult. A használt háttérprogramokat megfelelően be kell " "állítani." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "A hangerő-korrekció meghiúsult. Az alapértelmezett bővítmény nem támogat egy " "szükséges funkciót." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "A hangerő-korrekció meghiúsult. Ismeretlen hiba történt." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "A hangerő-korrekció meghiúsult. Hibakód: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Új elem hozzáadása a hangerő-korrekciós listához: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Hangerő-korrekció ehhez: %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Lehetséges hangerő-korrekciós háttérprogramok:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Mellőzve" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Mappa hozzáadása..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Fájlok hozzáadása..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Az újraszámítás kényszerítése" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "Hangerő-korrekciós adatok újragenerálása." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "A jelöletlen megjelölése" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Hangerő-korrekciós adatok generálása a lista minden olyan fájljához, ahol " "hiányzik." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "A megjelölés törlése" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "A hangerő-korrekció megnyitása és az összes adott fájl hozzáadása" #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Bezárás" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Fut a hangerő-korrekció.\n" "Megszakítja?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Ez a soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "TagLib-bel fordítva %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "A borítók olvasása/írása nem támogatott az ogg/METADATA_BLOCK_PICTURE, a " "flac\n" "és az asf/wma fájlok esetén. Ehhez a TagLib 1.7 szükséges." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Régi fájl eltávolítása: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Naplók megtekintése..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Hangerő-korrekciós eszköz..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "A bővítményekről..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "CD-számok hozzáadása..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Url hozzáadása..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Lejátszólista hozzáadása..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Fájllista betöltése" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Fájllista mentése" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Indítás" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Leállítás" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Azonnali leállítás" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Leállítás a jelenlegi konvertálások után" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Folytatás a jelenlegi konvertálások után" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Nem található CD-meghajtó" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Eszközök" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Név" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "E-mail" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Audiofájl-konverter, CD-beolvasó és hangerő-korrekciós eszköz" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Audio CD beolvasása a soundKonverterrel" ./soundkonverter-2.0.5/po/PaxHeaders.25599/zh_TW.po0000644000175000001440000000013212255310032020005 xustar000000000000000030 mtime=1387630618.225840256 30 atime=1387630618.198840593 30 ctime=1387631578.283421748 ./soundkonverter-2.0.5/po/zh_TW.po0000644000175000001440000031023612255310032017425 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Alisha , 2013 # 柏諺 黃 , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: 柏諺 黃 \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/" "soundkonverter/language/zh_TW/)\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "關於外掛程式" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "已安裝的外掛程式:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "關於外掛程式 %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "外掛程式類型:%1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "後端執行檔:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (在這裡找到: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1(未發現)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "支援編碼:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "目前停用。" #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "編碼:%1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "解碼:%1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "設定 %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "後端問題的解決方案" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "您已經安裝或移除後端,並且您 soundKonverter 設定可以被優化。" #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "為了編碼 %1 檔案,後端「%2」可以被替換為「%3」。" #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "為了擷取音樂CD,後端「%1」可以被替換為「%2」。" #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "為了解碼 %1 檔案,後端「%2」可以被替換為「%3」。" #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "為了套用播放增益至 %1 檔案,後端「%2」可以被替換為「%3」。" #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "忽略" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "修復" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter 找不到任何缺少的套件。\n" "如果您缺少某些檔案格式,您可能需要通過您使用的作業系統發行版中的套件管理員安" "裝額外的外掛程式。" #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "某些已安裝的外掛程式不能正常工作。\n" "下面列出了可能的解決方案。" #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "有些檔案無法被解碼。\n" "下面列出了可能的解決方案。" #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "某些檔案不支持播放增益。\n" "下面列出了可能的解決方案。" #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "擷取音樂CD不被任何已安裝的外掛程式支援。\n" "請查看您的發行版之套件管理員,以取得一個 soundKonverter 的CD擷取外掛程式。" #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "擷取音樂CD目前不被支援,因為缺少後端。\n" "下面列出了可能的解決方案。" #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "%1 可能的解決方案" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "或" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "受影響的檔案:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "最後使用" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "高" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "封面" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "嘗試內部" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "極低" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "低" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "中等" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "極高" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "無損" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "混合" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "使用者定義的" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "用 soundKonverter 轉換" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "用 soundKonverter 加入播放增益" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "進階" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Ogg Vorbis檔的偏好副檔名:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Ogg Vorbis和FLAC檔的偏好註釋標籤欄位:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "Ogg Vorbis和FLAC檔的總曲目數量標籤欄位的偏好:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "Ogg Vorbis和FLAC檔總光碟數量標籤欄位的偏好:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "始終使用 FAT 相容的輸出檔名" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "除錯" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "寫日誌檔到磁碟" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "當正在轉換時,寫日誌檔到硬碟機。\n" "這可能是有用的,如果發生崩潰,而您無法使用日誌檢視器進入日誌檔。\n" "日誌檔將被寫到 %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "實驗的" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "在記憶體中儲存暫存檔,除非估計大小會超過:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "不要儲存預計將大於在記憶體中之值的檔案,以避免置換" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "似乎沒有檔案系統掛載在 /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "解碼器" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "編碼器" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "播放增益" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "%1 往上移一個位置" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "%1 往下移一個位置" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "關於 %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "CD 擷取" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "使用外掛程式:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "篩選器" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "啟用外掛程式:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "優先順序" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "設定格式的外掛程式優先順序:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "顯示可能的優化" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "您已經改變了目前的設定。\n" "您想要儲存它們嗎?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "變更的設定" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "這將選擇適用於所有格式的最好後端,並立即儲存新的偏好設定。\n" "\n" "您是否要繼續?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "所有後端設定似乎是最佳的,沒有什麼可以再做的了!" #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "儲存封面到輸出目錄" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "儲存嵌入式封面到輸出目錄" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "總是" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "只有當封面嵌入到輸出檔是不可能時" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "永遠不會" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "封面的檔名(當儲存到輸出目錄時)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "嵌入式封面描述" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "預設封面檔名" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "預設封面檔名:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "下面的字串是萬用字元將被\n" "在元數據中的資訊替換:\n" "%a - 演出者\n" "%b - 專輯\n" "%d - 封面說明\n" "%r - 封面作用" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "設定" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "一般" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "封面" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "後端" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "使用者界面" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "啟動模式:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "精簡" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "詳細" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "預設設定檔:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "預設格式:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "轉換" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "衝突處理:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "產生新的檔名" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "跳過檔案" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "這樣做,如果輸出檔已存在" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "一次轉換的檔案數目:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "您不應該設定這個高於已安裝處理器核心數量的數字。\n" "已經有 %1 個處理器核心檢測到。" #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "套用專輯增益到轉換後的檔案" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "繼續等待在檔案清單中同一專輯的歌曲以套用專輯增益到所有的檔案。" #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "播放增益工具" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "在播放增益工具中組織檔案依據:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "專輯標籤和目錄" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "僅專輯標籤" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "僅目錄" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "一次性處理項目數量:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "取得檔案" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "複製「%1」至「%2」" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "沒有更多的後端可去嘗試 :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "轉換中" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "轉換失敗。至少使用的後端中的一個需要適當地設定。" #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "轉換失敗。偏好的外掛程式缺乏一個必要的功能支援。" #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "轉換失敗。未知錯誤。" #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "擷取中" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "解碼中" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "套用篩選器" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "編碼中" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "跳過播放增益,專輯的增益將稍後計算" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "套用播放增益" #: convert.cpp:515 msgid "Writing tags" msgstr "寫入標籤中" #: convert.cpp:542 msgid "Running user script" msgstr "運行使用者腳本" #: convert.cpp:567 msgid "Executing next step" msgstr "執行下一步" #: convert.cpp:711 msgid "Read tags successfully" msgstr "成功讀取標籤" #: convert.cpp:715 msgid "Unable to read tags" msgstr "無法讀取標籤" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "移除中:%1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "發生錯誤。錯誤代碼:%1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "轉換失敗。退出代碼:%1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "CD 音軌 %1:%2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "CD 音軌 %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "加入新的項目到轉換清單中:「%1」" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "取得日誌識別碼:%1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "音軌編號:%1,裝置:%2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "可能的轉換策略:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "檔案系統類型:%1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "出現錯誤,輸出檔案大小是小於百分之一輸入檔案大小" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "轉換失敗,再嘗試一次。退出代碼:-2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "移除部分轉換的輸出檔案" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "正常退出" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "成功,但發生了問題" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "由使用者中止" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "後端需要設定" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "在輸出裝置上沒有足夠的空間" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "檔案已經存在" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "發生了錯誤" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "執行指令:「%1」" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "從轉換清單中移除檔案。退出代碼 %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "轉換時間" #: convert.cpp:1183 msgid "Output file size" msgstr "輸出檔案大小" #: convert.cpp:1184 msgid "File size ratio" msgstr "檔案大小比例" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "未知" #: convert.cpp:1325 msgid "Filter" msgstr "篩選器" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "進展情況:%1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave 是一個非常簡單音訊格式。它不壓縮音訊流,所以它是無損的。但是檔案非常大," "並且它不支持進階的功能,如標籤。
它幾乎是被任何軟體或裝置支持。

http://en.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "進階音訊編碼(AAC)是一種有損和受歡迎的音訊格式。它被廣泛應用於蘋果電腦
在 " "soundKonverter 中,「aac」只有引用編解碼器。為了獲得一個包含標籤功能的檔案," "使用了「m4a/aac」。

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows媒體音訊(WMA)是由微軟開發的一種有損音訊格式。

http://en.wikipedia.org/wiki/" "Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio 是無損音樂格式。

http://en.wikipedia.org/wiki/Monkey's Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "在使用者要求時,終止行程" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "為了替 %1 檔案編碼 ,您需要安裝「%2」。" #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "為了替 %1 檔案解碼,您需要安裝「%2」。" #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "為了替 %1 檔案轉碼,您需要安裝「%2」。" #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "為了替 %1 檔案計算播放增益標籤,您需要安裝「%2」。" #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "" #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "您可以下載「%1」在 %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "為了使用過濾器 %1,您需要安裝「%2」。" #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "為了使用過濾器 %1,您需要安裝「%2」。" #: filelist.cpp:48 msgid "State" msgstr "狀態" #: filelist.cpp:49 msgid "Input" msgstr "輸入" #: filelist.cpp:50 msgid "Output" msgstr "輸出" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "品質" #: filelist.cpp:79 msgid "Edit options..." msgstr "編輯選項..." #: filelist.cpp:81 msgid "Start conversion" msgstr "開始轉換" #: filelist.cpp:83 msgid "Stop conversion" msgstr "停止轉換" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "移除" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "這種檔案類型對於 soundKonverter 而言是未知的。\n" "也許您需要安裝一個額外的 soundKonverter 外掛程式。\n" "您應該看看系統的套件管理員是否有這個外掛程式。" #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "將被跳過" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "等待中" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "等待播放增益中" #: filelist.cpp:583 msgid "Stopped" msgstr "以停止" #: filelist.cpp:588 msgid "Backend not configured" msgstr "後端設定" #: filelist.cpp:593 msgid "Disc full" msgstr "碟片已滿" #: filelist.cpp:603 msgid "Failed" msgstr "失敗" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "轉換失敗。\n" "請參閱日誌以獲取更多資訊。" #: filelist.cpp:630 msgid "CD track %1" msgstr "CD 音軌 %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "您想覆蓋目前的檔案清單?\n" "\n" "如果不是這樣,儲存的檔案清單將被附加。" #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "天" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "時" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "分" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "秒" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "毫秒" #: logger.cpp:90 msgid "Identifier" msgstr "識別碼" #: logger.cpp:91 msgid "Log ID" msgstr "登錄識別碼" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "完成日誌記錄" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "日誌檢視器" #: logviewer.cpp:28 msgid "Update" msgstr "更新" #: logviewer.cpp:31 msgid "Save to file..." msgstr "儲存到檔案..." #: logviewer.cpp:42 msgid "Log file:" msgstr "紀錄檔:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "soundKonverter 應用日誌" #: logviewer.cpp:127 msgid "Save log file" msgstr "儲存日誌檔" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "檔案已存在!您真的想要覆蓋它嗎?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "寫入檔案失敗。\n" "也許您沒有取得寫入權限。" #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter 是一個不同音訊的轉換器、播放增益工具,及音樂CD擷取器的前端介面" "軟體。\n" "\n" "請在 https://bugs.launchpad.net/soundkonverter 填寫錯誤報告\n" "或者乾脆發一封電子郵件到 hessijames@gmail.com 給我" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Nuvola 圖示主題" #: main.cpp:25 msgid "Scott Wheeler" msgstr "斯科特·惠勒" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "" #: main.cpp:26 msgid "Audex" msgstr "" #: main.cpp:27 msgid "Amarok developers" msgstr "Amarok 開發者" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "所有音訊轉換器的程式設計師" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "開啟播放增益工具並且加入所有給予的檔案" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "使用給定的設定檔加入所有的檔案" #: main.cpp:35 msgid "Add all files using the given format" msgstr "使用給定的格式加入所有的檔案" #: main.cpp:36 msgid "Output all files to " msgstr "輸出所有檔案到 " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "開始 soundKonverter 隱形" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "音訊檔附加到檔案清單中" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "未分類的" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "32x32 PNG檔案圖示" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "檔案圖示" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "封面" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "封底" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "傳單頁" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "CD 照片" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "領導演出者照片" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "演出者照片" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "指揮照片" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "樂隊照片" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "作曲家照片" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "作詞者照片" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "圖片記錄位置" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "在錄製過程中的演出者圖片" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "在表演過程中演出者的圖片" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "從視訊中的圖片" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "一個大的的圖片,彩色的魚" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "曲目相關的插圖" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "樂隊的標誌" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "出版者標誌" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "加入 CD 音軌" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. 選擇 CD 音軌" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. 設定轉換選項" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "演出者:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "不同的演出者" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "作曲家:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "不同的作曲家" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "專輯:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "光碟編號:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "年份:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "類型:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "擷取" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "曲目" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "演出者" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "作曲家" #: opener/cdopener.cpp:244 msgid "Title" msgstr "標題" #: opener/cdopener.cpp:245 msgid "Length" msgstr "長度" #: opener/cdopener.cpp:246 msgid "Player" msgstr "播放器" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "沒有選定的曲目" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "標題:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "評論:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "選擇您想要的輸出選項,然後按「Ok」。" #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "儲存 cue 表..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "請求 CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "整個CD擷取到一個檔案" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "整個CD擷取到單一個檔案是不被已安裝的後端支援。\n" "下面列出可能的解決方案。\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "整個CD擷取到單一個檔案是不被已安裝的後端支援。\n" "請檢查您系統的套件管理程式,為了安裝額外的有擷取功能並且支援擷取到一個檔案的" "外掛程式。" #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "繼續" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "好" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "取消" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "選擇 CD-ROM 裝置" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "找到多個光碟機。請選擇其中一個:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "DVD 解碼器" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "CD 解碼器" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "DVD 撥放器" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "CD 撥放器" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): 音樂CD帶有 %3 曲目" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "未知" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "請稍候,試著下載 CDDB 資料..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "選擇 CDDB 項目" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "找到多個 CDDB 項目。請選擇其中一個:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "所有音軌" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "音軌" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "請選擇至少一首曲目,才能繼續進行。" #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "沒有選擇轉換選項。" #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "用這個名稱的檔案已經存在。\n" "\n" "您想覆蓋現有的嗎?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "檔案已經存在" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "加入資料夾" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. 選擇目錄" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "目錄:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "只有加入選擇的檔案格式:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "您是否缺少某些檔案格式?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "全選" #: opener/diropener.cpp:130 msgid "Select none" msgstr "全部不選擇" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "遞回" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "如果選中,從子目錄的檔案也將被加入。" #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "加入檔案" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 檔案" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "所有支援檔案" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "所有檔案" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "加入播放清單" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "無法找到以下檔案:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "找不到檔案" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "加入網址" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. 輸入網址" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "您輸入的網址是無效的。請再試一次。" #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "格式:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "使用外掛程式:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "目的地:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "計算播放增益標籤" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "儲存目前選項為一個設定檔" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "載入儲存的設定檔" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "播放增益不支援 %1 檔案格式。\n" "下面列出了可能的解決方案。" #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "播放增益不支援 %1 檔案格式。\n" "請檢查您系統發行版之套件管理員,以安裝一個額外的播放增益外掛程式。" #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" #: optionsdetailed.cpp:448 msgid "New profile" msgstr "新的設定檔" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "輸入新的設定檔名稱:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "您無法儲存沒有名字的設定檔。" #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "" #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" #: optionseditor.cpp:40 msgid "Previous" msgstr "上一步" #: optionseditor.cpp:42 msgid "Next" msgstr "下一步" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "" #: optionseditor.cpp:74 msgid "Tags" msgstr "標籤" #: optionseditor.cpp:85 msgid "Covers:" msgstr "封面:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "編輯" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "音軌編號:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "編輯標籤" #: optionseditor.cpp:353 msgid "No file selected" msgstr "沒有選擇檔案" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "大小:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 檔案" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "品質:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "資訊" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "" #: optionssimple.cpp:74 msgid "More formats..." msgstr "更多格式..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "可選:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "" #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "這是一個使用者定義的設定檔。" #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "您是否真的想要移除設定檔:%1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "移除設定檔?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "抱歉,沒有可用的格式資訊。" #: outputdirectory.cpp:36 msgid "By meta data" msgstr "依元數據" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "來源目錄" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "自訂輸出目錄" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "複製目錄結構" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "選擇輸出目錄" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "用 Dolphin 開啟輸出目錄" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "未知演出者" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "未知專輯" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "沒有評論" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "未知曲風" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "未知作曲家" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "未知標題" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "所有轉換後的檔案輸出到和原始檔案相同的目錄" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "所有轉換後的檔案輸出到指定的輸出目錄" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "為所有轉換後的檔案複製整個目錄結構" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "模式:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "位元率" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "位元率︰" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "額外的編碼器參數:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "於ffmpeg的設定對話框中,啟用實驗性的編解碼器。" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "編譯具有 %1 支持的 ffmpeg。" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "設定 %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "啟用實驗性編解碼器" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "請重新啟動 soundKonverter 以使變更生效。" #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "壓縮等級:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "使用 SoundFont 音色檔:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "為了轉換MIDI資料為波形式,您需要一個SoundFont音色庫,它讓MIDI資料對應到聲音效" "果。" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "FluidSynth沒有配置。您需要設定一個SoundFont音色庫檔。" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "預設:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "中等" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "標準" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "極度" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "瘋狂" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "指定位元率" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "使用一個恆定的位元率編碼。\n" "僅適用於 80, 96, 112, 128, 160, 192, 224, 256 和 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "快速編碼" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "使用更快編碼演算法(會導致略低的輸出品質)。" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "位元率模式:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "變數" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "平均" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "常數" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "壓縮層級從 9 到 0 ,其中 0 是最高品質的。\n" "(品質越高,轉換越慢,反之亦然。)\n" "推薦值 2。" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "此預設應提供近透明對大部分人在多數音樂上(〜150 kbps abr)。" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "此預設值通常應該是透明的,對大部分人在多數音樂上\n" "且品質已經相當高(~230 kbps abr)。" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "如果您有極好的聽力和類似設備,這個預設值一般會提供\n" "品質稍微高於標準模式(〜280 kbps abr)。" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "此預設通常會矯枉過正,對於大多數人和大多數情況下,但假如你一定要絕對\n" "的最高品質,而沒有考慮到檔案大小的話,這是要用的方式(320 kbps cbr)。" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "品質等級從 9 到 0,其中 0 是最高品質。\n" "(品質越高,檔案愈大,反之亦然。)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "立體聲模式:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "自動" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "聯合立體聲" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "簡單的立體聲" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "強制聯合立體聲" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "雙單聲道" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "關於 %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME 是一個免費的高品質的MP3編碼器。\n" "您可以取得它在:http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "啟用在 libav 設定對話框中實驗性的編解碼器。" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "編譯帶有 %1 支援的 libav 。" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "低品質(~60 kbps abr)。" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "中下品質(~90 kbps abr)。" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "中等品質(~130 kbps abr)。" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "高品質(~180 kbps abr)。" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "最佳品質(~210 kbps abr)。" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "最佳品質(~240~210 kbps abr)。" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "最佳品質(~270 kbps abr)。" #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "非耦合聲道" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "每聲道使用一個單聲道串流" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame 是一個免費MP2編碼器。\n" "您可以取得它,在:http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "從-50到50的品質等級。" #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "快速" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "正常" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "高品質" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "極高品質" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "標準化" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "啟用在 SOX 設定對話框中實驗性的編解碼器。" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "取樣率改變品質:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "快速" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "品質等級從 9 到 0,其中 0 是品質最高的。" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "效果:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "已停用" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "移除這個效果" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "加入" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "加入另一個效果" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "標準化:\n" "變更音量,讓所有檔案有相同的響度" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "低音:\n" "放大低頻" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "高音:\n" "放大高頻" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "取樣率:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "取樣大小:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "聲道:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "單聲道" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "立體聲" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "使用標籤的格式:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "修改音訊串流" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" #: progressindicator.cpp:85 msgid "Speed:" msgstr "速度:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "剩餘時間:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "已完成" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "檔案" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "專輯" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "全部折疊" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "全部展開" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "移到新專輯" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "某些曲目不能被加入到專輯中,因為無論是編解碼器或取樣率都是不一樣的。" #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "新專輯" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "播放增益失敗。需要正確地設定使用的後端。" #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "播放增益失敗。偏好的外掛程式缺乏一個必要功能的支持。" #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "播放增益失敗。未知的錯誤。" #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "播放增益失敗。退出代碼:%1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "%1 的播放增益" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "可能的播放增益後端:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "已跳過" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "加入資料夾..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "加入檔案..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "強制重新計算" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "重新計算已經有播放增益標籤的檔案之播放增益標籤。" #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "標記未加標籤的" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "計算在檔案清單中所有檔案的播放增益標籤,而無需播放增益標籤。" #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "取消標記已標記的" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "從檔案清單中的所有檔案裡移除播放增益標籤。" #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "關閉" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "還有播放增益作業正在運行。\n" "您真的要取消嗎?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "這是 soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "ogg/METADATA_BLOCK_PICTURE, flac 和 asf/wma 檔案對於讀/寫封面都不支援。因此 " "TagLib 1.7 是被需要的。" #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "移除舊檔: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "檢視紀錄..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "播放增益工具..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "關於外掛程式..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "加入 CD 音軌..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "加入網址..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "加入播放清單..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "載入檔案清單" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "儲存檔案清單" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "開始" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "停止" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "立刻停止" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "在目前轉換完成後停止" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "在目前轉換完成後繼續" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "找不到 CD 裝置" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "工具" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Alisha" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "alisha.4m@gmail.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "音樂格式轉換、CD 擷取、播放增益工具" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "用 soundKonverter 擷取音樂CD " ./soundkonverter-2.0.5/po/PaxHeaders.25599/sv.po0000644000175000001440000000013212255310031017401 xustar000000000000000030 mtime=1387630617.848844969 30 atime=1387630617.826845244 30 ctime=1387631578.284421736 ./soundkonverter-2.0.5/po/sv.po0000644000175000001440000033633112255310031017025 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-12-19 20:36+0000\n" "Last-Translator: PavelNicklasson \n" "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/" "soundkonverter/language/sv_SE/)\n" "Language: sv_SE\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Om insticksprogram" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Installerade insticksprogram:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Om insticksprogram %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Insticksprogramtyp: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Bakändens binärer:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (finns i: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (hittades inte)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Omkodare som stöds:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "För närvarande deaktiverad." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Koda: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Avkoda: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Konfigurera %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Lösningar för problem med bakänden" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Du har installerat eller tagit bort bakändar och soundkonverters " "inställningar kan optimeras. " #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "För att koda %1-filer kan bakända '%2' ersättas med '%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "För att rippa ljud-cd:ar kan bakända '%1' ersättas med '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "För att avkoda %1-filer kan bakändan '%2' ersättas med '%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "För att tillämpa Replay Gain för %1-filer kan bakändan '%2' ersättas med " "'%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignorera" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Åtgärda" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundkonverter kunde inte hitta några saknade paket.\n" "Om du saknar några filformat kan du behöva installera ytterligare " "insticksprogram via pakethanteraren för din distribution." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Några installerade insticksprogram fungerar inte\n" "Möjliga lösningar listas nedan." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Några filer kan inte avkodas\n" "Möjliga lösningar listas nedan." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Replay Gain stöds inte för några filer.\n" "Möjliga lösningar listas nedan." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Rippning av ljud-CD:ar stöds inte av något installerat insticksprogram\n" "Sök ett insticksprogram för att rippa cd till soundkonverter i " "pakethanteraren för din distribution." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Rippning av ljud-CD:ar stöds för närvarnade inte på grund av saknad " "bakända.\n" "Möjliga lösningar listas nedan." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Möjliga lösningar för %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "eller" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Påverkade filer:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Senast använt" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Hög" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "omslag" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Prova intern" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Mycket låg" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Låg" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Medium" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Mycket hög" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Förlustfri" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Användardefinierad" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Användardefinierad" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Konvertera med soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Lägg till Replay Gain med soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avancerad" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Föredragen filändelse för ogg vorbis filer:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Föredragen kommentarsetikettsfält för ogg vorbis och flac filer" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "En del program använder fältet BESKRIVNING trots att fältet KOMMENTAR är det " "rätta.\n" "Kommentarer kommer att skrivas till valt fält, då etiketter läses kommer " "valt fält att föredras." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Föredraget totalt antal spår nummeretikettfält för ogg vorbis och flac filer:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Totalt spårantal kommer att skrivas till valt fält, då etiketter läses " "kommer valt fält att föredras.\n" "Då fältet SPÅRANTAL används, kommer spårnumret och totala antalet spår att " "skrivas till samma fält åtskilda av ett snedstreck ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Föredraget etikettfält för sammanlagt skivantal för ogg vorbis och flac " "filer:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Sammanlagt skivantal kommer att skrivas till valt fält, då etiketter läses " "kommer valt fält att föredras.\n" "Då fältet SKIVANTAL används, kommer skivnumret och det totala antalet skivor " "att skrivas till samma fält åtskilda av ett snedstreck ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Använd alltid FAT-kompatibla namn på utfiler" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Ersätter en del specialtecken som '?' med '_'.\n" "Om målkatalogen finns på ett FAT-filsystem kommer FAT-kompatibla filnamn " "automatiskt att användas oberoende av detta alternativ." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Felsök" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Skriv loggfiler till disk" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Skriver loggfiler till hårddisken under konvertering.\n" "Detta kan vara användbart vid en krasch och du inte kan komma åt loggen med " "loggläsaren.\n" "Loggfiler kommer att skrivas till %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Experimentell" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Lagra tillfälliga filer i minnet om inte uppskattad storlek är större än:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Lagra inte filer som förväntas bli större än detta värde i minnet för att " "undvika växling" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Det verkar inte finnas ett monterat filsystem på /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Använd rör om möjligt" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Rör gör temporära filer överflödiga, därför ökas prestandan.\n" "En del bakändar förorsakar dock fel så var försiktig." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Avkodare" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Kodare" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Flytta %1 ett steg uppåt" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Flytta %1 ett steg nedåt" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Om %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "CD rippare" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Använd insticksprogram:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filter" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Aktivera insticksprogram:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioriteringar" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Konfigurera insticksprogram för format:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Visa möjliga optimeringar" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Du har ändrat de aktuella inställningarna.\n" "Vill du spara dem?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Inställningar ändrade" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Detta kommer att välja de bästa bakändarna för alla format och omedelbart " "spara de nya instaällningarna.\n" "\n" "Vill du fortsätta?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Alla bakändesinställningar verkar vara optimerade, det finns inget att göra." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Sparar omslag till målkatalog" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Spara inbäddade omslag till målkatalog" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Alltid" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Bara om inbäddning av omslag i utfilerna inte är möjligt" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Aldrig" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Filnamn för omslaget (då det sparas till målkatalog)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Beskrivning av inbäddat omslag" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Standardnamn för omslagsfiler" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Standardnamn för omslagsfiler:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Följande strängar är wildcards som kommer att bytas ut\n" "av information i metadatan:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Omslagsbeskrivning\n" "%r - Omslagsroll" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Inställningar" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Allmänt" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Omslag" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Bakändar" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Användargränssnitt" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Startläge:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Enkelt" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Detaljerat" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Standardprofil:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Standardformat:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Konvertering" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Konflikthantering:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Generera nytt filnamn" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Hoppa över fil" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Gör detta om utfilen redan finns" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Antal filer att konvertera på en gång:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Du bör inte sätta antalet högre än antalet processorkärnor.\n" "Antal upptäckta processorkärnor %1." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Tillämpa album gain för konverterade filer" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Behåll låtar från samma album i fillistan för att tillämpa album gain på " "alla filer." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Replay Gain-verktyg" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Gruppera filer i Replay Gain-verktyget enligt:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Albumetiketter och kataloger" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Bara albumetiketter" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Bara kataloger" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Antal poster att bearbeta på en gång:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Få fil" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Kopierar \"%1\" till \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Inga fler bakändar att prova :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Konverterar" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Konvertering misslyckades. Åtminstone en bakände som används måste " "konfigureras rätt." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Konvertering misslyckades. Föredraget insticksprogram saknar stöd för " "nödvändig egenskap." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Konvertering misslyckades. Okänt fel." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Rippar" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Avkodar" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Tillämpar filter" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Kodar" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Hoppar över Replay Gain, Album Gain räknas ut senare" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Tillämpar Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Skriver etiketter" #: convert.cpp:542 msgid "Running user script" msgstr "Kör användarskript" #: convert.cpp:567 msgid "Executing next step" msgstr "Verkställer nästa steg" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Läsning av etiketter lyckades" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Kunde inte läsa etiketter" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Tar bort: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Ett fel inträffade. Felkod: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Konvertering misslyckades. Exit code: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "CD spår %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "CD spår %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Lägger till nytt objekt till konverteringslista: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Hämtade log ID: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Spår nummer: %1, enhet: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Möjliga konverteringsstrategier:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Filsystemtyp: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Ett fel inträffade, utfilens storlek är mindre än en procent av infilens" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Konverteringen misslyckades, försöker igen. Exit code: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Tar bort delvis konverterad utfil" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Normal avslutning" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Lyckades men problem inträffade" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Avbruten av användaren" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Bakänden behöver konfigureras" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Inte tillräckligt utrymme på utenheten" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Filen finns redan" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Ett fel inträffade" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Verkställer kommando: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Tar bort fil från konverteringslistan. Exit code %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Konverteringstid" #: convert.cpp:1183 msgid "Output file size" msgstr "Utfilsstorlek" #: convert.cpp:1184 msgid "File size ratio" msgstr "Filstorleksförhållande" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Okänd" #: convert.cpp:1325 msgid "Filter" msgstr "Filter" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Förlopp: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave är ett väldigt enkelt ljudformat som inte komprimerar ljudströmmen så " "det är förlustfritt men filstorleken är mycket stor och det stöder inte " "avancerade funktioner som etiketter.
Det stöds av nästan alla program " "och apparater.

http://en." "wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) är ett förstörande och populärt ljudformat. Det " "används ofta av Apple Inc.
I soundKonverter refererar \"aac\" bara till " "omkodaren. För att få en fil som kan etiketteras använd \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) är ett förstörande och populärt ljudformat. Det " "används ofta av Apple Inc.
I soundKonverter refererar \"m4a/aac\" till en " "MPEG-4 ljudfil kodad med AAC.

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) är ett förlustfritt ljudformat. Det " "används ofta av Apple Inc.
I soundKonverter \"m4a/alac\" refererar till " "en MPEG-4 ljudfil kodad med ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis är ett förstörande och populärt ljudformat.
Det är fritt från " "juridiska restriktioner.

http://en.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus är ett förstörande ljudformat utformat för realtidskommunikation över " "Internet.
Det klarar många bithastigheter med hög kvalitet och är fritt " "från juridiska restriktioner.

http://en.wikipedia.org/wiki/Opus (audio format)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 eller MPEG-2 Audio Layer III (MP3) är det populäraste förstörande " "ljudformatet.
Det stöds av nästan alla ljudspelare även om det har en del " "juridiska restriktioner.

http://en.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) är ett förlustfritt ljudformat.
Det är " "fritt från juridiska restriktioner.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) är ett förstörande ljudformat utvecklat av " "Microsoft.

http://en.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 or AC-3 är en del av Dolby Digitals formatfamilj.
Det utvecklades för " "att användas för filmer (DVD) och stödjer surroundljud.

http://en.wikipedia.org/wiki/" "Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) är ett gammalt förstörande ljudformat." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) används huvudsakligen för " "talkomprimering för mobilkommunikation.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) är en avancerad version av AMR NB som " "använder högre datahastighet vilket resulterar i högre kvalitet.
Trots " "det ska det bara användas för talkompression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio är ett förlustfritt ljudformat.

http://en.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex är ett förstörande ljudformat utformat för talkodning.
Det är fritt " "från juridiska restriktioner. Sedan Opus släppts, anses Speex föråldrat." "

http://en.wikipedia." "org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) är ett fritt och förstörande filformat baserat på mp2 och " "optimerat för hög kvalitet.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) är ett fritt och förlustfritt ljudformat.

http://en.wikipedia.org/wiki/" "Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) är ett fritt och förlustfritt ljudformat.

http://en.wikipedia.org/wiki/" "WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) är en ljudfilformatstandard utvecklad av " "Electronic Arts för Commodore-Amiga datorserien.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) är ett mycket enkelt ljudformat som " "inte komprimerar ljudströmmen så det är förlustfritt men filstorleken är " "mycket stor och det stödjer inte avancerade funktioner som " "etiketter

http://en.wikipedia.org/wiki/Audio " "Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Dödar processen på användarens begäran" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "För att koda %1-filer, behöver du installera '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "För att avkoda %1-filer, behöver du installera '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "För att koda om %1-filer, behöver du installera '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "För att beräkna Replay Gain-etiketter för %1-filer, behöver du installera " "'%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' bör tillhandahållas av din distribution." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Eftersom '%1' inkluderar patenterade omkodare kanske det inte finns i " "standardinstallationen av din distribution. Många distributioner erbjuder " "'%1' i extraförråd." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Du kan ladda ner '%1' via %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "För att använda filtret %1, behöver du installera '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "För att använda filtren %1, behöver du installera '%2'." #: filelist.cpp:48 msgid "State" msgstr "Status" #: filelist.cpp:49 msgid "Input" msgstr "Inmating" #: filelist.cpp:50 msgid "Output" msgstr "Utmatning" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Kvalitet" #: filelist.cpp:79 msgid "Edit options..." msgstr "Redigera alternativ..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Starta konvertering" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Stoppa konvertering" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Ta bort" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "soundKonverter känner inte till denna filtyp.\n" "Du kanske behöver installera ett insticksprogram till soundKonverter.\n" "Du bör söka i pakethanteraren för din distribution för detta." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... och %1 fler filer" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Kommer att hoppas över" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Väntar" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Väntar på Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Stoppad" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Bakänden är inte konfigurerad" #: filelist.cpp:593 msgid "Disc full" msgstr "Disken full" #: filelist.cpp:603 msgid "Failed" msgstr "Misslyckades" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Konverteringen misslyckades.\n" "Läs loggfilen för mer information." #: filelist.cpp:630 msgid "CD track %1" msgstr "CD spår %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Vill du skriva över den aktuella fillistan?\n" "\n" "Om inte kommer den sparade fillistan att utökas." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identifierare" #: logger.cpp:91 msgid "Log ID" msgstr "Logg ID" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Loggning slutförd" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Loggläsare" #: logviewer.cpp:28 msgid "Update" msgstr "Uppdatering" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Spara till fil..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Loggfil:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "soundKonverters programlogg" #: logviewer.cpp:127 msgid "Save log file" msgstr "Spara loggfil" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Filen finns redan. Vill du verkligen skriva över den?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Skrivning till fil misslyckades.\n" "Kanske har du inte skrivrättigheter." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter är en front för diverse ljudkonverterare, Replay Gain-verktyg " "och CD-rippare.\n" "\n" "Rapportera buggar: https://bugs.launchpad.net/soundkonverter\n" "eller skicka ett mail till: hessijames@gmail.comSkicka synpunkter på " "översättningen till tp-sv@listor.tp-sv.se" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Nuvola ikontema" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Amarokutvecklarna" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Alla programmerare av ljudkonverterare" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Öppna Replay Gain-verktyget och lägg till valda filer" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "Lista alla spår på CD-spelaren , 'auto' söker efter cd" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Lägg till alla filer med angiven profil" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Lägg till alla filer med angivet format" #: main.cpp:36 msgid "Output all files to " msgstr "Spara alla filer till " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Starta soundKonverter osynligt" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "Starta konvertering direkt (aktiverat då '--invisible' används)" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Stäng soundKonverter då alla filer konverterats (aktiverat då '--invisible' " "används)" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "Utför då varje fil är konverterad (%i=infil, %o=utfil)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Ljudfil(er) att bifoga fillistan" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Oklassificerad" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "32x32 PNG filikon" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Filikon" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Framsida" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Baksida" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Broschyrsida" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "CD-foto" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Bild på huvudartist" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Bild på artist" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Bild på dirigent" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Bild på band" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Bild på kompositör" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Bild på låtskrivare" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Bild på inspelningsplats" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Bild på artisterna under inspelning" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Bild på artisterna under framförande" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Bild från video" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Bild på en stor, färgglad fisk" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Illustration med samband med spåret" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Bandlogotyp" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Utgivarens logotyp" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Lägg till CD spår" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Välj CD spår" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Ange konverteringsalternativ" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artist:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Olika artister" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Kompositör:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Olika kompositörer" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Disk Nr.:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "av" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "År:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Genre:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Rippa" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Spår" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artist" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Kompositör" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Titel" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Längd" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Spelare" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Inget spår valt" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Titel:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Kommentar:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Välj önskade utalternativ och klicka \"Ok\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Spara metadata..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Sök i CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Rippa CD till en enda fil" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Rippning av cd till en enda fil stöds inte av installerade bakändar.\n" "Möjliga lösningar listas nedan.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Rippning av cd till en enda fil stöds inte av installerade bakändar.\n" "Kontrollera din distributions pakethanterare för att installera ytterligare " "insticksprogram som stöder rippning till en enda fil." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Fortsätt" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Ok" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Avbryt" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Välj CD-ROM spelare" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Flera CD-ROM spelare hittades. Välj en:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "DVD-brännare" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "CD-brännare" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "DVD-spelare" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "CD-spelare" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): Ljud CD med %3 spår" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Okänd" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Vänta, försöker ladda ner CDDB data ..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Välj CDDB Post" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Flera CDDB poster hittades. Välj en:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Alla spår" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Spår" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Välj minst ett spår för att fortsätta." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Inga konverteringsalternativ valda." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "En fil med detta namn finns redan.\n" "\n" "Vill du skriva över existerande fil?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Filen finns redan" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Lägg till mapp" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Välj katalog" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Katalog:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Lägg bara till valda filformat:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Saknar du några filformat?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Välj alla" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Välj ingen" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Rekursiv" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Om vald kommer filer från undermappar att läggas till." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Lägg till filer" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1-filer" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Alla filer som stöds" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Alla filer" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Lägg till spellista" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Följande filer kunde inte hittas:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Filer hittades inte" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Lägg till url" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Ange url" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "Den Url du angav är ogiltig. Försök igen. " #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Format:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Använd insticksprogram:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destination:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Beräkna Replay Gain etiketter" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Spara aktuella alternativ som en profil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Ladda sparade profiler" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Replay Gain stöds inte för %1 filformatet.\n" "Möjliga lösningar listas nedan." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Replay Gain stöds inte för %1 filformatet.\n" "Sök i pakethanteraren för din distribution för att installera ett " "insticksprogram för Replay Gain." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Replay Gain etiketter kan säga till din musikspelare hur högt ett spår är\n" "så att den kan anpassa volymen för att spela alla spår lika starkt." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Att använda aktuella konverteringsinställningar skapar %1-filer per minut." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Ny profil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Ange ett namn för den nya profilen:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Du kan inte spara en profil utan namn." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Profilnamnet är tomt" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Du kan inte skriva över inbyggda profiler." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Profil finns redan" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "En profil med detta namn finns redan.\n" "\n" "Vill du skriva över befintlig profil?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Föregående" #: optionseditor.cpp:42 msgid "Next" msgstr "Nästa" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Redigera konverteringsalternativ" #: optionseditor.cpp:74 msgid "Tags" msgstr "Etiketter" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Omslag:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Redigera" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Spår Nr.:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Redigera etiketter" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Ingen fil vald" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Etiketterna kunde inte läsas därför att detta inte är en lokal fil.\n" "soundKonverter försöker läsa etiketterna vid konverteringen av filen.\n" "Om du vill redigera etiketterna, klicka på knappen nedan, men soundKonverter " "kommer då inte att\n" "försöka läsa etiketterna efter nedladdning." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Läsning av denna fils etiketter misslyckades.\n" "soundKonverter försöker läsa etiketterna en andra gång då filen " "konverteras.\n" "Om du vill redigera etiketterna, klicka på knappen nedan, men soundKonverter " "kommer då inte att\n" "försöka läsa etiketterna en andra gång." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Omslagstyp:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Beskrivning:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Storlek:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pixlar (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Mime typ:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1-Filer" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Du har valt filer med olika konverteringsalternativ.\n" "Du kan ändra alternativen för alla filer genom att trycka på knappen nedan." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Läsning av etiketter på en eller flera filer misslyckades.\n" "soundKonverter försöker läsa etiketterna igen då filerna konverteras.\n" "Om du vill redigera etiketterna trycker du på knappen nedan men " "soundKonverter kommer då\n" "inte att försöka läsa etiketterna igen." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Kvalitet:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Ta bort vald profil" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Information" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Information om vald profil" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Information om valt filformat" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Fler format..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Tillval:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Att koda filer med mycket låg kvalitet kan vara användbart om du har en " "mobil enhet där ditt lagringsutrymme är begränsat.\n" "Det är inte att rekommendera att spara din musik i denna kvalitet utan en " "kopia med högre kvalitet." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Att koda filer med låg kvalitet kan vara användbart om du har en mobil enhet " "där ditt lagringsutrymme är begränsat.\n" "Det är inte att rekommendera att spara din musik i denna kvalitet utan en " "kopia med högre kvalitet." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Att koda filer med mediumkvalitet är en kompromiss mellan kvalitet och " "filstorlek.\n" "De flesta hör nog ingen stor skillnad jämfört med originalfilerna men du bör " "bara använda det för att spara musik om ditt lagringsutrymme är begränsat." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Koda filer med hög kvalitet är ett bra val om du har tillräckligt med " "lagringsutrymme. Du kan använda detta för att spara din musik." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Koda musik med mycket hög kvalitet är bra om du har tillräckligt " "lagringsutrymme." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Lagra filer förlustfritt bevarar originalfilens kvalitet.\n" "Det är bara användbart om originalfilen är av god kvalitet (ljud-CD).\n" "Filstorleken blir stor, så du bör bara använda det om du har tillräckligt " "lagringsutrymme." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Du kan definiera din egen profil under fliken \"detaljerat\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Detta är en användardefinierad profil." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Profilinformation för %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Vill du verkligen ta bort profilen: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Ta bort profil?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Formatinformation för %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Tyvärr, ingen tillgänglig formatinformation." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Genom metadata" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Källkatalog" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Bestäm målkatalog" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Kopiera katalogstruktur" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Välj en målkatalog" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Öppna målkatalogen med Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Okänd artist" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Okänt album" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Ingen kommentar" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Okänd genre" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Okänd kompositör" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Okänd titel" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "ny" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Namnge alla konverterade filer enligt det angivna mönstret" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Följande strängar är wildcards som kommer att ersättas\n" "med information från metadatan:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Kommentar\n" "%d - Disk nummer\n" "%g - Genre\n" "%n - Spår nummer\n" "%p - Kompositör\n" "%t - Titel\n" "%y - År\n" "%f - Ursprungligt filnamn\n" "\n" "Du kan sätta parentes runt wildcard och hakparentes runt tecken intill ('[' " "och ']')\n" "så ignorereas de om ersättningsvärdet är tomt.\n" "För att använda hakparentes måste du omge den med omvänt snedstreck ('\\[' " "och '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "Spara alla konverterade filer i samma katalog som originalfilerna" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Spara alla konverterade filer i angiven katalog" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Kopiera hela katalogstrukturen for alla konverterade filer" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Metod:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Bitrate" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Bitrate:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Ytterligare kodningsargument" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "" "Aktivera experimentella omkodare i konfigurationsdialogrutan för ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Kompilera ffmpeg med %1 stöd." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Konfigurera %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Aktivera experimentella omkodare" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Starta om soundKonverter för att aktivera ändringarna." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Kompressionsnivå:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Använd SoundFont-fil:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "För att konvertera mididata till wave-typ behöver du en SoundFont som ändrar " "mididata till ljudeffekter.\n" "Titta i %1 för att få SoundFont-filer." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "FluidSynth är inte konfigurerat än. Du måste ställa in en SoundFont-fil." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Förinställning:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Medium" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Standard" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Extrem" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Galen" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Ange bitrate" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Koda med konstant bitrate.\n" "Fungerar bara med 80, 96, 112, 128, 160, 192, 224, 256 och 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Snabbkodning" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Använd en snabbare kodningsalgoritm (leder till något sämre utkvalitet)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Bitrate-inställning:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Varierande" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Genomsnittlig" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Konstant" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Kompressionsnivå från 9 till 0 där 0 är den högsta kvaliteten.\n" "(Ju högre kvalitet, desto långsammare konvertering och tvärtom.)\n" "Värdet 2 rekommenderas." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Denna förinställning ger nästan transparens för de flesta för den mesta " "musik (~150 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Denna förinställning är i allmänhet transparent för de flesta för den mesta " "musik\n" "och ger redan hög kvalitet (~230 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Om du har extremt god hörsel och utrustning, ger denna förinställning i " "allmänhet\n" "något högre kvalitet än standardinställningen (~280 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Denna förinställning är onödig för de flesta i nästan alla lägen, men om du " "måste ha\n" "den absolut högsta kvaliteten utan hänsyn till filstorlek är detta rätt läge " "(320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Kvalitetsnivå från 9 till 0 där 0 är den högsta kvaliteten.\n" "(Ju högre kvalitet, desto större filstorlek och tvärtom.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Stereoläge:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automatisk" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Joint stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Enkel stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Tvingad Joint stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dual mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Omkring %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME är en fri MP3 kodare med hög kvalitet.\n" "Du kan hämta den på: http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Aktivera experimentell omkodare i libav dialogfönstret." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Kompilera libav med &1 stöd." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Miniatyrbild" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Hjärndöd" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "Använd antingen en av MusePacks förinställningar eller dina egna." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "låg kvalitet (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "låg/medium kvalitet (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "medium kvalitet (~130 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "hög kvalitet (~180 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "utmärkt kvalitet (~210 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "utmärkt kvalitet (~240 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "utmärkt kvalitet (~270 kbps abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "Du kan ladda ner '%1' på '%2' efter det du fyllt i en e-postadress." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "'%1' finns ofta i paketet '%2' som bör skeppas med din distribution." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Okopplade kanaler" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Använd en monoström per kanal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame är en fri MP2 kodare.\n" "Du kan hämta den på: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Kvalitetsnivå från -50 till 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "'%1' finns ofta i paketet '%2' som kan laddas ner på %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Snabb" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Hög kvalitet" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Mycket hög kvalitet" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalisera" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Aktivera experimentella omkodare i sox dialogfönstret." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Kompilera sox med %1 stöd." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Samplingsfrekvens ändra kvalitet:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Snabbt" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Kvalitetsnivå från 9 till 0 där 0 är den högsta kvaliteten." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Effekt:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Inaktiverad" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Ta bort denna effekt" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Lägg till" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Lägg till en annan effekt" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalisera:\n" "Ändra volymen så alla filer har samma ljudstyrka" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Bas:\n" "Förstärk låga frekvenser" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Diskant:\n" "Förstärk höga frekvenser" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Samplingsfrekvens:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Samplingsstorlek:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Kanaler:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Använd etikettformat:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Ändra ljudström" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Skriv gain-justeringar direkt till kodad data. På det sättet fungerar " "justeringar med alla mp3 spelare.\n" "Ångra ändringarna är fortfarande möjligt eftersom korrigeringsdata också " "kommer att skrivas." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "För att rippa ljud-cd:ar spår för spår eller till en enda fil, måste du " "installera 'cdparanoia'.\n" "'cdparanoia' skeppas oftast med din distribution, paketnamnet kan växla." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Hastighet" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Återstående tid" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Färdig" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Fil" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Fäll ihop allt" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Expandera alla" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Flytta till nytt album" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Några spår kan inte läggas till albumet eftersom antingen omkodaren eller " "samplingsfrekvensen är annorlunda." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Nytt album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Replay Gain misslyckades. Bakändan som används behöver ställas in rätt." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Replay Gain misslyckades. Det föredragna insticksprogrammet saknar stöd för " "en nödvändig funktion." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Replay Gain misslyckades. Okänt fel." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Replay Gain misslyckades. Exit code: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Lägger till nytt objekt till Replay Gain bearbetar lista: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain för %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Möjlig Replay Gain i bakändar:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Överhoppad" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Lägg till mapp..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Lägg till filer..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Tvinga omräkning" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Räkna om Replay Gain-etiketter för filer som redan har Replay Gain etiketter " "satta." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Etikettera oetiketterade" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Beräkna Replay Gain-etiketter för alla filer på listan utan Replay Gain-" "etiketter." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Ta bort etiketter" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Ta bort Replay Gain-etiketter från alla filer i fillistan." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Stäng" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Det finns fortfarande Replay Gain-jobb som kör.\n" "Vill du verkligen avbryta dem?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Detta är soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Kompilerat med TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Läsa/skriva omslag stöds inte för ogg/METADATA_BLOCK_PICTURE, flac och asf/" "wma filer. TagLib 1.7 behövs för det." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Tar bort gammal fil: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Se loggar..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Replay Gain-verktyg..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Om insticksprogram..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Lägg till CD-spår..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Lägg till url..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Lägg till spellista..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Ladda fillista" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Spara fillista" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Starta" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Stopp" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Stoppa omedelbart" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Stoppa då pågående konvertering är slutförd" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Fortsätt då pågående konverteringar är slutförda" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Ingen Cd-enhet hittades" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Verktyg" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Påvel Nicklasson" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "pavel@frimix.se" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Ljudfilkonverterare, CD-rippare och Replay Gain-verktyg" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Rippa ljud CD med soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/es.po0000644000175000001440000000013212255310032017361 xustar000000000000000030 mtime=1387630618.301839305 30 atime=1387630618.272839668 30 ctime=1387631578.284421736 ./soundkonverter-2.0.5/po/es.po0000644000175000001440000032140612255310032017002 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # A Kanashiro, 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: HessiJames \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/soundkonverter/" "language/es/)\n" "Language: es\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Sobre los plugins" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Plugins instalados:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Sobre el plugin %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Tipo de plugin: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Binarios externos:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (encontrado en: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (no encontrado)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Codecs soportados:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Actualmente desactivado." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Codificar: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Decodificar: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Configurar %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Soluciones para problemas de binarios externos" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Ha instalado o eliminado binarios externos y sus configuraciones de " "soundKonverter pueden ser optimizadas." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Para codificar archivos %1, el binario '%2' puede ser reemplazado con .'%3'" #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Para decodificar archivos %1, el binario '%2' puede ser reemplazado por '%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Para aplicar Replay Gain en los archiivos %1, el binario '%2' puede ser " "reemplazado por '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignorar" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Corregir" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter no pudo encontrar los paquetes que faltan.⏎ Si le falta algún " "formato archivo, deberá instalar un plugin adicional con el administrador de " "paquetes de su distribución." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Algún de los plugins instalados no está funcionando.⏎ Las posibles " "soluciones se listan debajo." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Algunos archivos no se pueden codificar.⏎ Las posibles soluciones se listan " "debajo." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Replay Gain no está soportado por algunos archivos.⏎ Las posibles soluciones " "se listan debajo." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "La extracción de CDs no está soportada por ninguno de los plugins instalados." "⏎ Consulte en el administrador de paquetes de su distribución para poder " "extraer CDs con soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "La extracción de CDs no está soportada porque faltan los binarios para ello." "⏎ Las posibles soluciones se listan debajo." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Posibles soluciones para %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "ó" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Archivos afectados" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Último usado" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Alta" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "cubierta" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Interna" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Muy baja" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Baja" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Media" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Muy alta" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Sin pérdida" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Híbrido" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Definido por el usuario" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Convertir con soundKonverter" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Agregar Replay Gain con soundKonverter" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Avanzado" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Extensión preferida para archivos ogg vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Campo de comentario preferido para archivos ogg vorbis y flac:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Siempre usar nombre de archivos compatibles con FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Reemplazar algunos caracteres especiales como '?' por '_'.⏎ Si el directorio " "de salida está en un sistema de archivo FAT, se usarán nombres de archivos " "compatibles con FAT automáticamente independientemente de esta opción." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Depurar" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Escribir registro al disco" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Escribir registros al disco rígido mientras se convierte.⏎ Ésto puede ser " "útil si ocurre una falla y no puede acceder al registro usando un visor de " "registro.⏎ Los registros se escribirán en %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Experimental" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Guardar archivos temporarios en memoria a menos que el tamaño estimado sea " "más que:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "No almacenar los archivos que sean mayores que este valor en memoria para " "evitar swapping." #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Parece que no hay sistema de archivo montado en /dev/shm" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Usar tubería cuando sea posible" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Las tuberías son necesarias cuando se usan archivos temporales, mejorando el " "rendimiento.⏎ Pero algunos binarios causan errores cuando se usa este modo, " "por lo tanto debe ser cuidadoso." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Decodificador" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Codificador" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Mover %1 una posición arriba" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Mover %1 una posición abajo" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Acerca de %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Extractor de CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Usar plugin:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtros" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Habilitar plugins:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioridades" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Configurar prioridades de plugin para el formato:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Mostrar optimizaciones posiles" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Ha modificado las configuraciones actuales.\n" "¿Desea guardarlas?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Configuraciones modificadas" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "Todos los binarios parecen estar bien, no hay nada que hacer." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Guardar cubiertas al directorio de salida" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Almacenar cubiertas embebidas en el directorio de salida" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Siempre" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Sólo embeber las cubiertas si no es posible" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Nunca" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "" "Nombre de archivo para la cubierta (cuando se guarda en el directorio de " "salida)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Descripción de la cubierta embebida" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Nombre de archivo de cubierta por defecto" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Nombre de archivo de cubierta por defecto:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Las siguientes líneas son comodines para ser reemplazados por la información " "en los metadatos:⏎ ⏎ %a - Artista ⏎ %b - Álbum %d - Descripción de " "cubierta ⏎ %r - Tipo de cubierta" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Configuraciones" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "General" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Arte de cubierta" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Binarios" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Usar interface" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Iniciar en Modo:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Simple" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Detallado" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Perfil por defecto:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Formato por defecto:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Conversión" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Manejo de conflicto:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Generar nuevo nombre de archivo" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Saltar archivo" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Hacer ésto si el archivo de salida ya existe" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Número de archivos para convertir a la vez:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Este número no debería ser mayor que la cantidad de núcleos de procesador " "disponibles.⏎ Se detectaron %1 núcleos de procesador." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Aplicar ganancia de álbum a los archivos convertidos" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Mantener las canciones del mismo álbum esperando en la lista de archivos " "para poder aplicarle ganancia de álbum a todas ellas." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Herramienta Replay Gain" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Agrupar archivos en la herramienta Replay Gain por:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Etiquetas y directorios de álbum" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Sólo etiquetas de álbum" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Sólo directorios" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Número de ítems a procesar a la vez:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Obteniendo archivo" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Copiando \"%1\" a \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "No quedan más binarios para probar :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Convirtiendo" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Falló la conversión. Al menos uno de los binarios utilizados debe " "configurarse apropiadamente." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Falló conversión. El plugin preferido carece de soporte para la " "característica necesitada." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Falló conversión. Error desconocido." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Extrayendo" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Decodificando" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Aplicando filtro" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Codificando" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Saltando Replay Gain, la ganancia de álbum se calculará más tarde" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Aplicando Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Escribiendo etiquetas" #: convert.cpp:542 msgid "Running user script" msgstr "Ejecutando script de usuario" #: convert.cpp:567 msgid "Executing next step" msgstr "Ejecutando próximo paso" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Etiquetas leídas correctamente" #: convert.cpp:715 msgid "Unable to read tags" msgstr "No se pueden leer etiquetas" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Eliminando: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Ocurrió un error. Código de error: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Falló la conversión. Código de salida: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Pista %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Pista %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Agregando nuevo ítem a la lista de conversión: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Obtenido ID de registro: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Número de pista: %1, dispositivo: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Estrategias de conversión posibles:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Tipo de sistema de archivo: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Ocurrió un error, el tamaño del archivo de salida es menor que el uno por " "ciento del archivo de entrada" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Falló la conversión, probando de nuevo. Código de salida: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Eliminando el archivo de salida convertido parcialmente" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Salida normal" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Abortado por usuario" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Ejecutable necesita configuración" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "No hay suficiente espacio en el dispositivo de salida" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "El archivo ya existe" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Ocurrió un error" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Ejecutando comando: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Eliminando archivo de la lista de conversión. Código de salida %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Tiempo de conversión" #: convert.cpp:1183 msgid "Output file size" msgstr "Tamaño del archivo de salida" #: convert.cpp:1184 msgid "File size ratio" msgstr "Razón de tamaño de archivo" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Desconocido" #: convert.cpp:1325 msgid "Filter" msgstr "Filtro" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Progreso: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis es un codec libre de audio de alta calidad con pérdida.
Está " "libre de cualquier restricción legal.

http://en.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) es un codec libre de audio sin pérdida." "
Es libre de cualquier restricción legal.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex es un codificador con pérdida libre diseñado para codificación de voz " "de baja calidad.
Está libre de cualquier restricción. Debido a la " "aparición de Opus, Speex se considera obsoleto

http://en.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) es un formato libre con pérdida basado en mp2 y optimizado " "para alta calidad.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) es un formato de audio libre sin pérdida.

http://en.wikipedia.org/wiki/" "WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Matando proceso a pedido de usuario" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Para codificar los archivos %1, necesita instalar '%2'" #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Para decodificar los archivos %1, necesita instalar '%2'" #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Para transcodificar los archivos %1, necesita instalar '%2'" #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Para calcular las etiquetas Replay Gain de los archivos %1, necesita " "instalar '%2'" #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' debería venir con sus distribución" #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Como '%1' incluye codecs patentados, es posible que no estén incluidos por " "defecto en su distribución. Muchas distribuciones proveen '%1' en un " "repositorio adicional." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Puede bajar '%1' en '%2'" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Para usar el filtro %1, debe instalar '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Para usar los filtros %1, debe instalar '%2'." #: filelist.cpp:48 msgid "State" msgstr "Estado" #: filelist.cpp:49 msgid "Input" msgstr "Entrada" #: filelist.cpp:50 msgid "Output" msgstr "Salida" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Calidad" #: filelist.cpp:79 msgid "Edit options..." msgstr "Editar opciones..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Iniciar conversión" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Detener conversión" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Eliminar" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Este tipo de archivo es desconocido por soundKonverter.\n" "Deberá instalar un plugin adicional para soundKonverter.\n" "Consulte en el administrador de paquetes de su distribución." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... y %1 archivos más" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Será saltado" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Esperando" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Esperando para Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Detenido" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Binario no configurado" #: filelist.cpp:593 msgid "Disc full" msgstr "Disco lleno" #: filelist.cpp:603 msgid "Failed" msgstr "Falló" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "Falló la conversión.⏎ Mire el registro para más inforamción." #: filelist.cpp:630 msgid "CD track %1" msgstr "Pista %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "¿Desea sobrescribir la lista de archivos actual?⏎ ⏎ Si no, el archivo se " "agregará a la lista." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identificador" #: logger.cpp:91 msgid "Log ID" msgstr "ID de registro" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Finalizado el registro" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Visor de registro" #: logviewer.cpp:28 msgid "Update" msgstr "Actualizar" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Guardar a archivo..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Registro:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Registro de aplicación de soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Guardar registro" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Archivo ya existe. ¿Desea sobrescribirlo?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "Falló escritura de archivo.⏎ Tal vez no posee permiso de escritura." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter es una interfase para varios conversores de audio, " "herramientas Replay Gain y extractores de CD.⏎ ⏎ Registre los errores en " "https://bugs.launchpad.net/soundkonverter ⏎ o simplemente envíeme un correo " "a hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "Daniel Faust" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Tema de íconos Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Desarrolladores de Amarok" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Todos los programadores de conversores de audio" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Abrir la herramienta Replay Gain y agrear todos los archivos" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" "Listar todas las pistas de la unidad , 'auto' buscará el cd" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Agregar todos los archivos usando el perfil dado" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Agregar todos los archivos usando el formato dado" #: main.cpp:36 msgid "Output all files to " msgstr "Volcar todos los archivos al " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Iniciar soundKonverter invisible" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Iniciar la conversión inmediatamente (habilitado cuando se usa '--invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Cerrar soundKonverter después de que todos los archivos sean convertidos " "(habilitado cuando se usa '--invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Ejecutar después de que cada archivo sea convertido (%i = archivo " "de entrada, %o = archivo de salida)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Archivo(s) de audio para agregar a la lista" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Sin clasificar" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "ícono PNG de 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Ícono" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Cubierta de tapa" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Contratapa" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Folleto" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Foto del CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Imagen del artista principal" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Imagen de artista" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Imagen del director" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Imagen de la banda" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Imagen del compositor" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Imagen del letrista" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Imagen del lugar de grabación" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Imagen de los artistas durante la grabación" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Imagen de los artistas durante la ejecución" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Imagen a partir de un video" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Imagen de un pez, grande y colorido" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Ilustración relacionada con la pista" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Logo de la banda" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Logo del sello" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Agregar pistas" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Elegir pistas" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Configurar opciones de conversión" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Artista:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Varios Artistas" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Compositor:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Varios Compositores" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Álbum:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Disco Nro.:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "de" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Año:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Género" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Extraer" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Pista" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Artista" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Compositor" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Título" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Duración" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Reproductor" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "No hay pistas seleccionadas" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Título:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Comentario:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Elija el directorio de salida y haga click en \"Ok\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Guardar archivo cue ..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Buscar CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Extraer el CD entero en un solo archivo" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Extraer el CD en un solo archivo no está soportado por los binarios " "instalados.⏎ Las posibles soluciones se listan debajo.⏎\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "La extracción de CD a un solo archivo no está soportada por los binarios " "instalados.⏎ Verifique con el administrador de paquetes de su distribución " "para poder instalar un plugin adicional que soporte extracción a un solo " "archivo." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Proceder" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Ok" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Cancelar" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Elegir unidad de CD-ROM" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Se han encontrado múltiples unidades de CD-ROM. Por favor elija una." #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Grabador de DVD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Grabador de CD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Reproductor de DVD" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Reproductor de CD" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): Audio CD con %3 pistas" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Desconocido" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Por favor espere, intentando bajar la información CDDB" #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Elija una entrada CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Se encontraron múltiples entradas CDDB. Elija una:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Todas las pistas" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Pistas" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Por favor seleccione al menos una pista para proceder." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "No se eligieron opciones de conversión." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "Ya existe un archivo con ese nombre.⏎ ⏎ ¿Desea sobrescribirlo?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Ya existe el archivo" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Agregar carpeta" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Elegir directorio" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Directorio:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Sólo agregar los formatos de archivo seleccionados:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "¿No le está faltando algún formato de archivo?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Seleccionar todos" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Seleccionar uno" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Recursivo" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "" "Si está seleccionado, los archivos del subdirectorio también se agregarán." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Agregar archivos" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 archivos" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Todos los archivos soportados" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Todos los archivos" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Agregar lista de reproducción" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "No se encontraron los siguientes archivos: \n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "No se encontraron archivos" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Agregar url" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Ingresar url" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "La Url que ingresó es inválida. Intente de nuevo." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Formato:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Usar Plugin:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Destino:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Calcular etiquetas Replay Gain" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Guardar opciones actuales como un perfil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Cargar perfiles guardados" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Replay Gain no está soportado por el formato %1.⏎ Las posibles soluciones se " "listan debajo." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Replay Gain no está soportado para el formato %1.⏎ Verifique con el " "administrador de paquetes de su distribución para poder instalar un plugin " "adicional de Replay Gain." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Se crearán archivos usando las opciones actuales de conversión en %1 por " "minuto." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Nuevo perfil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Ingrese nombre para el nuevo perfil:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "No puede guardar un perfil sin un nombre" #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Nombre de perfil vacío" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "No puede sobrescribir los perfiles predefinidos." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Ya existe perfil" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "Ya existe un perfil con ese nombre.⏎ ⏎ ¿Desea sobrescribir ese perfil?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Previo" #: optionseditor.cpp:42 msgid "Next" msgstr "Siguiente" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Editar opciones de conversión" #: optionseditor.cpp:74 msgid "Tags" msgstr "Etiquetas" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Cubiertas:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Editar" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Pista Nro.:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Editar etiquetas" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Ningún archivo seleccionado" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "No se pudieron leer las etiquetas porque no es un archivo local.⏎ " "soundKonverter tratará de leer las etiquetas cuando esté por convertir el " "archivo.⏎ Si desea editar las etiquetas, puede pulsar el botón de abajo pero " "entonces soundKonverter no va a tratar⏎ de leer las etiquetas después de " "bajarlas." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Falló al leer las etiquetas de uno o más archivos. soundKonverter tratará de " "leer las etiquetas en un segundo intento, cuando esté por convertir los " "archivos. Si desea editar las etiquetas, cliquee en el botón de abajo pero " "soundKonverter no tratará de leer las etiquetas por segunda vez." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Tipo de cubierta:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Descripción" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Tamaño:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 píxeles (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Tipo Mime:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 Archivos" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Ha seleccionado múltiples archivos con diferentes opciones de conversión. " "Puede cambiar las opciones de todos los archivos pulsando el botón de abajo." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Calidad:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Eliminar el perfil seleccionado" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Info" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Información sobre el perfil elegido" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Información sobre el formato de archivo elegido" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Más formatos..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Opcional" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Puede definir su propio perfil en la solapa \"Detallada\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Este es un perfil definido por el usuario." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Información de perfil para %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "¿Realmente quiere eliminar el perfil: %1?" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "¿Eliminar perfil?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Información de formato para %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Lo siento, la información de formato no está disponible." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Por metadatos." #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Directorio origen" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Especificar directorio de salida" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Copiar la estructura de directorio" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Elegir un directorio de salida" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Abrir el directorio de salida con Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Artista Desconocido" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Álbum Desconocido" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Sin Comentarios" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Género Desconocido" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Compositor Desconocido" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Título Desconocido" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "nuevo" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Llamar a todos los archivos convertidos según patrón especificado" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Las siguientes cadenas son comodines que serán reemplazados por la " "información en los metadatos:\n" "\n" "%a - Artista\n" "%b - Álbum\n" "%c - Comentario\n" "%d - Número de disco\n" "%g - Género\n" "%n - Número de pista\n" "%p - Compositor\n" "%t - Título\n" "%y - Año\n" "%f - Nombre del archivo original\n" "\n" "Puede encerrar estos comodines y caracteres alrededor con corchetes ('[' " "and ']') para que éstos sean ignorados cuando el valor a reemplazar sea " "vacío.\n" "Para ésto debe usar caracteres de escape de la siguiente forma ('\\[' and " "'\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" "Volcar todos los archivos convertidos en el mismo directorio que los " "archivos originales" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "" "Volcar todos los archivos convertidos en el directorio de salida especificado" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "" "Copiar toda la estructura de directorio para todos los archivos convertidos" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Modo:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Tasa de bits" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Tasa de bit:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Argumentos adicionales del codificador:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Habilitar codecs experimentales en la configuración de ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Compilar ffmpeg con soporte %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Configurar %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Habilitar codecs experimentales" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Reinicie soundKonverter para activar cambios." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Nivel de compresión:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Usar archivo SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Para poder convertir datos midi a formato wave necesita SoundFont para que " "mapee la información midi a efectos de sonido.\n" "Fíjese en %1 para obtener los archivos SoundFont." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "FluidSynth no está configurado todavía. Necesita un archivo SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Predefinido:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Medio" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Estándar" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Extremo" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Demente" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Especificar tasa de bi" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Codificar usando tasa de bit constante.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Codificación rápida" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Usar un algoritmo de codificación rápida (implica menor calidad de salida)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Modo de tasa de bit:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variable" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Media" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Constante" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Nivel de calidad de 9 a 0 donde 0 es la mayor calidad.\n" "(Cuanto mayor sea la calidad, más lenta será la conversión y viceversa).\n" "Se recomienda un valor de 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Este preajuste debería proveer un sonido transparente para la mayoría de los " "casos (~150 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Este preajuste debería ser transparente para la mayoría de los casos y ya es " "una calidad bastante alta (~230 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Si posee un equipo de buena calidad de audio, este preajuste proveerá un " "calidad ligeramente mayor que el modo estándar (~280 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Este preajuste es exagerado para la mayoría de la gente en la mayoría de los " "casos, pero si desea obtener la mayor calidad sin importar el tamaño de " "archivo, esta es la manera de hacerlo (320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Nivel de calidad de 9 a 0 donde 0 es la mayor calidad.\n" "(Cuanto mayor sea la calidad, más grande será el archivo y viceversa)." #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Modo stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automático" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Simple Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Forced Joint Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dual Mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Sobre %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME codificador de MP3 gratis de alta calidad.\n" "Lo puede obtener de: http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Teléfono" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Muerte cerebral" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "O utiliza los ajustes de MusePack o los suyos." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "calidad baja (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "calidad baja/media (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "calidad media (~130 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "calidad alta (~180 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "calidad excelente (~210 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "calidad excelente (~240 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "calidad excelente (~270 kbps abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "Puede bajar '%1' en '%2' después de ingresar la dirección de correo." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' usualmente está en el paquete '%2' que debería venir con su " "distribución." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Canales desacoplados" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame es un codificador de MP2 libre.\n" "Lo puede obtener de: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Nivel de calidad de -50 a 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "'%1' usualmente está en el paquete '%2' que se puede bajar en %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Rápido" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Alta calidad" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Muy alta calidad" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalizar" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Compilar sox con soporte %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Rápido" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Efecto:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Deshabilitado" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Eliminar este efecto" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Agregar" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Agrear otro efecto" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalizar:\n" "Cambiar el volumen para que todos los archivos tengan el mismo volumen" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Bajo:\n" "Amplificar bajas frecuencias" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Agudos:\n" "Amplificar altas frecuencias" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Tasa de muestra:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Tamaño de muestra:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Canales" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Usar formato de etiqueta:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Para poder extraer cds pista por pista o a un solo archivo, tiene que " "instalar 'cdparanoia'.⏎ 'cdparanoia' usualmente viene en su distribución, " "aunque el nombre del paquete puede variar." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Velocidad:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Tiempo disponible:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Finalizado" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Archivo" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Álbum" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Colapsar todo" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Expandir todo" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Mover a nuevo Álbum" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Nuevo álbum" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Replay Gain falló. El binario utilizado necesita estar configurado " "apropiadamente." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Replay Gain falló. El plugin preferido carece del soporte para la " "característica necesaria." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Replay Gain fallo. Error Desconocido." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Replay Gain falló. Código de salida: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain para %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Salteado" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Agregar carpeta..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Agregar archivos..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Forzar recálculo" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Etiqueta sin etiquetar" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Quitar etiqueta" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "" #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Cerrar" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Ésto es soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Compilado con TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Eliminado archivo viejo: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Ver registros..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Herramienta Replay Gain ..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Sobre plugins..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Agregar pistas..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Agregar url..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Agregar listas de reproducción..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Cargar lista de archivo" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Guardar lista de archivos" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Iniciar" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Detener" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Detener una vez que las conversiones estén finalizadas" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Continuar después que las conversiones actuales estén finalizadas" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "No se encontró unidad de CD" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Herramientas" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Sus nombres" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "Sus emails" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "" "Conversor de archivos de audio, extractor de CD y herramienta Replay Gain" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Extraer audio CD con soundKonverter" ./soundkonverter-2.0.5/po/PaxHeaders.25599/de.po0000644000175000001440000000013012255310032017340 xustar000000000000000029 mtime=1387630618.35983858 29 atime=1387630618.33583888 30 ctime=1387631578.285421723 ./soundkonverter-2.0.5/po/de.po0000644000175000001440000034541012255310032016764 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # softmetz , 2013 # HessiJames , 2010-2011,2013 # HessiJames , 2011-2012 # stefanniedermann , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: HessiJames \n" "Language-Team: German (http://www.transifex.com/projects/p/soundkonverter/" "language/de/)\n" "Language: de\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Über Plugins" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Installierte Plugins:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Über Plugin %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Plugin-Typ: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Backend-Binärdateien:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (gefunden unter: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (nicht gefunden)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Unterstützte Codecs:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Momentan deaktiviert." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Kodieren: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Dekodieren: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "%1 einrichten ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Lösungen für Backend-Probleme" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Sie haben Backends installiert oder deinstalliert und Ihre soundKonverter-" "Einstellungen können optimiert werden." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Um %1 Dateien zu kodieren kann das Backend '%2' durch '%3' ersetzt werden." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Um Audio-CDs zu rippen kann das Backend '%1' durch '%2' ersetzt werden." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "" "Um %1 Dateien zu dekodieren kann das Backend '%2' durch '%3' ersetzt werden." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Um Replay Gain für %1 Dateien zu berechnen kann das Backend '%2' durch '%3' " "ersetzt werden." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Ignorieren" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Beheben" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter konnte keine fehlenden Pakete erkennen.\n" "Falls Sie einige Dateiformate vermissen, müssen Sie möglicherweise ein " "zusätzliches Plugin mit dem Paketmanager ihrer Distribution installieren." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Einige der installierten Plugins funktionieren nicht.\n" "Mögliche Lösungen sind unten aufgeführt." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Einige Dateien können nicht Dekodiert werden.\n" "Mögliche Lösungen sind hierunter aufgelistet." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Replay Gain wird für einige Dateien nicht unterstützt.\n" "Mögliche Lösungen sind hierunter aufgelistet." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Das Rippen von Audio CDs wird von keinem installierten Plugin unterstützt.\n" "Bitte schauen sie im Paketmanager ihrer Distribution nach einem CD-Ripper " "Plugin für soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Das Rippen von Audio CDs wird momentan aufgrund von fehlenden " "Zusatzprogrammen nicht unterstützt.\n" "Mögliche Lösungen sind hierunter aufgelistet." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Mögliche Lösungen für %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "oder" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Betroffene Dateien:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Zuletzt benutzt" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Hoch" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "cover" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Intern probieren" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Sehr niedrig" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Niedrig" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Mittel" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Sehr hoch" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Verlustfrei" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Hybrid" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Benutzerdefiniert" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Mit soundKonverter konvertieren" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Replay Gain mit soundKonverter hinzufügen" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Erweitert" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Bevorzugte Endung für ogg vorbis Dateien:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Bevorzugtes Kommentar Feld für ogg vorbis Dateien:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Einige Programme benutzen das Feld DESCRIPTION obwohl das Feld COMMENT " "korrekt ist.\n" "Kommentar werden in das ausgewählte Feld geschrieben, beim Einlesen von " "Metadaten wird das ausgewählte Feld bevorzugt." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Bevorzugtes Metadaten-Feld für die Gesamtzahl der Stücke für ogg vorbis und " "flac Dateien:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Die Gesamtzahl der Stücke wird in das ausgewählte Feld geschrieben. Beim " "Einlesen wird das ausgewählte Feld bevorzugt.\n" "Wenn das Feld TRACKNUMBER ausgewählt wird, werden die Stücknummer und die " "Gesamtzahl der Stücke in das selbe Feld geschrieben - getrennt durch einen " "Schrägstrich ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Bevorzugtes Metadaten-Feld für die Gesamtzahl der CDs für ogg vorbis und " "flac Dateien:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Beim Einlesen wird das ausgewählte Feld bevorzugt.\n" "Wenn das Feld DISCNUMBER ausgewählt wird, werden die CD-Nummer und die " "Gesamtzahl der CDs in das selbe Feld geschrieben - getrennt durch einen " "Schrägstrich ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Benutze immer FAT kompatible Ausgabe-Dateinamen" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Ersetze einige Sonderzeichen wie '?' durch '_'.\n" "Wenn das Ausgabeverzeichnis auf einem FAT Dateisystem liegt werden " "unabhängig von dieser Option automatisch FAT kompatible Dateinamen verwendet." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Fehlersuche" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Protokoll-Dateien auf die Festplatte schreiben" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Protokoll-Dateien während der Konvertierung auf die Festplatte schreiben.\n" "Dies kann nützlich sein, wenn es zu einem Absturz kommt und Sie die " "Protokolle daher nicht durch den Protokoll-Betrachter einsehen können.\n" "Protokoll-Dateien werden unter %1 gespeichert." #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Experimentell" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Speichere temporäre Dateien im Arbeitsspeicher wenn die geschätzte Größe " "kleiner ist als:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Speichere keine Dateien im Arbeitsspeicher, die größer sind als dieser Wert, " "um Auslagerungen zu vermeiden" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Es scheint kein Dateisystem auf /dev/shm eingehängt zu sein" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Benutze Pipes wenn möglich" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Pipes machen das Benutzen von temporären Dateien überflüssig und erhöhen " "daher die Performance.\n" "Allerdings kann es zu Problemen mit manchen Backends führen, seien Sie also " "vorsichtig." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Dekodierer" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Kodierer" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Replay Gain" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "%1 eine Position nach oben verschieben" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "%1 eine Position nach unten verschieben" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "Über %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "CD-Ripper" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Benutze Plug-In:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filter" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Plug-Ins aktivieren:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioritäten" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Konfiguriere Plugin-Prioritäten für das Format:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Mögliche Optimierungen anzeigen" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Sie haben die aktuellen Einstellungen verändert.\n" "Möchten Sie sie speichern?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Einstellungen geändert" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Dies wird für alle Formate die besten Backends auswählen und sofort " "speichern.\n" "\n" "Möchten Sie fortfahren?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Alle Backend-Einstellungen scheinen optimal zu sein, es gibt nichts zu tun." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Cover im Ausgabeverzeichnis speichern" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Eingebette Cover im Ausgabeverzeichnis speichern" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Immer" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Nur wenn das Einbetten der Cover nicht möglich ist" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Niemals" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Dateiname für das Cover (beim Speichern im Ausgabeverzeichnis)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Die eingebettete Cover-Beschreibung" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Der Standard Cover-Dateiname" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Standard Cover-Dateiname:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Die folgenden Zeichenketten sind Platzhalter, sie werden durch die " "Informationen in den Metadaten ersetzt:\n" "\n" "%a - Interpret\n" "%b - Album\n" "%d - Cover-Beschreibung\n" "%r - Cover-Rolle" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Einstellungen" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Grundlagen" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Cover-Bilder" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Backends" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Benutzeroberfläche" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Starte in Modus:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Einfach" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Detailiert" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Standard-Profil:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Standard-Format:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Konvertierung" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Konflikt-Behandlung:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Neue Dateinamen generieren" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Datei überspringen" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Tue dies, wenn die Ausgabe-Datei bereits existiert" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Anzahl von Dateien, die auf einmal konvertiert werden:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Sie sollten diese Zahl nicht höher setzen als die Anzahl der vorhanden " "Prozessorkernen.\n" "Es wurden %1 Prozessorkerne gefunden." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Album Gain zu konvertierten Dateien hinzufügen" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Lieder des selben Albums in der Dateiliste warten lassen, um Album Gain für " "alle Dateien berechnen zu können." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Replay Gain Werkzeug" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Gruppiere Dateien im Replay Gain Werkzeug anhand von:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Album-Tags und Verzeichnissen" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Nur Album-Tags" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Nur Verzeichnissen" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Anzahl von Dateien, die auf einmal verarbeitet werden sollen:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Hole Datei" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Kopiere \"%1\" nach \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Keine weiteren Backends zum Ausprobieren übrig :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Konvertiere" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Konvertierung fehlgeschlagen. Mindestens ein Backend muss erst noch " "eingerichtet werden." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Konvertierung fehlgeschlagen. Dem bevorzugten Plugin fehlt eine notwendige " "Funktion." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Konvertierung fehlgeschlagen. Unbekannter Fehler." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Rippe" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Dekodiere" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Wende Filter an" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Kodiere" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "Überspringe Replay Gain, Album Gain wird später berechnet" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Bereche Replay Gain" #: convert.cpp:515 msgid "Writing tags" msgstr "Schreibe Metadaten" #: convert.cpp:542 msgid "Running user script" msgstr "Führe Benutzer-Skript aus" #: convert.cpp:567 msgid "Executing next step" msgstr "Führe nächsten Schritt aus" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Metadaten erfolgreich gelesen" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Metadaten konnten nicht gelesen werden" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Entferne: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Es trat ein Fehler auf. Fehlercode: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Konvertierung fehlgeschlagen. Beendigungscode: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "CD Stück %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "CD Stück %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Füge neues Element zur Konvertierungsliste hinzu: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Protokoll-ID: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Stücknummer: %1, Gerät: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Mögliche Konvertierungsstrategien:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Dateisystem-Typ: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Es trat ein Fehler auf, die Ausgabedatei ist weniger als ein Prozent der " "Eingabedatei groß" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "" "Konvertierung fehlgeschlagen, versuche es erneut. Beendigungscode: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Entferne teilweise konvertierte Ausgabedateien" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Normale Beendigung" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Erfolgreich, jedoch traten Probleme auf" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Vom Benutzer abgebrochen" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Backend muss konfiguriert werden" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Nicht genügend Speicherplatz auf dem Ausgabegerät" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Datei existiert bereits" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Es trat ein Fehler auf" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Führe Befehl aus: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Entferne Datei von der Konvertierungsliste. Beendigungscode %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Konvertierungszeit" #: convert.cpp:1183 msgid "Output file size" msgstr "Ausgabe-Dateigröße" #: convert.cpp:1184 msgid "File size ratio" msgstr "Dateigrößen-Quotient" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Unbekannt" #: convert.cpp:1325 msgid "Filter" msgstr "Filter" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Fortschritt: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave ist ein sehr einfaches Audio-Format, das den Audio-Stream nicht " "komprimiert, so dass dieser verlustlos, die Dateigröße aber sehr hoch ist. " "Wave unterstützt keine weitern Features wie Tags.
Es wird von annähernd " "jeder Software und Gerät unterstützt.

http://de.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) is ein verlustbehaftetes und populäres Audio-" "Format. Es wird stark von Apple Inc. genutzt.
In soundKonverter wird mit " "\"aac\" der Codec bezeichnet. Um eine Datei mit Metadaten zu erhalten, " "verwenden Sie \"m4a/aac\".

http://de.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) is ein verlustbehaftetes und populäres Audio-" "Format. Es wird stark von Apple Inc. genutzt.
In soundKonverter wird mit " "\"m4a/aac\" eine MPGE-4 Datei, welche mit AAC kodiert wurde, bezeichnet." "

http://de.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) is ein verlustfreies Audio-Format. Es wird " "stark von Apple Inc. genutzt.
In soundKonverter wird mit \"m4a/alac\" " "eine MPGE-4 Datei, welche mit ALAC kodiert wurde, bezeichnet.

http://de.wikipedia.org/wiki/" "Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis ist ein verlustbehaftetes und bekanntes Audio-Format.
Es ist " "frei von jeglichen rechtlichen Beschränkungen.

http://de.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus ist ein verlustbehaftetes Audio-Format, das für Echtzeitkommunikation " "über das Internet designt wurde.
Es kann eine große Reichweite von " "Bitraten mit einer hohen Qualität abdecken und ist frei von rechtlichen " "Beschränkungen.

http://de.wikipedia.org/wiki/Opus (Audioformat)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 oder MPEG-2 Audio Layer III (MP3) ist das beliebteste " "verlustbehaftete Audio-Format.
Trotz einiger rechtlicher Beschränkungen " "wird es von annähernd allen Musikspielern unterstützt.

http://de.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossles Audio Codec (FLAC) ist ein verlustloses Audio-Format.
Es ist " "frei von allen rechtlichen Beschränkungen.

http://de.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) ist ein verlustbehaftetes Audio-Format, das von " "Microsoft entwickelt wird.

http://de.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 oder AC-3 ist Teil der Dolby Digital Format-Familie.
Es wurde für die " "Verwendung in Filmen (z.B. DVDs) entworfen und unterstützt surround sound." "

http://de." "wikipedia.org/wiki/Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 oder MPeg-2 Audio Layer II (MP2) ist ein altes verlustbehaftetes " "Audio-Format.

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) ist ein hauptsächlich für " "Sprachkompression beim Mobil-Kommunikation genutztes Audio-Format.

http://" "en.wikipedia.org/wiki/Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) ist eine erweiterte Version von AMR " "NB, die eine höhere Datenrate für eine höhere Qualität benutzt.
Dennoch " "sollte es nur für Sprachkompressionen genutzt werden.

http://en." "wikipedia.org/wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio ist ein verlustfreies Audio-Format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex ist ein verlustbehaftetes Audio-Format, das für Sprach-Enkodierung " "designt ist.
Es ist frei von rechtlichen Beschränkungen. Seit der " "Veröffentlichung von Opus wird Speex als veraltet betrachtet.

http://de.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) ist ein freies verlustbehaftetes Datei-Format, das auf MP2 " "basiert und für hohe Qualität optimiert wurde.

http://de.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) ist ein freies und verlustloses Audio-Format.

http://de.wikipedia.org/wiki/" "Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) ist ein freies und verlustloses Audio-Format.

http://de.wikipedia.org/" "wiki/True_Audio" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) ist ein freies und verlustloses Audio-Format.

http://de.wikipedia.org/wiki/" "Wavpack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) ist ein von Electronic Arts entwickelter Audio-" "Format Standard für die Commodore-Amiga Computer.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) ist ein sehr simples Audio-Format, " "welches die Audio-Daten nicht komprimiert. Es ist daher verlustfrei, die " "Dateien sind jedoch auch sehr groß und erweiterte Funktionen, wie Metadaten, " "werden nicht unterstützt.

http://de.wikipedia.org/wiki/Audio " "Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Beende Prozess auf Wunsch des Benutzers" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Um %1 Dateien kodieren zu können, müssen Sie '%2' installieren." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Um %1 Dateien dekodieren zu können, müssen Sie '%2' installieren." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Um %1 Dateien transkodieren zu können, müssen Sie '%2' installieren." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Um Replay Gain Tags für %1 Dateien berechnen zu können, müssen Sie '%2' " "installieren." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' sollte mit ihrer Distribution ausgeliefert werden." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Da '%1' patentierte Codecs beinhaltet ist es wahrscheinlich nicht in der " "Standardinstallation ihrer Distribution enthalten. Viele Distributionen " "stellen '%1' jedoch in einer zusätzlichen Paketquelle zur Verfügung." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "Sie können '%1' unter %2 herunterladen" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Um den Filter %1 verwenden zu können müssen Sie '%2' installieren." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Um die Filter %1 verwenden zu können müssen Sie '%2' installieren." #: filelist.cpp:48 msgid "State" msgstr "Status" #: filelist.cpp:49 msgid "Input" msgstr "Eingabe" #: filelist.cpp:50 msgid "Output" msgstr "Ausgabe" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Qualität" #: filelist.cpp:79 msgid "Edit options..." msgstr "Optionen bearbeiten ..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Konvertierung starten" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Konvertierung stoppen" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Entfernen" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "soundKonverter kennt diesen Dateityp nicht.\n" "Vielleicht müssen Sie noch zusätzliches Plugin installieren.\n" "Dazu sollten Sie im Paketmanager ihrer Distribution nachschauen." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... und %1 weitere Dateien" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Wird übersprungen" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Warte" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Warte auf Replay Gain" #: filelist.cpp:583 msgid "Stopped" msgstr "Gestoppt" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Backend nicht konfiguriert" #: filelist.cpp:593 msgid "Disc full" msgstr "Datenträger voll" #: filelist.cpp:603 msgid "Failed" msgstr "Fehlgeschlagen" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Die Konvertierung ist fehlgeschlagen.\n" "Schauen Sie ins Protokoll für weitere Information." #: filelist.cpp:630 msgid "CD track %1" msgstr "CD-Stück %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Möchten Sie die aktuelle Dateiliste ersetzen?\n" "\n" "Wenn nicht, wird die gespeicherte Dateiliste angehängt." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "t" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "s" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identifikator" #: logger.cpp:91 msgid "Log ID" msgstr "Protokoll-ID" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Protokollieren beendet" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Protokoll-Betrachter" #: logviewer.cpp:28 msgid "Update" msgstr "Aktualisieren" #: logviewer.cpp:31 msgid "Save to file..." msgstr "In Datei speichern ..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Protokoll-Datei:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "soundKonverter Protokoll" #: logviewer.cpp:127 msgid "Save log file" msgstr "Protokoll-Datei speichern" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Datei existiert bereits. Möchten Sie diese wirklich überschreiben?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Speichern fehlgeschlagen.\n" "Vielleicht haben Sie keine Schreibberechtigungen." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter ist eine Oberfläche für verschiedene Audio-Konverter, Replay " "Gain Werkzeuge und CD-Ripper.\n" "\n" "Bitte erstellen Sie Fehlerberichte unter https://bugs.launchpad.net/" "soundkonverter\n" "oder senden Sie mir einfach eine E-Mail an hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Nuvola Icon Thema" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Amarok Entwickler" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Alle Programmierer von Audio-Konvertern" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Öffne das Replay Gain Werkzeug und füge alle gegeben Dateien hinzu" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" "Liste alle Stücke auf CD Laufwerk auf, 'auto' sucht nach einer CD" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Füge alle Dateien mit dem gegebenen Profil hinzu" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Füge alle Dateien mit dem gegebenen Format hinzu" #: main.cpp:36 msgid "Output all files to " msgstr "Gebe alle Dateien ins Verzeichnis aus" #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Starte soundKonverter unsichtbar" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Fange sofort an zu konvertieren (aktiviert wenn '--invisible' benutzt wird)" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Schließe soundKonverter, sobald alle Dateien konvertiert wurden (aktiviert " "wenn '--invisible' benutzt wird)" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Führe nach jeder Konvertierung aus (%i=Eingabedatei, " "%o=Ausgabedatei)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Audio Datei(en) zum Hinzufügen an die Dateiliste" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Nicht eingeordnet" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "32x32 PNG Datei Icon" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Datei Icon" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Frontseitencover" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Rückseitencover" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Broschürenseite" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "CD Photo" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Hauptinterpretenbild" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Interpretenbild" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Dirigentenbild" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Bandbild" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Komponistenbild" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Lyrikerbild" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Bild des Aufnahmeortes" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Bild des Interprten während der Aufnahme" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Bild des Interprten während einer Aufführung" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Bild aus einem Video" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Bild eines großen, eingefärbten Fisches" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Illustration im Zusammenhang mit dem Lied" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Bandlogo" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Herausgeberlogo" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "CD-Stücke hinzufügen" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Wähle CD-Stücke" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Wähle Konvertierungsoptionen" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Interpret:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Verschiedene Interpreten" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Komponist:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Verschiedene Komponisten" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "CD Nr.:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "von" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Jahr:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Genre:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Rippen" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Stück" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Interpret" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Komponist" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Titel" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Länge" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Player" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Keine Stücke ausgewählt" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Titel:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Kommentar:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Wählen Sie die gewünschten Ausgabe-Optionen und klicken Sie auf \"Ok\"" #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Cuesheet speichern ..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "CDDB anfordern" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Komplette CD in eine Datei rippen" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Eine komplette CD in eine Datei zu rippen wird von den installierten " "Backends nicht unterstützt.\n" "Mögliche Lösungen sind hierunter aufgelistet.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Eine komplette CD in eine Datei zu rippen wird von den installierten " "Backends nicht unterstützt.\n" "Bitte schauen Sie im Paketmanager ihrer Distribution, ob es ein Plugin gibt, " "welches das Rippen in eine Datei unterstützt." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Weiter" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "Ok" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Abbrechen" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Wähle CD-ROM-Laufwerk" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "" "Es wurden mehrere CD-ROM-Laufwerke gefunden. Bitte wählen Sie eines aus:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "DVD-Brenner" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "CD-Brenner" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "DVD-Player" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "CD-Player" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): Audio CD mit %3 Stücken" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Unbekannt" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Bitte warten, versuche CDDB-Daten herunterzuladen ..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Wähle CDDB Eintrag" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Es wurden mehrere CDDB Einträge gefunden. Bitte wählen Sie einen aus:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Alle Stücke" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Stücke" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Bitte wählen Sie mindestens ein Stück, um fortzufahren." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Keine Konvertierungsoptionen ausgewählt." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Eine Datei mit diesem Namen existiert bereits.\n" "\n" "Wollen Sie diese überschreiben?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Datei existiert bereits" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Ordner hinzufügen" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Wähle Verzeichnis" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Ordner:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Nur ausgewählte Formate hinzufügen:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Vermissen Sie einige Dateiformate?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Alle auswählen" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Keine auswählen" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Rekursiv" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "" "Wenn ausgewählt, werden auch Dateien aus Unterverzeichnissen hinzugefügt." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Dateien hinzufügen" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 Dateien" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Alle unterstützten Dateien" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Alle Dateien" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Wiedergabeliste hinzufügen" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Die folgenden Dateien konnten nicht gefunden werden:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Dateien nicht gefunden" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Url hinzufügen" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Url eingeben" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "Die eingegebene Url ist ungültig. Bitte erneut versuchen." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Format:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Benutze Plugin:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Ziel:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Berechne Replay Gain Tags" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Speichere aktuelle Optionen als Profil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Gespeicherte Profile laden" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Replay Gain wird für das %1 Dateiformat nicht unterstützt.\n" "Mögliche Lösungen sind hierunter aufgelistet." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Replay Gain wird für das %1 Dateiformat nicht unterstützt.\n" "Bitte schauen Sie im Paketmanager ihrer Distribution nach einem zusätzlichen " "Replay Gain Plugin." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Replay Gain tags können Ihrem Musik-Player mitteilen wie laut ein Stück " "ist.\n" "Dadurch kann der Player die Lautstärke anpassen und alle Stücke gleich laut " "abspielen." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Die Verwendung der aktuellen Konvertierungsoptionen wird Dateien mit einer " "Größe von etwa %1 pro Minute erzeugen." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Neues Profil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Geben Sie den Namen des neuen Profils ein:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Sie können kein Profil ohne Namen abspeichern." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Profilname ist leer" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Sie können nicht die eingebauten Profile überschreiben." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Profil existiert bereits" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Es existiert bereits ein Profil mit diesem Namen.\n" "\n" "Möchten Sie das bestehende überschreiben?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Vorherige" #: optionseditor.cpp:42 msgid "Next" msgstr "Nächste" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Bearbeite Konvertierungsoptionen" #: optionseditor.cpp:74 msgid "Tags" msgstr "Metadaten" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Cover:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Bearbeiten" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Stück Nr.:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Metadaten bearbeiten" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Keine Datei ausgewählt" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Die Metadaten konnten nicht eingelesen werden, da die Datei nicht lokal " "gespeichert ist.\n" "soundKonverter wird kurz vor dem Konvertieren die Metadaten einlesen.\n" "Wenn Sie die Metadaten bearbeiten möchen, können Sie den Knopf unten " "drücken.\n" "Aber dann wird soundKonverter nichtmehr versuchen die Metadaten nach dem " "Herunterladen einzulesen." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Die Metadaten konnten nicht eingelesen werden.\n" "soundKonverter wird kurz vor dem Konvertieren erneut versuchen die Metadaten " "einzulesen.\n" "Wenn Sie die Metadaten bearbeiten möchen, können Sie den Knopf unten " "drücken.\n" "Aber dann wird soundKonverter nichtmehr versuchen die Metadaten erneut " "einzulesen." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Cover-Typ:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Beschreibung:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Größe:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 Pixel (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Mime-Typ:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 Dateien" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Sie haben mehrere Dateien mit unterschiedlichen Konvertierungsoptionen " "ausgewählt.\n" "Sie können die Konvertierungsoptionen von allen Dateien bearbeiten, indem " "Sie den Button unten anklicken." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Die Metadaten von einer oder mehreren Dateien konnten nicht eingelesen " "werden.\n" "soundKonverter wird kurz vor dem Konvertieren erneut versuchen die Metadaten " "einzulesen.\n" "Wenn Sie die Metadaten bearbeiten möchen, können Sie den Knopf unten " "drücken.\n" "Aber dann wird soundKonverter nichtmehr versuchen die Metadaten erneut " "einzulesen." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Qualität:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Entferne das ausgewählte Profil" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Info" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informationen über das ausgewählte Profil" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informationen über das ausgewählte Format" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Mehr Formate..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Optional:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Es kann sinnvoll sein Dateien mit sehr niedriger Qualität zu komprimieren, " "wenn Sie ein mobiles Gerät mit limitiertem Speicherplatz besitzen.\n" "Es wird nicht empfohlen Musik mit dieser Qualität abzuspeichern ohne eine " "Kopie mit höherer Qualität zu besitzen." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Es kann sinnvoll sein Dateien mit niedriger Qualität zu komprimieren, wenn " "Sie ein mobiles Gerät mit limitiertem Speicherplatz besitzen.\n" "Es wird nicht empfohlen Musik mit dieser Qualität abzuspeichern ohne eine " "Kopie mit höherer Qualität zu besitzen." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Dateien bei mittlerer Qualität umzuwandeln stellt einen Kompromiss zwischen " "Qualität und Dateigröße dar.\n" "Die meisten Menschen werden keinen großen Unterschied zwischen zum Original " "hören, aber man sollte Musik nur damit speichern, wenn der verfügbare " "Speicherplatz begrenzt ist." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Dateien bei hoher Qualität umzuwandeln ist gut, wenn genügend Speicherplatz " "zur Verfügung steht. Diese Stufe eignet sich am besten um Musik zu speichern." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Dateien bei sehr hoher Qualität umzuwandeln ist gut, wenn genügend " "Speicherplatz zur Verfügung steht." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Dateien verlustfrei zu komprimieren ändert die Qualität nicht.\n" "Es ist nur dann sinnvoll, wenn die Ursprungsdatei eine hohe Qualität besitzt " "(z.B. Audio CD).\n" "Die Datei wird groß sein, daher sollte ihnen genügend Speicherplatz zu " "Verfügung stehen." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Sie können ihr eigenes Profil im \"Detailiert \" Tab definieren." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Dies ist ein benutzerdefiniertes Profil." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Profilinformationen für %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Möchten Sie wirklich das Profil '%1' entfernen?" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Profil entfernen?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Formatinformationen für %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Entschudligung, es sind keine Formatinformationen verfügbar." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Anhand Metadaten" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Ursprungsordner" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Ordner angeben" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Kopiere Ordnerstruktur" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Wähle ein Ausgabeverzeichnis" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Öffne das Augabeverzeichnis mit Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Unbekannter Interpret" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Unbekanntes Album" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Kein Kommentar" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Unbekanntes Genre" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Unbekannter Komponist" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Unbekannter Titel" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "neu" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Benenne alle konvertierten Dateien mit Hilfe der Platzhalter" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Die folgenden Zeichenketten sind Platzhalter, sie werden durch die " "Informationen in den Metadaten ersetzt:\n" "\n" "%a - Interpret\n" "%b - Album\n" "%c - Kommentar\n" "%d - CD-Nummer\n" "%g - Genre\n" "%n - Stücknummer\n" "%p - Komponist\n" "%t - Titel\n" "%y - Jahr\n" "%f - Original Dateiname\n" "\n" "Sie können diese Platzhalter und umgebende Zeichen auch mit eckigen Klammern " "('[' und ']')\n" "einklammern, dann werden sie ignoriert falls der Ersetzungswert leer ist.\n" "Um eckige Klammern zu verwenden müssen Sie ein Backslash vorranstellen " "('\\[' und '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" "Gebe alle Dateien in das selbe Verzeichnis, wie die Originaldateien aus" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Gebe alle Dateien in das angegebene Verzeichnis aus" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "" "Kopiere die komplette Verzeichnisstruktur für alle konvertierten Dateien" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Modus:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Bitrate" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Bitrate:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Zusätzliche Encoder-Argumente:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Aktivieren Sie experimentelle Codecs im ffmpeg Konfigurationsdialog." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Kompiliere ffmpeg mit %1-Unterstützung." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "%1 einrichten" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Aktiviere experimentelle Codecs" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Bitte starten Sie soundKonverter, damit die Änderungen wirksam werden." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Kompressions-Level:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Verwende SoundFont-Datei:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Um midi-Dateien in Wellenform zu konvertieren wird eine SoundFont-Datei " "benötigt, die midi-Daten mit Sound-Effekten verbindet.\n" "Schauen Sie sich %1 an, um SoundFont-Dateien zu bekommen." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "FluidSynth ist noch nicht konfiguriert. Sie müssen eine SoundFont-Datei " "auswählen." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Vorauswahl:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Mittel" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Standart" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Extrem" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Irre" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Bitrate angeben" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Kodiere mit einer konstanten Bitrate.\n" "Funktioniert nur mit 80, 96, 112, 128, 160, 192, 224, 256 und 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Schnelles Kodieren" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Benutzt einen schnelleren Kodier-Algorithmus (führt zu einer geringfügig " "schlechteren Audioqualität)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Bitraten-Modus:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Variabel" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Durchschnitt" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Konstant" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Kompressionsstufe von 9 bis 0, wobei 0 die höchste Qualität ist.\n" "(Je höher die Qualität ist, desto langsamer die Konvertierung und " "umgekehrt.)\n" "Ein Wert von 2 wird empfohlen." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Diese Vorauswahl sollte für die meißten Menschen und Musikrichtungen " "annähernd transparent sein (~150 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Diese Vorauswahl sollte für die meißten Menschen und Musikrichtungen " "transparent sein\n" "und stellt bereits eine hohe Qualität bereit (~230 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Wenn Sie ein extrem gutes Hörvermogen und entsprechends Equipment haben, " "wird diese Vorauswahl\n" "eine geringfügig höhere Qualität bereitstellen als der Standard-Modus (~280 " "kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Diese Vorauswahl wird für die meißten Menschen und Situationen mehr als " "nötig sein.\n" "Aber wenn Sie die absolut höchste Qualität, ohne Rücksicht auf die " "Dateigröße haben möchen,\n" "sollten Sie diese Vorauswahl verwenden (320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Qualitätsstufen von 9 bis 0 wobei 0 die höchste Stufe ist.\n" "(Je höher die Qualität, desto größer die Datei und umgekehrt.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Stereo-Modus:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automatisch" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Verbundenes Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Einfaches Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Erzwungenes verbundenes Stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dual Mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "Über %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME ist ein freier und hochwertiger MP3 Kodierer.\n" "Sie können ihn unter http://lame.sourceforge.net herunterladen." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "" "Aktivieren Sie experimentelle Codecs in der libav Konfigurationsdialog." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Kompiliere libav mit %1-Unterstützung." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Vorschau" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Hirntot" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" "Benutzen Sie entweder eine von MusePacks Voreinstellungen oder Ihre eigenen " "Optionen." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "Niedrige Qualität (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "Niedrige/Mittlere Qualität (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "Mittlere Qualität (~130 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "Hohe Qualität (~180 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "Hervorragende Qualität (~210 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "Hervorragende Qualität (~240 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "Hervorragende Qualität (~270 kbps abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" "Sie können '%1' unter %2 herunterladen nachdem Sie eine E-Mail-Adresse " "angegeben haben." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' ist üblicherweise im Paket '%2', welches mit ihrer Distribution " "mitgeliefert worden sein sollte." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Entkoppelte Kanäle" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Benutze einen Mono-Stream pro Kanal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame ist ein freier MP2 Kodierer.\n" "Sie können es unter http://www.twolame.org herunterladen." #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Qualitätslevel von -50 bis 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "" "'%1' ist üblicherweise im Paket '%2', welches Sie unter %3 herunterladen " "können" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Schnell" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Normal" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Hohe Qualität" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Sehr hohe Qualität" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalisieren" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Aktivieren Sie experimentelle Codecs in der sox Konfigurationsdialog." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Kompiliere sox mit %1-Unterstützung." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Qualität der Sample Rate-Änderung:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Schnell" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Qualitätslevel von 9 bis 0, wobei 0 die höchste Qualität ist." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Effekt:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Deaktiviert" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Diesen Effekt entfernen" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Hinzufügen" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Einen weiteren Effekt hinzufügen" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalisieren:\n" "Lautstärke anpassen, sodass alle Dateien die selbe Lautstärke haben" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Bass:\n" "Niedrige Frequenzen verstärken" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Treble:\n" "Hohe Frequenzen verstärken" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Sample-Rate:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Sample-Größe:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Kanäle:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Benutze Tag Format:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Modifiziere Audio-Stream" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Schreibe Lautstärken-Veränderung direkt in die Kodierten Daten. Dadurch " "funktioniert die Anpassung mit allen mp3 Spielern.\n" "Die Änderungen können weiterhin rückgängig gemacht werden, da Korrekturdaten " "geschrieben werden." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Um Audio-CDs in einzelne Dateien oder eine einzige Datei rippen zu können, " "müssen Sie 'cdparanoia' installieren.\n" "'cdparanoia' wird normalerweise mit ihrer Distribution ausgeliefert, der " "Paketname kann allerdings verschieden sein." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Geschwindigkeit:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Verbleibende Zeit:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Beendet" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Datei" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Alle zuklappen" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Alle aufklappen" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Verschiebe in neues Ablum" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Einige Titel konnten nicht zum Album hinzugefügt werden, weil entweder der " "Codec oder die Sample-Rate unterschiedlich sind." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Neues Album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Replay Gain fehlgeschlagen. Das benutzte Backend muss korrekt konfiguriert " "werden." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Replay Gain fehlgeschlagen. Dem bevorzugten Plugin fehlt die Unterstützung " "für eine benötigte Funktion." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Replay Gain fehlgeschlagen. Unbekannter Fehler." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Replay Gain fehlgeschlagen. Beendigungscode: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Füge neuen Eintrag zur Replay Gain Verarbeitungsliste hinzu: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Replay Gain für %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Mögliche Replay Gain Backends:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Übersprungen" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Verzeichnis hinzufügen ..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Dateien hinzufügen ..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Neuberechnung erzwingen" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Replay Gain Tags auch für Dateien, die bereits Replay Gain Tags besitzen, " "neu berechnen." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Replay Gain berechnen" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Berechne Replay Gain Tags für allen Dateien in der Dateiliste, welche noch " "keine Replay Gain Tags besitzen." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Replay Gain entfernen" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Entferne die Replay Gain Tags von allen Dateien in der Dateiliste." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Schließen" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Es sind noch Replay Gain Berechnungen am laufen.\n" "Möchten Sie diese wirklich abbrechen?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Dies ist soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Kompiliert mit TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Das Lesen/Schreiben von Covern wird für ogg/METADATA_BLOCK_PICTURE, flac und " "asf/wma Dateien nicht unterstützt. TagLib 1.7 wäre dazu nötig." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Lösche alte Datei: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Protokolle anzeigen ..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Replay Gain Werkzeug ..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Über Plugins ..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "CD-Stücke hinzufügen ..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Url hinzufügen ..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Wiedergabeliste hinzufügen ..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Dateiliste laden" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Dateiliste speichern" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Start" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Anhalten" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Sofort anhalten" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Anhalten, nachdem aktuelle Konvertierungen fertig sind" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Fortsetzen, nachdem aktuelle Konvertierungen fertig sind" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Kein CD-Gerät gefunden" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Werkzeuge" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Daniel Faust" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "hessijames@gmail.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Audio-Datei Konverter, CD Ripper und Replay Gain Werkzeug" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Audio-CD mit soundKonverter auslesen" ./soundkonverter-2.0.5/po/PaxHeaders.25599/et.po0000644000175000001440000000013212255310032017362 xustar000000000000000030 mtime=1387630618.412837918 30 atime=1387630618.390838193 30 ctime=1387631578.285421723 ./soundkonverter-2.0.5/po/et.po0000644000175000001440000033707412255310032017013 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # HessiJames , 2012 # Mihkel Tõnnov , 2011-2013 # Mihkel Tõnnov , 2011 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: HessiJames \n" "Language-Team: Estonian (http://www.transifex.com/projects/p/soundkonverter/" "language/et/)\n" "Language: et\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" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "Pluginate info" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Paigaldatud pluginad:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "Plugina \"%1\" info:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Plugina tüüp: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Taustprogrammid:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (leitud: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (ei leitud)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Toetatud koodekid:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Hetkel deaktiveeritud." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Kodeerimine: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Dekodeerimine: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "%1 seadistamine..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Taustprogrammi probleemide lahendused" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "On paigaldatud või eemaldatud taustprogramme ning soundKonverteri seadeid " "saab optimeerida." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "%1-failide kodeerimisel on \"%3\" parem taustprogramm kui \"%2\"." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "Audio-CD-de rippimisel on \"%2\" parem taustprogramm kui \"%1\"." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "%1-failide dekodeerimisel on \"%3\" parem taustprogramm kui \"%2\"." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Helitugevuse parandusteabe lisamisel %1-failidele on \"%3\" parem " "taustprogramm kui \"%2\"." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Eira" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Paranda" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter ei leidnud puuduvaid pakette.\n" "Kui tunned mõnest failivormingust puudust, võib olla vaja paigaldada mõni " "lisaplugin distro paketihalduri abil." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Mõned paigaldatud pluginad ei tööta.\n" "Võimalikud lahendused on toodud allpool." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Mõnede failide dekodeerimine pole võimalik.\n" "Võimalikud lahendused on toodud allpool." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Helitugevuse parandusteave pole mõnede failide puhul toetatud.\n" "Võimalikud lahendused on toodud allpool." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Ükski paigaldatud plugin ei toeta audio-CD-de rippimist.\n" "soundKonverterile CD-rippimise plugina leidmiseks vaata oma distro " "paketihaldurisse." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Audio-CD-de rippimine pole hetkel puuduvate taustprogrammide tõttu " "võimalik.\n" "Võimalikud lahendused on toodud allpool." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Võimalikud lahendused: %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "või" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Mõjutatud failid:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Viimati kasutatud" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Kõrge" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "kaanepilt" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Proovitakse sisemist" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Väga madal" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Madal" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Keskmine" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Väga kõrge" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Kadudeta" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Hübriid" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Kasutajamääratud" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Teisenda soundKonverteriga..." #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Lisa helitugevuse parandusteave..." #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Lisaseaded" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Eelistatud faililaiend Ogg Vorbise failidele:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Eelistatud kommentaarisildi väli Ogg Vorbise ja FLAC-failidele:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Mõned programmid kasutavad välja DESCRIPTION, olgugi et korrektne oleks " "COMMENT.\n" "Kommentaarid kirjutatakse siin määratud väljale ning ka siltide lugemisel " "eelistatakse sama välja." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "Eelistatud lugude koguarvu sildi väli Ogg Vorbise ja FLAC-failidele:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Lugude koguarv kirjutatakse siin määratud väljale ning ka siltide lugemisel " "eelistatakse sama välja.\n" "Kasutades välja TRACKNUMBER, kirjutatakse loo number ja lugude koguarv " "samale väljale, eraldades nad kaldkriipsuga (/)." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "Eelistatud plaatide koguarvu sildi väli Ogg Vorbise ja FLAC-failidele:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Plaatide koguarv kirjutatakse siin määratud väljale ning ka siltide " "lugemisel eelistatakse sama välja.\n" "Kasutades välja DISCNUMBER, kirjutatakse plaadi number ja plaatide koguarv " "samale väljale, eraldades nad kaldkriipsuga (/)." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "FAT-iga ühilduvate failinimede kasutamine" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Märkimisel asendadakse mõned erimärgid (nt \"?\") alakriipsudega (\"_\").\n" "Kui väljundkataloog asub FAT-failisüsteemil, kasutatakse FAT-iga ühilduvaid " "failinimesid automaatselt,\n" "sõltumata sellest, mis siin määratud on." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Silumine" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Logifailide salvestamine kettale" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Märkimisel salvestatakse teisenduslogid kõvakettale.\n" "See võib olla kasulik kokkujooksmiste korral, kui programmi enda kaudu logi " "vaadata ei saa.\n" "Logifailid kirjutatakse kataloogi \"%1\"" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Katsejärgus" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "Ajutisi faile hoitakse mälus, kui nende hinnanguline suurus on kuni" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Saalimise vältimiseks ei hoita mälus faile, mille oodatav maht on siin " "määratust suurem." #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Paistab, et /dev/shm'i ei ole ühendatud ühtegi failisüsteemi" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Võimalusel toru kasutamine" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Torud muudavad tarbetuks ajutiste failide kasutamise, kasvatades nii " "jõudlust.\n" "Ent mõned taustprogrammid teevad selles režiimis vigu, seega ole ettevaatlik." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Dekooder" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Kooder" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Helitugevuse parandus" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Liiguta \"%1\" ühe koha võrra üles" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Liiguta \"%1\" ühe koha võrra alla" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "%1i info..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "CD-rippija" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Kasutatav plugin:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Fintrid" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Lubatud pluginad:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prioriteedid" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Pluginaprioriteetide seadistamine vormingule:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Näita võimalikke täiustusi" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Seadistust on muudetud.\n" "Kas tahad uue seadistuse salvestada?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Seadistusi on muudetud" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "See valib iga vormingu jaoks parima taustprogrammi ja salvestab uue " "seadistuse ilma küsimata.\n" "\n" "Kas tahad jätkata?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Taustprogrammide seaded näivad olevat optimaalsed, pole vaja midagi teha." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Kaanepiltide salvestamine väljundkataloogi" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Põimitud kaanepiltide salvestamine väljundkataloogi" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Alati" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Ainult siis, kui põimimine väljundfailidesse pole võimalik" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Mitte kunagi" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Kaanepildi failinimi (väljundkataloogi salvestades)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Põimitud kaanepildi kirjeldus" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Kaanepildi vaikimisi failinimi" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Kaanepildi vaikimisi failinimi:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Järgnevad stringid on muutujad, mis asendatakse\n" "vastava infoga faili metaandmetest:\n" "\n" "%a - esitaja\n" "%b - album\n" "%d - kaanepildi kirjeldus\n" "%r - kaanepildi roll" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Seadistused" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Üldine" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Kaanepilt" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Taustprogrammid" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Kasutajaliides" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Käivitusrežiim:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Lihtne" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Üksikasjalik" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Vaikeprofiil:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Vaikevorming:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Teisendamine" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Konfliktide lahendamine:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Faili nimele lisatakse \"uus\"" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Fail jäetakse vahele" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Mida teha, kui väljundfaili nimega fail juba olemas on." #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Samaaegselt teisendatavate failide arv:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Seda numbrit ei tohiks sättida suuremaks protsessori tuumade arvust.\n" "Protsessoril tuvastati %1 tuuma." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Albumi lugude helivaljuse ühtlustamine teisendamisel" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Märkimisel hoitakse sama albumi lugusid faililoendis ootel, et neisse albumi " "helitugevuse parandusteave lisada." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Helitugevuse parandustööriist" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Failide rühmitamise alus helitugevuse parandustööriistas:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Albumi sildid ja kataloogid" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Ainult albumi sildid" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Ainult kataloogid" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Samaaegselt teisendatavate failide arv:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Faili hankimine" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Kopeerimine: \"%1\" -> \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Pole enam ühtki taustprogrammi proovida :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Teisendamine" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Teisendamine ebaõnnestus. Vähemalt üks kasutatud taustprogrammidest vajab " "seadistamist." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Teisendamine ebaõnnestus. Eelistatud plugin ei toeta vajalikku funktsiooni." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Teisendamine ebaõnnestus. Tundmatu viga." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Rippimine" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Dekodeerimine" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Filtri rakendamine" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Kodeerimine" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "" "Helitugevuse parandusteabe vahelejätmine, hiljem arvutatakse albumi jaoks" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Helitugevuse paranduse rakendamine" #: convert.cpp:515 msgid "Writing tags" msgstr "Metaandmete kirjutamine" #: convert.cpp:542 msgid "Running user script" msgstr "Kasutajaskripti käivitamine" #: convert.cpp:567 msgid "Executing next step" msgstr "Järgmise sammu alustamine" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Metaandmed edukalt loetud" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Siltide lugemine pole võimalik" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Eemaldamine: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Ilmnes viga. Veakood: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Teisendamine ebaõnnestus. Lõpetamise olek: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "CD rada %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "CD rada %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Uue üksuse lisamine teisendusloendisse: \"%1\"" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Logi-ID käes: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Raja number: %1, seade: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Võimalikud teisenduskavad:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Failisüsteemi tüüp: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Ilmnes viga, väljundfaili suurus on alla ühe protsendi sisendfaili suurusest" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Teisendamine ebaõnnestus, proovitakse uuesti. Lõpetamise olek: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Pooleldi teisendatud väljundfaili kustutamine" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Tavaline väljumine" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Õnnestus, aga ilmnesid probleemid" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Kasutaja katkestas" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Taustprogrammid tahavad seadistamist" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Väljundseadmel pole piisavalt ruumi" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Fail on juba olemas" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Ilmnes viga" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Käivitamine: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Faili eemaldamine teisendusloendist. Lõpetamise olek: %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Teisendusaeg" #: convert.cpp:1183 msgid "Output file size" msgstr "Väljundfaili maht" #: convert.cpp:1184 msgid "File size ratio" msgstr "Failisuuruse suhe" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Teadmata" #: convert.cpp:1325 msgid "Filter" msgstr "Filter" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Edenemine: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave on väga lihtne helifailivorming, milles helivoogu kokku ei pakita. " "Seega on see kadudeta, kuid failid on väga suured ja ei toeta lisavõimalusi " "nagu sildid.
Seda vormingut oskab mängida praktiliselt iga tarkvara ja " "seade.

http://en." "wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) on populaarne kadudega helivorming. Seda " "kasutatakse laialt Apple'i toodetes.
soundKonverteris viitab \"aac\" " "üksnes koodekile. Et saada sildistatavat faili, kasuta vormingut \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) on populaarne kadudega helivorming. Seda " "kasutatakse laialt Apple'i toodetes.
soundKonverteris viitab \"m4a/aac\" " "MPEG-4 helifailile, mis on kodeeritud AAC-ga.

http://en.wikipedia.org/wiki/" "Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) on kadudeta helivorming. Seda kasutatakse " "laialt Apple'i toodetes.
soundKonverteris viitab \"m4a/alac\" MPEG-4 " "helifailile, mis on kodeeritud ALAC-ga.

http://en.wikipedia.org/wiki/Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis on populaarne kadudega helivorming.
See on vaba igasugustest " "juriidilistest piirangutest.

http://en.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus on kadudega helivorming, mis on mõeldud reaalajasideks üle Interneti." "
See katab laia bitikiiruste vahemiku kõrge kvaliteediga ja on vaba " "igasugustest juriidilistest piirangutest.

http://en.wikipedia.org/wiki/Opus " "(audio format)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) on populaarseim kadudega helivorming." "
Seda oskab mängida praktiliselt iga muusikamängija, kuid sel on " "juriidilisi piiranguid.

http://en.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) on kadudeta helivorming.
See on vaba " "igasugustest juriidilistest piirangutest.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) on Microsofti arendatud kadudega helivorming." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 või AC-3 kuulub Dolby Digitali vorminguperre.
See loodi kasutamiseks " "filmides (nt DVD-del) ja toetab surround- ehk ruumilist heli." "

http://en." "wikipedia.org/wiki/Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 või MPEG-2 Audio Layer II (MP2) on vana kadudega helivorming." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) on kasutusel peamiselt kõne " "pakkimisel mobiilsides.

http://en.wikipedia.org/wiki/Adaptive " "Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) on AMR NB täiuslikum versioon, mis " "kasutab suuremat andmekiirust ja seega pakub kõrgemat kvaliteeti.
Siiski " "tasub seda kasutada vaid kõne pakkimiseks.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio on kaduteta helivorming.

http://en.wikipedia.org/wiki/Monkey's Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex on kadudega helivorming, mis loodi kõne kodeerimiseks.
See on vaba " "igasugustest juriidilistest piirangutest. Alates Opuse avaldamisest peetakse " "Speexi iganenuks.

http://en.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) on vaba kadudega failivorming, mis põhineb MP2-l ja on " "optimeeritud kõrge kvaliteedi jaoks.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) on vaba kadudeta helivorming.

http://en.wikipedia.org/wiki/Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) on vaba kadudeta helivorming.

http://en.wikipedia.org/wiki/TTA (codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) on vaba kadudeta helivorming.

http://en.wikipedia.org/wiki/WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) on Electronic Artsi arendatud helifailide " "standardvorming Commodore-Amiga arvutiseeriale.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) on väga lihtne helifailivorming, milles " "helivoogu kokku ei pakita. Seega on see kadudeta, kuid failid on väga suured " "ja ei toeta lisavõimalusi nagu sildid.

http://en.wikipedia.org/wiki/Audio " "Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Kasutaja soovil protsessi tapmine" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "%1-failide kodeerimiseks tuleb paigaldada \"%2\"." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "%1-failide dekodeerimiseks tuleb paigaldada \"%2\"." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "%1-failide teisendamiseks tuleb paigaldada \"%2\"." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Helitugevuse parandusteabe arvutamiseks %1-failidel tuleb paigaldada pakett " "\"%2\"." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "\"%1\" peaks distroga kaasas olema." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Kuna \"%1\" sisaldab patenditud koodekeid, ei pruugi seda sinu distroga " "vaikimisi kaasas olla.\n" "Paljude distrode puhul leidub \"%1\" mõnes lisatarkvaravaramus." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "\"%1\" on allalaaditav aadressilt %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Filtri \"%1\" kasutamiseks tuleb paigaldada \"%2\"." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Filtrite \"%1\" kasutamiseks tuleb paigaldada \"%2\"." #: filelist.cpp:48 msgid "State" msgstr "Olek" #: filelist.cpp:49 msgid "Input" msgstr "Sisend" #: filelist.cpp:50 msgid "Output" msgstr "Väljund" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Kvaliteet" #: filelist.cpp:79 msgid "Edit options..." msgstr "Muuda seadeid..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Alusta teisendamist" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Peata teisendamine" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Eemalda" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "See failitüüp on soundKonverterile tundmatu.\n" "Võimalik, et tuleks paigaldada veel mõni soundKonverteri plugin.\n" "Otsi seda oma distro paketihaldurist." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "...ja veel %1 faili" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Jäetakse vahele" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Ootel" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Helitugevuse paranduse ootamine" #: filelist.cpp:583 msgid "Stopped" msgstr "Peatatud" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Taustprogramm seadistamata" #: filelist.cpp:593 msgid "Disc full" msgstr "Ketas täis" #: filelist.cpp:603 msgid "Failed" msgstr "Ebaõnnestus" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Teisendus ebaõnnestus.\n" "Lisainfot leiab logist." #: filelist.cpp:630 msgid "CD track %1" msgstr "CD rada %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Kas tahad praeguse faililoendi asendada?\n" "\n" "Kui ei, siis salvestatud loend lisatakse praegusele." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identifikaator" #: logger.cpp:91 msgid "Log ID" msgstr "Logi ID" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Logimine lõpetatud" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Logi" #: logviewer.cpp:28 msgid "Update" msgstr "Uuenda" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Salvesta failiks..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Logifail:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "soundKonverteri rakenduselogi" #: logviewer.cpp:127 msgid "Save log file" msgstr "Logifaili salvestamine" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Selle nimega fail on juba olemas. Kas tahad olemasoleva üle kirjutada?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Faili kirjutamine ebaõnnestus.\n" "Võib-olla pole selleks piisavalt õigusi." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter on mitmete audioteisendajate, helitugevuse " "parandustööriistade ja CD-rippijate kasutajaliides.\n" "\n" "Palun esita veateated aadressil https://bugs.launchpad.net/ubuntu/+source/" "soundkonverter\n" "või lihtsalt saada e-kiri: hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Nuvola ikooniteema" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Amaroki arendajad" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Kõigi heliteisendajate loojad" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Avab helitugevuse parandustööriista ja lisab kõik antud failid" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "Loetleb kõik rajad ; 'auto' andmisel otsitakse CD'd" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Kõik failid lisatakse kasutades " #: main.cpp:35 msgid "Add all files using the given format" msgstr "Kõik failid lisatakse kasutades " #: main.cpp:36 msgid "Output all files to " msgstr "Kõik failid väljastatakse " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "soundKonverter käivitatakse peidetult" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "" "Teisendamist alustatakse otsekohe (seda tehakse ka võtme '--invisible' " "kasutamisel)" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Pärast kõikide failide teisendamist soundKonverter suletakse (seda tehakse " "ka võtme '--invisible' kasutamisel)" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Pärast iga faili teisendamist käivitatakse (%i = sisendfail, %o = " "väljundfail)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Nimekirja lisatav(ad) helifail(id)" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Määratlemata" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "32x32 px PNG-vormingus faili ikoon" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Faili ikoon" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Karbi esikülg" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Karbi tagakülg" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Voldiku lehekülg" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "CD foto" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Pilt peaesinejast" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Pilt esitajast" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Pilt dirigendist" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Pilt bändist" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Pilt heliloojast" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Pilt sõnade autorist" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Pilt lindistuskohast" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Pilt muusikutest lindistamise ajal" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Pilt muusikutest esituse ajal" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Kaader filmist/videost" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Pilt suurest värvilisest kalast" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Looga seotud illustratsioon" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Bändi logo" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Väljaandja logo" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "CD radade lisamine" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Vali CD rajad" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Määra teisendusvalikud" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Esitaja:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Mitu esitajat" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Helilooja:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Mitu heliloojat" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Plaadi nr:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "/" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Aasta:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Stiil:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Ripitav" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Lugu" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Esitaja" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Helilooja" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Pealkiri" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Pikkus" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Mängija" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Ühtki rada pole valitud" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Pealkiri:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Kommentaar:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Vali soovitud väljundseaded ja klõpsa \"OK\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Salvesta cue-fail..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "CDDB päring" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Kogu CD rippimine üheks failiks" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Paigaldatud taustprogrammid ei toeta kogu CD rippimist üheks failiks.\n" "Võimalikud lahendused on toodud allpool.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Paigaldatud taustprogrammid ei toeta kogu CD rippimist üheks failiks.\n" "Vaata, kas distro paketihalduris on saadaval rippimisplugin, mis seda toetab." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Jätka" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "OK" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Loobu" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "CD-seadme valimine" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Leiti mitu CD-seadet. Vali üks:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "DVD-kirjuti" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "CD-kirjuti" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "DVD-lugeja" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "CD-lugeja" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): audio-CD %3 rajaga" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Teadmata" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Palun oota, CDDB-st andmete allalaadimine..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "CDDB kirje valimine" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Leiti mitu CDDB-kirjet. Vali üks:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Kõik rajad" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Rajad" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Jätkamiseks vali mõni rada." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Teisendusvalikud on määramata." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Selle nimega fail on juba olemas.\n" "\n" "Kas tahad olemasoleva üle kirjutada?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Fail on juba olemas" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Kataloogi lisamine" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Vali kataloog" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Kataloog:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Lisatakse ainult järgmistes vormingutes failid:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Mõni failivorming puudu?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Vali kõik" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Ära vali midagi" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Rekursiivselt" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Märkimisel lisatakse ka failid alamkataloogidest." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Failide lisamine" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1-failid" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Kõik toetatud failid" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Kõik failid" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Esitusloendi lisamine" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Järgmisi faile ei leitud:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Leidmata failid" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "URL-i lisamine" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Sisesta URL" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "Sisestatud URL ei sobi. Proovi uuesti." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Vorming:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Kasutatav plugin:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Sihtkoht:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Helitugevuse parandussiltide arvutamine" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Salvesta need seaded profiilina" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Salvestatud profiilide laadimine" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "%1-vormingu puhul helitugevuse parandusteavet ei toetata.\n" "Võimalikud lahendused on toodud allpool." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "%1-vormingu puhul helitugevuse parandusteavet ei toetata.\n" "Otsi vajalikku pluginat oma distro paketihaldurist." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Helitugevuse parandusteabe siltidega saab muusikamängijale ette öelda,\n" "kui vali iga lugu on, et automaatselt helivaljust sättida ja mängida kõiki " "lugusid sama valjult." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "Praeguste teisendusseadetega tuleb failimahuks umbes %1 minuti kohta." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Uus profiil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Sisesta uue profiili nimi:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Profiili ei saa salvestada ilma nimeta." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Profiili nimi puudub" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Sisse-ehitatud profiile pole võimalik üle kirjutada." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Profiil on juba olemas" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Selle nimega profiil on juba olemas.\n" "\n" "Kas tahad olemasoleva üle kirjutada?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Eelmine" #: optionseditor.cpp:42 msgid "Next" msgstr "Järgmine" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Muuda teisendusvalikuid" #: optionseditor.cpp:74 msgid "Tags" msgstr "Sildid" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Kaanepildid:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Redigeeri" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Loo nr:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Redigeeri silte" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Ühtegi faili pole valitud" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Selle faili siltide lugemine polnud võimalik, sest tegu pole kohaliku " "failiga.\n" "Vahetult enne teisendamist proovib soundKonverter uuesti.\n" "Kui tahad silte käsitsi redigeerida, klõpsa alloleval nupul. Sel juhul " "pärast faili allalaadimist\n" "silte uuesti lugeda ei proovita." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Selle faili siltide lugemine ebaõnnestus.\n" "Vahetult enne teisendamist proovib soundKonverter uuesti.\n" "Kui tahad silte käsitsi redigeerida, klõpsa alloleval nupul. Sel juhul silte " "uuesti lugeda ei proovita." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Pildi tüüp:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Kirjeldus:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Suurus:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pikslit (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "MIME-tüüp:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 faili" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Valitud on mitu erinevate teisendusvalikutega faili.\n" "Kõikide failide valikute ühtseks muutmiseks klõpsa alloleval nupul." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Vähemalt ühe faili siltide lugemine ebaõnnestus.\n" "Vahetult enne teisendamist proovib soundKonverter uuesti.\n" "Kui tahad silte käsitsi redigeerida, klõpsa alloleval nupul. Sel juhul silte " "uuesti lugeda ei proovita." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Kvaliteet:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Eemalda valitud profiil" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Info" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Info valitud profiili kohta" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Info valitud failivormingu kohta" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Rohkem vorminguid..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Valikuline:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Failide kodeerimine väga madala helikvaliteediga võib olla kasulik, kui sul " "on väga piiratud mälumahuga mobiilne seade.\n" "Pole soovitatav salvestada oma muusikat sellise kvaliteediga ilma, et " "säiliks ka kõrgema kvaliteediga koopia." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Failide kodeerimine madala helikvaliteediga võib olla kasulik, kui sul on " "väga piiratud mälumahuga mobiilne seade.\n" "Pole soovitatav salvestada oma muusikat sellise kvaliteediga ilma, et " "säiliks ka kõrgema kvaliteediga koopia." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Failide kodeerimine keskmise helikvaliteediga on kompromiss kvaliteedi ja " "failisuuruse vahel.\n" "Enamik inimesi ilmselt ei kuule algsete failidega võrreldes suuremat " "erinevust, kuid muusikat tasub sellise kvaliteediga salvestada vaid siis, " "kui kettaruum on piiratud." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Failide kodeerimine kõrge helikvaliteediga on hea valik, kui sul on " "piisavalt salvestusruumi. Sellise kvaliteediga juba võib oma muusikat hoida." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Failide kodeerimine väga kõrge helikvaliteediga sobib siis, kui kettaruumi " "on piisavalt." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Failide kodeerimine ilma kadudeta säilitab algse faili helikvaliteedi.\n" "See on mõttekas üksnes juhul, kui sisend on kõrge kvaliteediga (nt heli-" "CD).\n" "Saadavad failid on väga suured, mistõttu tasub seda kasutada vaid siis, kui " "kettaruumi on piisavalt." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Omaloodud profiili saad määrata kaardil \"Üksikasjalik\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "See on kasutajamääratud profiil." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Profiili \"%1\" info" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Kas tahad kindlasti eemaldada profiili \"%1\"?" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Profiili eemaldamine" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Vormingu \"%1\" info" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Vabandust, infot vormingu kohta pole." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Metaandmete põhjal" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Lähtekataloog" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Määratud kataloog" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Kataloogipuu kopeerimine" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Vali väljundkataloog" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Ava väljundkataloog Dolphinis" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Esitaja teadmata" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Album teadmata" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Kommentaar puudub" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Stiil teadmata" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Helilooja teadmata" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Pealkiri teadmata" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "uus" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Teisendatud failid nimetatakse määratud mustri järgi." #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Järgnevad stringid on muutujad, mis asendatakse\n" "vastava infoga faili metaandmetest:\n" "\n" "%a - esitaja\n" "%b - album\n" "%c - kommentaar\n" "%d - plaadi number\n" "%g - stiil\n" "%n - loo number\n" "%p - helilooja\n" "%t - pealkiri\n" "%y - aasta\n" "%f - algne failinimi\n" "\n" "Kui panna muutujad (vajadusel koos neid ümbritsevate\n" "märkidega) nurksulgudesse (s.t \"[\" ja \"]\" vahele), siis neid\n" "eiratakse, kui vastava muutuja asendusväärtus on tühi.\n" "Et failinimedes nurksulge endid kasutada, tuleb nende ette\n" "panna kurakaldkriips (niiviisi: \"\\[\" ja \"\\]\")." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "Teisendatud failid kirjutatakse lähtefailidega samasse kataloogi." #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Teisendatud failid kirjutatakse määratud väljundkataloogi." #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Kopeeritakse teisendatud failide kogu kataloogipuu." #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Režiim:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Bitikiirus" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Bitikiirus:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Lisaargumendid kooderile:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Luba ffmpeg seadistusdialoogis katsejärgus koodekite kasutamine." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Kompileeri ffmpeg %1 toega." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "%1i seadistamine" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Katsejärgus koodekite lubamine" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Muudatuste rakendamiseks käivita soundKonverter uuesti." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Pakkimistase:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Kasutatav SoundFonti fail:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "MIDI-andmete lainekujule (wav-vormingusse) teisendamiseks on vajalik " "SoundFont, mis seob MIDI-andmed heliefektidega.\n" "SoundFonti failide saamiseks vaata aadressile %1." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "FluidSynth pole veel seadistatud. Määrata tuleb SoundFonti fail." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Eelseade:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Keskmine" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Tavaline" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Äärmuslik" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Hullumeelne" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Määratud bitikiirus" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Kodeerimisel kasutatakse konstantset bitikiirust.\n" "Töötab ainult 80, 96, 112, 128, 160, 192, 224, 256 või 320 kb/s puhul." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Kiire kodeerimine" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Märkimisel kasutatakse kiiremat (ja natuke madalama väljundkvaliteediga) " "kodeerimisalgoritmi." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Bitikiiruse režiim:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Varieeruv" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Keskmine" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Konstantne" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Pakkimistase vahemikus 9 kuni 0, kusjuures 0 on kõrgeim kvaliteet.\n" "(Mida kõrgem kvaliteet, seda aeglasem teisendus ja vastupidi.)\n" "Soovitatav väärtus on 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "See eelseade peaks olema piisav enamikule inimestest enamiku muusika jaoks " "(~150 kb/s abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "See eelseade peaks olema piisav enamikule inimestest enamiku muusika jaoks\n" "ja on juba päris kõrge kvaliteediga (~230 kb/s abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Kui sul on äärmiselt hea kuulmine ja vastav helitehnika, siis see eelseade " "pakub üldjuhul\n" "tavarežiimist veidi kõrgemat kvaliteeti (~280 kb/s abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Enamiku inimeste ja olukordade jaoks on see eelseade nagu sääsejaht " "suurtükiga, kuid kui\n" "tahad tingimata parimast parimat kvaliteeti ja ei hooli failimahust, siis on " "siin midagi sulle (320 kb/s cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Kvaliteeditase vahemikus 9 kuni 0, kusjuures 0 on kõrgeim kvaliteet.\n" "(Mida kõrgem kvaliteet, seda suuremad failid ja vastupidi.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Stereorežiim:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automaatne" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Liitstereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Lihtstereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Sunnitud liitstereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Topeltmono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "%1i info" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME on vaba kõrgekvaliteetne MP3-kooder.\n" "Saad selle aadressilt http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Luba libav seadistusdialoogis katsejärgus koodekite kasutamine." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Kompileeri libav %1 toega." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Pöial" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Raadio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Ajusurnud" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "Kasutada võib MusePacki eelseadeid või omamääratud seadeid." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "madal kvaliteet (~60 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "alla keskmise kvaliteet (~90 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "keskmine kvaliteet (~130 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "kõrge kvaliteet (~180 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "hiilgav kvaliteet (~210 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "hiilgav kvaliteet (~240 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "hiilgav kvaliteet (~270 kb/s abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "" "\"%1\" on allalaaditav aadressilt %2, kuid eeldab e-posti aadressi " "sisestamist." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "\"%1\" leidub enamasti paketis \"%2\", mis peaks distroga kaasas olema." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Paardamata kanalid" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Iga kanali jaoks kasutatakse ühte monoheliga voogu." #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame on vaba MP2-kooder.\n" "Saad selle aadressilt http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Kvaliteedi tase vahemikus -50 kuni 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "" "\"%1\" leidub enamasti paketis \"%2\", mille saab alla laadida aadressilt %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Kiire" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Tavaline" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Kõrge kvaliteet" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Ülikõrge kvaliteet" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normaliseerimine" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Luba sox'i seadistusdialoogis katsejärgus koodekite kasutamine." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Kompileeri sox %1 toega." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Diskreetimissageduse muutmiskvaliteet:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Kiire" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Kvaliteeditase vahemikus 9 kuni 0, kusjuures 0 on kõrgeim kvaliteet." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Efekt:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Keelatud" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Eemalda see efekt" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Lisa" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Lisa veel üks efekt" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normaliseerimine:\n" "muudab helitugevust nii, et kõik failid on sama valjud" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Bass:\n" "võimendab madalaid sagedusi" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Kõrged:\n" "võimendab kõrgeid sagedusi" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Diskreetimissagedus:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Diskreedisuurus:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Kanalid:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Sildivorming:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Helivoo muutmine" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Helitugevust muudetakse otse kodeeritud andmetes. Nii töötab parandus kõigis " "MP3-mängijates.\n" "Kuna kirjutatakse ka parandusteave, saab muudatused siiski tagasi võtta." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Audio-CD-de rippimiseks radade kaupa või üheks failiks tuleb paigaldada " "\"cdparanoia\".\n" "See on saadaval enamikul distrodest, kuid paketi nimi võib veidi erineda." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Kiirus:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Aeg lõpetamiseni:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Valmis" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Fail" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Ahenda kõik" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Laienda kõik" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Liiguta uude albumisse" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Mõnesid lugusid pole võimalik albumisse lisada, kuna neil on erinev vorming " "või diskreetimissagedus." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Uus album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Helitugevuse parandus ebaõnnestus. Kasutatud taustprogramm tuleb korralikult " "seadistada." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Helitugevuse parandus ebaõnnestus. Eelistatud plugin ei toeta vajalikku " "funktsiooni." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Helitugevuse parandus ebaõnnestus. Tundmatu viga." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Helitugevuse parandus ebaõnnestus. Lõpetamise olek: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Uue üksuse lisamine helitugevuse paranduse töötlusloendisse. : \"%1\"" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Helitugevuse parandus: \"%1\"" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Võimalikud helitugevuse paranduse taustprogrammid:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Jäeti vahele" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Lisa kataloog..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Lisa faile..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Kordusarvutuse sundimine" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Helitugevuse parandusteave arvutatakse uuesti ka failidele, millel juba on " "helitugevuse parandusteabe sildid." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Sildista" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Helitugevuse parandusteave arvutatakse loendi kõigile failidele, millel seda " "veel pole." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Eemalda sildid" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Helitugevuse parandusteave eemaldatakse kõigilt failidelt loendis." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Sulge" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Helitugevuse parandustööd alles käivad.\n" "Kas tahad kindlasti need katkestada?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "See on soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Kompiilitud TagLib'i versiooniga %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Kaanepiltide lugemist-kirjutamist ei toetata FLAC- ja ASF/WMA-failide ning " "ogg/METADATA_BLOCK_PICTURE puhul. Selleks on vaja TagLib'i versiooni 1.7." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Vana faili eemaldamine: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Logid..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Helitugevuse parandustööriist..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "Pluginate info..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Lisa CD-radu..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Lisa URL..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Lisa esitusloend..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Laadi faililoend" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Salvesta faililoend" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Alusta" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Katkesta" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Katkesta kohe" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Katkesta pärast praeguste teisenduste valmimist" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Jätka pärast praeguste teisenduste valmimist" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "CD-seadet ei leitud" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Tööriistad" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Mihkel Tõnnov" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "mihhkel@gmail.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "Helifailide teisendaja, CD-rippija ja helitugevuse parandustööriist" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Ripi audio-CD soundKonverteriga" ./soundkonverter-2.0.5/po/PaxHeaders.25599/sl.po0000644000175000001440000000013212255310032017370 xustar000000000000000030 mtime=1387630618.468837218 30 atime=1387630618.445837505 30 ctime=1387631578.285421723 ./soundkonverter-2.0.5/po/sl.po0000644000175000001440000033763512255310032017024 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # R33D3M33R , 2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: R33D3M33R \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/soundkonverter/" "language/sl/)\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3);\n" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "O vstavkih" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Nameščeni vstavki:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "O vstavku %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Vrsta vstavka: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Izvedljive datoteke zaledja:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (najden v: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (ni bil najden)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Podprti kodeki:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Trenutno onemogočen." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Kodiraj: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Odkodiraj: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Nastavi %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Rešitve za težave z zaledjem" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Namestili ali odstranili ste zaledja, zato so lahko vaše nastavitve " "soundKonverterja optimizirane." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "Za kodiranje datotek %1 lahko zaledje '%2' zamenjate z '%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "Za zajemanje zvočnih CD-jev lahko zaledje '%1' zamenjate z '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "Za odkodiranje datotek %1 lahko zaledje '%2' zamenjate z '%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "" "Za uveljavljanje jakosti predvajanja datotekam %1 lahko zaledje '%2' " "zamenjate z '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Prezri" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Popravi" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter ni mogel najti nobenega manjkajočega paketa.\n" "Če vam manjkajo nekatere vrste datotek, boste morda morali namestiti dodaten " "vstavek preko upravljalnika paketov za vašo distribucijo." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Nekateri od nameščenih vstavkov ne delujejo.\n" "Spodaj so naštete mogoče rešitve." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Nekaterih datotek ni mogoče odkodirati.\n" "Spodaj so naštete mogoče rešitve." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Jakost predvajanja ni podprta za nekatere datoteke.\n" "Spodaj so naštete mogoče rešitve." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Zajemanja zvočnih CD-jev ne podpira nobeden od nameščenih vstavkov.\n" "Oglejte si upravljalnik paketov vaše distribucije, da dobite vstavek za " "zajemanje CD-jev za soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Zajemanje zvočnih CD-jev trenutno ni podprto, saj manjkajo zaledja.\n" "Spodaj so naštete mogoče rešitve." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Mogoče rešitve za %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "ali" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Prizadete datoteke:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Nazadnje uporabljeno" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Visoka kakovost" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "ovitek" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Poskusi notranje" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Zelo nizka kakovost" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Nizka kakovost" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Srednja kakovost" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Zelo visoka kakovost" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Brez izgub" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Hibridna" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Uporabniško določeno" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Pretvori s soundKonverter-jem" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Dodaj jakost predvajanja s soundKonverter-jem" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Napredno" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Prednostna pripona imena datoteke za datoteke ogg vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Prednostno polje oznake opombe za datoteke ogg vorbis in flac:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Nekateri programi uporabljajo polje DESCRIPTION, čeprav je pravilno polje " "COMMENT.\n" "Opombe bodo zapisane v izbrano polje, hkrati pa bo polje prednostno tudi med " "branjem oznak." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Prednostno polje oznake skupnega števila skladb za datoteke ogg vorbis in " "flac:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Skupno število skladb bo zapisano v izbrano polje, hkrati pa bo polje " "prednostno tudi med branjem oznak.\n" "Če boste uporabili polje TRACKNUMBER, bosta tako številka skladbe kot skupno " "število skladb zapisana v enako polje, ločena z poševnico ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Prednostno polje oznake skupnega števila diskov za datoteke ogg vorbis in " "flac:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Skupno število diskov bo zapisano v izbrano polje, hkrati pa bo polje " "prednostno tudi med branjem oznak.\n" "Če boste uporabili polje DISCNUMBER, bosta tako številka skladbe kot skupno " "število skladb zapisana v enako polje, ločena z poševnico ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Vedno uporabi izhodna imena datotek združljiva s FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Zamenja nekatere posebne znake kot '?' z '_'.\n" "Če je izhodna mapa na datotečnem sistem FAT, bodo imena datotek privzeto " "združljiva s FAT, ne glede na to možnost." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Razhrošči" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Zapiši dnevnike na disk" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Zapiše dnevnike na trdi disk med pretvarjanjem.\n" "To je lahko uporabno, če pride do sesutja in ne morete dostopati do datoteke " "dnevnika s pomočjo pregledovalnika dnevnikov.\n" "Dnevniške datoteke bodo zapisane v %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Poskusno" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Shrani začasne datoteke v pomnilnik, razen če je njihova predvidena velikost " "večja od:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Ne shrani datotek, za katere pričakuje, da bodo večje od te vrednosti, v " "pomnilnik in tako prepreči uporabo počasnejšega izmenjevalnega pomnilnika." #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Izgleda, da na /dev/shm ni priklopljen noben datotečni sistem" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Uporabi cevi, če je mogoče" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Cevi odstranijo potrebo po začasnih datotekah, kar posledično izboljša " "hitrost delovanja.\n" "Vseeno bodite previdni, saj v tem načinu nekatera zaledja povzročajo napake." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Odkodirnik" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Kodirnik" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Jakost predvajanja" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Premakni %1 mest navzgor" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Premakni %1 mest navzdol" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "O %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Zajem CD-jev" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Uporabi vstavek:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtri" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Omogoči vstavke:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Prednosti" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Nastavi prednosti vstavkov za vrsto:" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Prikaži mogoče optimizacije" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Spremenili ste trenutne nastavitve.\n" "Ali jih želite shraniti?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Nastavitve so bile spremenjene" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "To bo izbralo najboljša zaledja za vse vrste in takoj shranilo nove " "možnosti.\n" "\n" "Ali želite nadaljevati?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "" "Vse nastavitve zaledij izgledajo optimalne, zato ni ničesar za narediti." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Shranjevanje ovitkov v izhodno mapo" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Shrani vgrajene ovitke v izhodno mapo" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Vedno" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Samo, če ni mogoče vgraditi ovitkov v izhodne datoteke " #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Nikoli" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Ime datoteke za ovitek (ob shranjevanju v izhodno mapo)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Opis vgrajenega ovitka" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Privzeto ime datoteke ovitka" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Privzeto ime datoteke ovitka:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Sledeči nizi so nadomestni znaki, ki bodo zamenjani\n" "s podatki v metapodatkih:\n" "\n" "%a - izvajalec\n" "%b - album\n" "%d - opis ovitka\n" "%r - vloga ovitka" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Nastavitve" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Splošno" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Ovitek" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Zaledja" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Uporabniški vmesnik" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Zaženi v načinu:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Preprost" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Podroben" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Privzeti profil:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Privzeta vrsta:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Pretvorba" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Obravnavanje sporov:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Ustvari novo ime datoteke" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Preskoči datoteko" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Naredi to, če izhodna datoteka že obstaja" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Število datotek, ki bodo pretvorjene naenkrat:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Te številke ne bi smeli nastaviti višje od količine prisotnih jeder " "procesorja.\n" "Zaznanih je bilo %1 jeder procesorja." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Uveljavi jakost predvajanja albuma za pretvorjene datoteke" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Ohrani skladbe enakega albuma v čakalni vrsti, da bo uveljavljena jakost " "predvajanja albuma za vse datoteke." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Orodje jakosti predvajanja" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Združi datoteke v orodju jakosti predvajanja:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Po oznakah albumov in mapah" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Samo po oznakah albumov" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Samo po mapah" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Število predmetov, ki bodo naenkrat obdelani:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Pridobivanje datoteke" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Kopiranje \"%1\" v \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Ni več zaledij, ki bi jih lahko preizkusili :(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Pretvarjanje" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Pretvarjanje je spodletelo. Vsaj eno uporabljeno zaledje morate pravilno " "nastaviti." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Pretvorba je spodletela. Prednostnemu vstavku manjka podpora za nujno " "zmožnost." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Pretvorba je spodletela. Neznana napaka." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Zajemanje" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Odkodiranje" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Uveljavljanje filtra" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Kodiranje" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "" "Preskakovanje jakosti predvajanja, kasneje bo izračunana jakost predvajanja " "albuma" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Uveljavljanje jakosti predvajanja" #: convert.cpp:515 msgid "Writing tags" msgstr "Zapisovanje oznak" #: convert.cpp:542 msgid "Running user script" msgstr "Zaganjanje uporabniškega skripta" #: convert.cpp:567 msgid "Executing next step" msgstr "Izvajanje naslednjega koraka" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Branje oznak je bilo uspešno" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Oznak ni bilo mogoče prebrati" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Odstranjevanje: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Prišlo je do napake. Koda napake: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Pretvorba je spodletela. Izhodna koda: %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Skladba %1 CD-ja: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Skladba %1 CD-ja" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Dodajanje novih predmetov na seznam za pretvarjanje: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Pridobljen ID dnevnika: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Številka skladbe: %1, naprava: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Mogoče strategije pretvorbe:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Vrsta datotečnega sistema: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Prišlo je do napake. Izhodna velikost datoteke je manjša kot odstotek vhodne " "velikosti datoteke." #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Pretvorba je spodletela, poskušam znova. Izhodna koda:-2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Odstranjevanje delno pretvorjene izhodne datoteke" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Običajen izhod" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Uspelo, ampak je prišlo do napak" #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Prekinil uporabnik" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Zaledje je potrebno nastaviti" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Na izhodni napravi ni dovolj prostora" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Datoteka že obstaja" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Prišlo je do napake" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Izvajanje ukaza: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Odstranjevanje datoteke iz seznama za pretvorbo. Izhodna koda %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Čas pretvorbe" #: convert.cpp:1183 msgid "Output file size" msgstr "Velikost izhodne datoteke" #: convert.cpp:1184 msgid "File size ratio" msgstr "Razmerje velikosti datoteke" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Neznan" #: convert.cpp:1325 msgid "Filter" msgstr "Filter" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Napredek: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave je preprosta oblika zvoka, ki ne stisne zvočnega pretoka. Posledično je " "brez izgub, ampak je velikost datoteke velika in ne podpira naprednih " "zmožnosti kot so oznake.
Podprta je v praktično vseh programih in " "napravah.

http://en." "wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Napredno kodiranje zvoka (AAC) je priljubljena oblika zvoka z izgubami. Na " "široko jo uporablja Apple.
V soundKonverter-ju se \"aac\" nanaša le na " "kodek. Da bi dobili datoteko, kjer lahko uporabite tudi oznake, uporabite " "\"m4a/aac\".

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Napredno kodiranje zvoka (AAC) je priljubljena oblika zvoka z izgubami Na " "široko jo uporablja Apple.
V soundKonverter-ju se \"ma/aac\" nanaša na " "zvočno datoteko MPEG-4 kodirano z AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple-ov zvočni kodek brez izgub (ALAC) je oblika zvoka brez izgub. Na " "široko jo uporablja Apple.
V soundKonverter-ju se \"m4a/alac\" nanaša na " "zvočno datoteko MPEG-4 kodirano z ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis je priljubljena oblika zvoka z izgubami.
Nima nobenih " "zakonskih omejitev.

http://en.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus je oblika zvoka z izgubami, ki je bila zasnovana za realno-časovne " "komunikacije preko interneta.
Pokriva široko območje bitnih hitrosti z " "visoko kakovostjo in nima nobenih zakonskih omejitev.

http://en.wikipedia.org/" "wiki/Opus (audio format)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "Zvočna plast MPEG-1 ali MPEG-2 III (MP3) je najbolj priljubljena oblika " "zvoka z izgubami.
Čeprav ima nekatere zakonske omejitve, jo podpirajo " "praktično vsi zvočni predvajalniki.

http://en.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Brezplačen zvočni kodek brez izgub (FLAC) je oblika zvoka brez izgub." "
Nima nobenih zakonskih omejitev.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows zvočna datoteka (WMA) je oblika zvoka z izgubami, ki jo je razvil " "Microsoft.

http://en.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 ali AC-3 je del družine oblik Dolby Digital.
Zasnovan je bil za " "uporabo v filmih (npr. DVD-jih) in podpira prostorski zvok.

http://en.wikipedia.org/wiki/" "Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "Zvočna plast MPEG-1 ali MPEG-2 II (MP2) je stara oblika zvoka z izgubami." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) se večinoma uporablja pri stiskanju " "govora za mobilne komunikacije.

http://en.wikipedia.org/wiki/Adaptive " "Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) je napredna različica AMR NB, ki " "uporablja višjo hitrost podatkov kar na koncu pomeni višjo kakovost." "
Kljub temu naj bi jo uporabljali le za stiskanje govora.

http://en." "wikipedia.org/wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio je oblika zvoka brez izgub.

http://en.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex je oblika zvoka z izgubami, ki je bila zasnovana za kodiranje govora." "
Nima nobenih zakonskih omejitev. Speex je ob izidu Opusa postal zastarel." "

http://en.wikipedia." "org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) je brezplačna oblika zvoka z izgubami, ki temelji na mp2 in " "je optimizirana za visoko kakovost.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) je brezplačna oblika zvoka brez izgub.

http://en.wikipedia.org/wiki/Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) je brezplačna oblika zvoka brez izgub.

http://en.wikipedia.org/wiki/" "TTA (codec)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) je brezplačna oblika zvoka brez izgub.

http://en.wikipedia.org/wiki/WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) je standardna oblika zvoka, ki so ga razvili pri " "Electronic Arts za računalnike Commodore-Amiga.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Vrsta datotek za izmenjavo zvoka (AIFF) je zelo preprosta oblika zvoka, ki " "ne stisne zvočnega pretoka, zato je brez izgub, a so datoteke velike in ne " "podpira naprednih zmožnosti kot so oznake.

http://en.wikipedia.org/" "wiki/Audio Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Uničenje opravila na uporabnikovo zahtevo" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Da boste lahko kodirali datoteke %1, morate namestiti '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Da boste lahko odkodirali datoteke %1, morate namestiti '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Da boste lahko prekodirali datoteke %1, morate namestiti '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Da boste lahko izračunali jakost predvajanja za datoteke %1, morate " "namestiti '%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' bi moral biti prisoten v vaši distribuciji." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Ker '%1' vsebuje patentirane kodeke, morda ni vključen v privzeti namestitvi " "vaše distribucije. Veliko distribucij ponuja '%1' v dodatnem programskem " "skladišču." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "'%1' lahko prejmete z %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Da lahko uporabite filter %1, morate namestiti '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Da lahko uporabite filtre %1, morate namestiti '%2'." #: filelist.cpp:48 msgid "State" msgstr "Stanje" #: filelist.cpp:49 msgid "Input" msgstr "Vhod" #: filelist.cpp:50 msgid "Output" msgstr "Izhod" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Kakovost" #: filelist.cpp:79 msgid "Edit options..." msgstr "Urejanje možnosti ..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Začni pretvorbo" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Zaustavi pretvorbo" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Odstrani" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Te vrste datoteke soundKonverter ne pozna.\n" "Morda morate namestiti dodaten vstavek za soundKonverter.\n" "V ta namen si oglejte upravljalnik paketov vaše distribucije." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... in še %1 datotek" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Bo preskočeno" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Čakanje" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Čakanje na jakost predvajanja" #: filelist.cpp:583 msgid "Stopped" msgstr "Zaustavljeno" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Zaledje ni nastavljeno" #: filelist.cpp:593 msgid "Disc full" msgstr "Disk je poln" #: filelist.cpp:603 msgid "Failed" msgstr "Spodletelo" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Pretvorba je spodletela.\n" "Za več podrobnosti si oglejte dnevnik" #: filelist.cpp:630 msgid "CD track %1" msgstr "Skladba %1 CD-ja" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Ali želite prepisati trenuten seznam datotek?\n" "\n" "Če ne, bo shranjen seznam datotek pripet." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "u" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr "ms" #: logger.cpp:90 msgid "Identifier" msgstr "Določilnik" #: logger.cpp:91 msgid "Log ID" msgstr "ID dnevnika" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Beleženje zaključeno" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Pregledovalnik dnevnika" #: logviewer.cpp:28 msgid "Update" msgstr "Posodobi" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Shrani v datoteko ..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Datoteka dnevnika:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Dnevnik programa soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Shrani dnevniško datoteko" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Datoteka že obstaja. Ali jo zares želite prepisati?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Zapisovanje v datoteko je spodletelo.\n" "Morda nimate dovoljenj za pisanje." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter je začelje za različne pretvornike zvoka, orodja za jakost " "predvajanja in zajemalnike CD-jev.\n" "\n" "Poročila o hroščih objavite na https://bugs.launchpad.net/soundkonverter\n" "ali pa mi pošljite e-pošto na hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Tema ikon Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Razvijalci Amaroka" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Vsi programerji pretvornikov zvoka" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "Odpri orodje za jakost zvoka in dodaj vse dane datoteke" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" "Izpiši seznam vseh skladb na pogonu CD , 'samodejno' bo iskalo za CD-" "jem" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Dodaj vse datoteke z uporabo danega profila" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Dodaj vse datoteke z uporabo dane oblike" #: main.cpp:36 msgid "Output all files to " msgstr "Izpiši vse datoteke v " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Zaženi soundKonverter nevidnega" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "Tako zaženi pretvorbo (omogočeno ob uporabi '--invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Zapri soundKonverter, ko so pretvorjene vse datoteke (omogočeno ob uporabi " "'--invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Izvedi , ko je pretvorjena vsaka datoteka (%i=vhodna datoteka, " "%o=izhodna datoteka)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Zvočne datoteke, ki bodo pripete na seznam datotek" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Neuvrščeno" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "Ikona datoteke PNG 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Ikona datoteke" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Prednji ovitek" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Zadnji ovitek" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Stran letaka" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Fotografija CD-ja" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Slika glavnega izvajalca" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Slika izvajalca" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Slika dirigenta" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Slika skupine" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Slika skladatelja" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Slika avtorja besedil" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Slika mesta snemanja" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Slika izvajalcev med snemanjem" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Slika izvajalcev med izvajanjem" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Slika iz videa" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Slika velike, obarvane ribe" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Ilustracija povezana s skladbo" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Logotip skupine" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Logotip založnika" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Dodaj skladbe CD-ja" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Izberite skladbe CD-ja" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Nastavite možnosti pretvorbe" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Izvajalec:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Več izvajalcev" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Skladatelj:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Več skladateljev" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Št. diska:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "od" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Leto:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Zvrst:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Zajemi" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Skladba" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Izvajalec" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Skladatelj" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Naslov" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Dolžina" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Predvajalnik" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Ni izbrane skladbe" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Naslov:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Opomba:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Izberite vaše želene možnosti izhoda in kliknite na \"V redu\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Shrani predlogo cue ..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Zahtevaj CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Zajemi celoten CD v eno datoteko" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Trenutno nameščena zaledja ne podpirajo zajemanje celotnega CD-ja v eno " "datoteko.\n" "Spodaj so navedene mogoče rešitve.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Trenutno nameščena zaledja ne podpirajo zajemanje celotnega CD-ja v eno " "datoteko.\n" "Preverite upravljalnik paketov vaše distribucije, da namestite dodatni " "vstavek za zajemanje, ki podpira zajemanje v eno datoteko." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Nadaljuj" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "V redu" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Prekliči" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Izberite pogon CD-ROM" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Najdenih je bilo več pogonov CD-ROM. Izberite enega:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Snemalnik DVD-jev" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Snemalnik CD-jev" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Predvajalnik DVD-jev" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Predvajalnik CD-jev" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): zvočni CD s %3 sledmi" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Neznano" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Počakajte, poskus prejema podatkov CDDB ..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Izberite vnos CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Najdenih je bilo več vnosov CDDB. Izberite enega:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Vse skladbe" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Skladbe" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Izberite vsaj eno sled za nadaljevanje." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Ni bilo izbranih možnosti pretvorbe." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Datoteka s tem imenom že obstaja.\n" "\n" "Ali jo želite prepisati?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Datoteka že obstaja" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Dodaj mapo" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Izberite mapo" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Mapa:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Dodaj samo izbrane vrste datotek:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Ali vam manjkajo nekatere vrste datotek?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Izberi vse" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Odstrani izbor" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Rekurzivno" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "Če je označeno, bodo dodane tudi datoteke iz podmap." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Dodaj datoteke" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 datotek" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Vse podprte datoteke" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Vse datoteke" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Dodaj seznam predvajanja" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Sledečih datotek ni bilo mogoče najti:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Datoteke niso bile najdene" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Dodaj naslov URL" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Vnesite naslov URL" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "Vnesen naslov URL ni veljaven. Poskusite znova." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Vrsta:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Uporabi vstavek:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Cilj:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Izračunaj oznake jakosti predvajanja" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Shrani trenutne možnosti kot profil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Naloži shranjene profile" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Jakost predvajanja ni podprta za vrsto datoteke %1.\n" "Spodaj so naštete mogoče rešitve." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Jakost predvajanja ni podprta za vrsto datoteke %1.\n" "Preverite upravljalnik paketov vaše distribucije, da namestite dodatni " "vstavek jakosti predvajanja." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Jakost predvajanja lahko pove vašemu predvajalniku glasbe kako glasna je " "skladba,\n" "da lahko slednji prilagodi glasnost in predvaja vse skladbe z enako " "glasnostjo." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Z uporabo možnosti trenutne pretvorbe bodo datoteke ustvarjene s hitrostjo " "%1 na minuto." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Nov profil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Vnesite ime za nov profil:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Ne morete shraniti profila brez imena." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Ime profila je prazno" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Ne morete prepisati vgrajenih profilov." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Profil že obstaja" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Profil s tem imenom že obstaja.\n" "\n" "Ali ga želite prepisati?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Predhodno" #: optionseditor.cpp:42 msgid "Next" msgstr "Naslednje" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Uredite možnosti pretvorbe" #: optionseditor.cpp:74 msgid "Tags" msgstr "Oznake" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Ovitki:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Uredi" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Št. skladbe:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Uredi oznake" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Ni izbrane datoteke" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Oznak ni bilo mogoče prebrati, ker to ni krajevna datoteka.\n" "soundKonverter bo poskušal prebrati oznake tik pred pretvorbo datoteke.\n" "Če želite urediti oznake, lahko kliknete spodnji gumb, ampak potem\n" "soundKonverter ne bo poskušal prebrati oznak po prejemu." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Branje oznak za to datoteko je spodletelo.\n" "soundKonverter bo poskušal znova prebrati oznake tik pred pretvorbo " "datoteke.\n" "Če želite urediti oznake, lahko kliknete spodnji gumb, ampak potem\n" "soundKonverter ne bo poskušal znova prebrati oznak." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Vrsta ovitka:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Opis:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Velikost:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 slikovnih točk (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Vrsta MIME:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 datotek" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Izbrali ste več datotek z različnimi možnostmi pretvorbe.\n" "Možnosti lahko spremenite za vse datoteke tako da kliknete spodnji gumb." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Branje oznak za eno ali več datotek je spodletelo\n" "soundKonverter bo poskušal znova prebrati oznake tik pred pretvorbo " "datotek.\n" "Če želite urediti oznake, lahko kliknete spodnji gumb, ampak potem\n" "soundKonverter ne bo poskušal znova prebrati oznak." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Kakovost:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Odstrani izbran profil" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Podrobnosti" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Podrobnosti o izbranem profilu" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Podrobnosti o izbrani vrsti datoteke" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Več vrst ..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Izbirno:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Kodiranje datotek z zelo nizko kakovostjo je lahko uporabno, če imate " "mobilno napravo, kjer je velikost shrambe omejena.\n" "Priporočeno je, da ne shranite glasbe v tej kakovosti brez kopij v višji " "kakovosti." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Kodiranje datotek z nizko kakovostjo je lahko uporabno, če imate mobilno " "napravo, kjer je velikost shrambe omejena.\n" "Priporočeno je, da ne shranite glasbe v tej kakovosti brez kopij v višji " "kakovosti." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Kodiranje datotek s srednjo kakovostjo je kompromis med kakovostjo in " "velikostjo datoteke.\n" "Večina ljudi morda ne bo slišala velikih razlik glede na izvirnike, ampak " "to bi morali uporabiti le v primeru, če je vaša velikost shrambe omejena." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Kodiranje datotek z visoko kakovostjo je dobra izbira, če imate na voljo " "dovolj veliko shrambo. To lahko uporabite, da shranite vašo glasbo." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Kodiranje datotek z zelo visoko kakovostjo je v redu, če imate na voljo " "dovolj veliko shrambo." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Kodiranje datotek brez izgub bo ohranilo kakovost izvirnih datotek.\n" "Uporabno je le, če ima izvirnik dobro kakovost (npr. zvočni CD).\n" "Velikost datoteke bo velika, zato to uporabite le, če imate dovolj veliko " "shrambo." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Vaš lastni profil lahko določite v zavihku \"Podrobno\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "To je uporabniško določen profil." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Podrobnosti o profilu za %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Ali zares želite odstraniti profil %1?" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Odstranim profil?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Podrobnosti o vrsti za %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Žal ni na voljo nobenih podrobnosti o vrsti." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Po metapodatkih" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Izvorna mapa" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Podajte izhodno mapo" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Kopiraj zgradbo map" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Izberite izhodno mapo" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Odpri izhodno mapo v Dolphinu" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Neznan izvajalec" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Neznan album" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Brez opombe" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Neznana zvrst" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Neznan skladatelj" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Neznan naslov" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "nov" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Poimenuj vse pretvorjene datoteke glede na podan vzorec" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Sledeči nizi so nadomestni znaki, ki bodo zamenjani\n" "s podati v metapodatkih:\n" "\n" "%a - izvajalec\n" "%b - album\n" "%c - opomba\n" "%d - številka diska\n" "%g - zvrst\n" "%n - številka skladbe\n" "%p - skladatelj\n" "%t - naslov\n" "%y - leto\n" "%f - ime izvorne datoteke\n" "\n" "Te nadomestne znake in njihove sosede lahko obdate tudi z oglatimi oklepaji " "('[' in ']'),\n" "da bodo prezrti, če je vrednost za zamenjavo prazna.\n" "Da boste lahko uporabili oglate oklepaje, boste morali prednje pripeti levo " "poševnico ('\\[' and '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "Shrani vse pretvorjene datoteke v enako mapo kot izvorne datoteke" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "Shrani vse pretvorjene datoteke v podano izhodno mapo" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Kopiraj celotno zgradbo mape za vse pretvorjene datoteke" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Način:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Bitna hitrost" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Bitna hitrost:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Dodatni argumenti kodirnika:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Omogoči eksperimentalne kodeke v nastavitvenem oknu ffmpeg." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Prevedite ffmpeg s podporo %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Nastavi %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Omogoči eksperimentalne kodeke" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Da omogočite spremembe, morate znova zagnati soundKonverter." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Raven stiskanja:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Uporabi datoteko SoundFont:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Za pretvorbo podatkov midi v obliko wave, potrebujete SoundFont, ki preslika " "podatke midi v zvočne učinke.\n" "Oglejte si %1, da dobite datoteke SoundFont." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "FluidSynth še ni nastavljen. Nastaviti morate datoteko SoundFont." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Predloga nastavitev:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Srednje" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Običajno" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Zelo visoko" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Noro" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Podajte bitno hitrost" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "cbr" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Kodiraj s stalno bitno hitrostjo.\n" "Deluje samo z 80, 96, 112, 128, 160, 192, 224, 256 in 320 kb/s" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Hitro kodiranje" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "Uporabi hitrejši kodirni algoritem (izhodna kakovost je malo slabša)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Način bitne hitrosti:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Spremenljiva" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Povprečna" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Stalna" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Raven stiskanja od 9 do 0, kjer je 0 najvišja kakovost.\n" "(Višja kot je kakovost, počasnejša je pretvorba in obratno.)\n" "Priporočena vrednost je 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Ta predloga nastavitev naj bi ponujala približno tak izhod, ki ga večina " "ljudi ne bo ločila od izhoda za večino glasbe (~150 kb/s abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Ta predloga nastavitev naj bi ponujala izhod, ki ga večina ljudi ne bo " "ločila od\n" "izhoda. Kakovost je že zelo visoka (~230 kb/s abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Če imate zelo dober sluh in podobno opremo, bo ta predloga nastavitev v " "splošnem\n" "ponujala rahlo višjo kakovost kot običajen način (~280 kb/s abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Ta predloga nastavitev bo običajno pretiravanje za večino ljudi v večini " "situacij, ampak\n" "če morate imeti najvišjo kakovost ne glede na velikost datoteke, je to prava " "izbira (320 kb/s cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Raven kakovosti od 9 do 0, kjer je 0 najvišja kakovost.\n" "(Višja kot je kakovost, večja je datoteka in obratno.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Način stereo:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Samodejno" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Združeni stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Preprost stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Vsiljen združen stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dvojni mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "O %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME je brezplačen kodirnik MP3 z visoko kakovostjo.\n" "Dobite ga lahko na: http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Omogoči eksperimentalne kodeke v nastavitvenem oknu libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Prevedite libav s podporo %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Thumb" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Radio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Braindead" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "Uporabite predloge nastavitev MusePacka ali vaše lastne." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "nizka kakovost (~60 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "nizka/srednja kakovost (~90 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "srednja kakovost (~130 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "visoka kakovost (~180 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "odlična kakovost (~210 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "odlična kakovost (~240 kb/s abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "odlična kakovost (~270 kb/s abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "'%1' lahko prejmete preko '%2' zatem ko vnesete naslov e-pošte." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' je običajno v paketu '%2', ki bi moral biti pakiran v vaši distribuciji." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Odklopljeni kanali" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Uporabi en pretok mono na kanal" #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame je brezplačen kodirnik MP2.\n" "Dobite ga lahko na: http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Raven kakovosti od -50 do 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "'%1' je običajno v paketu '%2', ki ga lahko prejmete z %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Hitro" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Običajno" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Visoka kakovost" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Zelo visoka kakovost" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normaliziraj" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Omogoči eksperimentalne kodeke v nastavitvenem oknu sox." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Prevedite sox s podporo %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Sprememba kakovosti hitrosti vzorčenja:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Hitra" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Raven kakovosti od 9 do 0, kjer je 0 najvišja kakovost." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Učinek:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Onemogočen" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Odstrani ta učinek" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Dodaj" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Dodaj drug učinek" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normaliziraj:\n" "Spremeni glasnost, da imajo vse datoteke enako" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Bas:\n" "Ojača nizke frekvence" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Porazdelitev:\n" "Ojača visoke frekvence" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Hitrost vzorčenja:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Velikost vzorca:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Kanali:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Uporabi obliko oznak:" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Spremeni zvočni pretok" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Zapiši prilagoditve jakosti predvajanja neposredno v kodirane podatke. Na ta " "način bo prilagoditev delovala z vsemi predvajalniki MP3.\n" "Razveljavitev je mogoča, saj bodo zapisani tudi podatki popravkov." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Da lahko zajamete zvočne CD-je v skladbe ali v eno datoteko, morate " "namestiti 'cdparanoia'.\n" "'cdparanoia' je običajno pakirana v vaši distribuciji, ime paketa je lahko " "tudi drugačno." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Hitrost:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Preostali čas:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Končano" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Datoteka" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Zloži vse" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Razširi vse" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Premakni v nov album" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Nekaterih skladb ni bilo mogoče dodati v album, ker je različen kodek ali " "hitrost vzorčenja." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Nov album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Jakost predvajanja je spodletela. Uporabljeno zaledje morate pravilno " "nastaviti." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Jakost predvajanja je spodletela. Prednostnemu vstavku manjka podpora za " "nujno zmožnost." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Jakost predvajanja je spodletela. Neznana napaka." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Jakost predvajanja je spodletela. Izhodna koda: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "Dodajanje novih predmetov na seznam za jakost predvajanja: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Jakost predvajanja za %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Mogoča zaledja za jakost predvajanja:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Preskočeno" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Dodaj mapo ..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Dodaj datoteke ..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Vsili ponovni izračun" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Znova izračuna oznake jakosti predvajanja za tiste datoteke, ki imajo te " "oznake že nastavljene." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Označi neoznačene" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Izračuna oznake jakosti predvajanja za vse datoteke v seznamu, ki te oznake " "nimajo." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Odstrani oznako označenim" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "Odstrani oznake jakosti predvajanja za vse datoteke v seznamu." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Zapri" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Še vedno tečejo opravila jakosti predvajanja.\n" "Ali jih želite zares preklicati?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "To je soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Prevedeno s TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Branje/zapisovanje ovitkov ni podprto za datoteke ogg/" "METADATA_BLOCK_PICTURE, flac in asf/wma. Za to je zahtevan TagLib 1.7." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Odstranjevanje stare datoteke: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Pokaži dnevnike ..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Orodje jakosti predvajanja ..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "O vstavkih ..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Dodaj skladbe CD-ja ..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Dodaj naslov URL ..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Dodaj seznam predvajanja ..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Naloži seznam datotek" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Shrani seznam datotek" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Začni" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Zaustavi" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Zaustavi takoj" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Zaustavi, ko se končajo trenutne pretvorbe" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Nadaljuj, ko se končajo trenutne pretvorbe" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Ni najdenih naprav CD" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Orodja" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Andrej Mernik" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "andrejm@ubuntu.si" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "" "Pretvornik zvočni datotek, zajemalnik CD-jev in orodje za jakost predvajanja" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Zajemi zvočni CD s soundKonverter-jem" ./soundkonverter-2.0.5/po/PaxHeaders.25599/cs.po0000644000175000001440000000013112255310032017356 xustar000000000000000030 mtime=1387630618.522836543 29 atime=1387630618.49983683 30 ctime=1387631578.286421711 ./soundkonverter-2.0.5/po/cs.po0000644000175000001440000034654612255310032017014 0ustar00danielusers00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # HessiJames , 2006-2007 # HessiJames , 2012 # Pavel Fric , 2011 # Pavel Fric , 2010 # fri , 2010-2012 # fri , 2013 # fri , 2012-2013 msgid "" msgstr "" "Project-Id-Version: soundkonverter\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/ubuntu/%2Bsource/" "soundkonverter/\n" "POT-Creation-Date: 2013-12-21 13:56+0100\n" "PO-Revision-Date: 2013-11-20 12:13+0000\n" "Last-Translator: HessiJames \n" "Language-Team: Czech (http://www.transifex.com/projects/p/soundkonverter/" "language/cs/)\n" "Language: cs\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==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: aboutplugins.cpp:19 msgid "About plugins" msgstr "O přídavných modulech" #: aboutplugins.cpp:31 msgid "Installed plugins:" msgstr "Nainstalované přídavné moduly:" #: aboutplugins.cpp:128 msgid "About plugin %1:" msgstr "O přídavném modulu %1:" #: aboutplugins.cpp:130 msgid "Plugin type: %1" msgstr "Typ přídavného modulu: %1" #: aboutplugins.cpp:136 msgid "Backend binaries:" msgstr "Spustitelné soubory jader:" #: aboutplugins.cpp:141 msgid "%1 (found at: %2)" msgstr "%1 (nalezeno: %2)" #: aboutplugins.cpp:143 msgid "%1 (not found)" msgstr "%1 (nenalezeno)" #: aboutplugins.cpp:164 aboutplugins.cpp:199 aboutplugins.cpp:230 msgid "Supported codecs:" msgstr "Podporované kodeky:" #: aboutplugins.cpp:169 aboutplugins.cpp:177 aboutplugins.cpp:204 #: aboutplugins.cpp:212 aboutplugins.cpp:227 msgid "Currently deactivated." msgstr "Nyní vypnuto." #: aboutplugins.cpp:172 aboutplugins.cpp:207 msgid "Encode: %1" msgstr "Kódovat: %1" #: aboutplugins.cpp:180 aboutplugins.cpp:215 msgid "Decode: %1" msgstr "Dekódovat: %1" #: aboutplugins.cpp:240 configdialog/configbackendspage.cpp:163 #: configdialog/configbackendspage.cpp:303 #: configdialog/configbackendspage.cpp:382 optionsdetailed.cpp:295 msgid "Configure %1 ..." msgstr "Nastavit %1 ..." #: codecoptimizations.cpp:17 codecproblems.cpp:14 msgid "Solutions for backend problems" msgstr "Řešení potíží s jádrem" #: codecoptimizations.cpp:27 msgid "" "You have installed or removed backends and your soundKonverter settings can " "be optimized." msgstr "" "Nainstaloval jste nebo odstranil jádra a vaše nastavení pro soundKonverter " "lze vyladit." #: codecoptimizations.cpp:51 msgid "For encoding %1 files the backend '%2' can be replaced with '%3'." msgstr "Pro zakódování %1 souboru lze jádro '%2' nahradit '%3'." #: codecoptimizations.cpp:55 msgid "For ripping audio CDs the backend '%1' can be replaced with '%2'." msgstr "" "Pro vytahování stop ze zvukových CD může být jádro '%1' nahrazeno '%2'." #: codecoptimizations.cpp:59 msgid "For decoding %1 files the backend '%2' can be replaced with '%3'." msgstr "Pro dekódování souboru lze jádro '%2' nahradit '%3'." #: codecoptimizations.cpp:63 msgid "" "For applying Replay Gain to %1 files the backend '%2' can be replaced with " "'%3'." msgstr "Pro použití vyrovnání hlasitosti na %1 souborů lze '%2' nahradit '%3'." #: codecoptimizations.cpp:66 msgid "Ignore" msgstr "Nevšímat si" #: codecoptimizations.cpp:71 msgid "Fix" msgstr "Opravit" #: codecproblems.cpp:28 msgid "" "soundKonverter couldn't find any missing packages.\n" "If you are missing some file formats you might need to install an additional " "plugin via the package manager of your distribution." msgstr "" "soundKonverter se nepodařilo zkopírovat žádné chybějící balíčky.\n" "Pokud postrádáte některé formáty souborů, budete možná muset nainstalovat " "dodatečný přídavný modul za použití správce balíčků pro vaši distribuci." #: codecproblems.cpp:32 msgid "" "Some of the installed plugins aren't working.\n" "Possible solutions are listed below." msgstr "" "Některé z nainstalovaných přídavných modulů nepracují.\n" "Možná řešení jsou uvedena v seznamu níže." #: codecproblems.cpp:37 msgid "" "Some files can't be decoded.\n" "Possible solutions are listed below." msgstr "" "Některé ze souborů nelze rozluštit.\n" "Možná řešení jsou vypsána níže." #: codecproblems.cpp:41 msgid "" "Replay Gain isn't supported for some files.\n" "Possible solutions are listed below." msgstr "" "Vyrovnávání hlasitosti není pro některé ze souborů podporováno.\n" "Možná řešení jsou vypsána níže." #: codecproblems.cpp:47 msgid "" "Ripping audio CDs is not supported by any installed plugin.\n" "Please have a look at your distributions package manager in order to get a " "cd ripper plugin for soundKonverter." msgstr "" "Získávání skladeb ze zvukových CD není podporováno žádným z nainstalovaných " "přídavných modulů.\n" "Podívejte se, prosím, na správce balíčků své distribuce, abyste sehnal " "přídavný modul vytahovače skladeb z CD pro soundKonverter." #: codecproblems.cpp:51 msgid "" "Ripping audio CDs is currently not supported because of missing backends.\n" "Possible solutions are listed below." msgstr "" "Vytahování skladeb ze zvukových CD není v současnosti podporováno z důvodu " "chybějících jader.\n" "Možná řešení jsou vypsána níže." #: codecproblems.cpp:67 codecproblems.cpp:71 msgid "Possible solutions for %1" msgstr "Možná řešení pro %1" #: codecproblems.cpp:67 codecproblems.cpp:71 #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:333 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:333 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:214 msgctxt "like in either or" msgid "or" msgstr "nebo" #: codecproblems.cpp:71 msgid "Affected files:" msgstr "Ovlivněné soubory:" #: config.cpp:51 config.cpp:53 config.cpp:428 config.cpp:469 #: configdialog/configgeneralpage.cpp:55 configdialog/configgeneralpage.cpp:71 #: configdialog/configgeneralpage.cpp:252 #: configdialog/configgeneralpage.cpp:254 #: configdialog/configgeneralpage.cpp:258 #: configdialog/configgeneralpage.cpp:263 #: configdialog/configgeneralpage.cpp:268 options.cpp:43 options.cpp:64 #: optionsdetailed.cpp:467 msgid "Last used" msgstr "Naposledy použitý" #: config.cpp:52 config.cpp:432 config.cpp:439 config.cpp:445 #: configdialog/configgeneralpage.cpp:75 #: configdialog/configgeneralpage.cpp:256 options.cpp:73 #: optionsdetailed.cpp:463 optionssimple.cpp:163 optionssimple.cpp:199 #: optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:169 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:206 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:144 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:180 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:211 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:234 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:289 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:268 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:316 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:211 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:234 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:289 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:174 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:213 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:165 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:212 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:150 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:183 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:163 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:202 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:161 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:200 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:251 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:393 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:416 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:439 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:525 #: soundkonverterview.cpp:544 soundkonverterview.cpp:546 msgid "High" msgstr "Vysoká kvalita" #: config.cpp:118 configdialog/configcoverartpage.cpp:135 msgctxt "cover file name" msgid "cover" msgstr "Obal" #: config.cpp:276 config.cpp:302 config.cpp:304 convert.cpp:147 #: convert.cpp:219 convert.cpp:386 msgid "Try internal" msgstr "Zkusit vnitřní" #: config.cpp:429 config.cpp:445 configdialog/configgeneralpage.cpp:72 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:460 #: optionssimple.cpp:160 optionssimple.cpp:187 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:157 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:182 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:156 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:199 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:222 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:247 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:256 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:283 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:199 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:222 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:247 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:162 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:186 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:153 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:177 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:138 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:162 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:151 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:175 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:149 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:173 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:381 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:404 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:427 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:456 #: soundkonverterview.cpp:529 soundkonverterview.cpp:531 msgid "Very low" msgstr "Velmi nízká kvalita" #: config.cpp:430 config.cpp:445 configdialog/configgeneralpage.cpp:73 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:461 #: optionssimple.cpp:161 optionssimple.cpp:191 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:161 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:190 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:136 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:164 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:203 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:226 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:261 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:260 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:294 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:203 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:226 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:261 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:166 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:195 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:157 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:189 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:142 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:169 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:155 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:184 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:153 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:182 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:249 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:385 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:408 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:431 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:479 #: soundkonverterview.cpp:534 soundkonverterview.cpp:536 msgid "Low" msgstr "Nízká kvalita" #: config.cpp:431 config.cpp:445 configdialog/configgeneralpage.cpp:74 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:462 #: optionssimple.cpp:162 optionssimple.cpp:195 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:165 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:198 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:140 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:207 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:230 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:275 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:264 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:305 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:207 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:230 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:275 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:170 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:204 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:161 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:201 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:146 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:176 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:159 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:191 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:250 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:389 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:412 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:435 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:502 #: soundkonverterview.cpp:539 soundkonverterview.cpp:541 msgid "Medium" msgstr "Střední kvalita" #: config.cpp:433 config.cpp:445 configdialog/configgeneralpage.cpp:76 #: configdialog/configgeneralpage.cpp:256 optionsdetailed.cpp:464 #: optionssimple.cpp:164 optionssimple.cpp:203 optionssimple.cpp:297 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:173 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:214 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:148 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:188 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:215 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:238 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:303 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:272 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:327 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:215 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:238 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:303 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:178 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:222 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:169 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:223 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:154 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:190 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:167 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:211 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:165 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:209 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:252 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:397 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:420 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:443 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:548 #: soundkonverterview.cpp:549 soundkonverterview.cpp:551 msgid "Very high" msgstr "Velmi vysoká kvalita" #: config.cpp:434 config.cpp:449 configdialog/configgeneralpage.cpp:77 #: configdialog/configgeneralpage.cpp:261 optionsdetailed.cpp:465 #: optionssimple.cpp:165 optionssimple.cpp:207 optionssimple.cpp:301 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:153 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:189 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:87 #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:92 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:144 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:149 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:43 #: plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp:48 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:252 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:189 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:90 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:95 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:158 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:149 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:134 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:75 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:80 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:43 #: plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp:48 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:75 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:80 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:147 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:145 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:92 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:97 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:375 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:571 #: soundkonverterview.cpp:554 soundkonverterview.cpp:556 msgid "Lossless" msgstr "Bezztrátová kvalita" #: config.cpp:435 config.cpp:453 configdialog/configgeneralpage.cpp:266 #: optionsdetailed.cpp:466 optionssimple.cpp:211 optionssimple.cpp:305 #: soundkonverterview.cpp:559 soundkonverterview.cpp:561 msgid "Hybrid" msgstr "Smíšená kvalita" #: config.cpp:457 optionsdetailed.cpp:469 optionssimple.cpp:168 #: optionssimple.cpp:215 optionssimple.cpp:309 optionssimple.cpp:372 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:176 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:151 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:193 #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:242 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:39 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:275 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:193 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:242 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:43 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:181 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:172 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:157 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:137 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:142 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:170 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:168 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:448 msgid "User defined" msgstr "Stanoveno uživatelem" #: config.cpp:620 msgid "Convert with soundKonverter" msgstr "Převést pomocí soundKonverteru" #: config.cpp:656 msgid "Add Replay Gain with soundKonverter" msgstr "Přidat vyrovnání hlasitosti skladeb pomocí soundKonverteru" #: configdialog/configadvancedpage.cpp:36 configdialog/configdialog.cpp:48 msgid "Advanced" msgstr "Pokročilé" #: configdialog/configadvancedpage.cpp:45 msgid "Preferred file name extension for ogg vorbis files:" msgstr "Upřednostňovaná přípona pro soubory Ogg Vorbis:" #: configdialog/configadvancedpage.cpp:61 msgid "Preferred comment tag field for ogg vorbis and flac files:" msgstr "Upřednostňované pole pro značku pro soubory Ogg Vorbis a FLAC:" #: configdialog/configadvancedpage.cpp:62 #: configdialog/configadvancedpage.cpp:65 msgid "" "Some applications use the field DESCRIPTION even though the field COMMENT is " "the correct one.\n" "Comments will be written to the selected field, when reading tags the " "selected field will be preferred." msgstr "" "Některé programy používají pole POPIS (DESCRIPTION), i když správným je pole " "POZNÁMKA (COMMENT).\n" "Poznámky budou zapsány do vybraného pole, při čtení značek bude " "upřednostňováno vybrané pole." #: configdialog/configadvancedpage.cpp:79 msgid "Preferred total tracks number tag field for ogg vorbis and flac files:" msgstr "" "Upřednostňované pole pro celkový počet skladeb pro soubory Ogg Vorbis a FLAC:" #: configdialog/configadvancedpage.cpp:80 #: configdialog/configadvancedpage.cpp:83 msgid "" "Total tracks number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field TRACKNUMBER, the track number and the total tracks " "number will be written to the same field separated by a slash ('/')." msgstr "" "Celkový počet skladeb bude zapsán do vybraného pole, při čtení značek bude " "upřednostňováno vybrané pole.\n" "Při použití pole ČÍSLO SKLADBY (TRACKNUMBER) budou číslo skladby a celkový " "počet skladeb zapsány do téhož pole odděleny lomítkem ('/')." #: configdialog/configadvancedpage.cpp:98 msgid "Preferred total discs number tag field for ogg vorbis and flac files:" msgstr "" "Upřednostňované pole pro celkový počet disků pro soubory Ogg Vorbis a FLAC:" #: configdialog/configadvancedpage.cpp:99 #: configdialog/configadvancedpage.cpp:102 msgid "" "Total discs number will be written to the selected field, when reading tags " "the selected field will be preferred.\n" "When using the field DISCNUMBER, the disc number and the total discs number " "will be written to the same field separated by a slash ('/')." msgstr "" "Celkový počet disků bude zapsán do vybraného pole, při čtení značek bude " "upřednostňováno vybrané pole.\n" "Při použití pole ČÍSLO DISKU (DISCNUMBER) budou číslo disku a celkový počet " "disků zapsány do téhož pole odděleny lomítkem ('/')." #: configdialog/configadvancedpage.cpp:117 msgid "Always use FAT compatible output file names" msgstr "Vždy použít názvy pro výstupní soubory slučitelné s FAT" #: configdialog/configadvancedpage.cpp:118 msgid "" "Replaces some special characters like '?' by '_'.\n" "If the output directory is on a FAT file system FAT compatible file names " "will automatically be used independently from this option." msgstr "" "Nahradit některé zvláštní znaky jako '?' podtržítkem '_'.\n" "Pokud je výstupní adresář na souborovém systému FAT, použijí se s FAT " "slučitelné názvy souborů automaticky nezávisle na této volbě." #: configdialog/configadvancedpage.cpp:125 msgid "Debug" msgstr "Ladění" #: configdialog/configadvancedpage.cpp:134 msgid "Write log files to disc" msgstr "Zapsat soubory se zápisy na disk" #: configdialog/configadvancedpage.cpp:135 msgid "" "Write log files to the hard drive while converting.\n" "This can be useful if a crash occurs and you can't access the log file using " "the log viewer.\n" "Log files will be written to %1" msgstr "" "Zapsat soubory se zápisy během převodu na disk.\n" "Toto může být užitečné, když dojde k pádu a vy si nemůžete soubor se zápisem " "prohlédnout v prohlížeči zápisů.\n" "Soubory se zápisy budou zapsány do %1" #: configdialog/configadvancedpage.cpp:142 msgid "Experimental" msgstr "Pokusné" #: configdialog/configadvancedpage.cpp:151 msgid "Store temporary files in memory unless the estimated size is more than:" msgstr "" "Uchovávat dočasné soubory v paměti, dokud není odhadovaná velikost větší než:" #: configdialog/configadvancedpage.cpp:152 #: configdialog/configadvancedpage.cpp:156 msgid "" "Don't store files that are expected to be bigger than this value in memory " "to avoid swapping" msgstr "" "Neuchovávat soubory, u nichž se očekává, že budou větší než tato hodnota, v " "paměti kvůli vyhnutí se prohazování (swapping)" #: configdialog/configadvancedpage.cpp:157 msgctxt "mega in bytes" msgid "MiB" msgstr "MiB" #: configdialog/configadvancedpage.cpp:164 msgid "It seems there's no filesystem mounted on /dev/shm" msgstr "Zdá se, že na /dev/shm není připojen žádný souborový systém" #: configdialog/configadvancedpage.cpp:178 msgid "Use pipes when possible" msgstr "Použít přenos dat, tj. roury, když je to možné" #: configdialog/configadvancedpage.cpp:179 msgid "" "Pipes make it unnecessary to use temporary files, therefore increasing the " "performance.\n" "But some backends cause errors in this mode so be cautious." msgstr "" "Přenos dat rourami způsobuje, že není nezbytné používat dočasné soubory, a " "tak jde výkon nahoru.\n" "Ale některá jádra způsobují v tomto režimu chyby, takže opatrně." #: configdialog/configbackendspage.cpp:136 #: configdialog/configbackendspage.cpp:197 #: configdialog/configbackendspage.cpp:339 msgid "Decoder" msgstr "Dekodér" #: configdialog/configbackendspage.cpp:138 #: configdialog/configbackendspage.cpp:199 #: configdialog/configbackendspage.cpp:342 msgid "Encoder" msgstr "Kodér" #: configdialog/configbackendspage.cpp:140 #: configdialog/configbackendspage.cpp:201 #: configdialog/configbackendspage.cpp:345 convert.cpp:1346 filelist.cpp:549 #: filelist.cpp:559 msgid "Replay Gain" msgstr "Vyrovnávání hlasitosti skladeb" #: configdialog/configbackendspage.cpp:148 msgid "Move %1 one position up" msgstr "Posunout %1 o jednu polohu nahoru" #: configdialog/configbackendspage.cpp:153 msgid "Move %1 one position down" msgstr "Posunout %1 o jednu polohu dolů" #: configdialog/configbackendspage.cpp:158 msgid "About %1 ..." msgstr "O %1 ..." #: configdialog/configbackendspage.cpp:232 msgid "CD ripper" msgstr "Vytahovač skladeb z CD" #: configdialog/configbackendspage.cpp:241 msgid "Use plugin:" msgstr "Použít přídavný modul:" #: configdialog/configbackendspage.cpp:259 msgid "Filters" msgstr "Filtry" #: configdialog/configbackendspage.cpp:275 msgid "Enable plugins:" msgstr "Povolit přídavné moduly:" #: configdialog/configbackendspage.cpp:314 msgid "Priorities" msgstr "Přednosti" #: configdialog/configbackendspage.cpp:326 msgid "Configure plugin priorities for format:" msgstr "Nastavit přednosti přídavné modulu pro formát" #: configdialog/configbackendspage.cpp:353 msgid "Show possible optimizations" msgstr "Ukázat možná vyladění" #: configdialog/configbackendspage.cpp:393 msgid "" "You have changed the current settings.\n" "Do you want to save them?" msgstr "" "Změnil jste nynější nastavení.\n" "Chcete je uložit?" #: configdialog/configbackendspage.cpp:393 msgid "Settings changed" msgstr "Nastavení změněno" #: configdialog/configbackendspage.cpp:450 msgid "" "This will choose the best backends for all formats and save the new " "preferences immediately.\n" "\n" "Do you want to continue?" msgstr "" "Toto vybere nejlepší jádra pro všechny formáty a okamžitě uloží nová " "nastavení.\n" "\n" "Chcete pokračovat?" #: configdialog/configbackendspage.cpp:572 msgid "All backend settings seem to be optimal, there is nothing to do." msgstr "Zdá se, že všechna nastavení jádra jsou ta nejlepší. Není tu co dělat." #: configdialog/configcoverartpage.cpp:24 msgid "Saving covers to output directory" msgstr "Uložení obalů do výstupního adresáře" #: configdialog/configcoverartpage.cpp:36 msgid "Save embedded covers to output directory" msgstr "Uložit vložené obaly do výstupního adresáře" #: configdialog/configcoverartpage.cpp:38 msgid "Always" msgstr "Vždy" #: configdialog/configcoverartpage.cpp:40 msgid "Only if embedding the covers into the output files is not possible" msgstr "Jen tehdy, když není možné vložení obalů do výstupních souborů" #: configdialog/configcoverartpage.cpp:42 msgid "Never" msgstr "Nikdy" #: configdialog/configcoverartpage.cpp:62 msgid "File name for the cover (when saving to output directory)" msgstr "Název souboru pro obal (při ukládání do výstupního adresáře)" #: configdialog/configcoverartpage.cpp:64 msgid "The embedded cover description" msgstr "Popis vloženého obalu" #: configdialog/configcoverartpage.cpp:66 msgid "The default cover file name" msgstr "Výchozí název pro soubor s obalem" #: configdialog/configcoverartpage.cpp:70 msgid "Default cover file name:" msgstr "Výchozí název pro soubor s obalem:" #: configdialog/configcoverartpage.cpp:73 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%d - Cover description\n" "%r - Cover role" msgstr "" "Následující řetězce jsou zástupnými znaky, které budou nahrazeny\n" "údaji v popisných datech:\n" "\n" "%a - Umělec\n" "%b - Album\n" "%d - Popis obalu\n" "%r - Úloha obalu" #: configdialog/configdialog.cpp:29 msgid "Settings" msgstr "Nastavení" #: configdialog/configdialog.cpp:42 msgid "General" msgstr "Obecné" #: configdialog/configdialog.cpp:54 msgid "Cover art" msgstr "Obal" #: configdialog/configdialog.cpp:60 main.cpp:28 msgid "Backends" msgstr "Jádra" #: configdialog/configgeneralpage.cpp:43 msgid "User interface" msgstr "Uživatelské rozhraní" #: configdialog/configgeneralpage.cpp:52 msgid "Start in Mode:" msgstr "Spustit v režimu:" #: configdialog/configgeneralpage.cpp:56 options.cpp:79 msgid "Simple" msgstr "Jednoduché volby" #: configdialog/configgeneralpage.cpp:57 options.cpp:80 msgid "Detailed" msgstr "Podrobné volby" #: configdialog/configgeneralpage.cpp:67 msgid "Default profile:" msgstr "Výchozí profil:" #: configdialog/configgeneralpage.cpp:85 msgid "Default format:" msgstr "Výchozí formát:" #. i18n: file: soundkonverterui.rc:14 #. i18n: ectx: Menu (conversion) #: configdialog/configgeneralpage.cpp:95 optionseditor.cpp:51 rc.cpp:3 msgid "Conversion" msgstr "Převod" #: configdialog/configgeneralpage.cpp:118 msgid "Conflict handling:" msgstr "Zvládání střetů:" #: configdialog/configgeneralpage.cpp:121 msgid "Generate new file name" msgstr "Vytvořit nový název souboru" #: configdialog/configgeneralpage.cpp:122 msgid "Skip file" msgstr "Přeskočit soubor" #: configdialog/configgeneralpage.cpp:124 msgid "Do that if the output file already exists" msgstr "Toto dělejte, pokud výstupní soubor již existuje" #: configdialog/configgeneralpage.cpp:134 msgid "Number of files to convert at once:" msgstr "Počet souborů, které se mají převést zároveň:" #: configdialog/configgeneralpage.cpp:137 #: configdialog/configgeneralpage.cpp:185 msgid "" "You shouldn't set this number higher than the amount of installed processor " "cores.\n" "There have been %1 processor cores detected." msgstr "" "Toto číslo byste neměl nastavit vyšší než je množství instalovaných " "procesorových jader.\n" "Byla zjištěna %1 procesorová jádra." #: configdialog/configgeneralpage.cpp:150 msgid "Apply album gain to converted files" msgstr "Použít zesílení alba na převedené soubory" #: configdialog/configgeneralpage.cpp:151 msgid "" "Keep songs of the same album waiting in file list in order to apply album " "gain to all files." msgstr "" "Nechat písně téhož alba čekat v seznamu souborů, aby se mohlo zesílení alba " "spočítat pro všechny soubory." #: configdialog/configgeneralpage.cpp:158 #: replaygainscanner/replaygainscanner.cpp:33 #: replaygainscanner/replaygainscanner.cpp:344 msgid "Replay Gain tool" msgstr "Nástroj pro vyrovnání hlasitosti skladeb" #: configdialog/configgeneralpage.cpp:167 msgid "Group files in the Replay Gain tool by:" msgstr "Soubory v nástroji na vyrovnávání hlasitosti seskupit podle:" #: configdialog/configgeneralpage.cpp:170 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags and directories" msgstr "Značky alb a adresáře" #: configdialog/configgeneralpage.cpp:171 msgctxt "Group files in the Replay Gain tool by" msgid "Album tags only" msgstr "Pouze značky alb" #: configdialog/configgeneralpage.cpp:172 msgctxt "Group files in the Replay Gain tool by" msgid "Directories only" msgstr "Pouze adresáře" #: configdialog/configgeneralpage.cpp:182 msgid "Number of items to process at once:" msgstr "Počet souborů, které se mají převést zároveň:" #: convert.cpp:68 convert.cpp:1301 msgid "Getting file" msgstr "Přijímá se soubor" #: convert.cpp:76 msgid "Copying \"%1\" to \"%2\"" msgstr "Kopíruje se \"%1\" to \"%2\"" #: convert.cpp:119 convert.cpp:462 #: replaygainscanner/replaygainprocessor.cpp:60 msgid "No more backends left to try :(" msgstr "Nezbyla žádná další jádra k vyzkoušení : -(" #: convert.cpp:134 convert.cpp:249 convert.cpp:1307 filelist.cpp:569 #: soundkonverter.cpp:282 soundkonverter.cpp:284 soundkonverter.cpp:311 #: soundkonverter.cpp:313 msgid "Converting" msgstr "Převádí se" #: convert.cpp:171 convert.cpp:410 convert.cpp:487 msgid "" "Conversion failed. At least one of the used backends needs to be configured " "properly." msgstr "" "Převod se nezdařil. Alespoň jedno z použitých jader je potřeba nastavit " "správně." #: convert.cpp:177 convert.cpp:416 convert.cpp:493 msgid "" "Conversion failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Převod se nezdařil. Upřednostňovaný přídavný modul postrádá podporu pro " "nezbytnou vlastnost." #: convert.cpp:183 convert.cpp:422 convert.cpp:499 msgid "Conversion failed. Unknown Error." msgstr "Převod se nezdařil. Neznámá chyba." #: convert.cpp:344 convert.cpp:1313 filelist.cpp:564 msgid "Ripping" msgstr "Vytahuje se" #: convert.cpp:349 convert.cpp:1319 msgid "Decoding" msgstr "Dekóduje se" #: convert.cpp:354 convert.cpp:367 convert.cpp:373 msgid "Applying filter" msgstr "Používá se filtr" #: convert.cpp:362 convert.cpp:1331 msgid "Encoding" msgstr "Kóduje se" #: convert.cpp:443 msgid "Skipping Replay Gain, Album Gain will be calculated later" msgstr "" "Přeskakuje se vyrovnání hlasitosti, zesílení alba bude spočítáno později" #: convert.cpp:458 replaygainscanner/replaygainprocessor.cpp:56 msgid "Applying Replay Gain" msgstr "Přidává se vyrovnání hlasitosti skladeb" #: convert.cpp:515 msgid "Writing tags" msgstr "Zapisují se značky" #: convert.cpp:542 msgid "Running user script" msgstr "Spouští se uživatelský skript" #: convert.cpp:567 msgid "Executing next step" msgstr "Provádí se další krok" #: convert.cpp:711 msgid "Read tags successfully" msgstr "Značky úspěšně přečteny" #: convert.cpp:715 msgid "Unable to read tags" msgstr "Nelze přečíst značky" #: convert.cpp:728 convert.cpp:733 msgctxt "removing file" msgid "Removing: %1" msgstr "Odstraňuje se: %1" #: convert.cpp:742 msgid "An error occurred. Error code: %1 (%2)" msgstr "Vyskytla se chyba. Kód chyby: %1 (%2)" #: convert.cpp:846 convert.cpp:909 msgid "Conversion failed. Exit code: %1" msgstr "Převod se nezdařil. Kód ukončení %1" #: convert.cpp:976 msgctxt "identificator for the logger" msgid "CD track %1: %2 - %3" msgstr "Stopa na CD %1: %2 - %3" #: convert.cpp:980 msgctxt "identificator for the logger" msgid "CD track %1" msgstr "Stopa na CD %1" #: convert.cpp:987 msgid "Adding new item to conversion list: '%1'" msgstr "Do seznamu s převody se přidává nová položka: '%1'" #: convert.cpp:994 replaygainscanner/replaygainprocessor.cpp:223 msgid "Got log ID: %1" msgstr "Nové ID zápisu: %1" #: convert.cpp:1019 msgid "Track number: %1, device: %2" msgstr "Stopa číslo: %1, zařízení: %2" #: convert.cpp:1024 msgid "Possible conversion strategies:" msgstr "Možné strategie převodu:" #: convert.cpp:1038 msgid "File system type: %1" msgstr "Typ souborového systému: %1" #: convert.cpp:1096 msgid "" "An error occurred, the output file size is less than one percent of the " "input file size" msgstr "" "Vyskytla se chyba. Velikost výstupního souboru je menší než jedno procento " "velikosti vstupního souboru" #: convert.cpp:1100 msgid "Conversion failed, trying again. Exit code: -2 (%1)" msgstr "Převod se nezdařil. Kód ukončení: -2 (%1)" #: convert.cpp:1102 convert.cpp:1174 msgid "Removing partially converted output file" msgstr "Odstraňuje se částečně převedený výstupní soubor" #: convert.cpp:1115 replaygainscanner/replaygainprocessor.cpp:265 msgctxt "Conversion exit status" msgid "Normal exit" msgstr "Obvyklé ukončení" #: convert.cpp:1118 replaygainscanner/replaygainprocessor.cpp:268 msgctxt "Conversion exit status" msgid "Succeeded but problems occurred" msgstr "Úspěch, ale vyskytly se potíže." #: convert.cpp:1121 replaygainscanner/replaygainprocessor.cpp:271 msgctxt "Conversion exit status" msgid "Aborted by the user" msgstr "Zrušeno uživatelem" #: convert.cpp:1124 replaygainscanner/replaygainprocessor.cpp:274 msgctxt "Conversion exit status" msgid "Backend needs configuration" msgstr "Jádro potřebuje nastavení" #: convert.cpp:1127 msgctxt "Conversion exit status" msgid "Not enough space on the output device" msgstr "Na výstupním zařízení není dostatek místa" #: convert.cpp:1130 msgctxt "Conversion exit status" msgid "File already exists" msgstr "Soubor již existuje" #: convert.cpp:1133 replaygainscanner/replaygainprocessor.cpp:280 msgctxt "Conversion exit status" msgid "An error occurred" msgstr "Vyskytla se chyba" #: convert.cpp:1154 msgid "Executing command: \"%1\"" msgstr "Vykonává se příkaz: \"%1\"" #: convert.cpp:1180 replaygainscanner/replaygainprocessor.cpp:284 msgid "Removing file from conversion list. Exit code %1 (%2)" msgstr "Probíhá odstraňování souboru ze seznamu převodů. Kód ukončení %1 (%2)" #: convert.cpp:1182 msgid "Conversion time" msgstr "Doba převodu" #: convert.cpp:1183 msgid "Output file size" msgstr "Velikost výstupního souboru" #: convert.cpp:1184 msgid "File size ratio" msgstr "Poměr velikosti souboru" #: convert.cpp:1291 msgctxt "The conversion progress can't be determined" msgid "Unknown" msgstr "Neznámá" #: convert.cpp:1325 msgid "Filter" msgstr "Filtr" #: convert.cpp:1351 replaygainscanner/replaygainprocessor.cpp:331 msgid "Progress: %1" msgstr "Postup: %1" #: core/backendplugin.cpp:40 msgid "" "Wave is a very simple audio format that doesn't compress the audio stream so " "it's lossless but the file size is very big and it doesn't support advanced " "features like tags.
It is supported by virtually any software or device." "

http://en.wikipedia.org/" "wiki/WAV" msgstr "" "Wave je velice jednoduchý zvukový formát, který nestlačuje zvukový proud, " "takže je bezztrátový, ale velikost souboru je hodně velká a nepodporuje " "pokročilé vlastnosti, jako jsou značky.
Je podporován v podstatě veškerým " "software nebo jakýmkoli zařízením.

http://en.wikipedia.org/wiki/WAV" #: core/backendplugin.cpp:47 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the " "codec. In order to get a file with tagging capabilities use \"m4a/aac\"." "

http://en.wikipedia.org/wiki/Advanced Audio Coding" msgstr "" "Advanced Audio Coding (AAC) je ztrátový a obecně rozšířený zvukový formát. " "Je široce používán firmou Apple Inc.
V soundKonverteru se \"aac\" " "vztahuje jen na kodek. Abyste získali soubor se způsobilostí pro značkování, " "použijte \"m4a/aac\".

http://en.wikipedia.org/wiki/Advanced Audio Coding" #: core/backendplugin.cpp:54 msgid "" "Advanced Audio Coding (AAC) is a lossy and popular audio format. It is " "widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a " "MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio " "Coding" msgstr "" "Advanced Audio Coding (AAC) je ztrátový a obecně rozšířený zvukový formát. " "Je široce používán firmou Apple Inc.
V soundKonverteru se \"m4a/aac\" " "vztahuje na zvukový soubor MPEG-4 zakódovaný s AAC.

http://en.wikipedia.org/wiki/" "Advanced Audio Coding" #: core/backendplugin.cpp:66 msgid "" "Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely " "used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 " "audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless" msgstr "" "Apple Lossless Audio Codec (ALAC) je ztrátový zvukový formát. Je široce " "používán firmou Apple Inc.
V soundKonverteru se \"m4a/alac\" vztahuje na " "zvukový soubor MPEG-4 zakódovaný s ALAC.

http://en.wikipedia.org/wiki/Apple " "Lossless" #: core/backendplugin.cpp:84 msgid "" "Ogg Vorbis is a lossy and popular audio format.
It is free of any legal " "restrictions.

http://" "en.wikipedia.org/wiki/Vorbis" msgstr "" "Ogg Vorbis je ztrátový a obecně rozšířený zvukový formát.
Je prostý všech " "právních omezení.

http://en.wikipedia.org/wiki/Vorbis" #: core/backendplugin.cpp:95 msgid "" "Opus is a lossy audio format designed for real time communication over the " "internet.
It can cover a wide range of bitrates with a high quality and " "it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio " "format)" msgstr "" "Opus je ztrátový zvukový formát navržený pro spojení po internetu ve " "skutečném čase.
Dokáže vysoce kvalitně pokrýt široký rozsah datových toků " "a je prostý všech právních omezení.

http://en.wikipedia.org/wiki/Opus (zvukový " "formát)" #: core/backendplugin.cpp:103 msgid "" "MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio " "format.
It is supported by virtually all audio players even though it has " "some legal restrictions.

http://en.wikipedia.org/wiki/MP3" msgstr "" "MPEG-1 nebo MPEG-2 Audio Layer III (MP3) je nejrozšířenější ztrátový zvukový " "formát.
Je podporován v podstatě všemi přehrávači zvuku, i když má nějaká " "ta právní omezení.

http://en.wikipedia.org/wiki/MP3" #: core/backendplugin.cpp:112 msgid "" "Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free " "of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC" msgstr "" "Free Lossless Audio Codec (FLAC) je bezztrátový zvukový formát.
Je prostý " "všech právních omezení.

http://en.wikipedia.org/wiki/FLAC" #: core/backendplugin.cpp:122 msgid "" "Windows Media Audio (WMA) is a lossy audio format developed by Microsoft." "

http://" "en.wikipedia.org/wiki/Windows Media Audio" msgstr "" "Windows Media Audio (WMA) je ztrátový zvukový formát vyvinutý firmou " "Microsoft.

http://en.wikipedia.org/wiki/Windows Media Audio" #: core/backendplugin.cpp:128 msgid "" "AC3 or AC-3 is part of the Dolby Digital format family.
It was designed " "to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/" "wiki/Dolby Digital" msgstr "" "AC3 nebo AC-3 je součástí rodiny formátů Dolby Digital.
Byl navržen k " "použití pro filmy (např. DVD) a podporuje prostorový zvuk.

http://en.wikipedia.org/wiki/" "Dolby Digital" #: core/backendplugin.cpp:141 msgid "" "MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" msgstr "" "MPEG-1 nebo MPEG-2 Audio Layer II (MP2) je starý ztrátový zvukový formát." "

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II" #: core/backendplugin.cpp:166 msgid "" "Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech " "compression for mobile communication.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" msgstr "" "Adaptive Multi-Rate Narrow-Band (AMR NB) je používán hlavně na kompresi " "mluveného slova při mobilním spojení.

http://en.wikipedia.org/wiki/" "Adaptive Multi-Rate audio codec" #: core/backendplugin.cpp:175 msgid "" "Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB " "which uses a higher data rate resulting in a higher quality.
Still it " "should be used only for speech compression.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" msgstr "" "Adaptive Multi-Rate Wide-Band (AMR WB) je pokročilou verzí AMR NB, která " "používá vyšší datový tok, což vede k vyšší kvalitě.
Přesto by se měl " "používat jen na kompresi mluveného slova.

http://en.wikipedia.org/" "wiki/Adaptive Multi-Rate Wideband" #: core/backendplugin.cpp:183 msgid "" "Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's " "Audio" msgstr "" "Monkey's Audio je bezztrátový zvukový formát.

http://en.wikipedia.org/wiki/Monkey's " "Audio" #: core/backendplugin.cpp:192 msgid "" "Speex is a lossy audio format designed for speech encoding.
It is free of " "any legal restrictions. Since the release of Opus, Speex is considered " "obsolete.

http://en." "wikipedia.org/wiki/Speex" msgstr "" "Speex je ztrátový zvukový formát navržený pro kódování mluveného slova." "
Je prostý všech právních omezení. Od té doby, co vyšel Opus, je Speex " "považován za zastaralý.

http://en.wikipedia.org/wiki/Speex" #: core/backendplugin.cpp:206 msgid "" "Musepack (MPC) is a free and lossy file format based on mp2 and optimized " "for high quality.

http://en.wikipedia.org/wiki/Musepack" msgstr "" "Musepack (MPC) je svobodný a ztrátový souborový formát založený na MP2 a " "vyladěný pro vysokou jakost.

http://en.wikipedia.org/wiki/Musepack" #: core/backendplugin.cpp:216 msgid "" "Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten" msgstr "" "Shorten (SHN) je svobodný a bezztrátový zvukový formát.

http://en.wikipedia.org/wiki/" "Shorten" #: core/backendplugin.cpp:238 msgid "" "True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/" "TTA (codec)" msgstr "" "True Audio (TTA) je svobodný a bezztrátový zvukový formát.

http://en.wikipedia.org/wiki/" "TTA (kodek)" #: core/backendplugin.cpp:245 msgid "" "WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack" msgstr "" "WavPack (WV) je svobodný a bezztrátový zvukový formát.

http://en.wikipedia.org/wiki/" "WavPack" #: core/backendplugin.cpp:370 msgid "" "8-Bit Sampled Voice (8SVX) is an audio file format standard developed by " "Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX" msgstr "" "8-Bit Sampled Voice (8SVX) je standard formátu zvukového souboru vyvíjeného " "Electronic Arts pro řadu počítačů Commodore-Amiga.

http://en.wikipedia.org/wiki/8SVX" #: core/backendplugin.cpp:381 msgid "" "Audio Interchange File Format (AIFF) is a very simple audio format that " "doesn't compress the audio stream so it's lossless but the file size is very " "big and it doesn't support advanced features like tags.

http://en." "wikipedia.org/wiki/Audio Interchange File Format" msgstr "" "Audio Interchange File Format (AIFF) je velmi jednoduchý zvukový formát, " "který nestlačuje zvukový proud, takže je bezztrátový, ale velikost souboru " "je velice veliká, a nepodporuje pokročilé vlastnosti, jako jsou značky." "

http://en.wikipedia.org/wiki/Audio Interchange File Format" #: core/backendplugin.cpp:449 msgid "Killing process on user request" msgstr "Proces se ukončuje z požadavku uživatele" #: core/backendplugin.cpp:524 msgid "In order to encode %1 files, you need to install '%2'." msgstr "Pro zakódování %1 souborů potřebujete nainstalovat '%2'." #: core/backendplugin.cpp:531 msgid "In order to decode %1 files, you need to install '%2'." msgstr "Pro dekódování %1 souborů potřebujete nainstalovat '%2'." #: core/backendplugin.cpp:538 msgid "In order to transcode %1 files, you need to install '%2'." msgstr "Pro překódování %1 souborů potřebujete nainstalovat '%2'." #: core/backendplugin.cpp:545 msgid "" "In order to calculate Replay Gain tags for %1 files, you need to install " "'%2'." msgstr "" "Pro spočítání značek vyrovnání hlasitosti pro %1 souborů potřebujete " "nainstalovat '%2'." #: core/backendplugin.cpp:552 msgid "'%1' should be shipped with your distribution." msgstr "'%1' by měl být přítomen ve vaší distribuci." #: core/backendplugin.cpp:559 msgid "" "Since '%1' includes patented codecs, it may not be included in the default " "installation of your distribution. Many distributions offer '%1' in an " "additional software repository." msgstr "" "Protože '%1' zahrnuje patentované kodeky, nemůže být zahrnut ve výchozí " "instalaci vaší distribuce. Hodně distribucí '%1' nabízí v dodatečném skladu " "s programy." #: core/backendplugin.cpp:566 msgid "You can download '%1' at %2" msgstr "'%1' můžete stáhnout na %2" #: core/backendplugin.cpp:575 msgid "In order to use the filter %1, you need to install '%2'." msgstr "Pro použití filtru %1 potřebujete nainstalovat '%2'." #: core/backendplugin.cpp:579 msgid "In order to use the filters %1, you need to install '%2'." msgstr "Pro použití filtrů %1 potřebujete nainstalovat '%2'." #: filelist.cpp:48 msgid "State" msgstr "Stav" #: filelist.cpp:49 msgid "Input" msgstr "Vstup" #: filelist.cpp:50 msgid "Output" msgstr "Výstup" #: filelist.cpp:51 plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:31 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:100 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:125 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:31 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:76 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:101 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:84 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:182 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:214 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:498 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:510 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:65 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:35 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:95 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:121 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:35 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:85 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:112 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:94 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:34 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:117 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:63 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:136 msgid "Quality" msgstr "Kvalita" #: filelist.cpp:79 msgid "Edit options..." msgstr "Upravit volby..." #: filelist.cpp:81 msgid "Start conversion" msgstr "Spustit převod" #: filelist.cpp:83 msgid "Stop conversion" msgstr "Zastavit převod" #: filelist.cpp:85 optionssimple.cpp:44 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:101 #: replaygainscanner/replaygainfilelist.cpp:75 msgid "Remove" msgstr "Odstranit" #: filelist.cpp:178 opener/fileopener.cpp:139 opener/playlistopener.cpp:141 #: replaygainscanner/replaygainfilelist.cpp:215 #: replaygainscanner/replaygainscanner.cpp:199 soundkonverterview.cpp:344 msgid "" "This file type is unknown to soundKonverter.\n" "Maybe you need to install an additional soundKonverter plugin.\n" "You should have a look at your distribution's package manager for this." msgstr "" "Tento typ souboru je soundKonverteru neznámý.\n" "Možná potřebujete nainstalovat dodatečný přídavný modul soundKonverteru.\n" "Kvůli tomuto byste se měl podívat na správce balíčků své distribuce." #: filelist.cpp:216 opener/fileopener.cpp:179 opener/playlistopener.cpp:181 #: opener/playlistopener.cpp:213 replaygainscanner/replaygainfilelist.cpp:253 #: replaygainscanner/replaygainscanner.cpp:239 soundkonverterview.cpp:382 msgid "... and %1 more files" msgstr "... a %1 další soubory" #: filelist.cpp:539 filelist.cpp:598 msgid "Will be skipped" msgstr "Bude přeskočeno" #: filelist.cpp:543 soundkonverter.cpp:141 soundkonverter.cpp:145 msgid "Waiting" msgstr "Čeká se" #: filelist.cpp:554 msgid "Waiting for Replay Gain" msgstr "Čeká se na vyrovnání hlasitosti skladeb" #: filelist.cpp:583 msgid "Stopped" msgstr "Zastaveno" #: filelist.cpp:588 msgid "Backend not configured" msgstr "Jádro není nastaveno" #: filelist.cpp:593 msgid "Disc full" msgstr "Disk je plný" #: filelist.cpp:603 msgid "Failed" msgstr "Nepodařilo se" #: filelist.cpp:606 msgid "" "The conversion has failed.\n" "See the log for more information." msgstr "" "Převod se nezdařil.\n" "Podívejte se na zápis, kde najdete více informací." #: filelist.cpp:630 msgid "CD track %1" msgstr "Stopa na CD %1" #: filelist.cpp:1297 msgid "" "Do you want to overwrite the current file list?\n" "\n" "If not, the saved file list will be appended." msgstr "" "Chcete přepsat nynější seznam se soubory?\n" "\n" "Pokud ne, bude připojen uložený souborový seznam." #: global.cpp:97 global.cpp:99 global.cpp:123 global.cpp:125 msgctxt "days" msgid "d" msgstr "d" #: global.cpp:99 global.cpp:101 global.cpp:125 global.cpp:127 msgctxt "hours" msgid "h" msgstr "h" #: global.cpp:101 global.cpp:103 global.cpp:105 global.cpp:127 global.cpp:129 #: global.cpp:131 msgctxt "minutes" msgid "m" msgstr "m" #: global.cpp:103 global.cpp:105 global.cpp:107 global.cpp:109 global.cpp:111 #: global.cpp:129 global.cpp:131 global.cpp:133 msgctxt "seconds" msgid "s" msgstr "s" #: global.cpp:107 global.cpp:109 global.cpp:111 global.cpp:113 msgctxt "milliseconds" msgid "ms" msgstr " ms" #: logger.cpp:90 msgid "Identifier" msgstr "Identifikátor" #: logger.cpp:91 msgid "Log ID" msgstr "ID zápisu" #: logger.cpp:185 logger.cpp:188 msgid "Finished logging" msgstr "Zápis ukončen" #: logviewer.cpp:25 msgid "Log Viewer" msgstr "Prohlížeč zápisů" #: logviewer.cpp:28 msgid "Update" msgstr "Obnovit" #: logviewer.cpp:31 msgid "Save to file..." msgstr "Uložit do souboru..." #: logviewer.cpp:42 msgid "Log file:" msgstr "Soubor se zápisem:" #: logviewer.cpp:84 msgid "soundKonverter application log" msgstr "Zápis programu soundKonverter" #: logviewer.cpp:127 msgid "Save log file" msgstr "Uložit soubor se zápisem" #: logviewer.cpp:134 msgid "File already exists. Do you really want to overwrite it?" msgstr "Soubor již existuje. Opravdu si jej přejete přepsat?" #: logviewer.cpp:139 msgid "" "Writing to file failed.\n" "Maybe you haven't got write permission." msgstr "" "Zápis do souboru selhal.\n" "Možná nemáte oprávnění pro zápis." #: main.cpp:16 msgid "" "soundKonverter is a frontend to various audio converters, Replay Gain tools " "and CD rippers.\n" "\n" "Please file bug reports at https://bugs.launchpad.net/soundkonverter\n" "or simply send me a mail to hessijames@gmail.com" msgstr "" "soundKonverter je rozhraní pro různé převodníky zvuku, nástroje pro " "vyrovnání hlasitosti skladeb a vytahovače skladeb z CD.\n" "\n" "Chyby, prosím, hlaste na stránkách https://bugs.launchpad.net/" "soundkonverter\n" "nebo autorovi jednoduše zašlete dopis na adresu elektronické pošty " "hessijames@gmail.com" #: main.cpp:22 msgid "soundKonverter" msgstr "soundKonverter" #: main.cpp:22 msgid "(C) 2005-2012 Daniel Faust" msgstr "(C) 2005-2012 Daniel Faust" #: main.cpp:23 msgid "Daniel Faust" msgstr "Daniel Faust" #: main.cpp:24 msgid "David Vignoni" msgstr "David Vignoni" #: main.cpp:24 msgid "Nuvola icon theme" msgstr "Motiv ikon Nuvola" #: main.cpp:25 msgid "Scott Wheeler" msgstr "Scott Wheeler" #: main.cpp:25 msgid "TagLib" msgstr "TagLib" #: main.cpp:26 msgid "Marco Nelles" msgstr "Marco Nelles" #: main.cpp:26 msgid "Audex" msgstr "Audex" #: main.cpp:27 msgid "Amarok developers" msgstr "Vývojáři Amaroku" #: main.cpp:27 msgid "Amarok" msgstr "Amarok" #: main.cpp:28 msgid "All programmers of audio converters" msgstr "Všichni programátoři převodníku zvuku" #: main.cpp:32 msgid "Open the Replay Gain tool an add all given files" msgstr "" "Otevřít nástroj pro vyrovnání hlasitosti skladeb a přidat všechny dané " "soubory" #: main.cpp:33 msgid "List all tracks on the cd drive , 'auto' will search for a cd" msgstr "" "Sestavit seznam všech skladeb na CD v mechanice , 'auto' provede " "vyhledání CD" #: main.cpp:34 msgid "Add all files using the given profile" msgstr "Přidat všechny soubory pomocí daného profilu" #: main.cpp:35 msgid "Add all files using the given format" msgstr "Přidat všechny soubory pomocí daného formátu" #: main.cpp:36 msgid "Output all files to " msgstr "Provést výstup všech souborů do adresáře " #: main.cpp:37 msgid "Start soundKonverter invisible" msgstr "Spustit soundKonverter neviditelný" #: main.cpp:38 msgid "Start the conversion immediately (enabled when using '--invisible')" msgstr "Začít s převodem okamžitě (povoleno, když je zapnuto '--invisible')" #: main.cpp:39 msgid "" "Close soundKonverter after all files are converted (enabled when using '--" "invisible')" msgstr "" "Zavřít soundKonverter, když byly všechny soubory převedeny (povoleno, když " "je zapnuto 'invisible')" #: main.cpp:40 #, c-format msgid "" "Execute after each file has been converted (%i=input file, " "%o=output file)" msgstr "" "Provést příkaz , když byly všechny soubory převedeny (%i=input " "file, %o=output file)" #: main.cpp:41 msgid "Audio file(s) to append to the file list" msgstr "Zvukový soubor(y) pro přidání do seznamu souborů" #: metadata/tagengine.cpp:59 msgctxt "cover type" msgid "Unclassified" msgstr "Nezařazeno" #: metadata/tagengine.cpp:61 msgctxt "cover type" msgid "32x32 PNG file icon" msgstr "Ikona souboru PNG 32x32" #: metadata/tagengine.cpp:63 msgctxt "cover type" msgid "File icon" msgstr "Ikona souboru" #: metadata/tagengine.cpp:65 msgctxt "cover type" msgid "Front cover" msgstr "Přední strana obalu" #: metadata/tagengine.cpp:67 msgctxt "cover type" msgid "Back cover" msgstr "Zadní strana obalu" #: metadata/tagengine.cpp:69 msgctxt "cover type" msgid "Leaflet page" msgstr "Strana brožurky" #: metadata/tagengine.cpp:71 msgctxt "cover type" msgid "CD photo" msgstr "Foto CD" #: metadata/tagengine.cpp:73 msgctxt "cover type" msgid "Lead artist picture" msgstr "Obrázek hlavního umělce" #: metadata/tagengine.cpp:75 msgctxt "cover type" msgid "Artist picture" msgstr "Obrázek umělce" #: metadata/tagengine.cpp:77 msgctxt "cover type" msgid "Conductor picture" msgstr "Obrázek dirigenta" #: metadata/tagengine.cpp:79 msgctxt "cover type" msgid "Band picture" msgstr "Obrázek skupiny" #: metadata/tagengine.cpp:81 msgctxt "cover type" msgid "Composer picture" msgstr "Obrázek skladatele" #: metadata/tagengine.cpp:83 msgctxt "cover type" msgid "Lyricist picture" msgstr "Obrázek textaře" #: metadata/tagengine.cpp:85 msgctxt "cover type" msgid "Picture of the recording location" msgstr "Obrázek místa nahrávky" #: metadata/tagengine.cpp:87 msgctxt "cover type" msgid "Picture of the artists during recording" msgstr "Obrázek umělce během nahrávání" #: metadata/tagengine.cpp:89 msgctxt "cover type" msgid "Picture of the artists during performance" msgstr "Obrázek umělce během představení" #: metadata/tagengine.cpp:91 msgctxt "cover type" msgid "Picture from a video" msgstr "Obrázek z videa" #: metadata/tagengine.cpp:93 msgctxt "cover type" msgid "Picture of a large, coloured fish" msgstr "Obrázek velké pestrobarevné ryby" #: metadata/tagengine.cpp:95 msgctxt "cover type" msgid "Illustration related to the track" msgstr "Ilustrace související se skladbou" #: metadata/tagengine.cpp:97 msgctxt "cover type" msgid "Band logo" msgstr "Značka skupiny" #: metadata/tagengine.cpp:99 msgctxt "cover type" msgid "Publisher logo" msgstr "Značka vydavatele" #: opener/cdopener.cpp:117 msgid "Add CD tracks" msgstr "Přidat skladby na CD" #: opener/cdopener.cpp:126 msgid "1. Select CD tracks" msgstr "1. Vybrat stopy na CD" #: opener/cdopener.cpp:131 opener/diropener.cpp:57 opener/urlopener.cpp:53 msgid "2. Set conversion options" msgstr "2. Nastavit převodní volby" #: opener/cdopener.cpp:164 opener/cdopener.cpp:300 optionseditor.cpp:133 msgid "Artist:" msgstr "Umělec:" #: opener/cdopener.cpp:169 opener/cdopener.cpp:854 opener/cdopener.cpp:1037 #: opener/cdopener.cpp:1043 opener/cdopener.cpp:1108 opener/cdopener.cpp:1143 #: opener/cdopener.cpp:1357 msgid "Various Artists" msgstr "Různí umělci" #: opener/cdopener.cpp:176 opener/cdopener.cpp:311 optionseditor.cpp:144 msgid "Composer:" msgstr "Skladatel:" #: opener/cdopener.cpp:182 opener/cdopener.cpp:859 opener/cdopener.cpp:1056 #: opener/cdopener.cpp:1062 opener/cdopener.cpp:1121 opener/cdopener.cpp:1149 #: opener/cdopener.cpp:1359 msgid "Various Composer" msgstr "Různí skladatelé" #: opener/cdopener.cpp:189 optionseditor.cpp:160 msgid "Album:" msgstr "Album:" #: opener/cdopener.cpp:197 optionseditor.cpp:176 msgid "Disc No.:" msgstr "Číslo disku:" #: opener/cdopener.cpp:203 optionseditor.cpp:117 optionseditor.cpp:187 msgctxt "Track/Disc No. x of y" msgid "of" msgstr "z" #: opener/cdopener.cpp:211 optionseditor.cpp:199 msgid "Year:" msgstr "Rok:" #: opener/cdopener.cpp:219 optionseditor.cpp:211 msgid "Genre:" msgstr "Žánr:" #: opener/cdopener.cpp:240 msgctxt "column title" msgid "Rip" msgstr "Získat" #: opener/cdopener.cpp:241 opener/cdopener.cpp:1102 #: replaygainscanner/replaygainfilelist.cpp:36 msgid "Track" msgstr "Skladba" #: opener/cdopener.cpp:242 msgid "Artist" msgstr "Umělec" #: opener/cdopener.cpp:243 msgid "Composer" msgstr "Skladatel" #: opener/cdopener.cpp:244 msgid "Title" msgstr "Název" #: opener/cdopener.cpp:245 msgid "Length" msgstr "Délka" #: opener/cdopener.cpp:246 msgid "Player" msgstr "Přehrávač" #: opener/cdopener.cpp:262 msgid "No track selected" msgstr "Nejsou vybrány žádné skladby" #: opener/cdopener.cpp:285 optionseditor.cpp:95 msgid "Title:" msgstr "Název:" #: opener/cdopener.cpp:326 optionseditor.cpp:232 msgid "Comment:" msgstr "Poznámka:" #: opener/cdopener.cpp:373 opener/diropener.cpp:144 opener/fileopener.cpp:56 #: opener/playlistopener.cpp:40 opener/urlopener.cpp:70 optionseditor.cpp:57 #: optionslayer.cpp:42 msgid "Select your desired output options and click on \"Ok\"." msgstr "Zvolte své upřednostňované výstupní volby a klepněte na \"OK\"." #: opener/cdopener.cpp:394 msgid "Save cue sheet..." msgstr "Uložit soubor cue..." #: opener/cdopener.cpp:399 msgid "Request CDDB" msgstr "Vyžádat si CDDB" #: opener/cdopener.cpp:404 msgid "Rip entire CD to one file" msgstr "Získat celé CD do jednoho souboru" #: opener/cdopener.cpp:414 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Possible solutions are listed below.\n" msgstr "" "Získávání skladeb z celého CD do jednoho souboru není podporováno " "nainstalovanými jádry.\n" "Možná řešení jsou vypsána níže.\n" #: opener/cdopener.cpp:418 msgid "" "Ripping an entire cd to a single file is not supported by the installed " "backends.\n" "Please check your distribution's package manager in order to install an " "additional ripper plugin which supports ripping to one file." msgstr "" "Získávání skladeb z celého CD do jednoho souboru není podporováno " "nainstalovanými jádry.\n" "Prověřte, prosím, na správce balíčků své distribuce, abyste nainstaloval " "dodatečný přídavný modul vytahovače skladeb, který podporuje získávání " "skladeb do jednoho souboru." #: opener/cdopener.cpp:425 opener/diropener.cpp:38 opener/urlopener.cpp:81 msgid "Proceed" msgstr "Pokračovat" #: opener/cdopener.cpp:428 opener/fileopener.cpp:64 #: opener/playlistopener.cpp:48 opener/urlopener.cpp:84 optionslayer.cpp:50 msgid "Ok" msgstr "OK" #: opener/cdopener.cpp:432 opener/fileopener.cpp:67 #: opener/playlistopener.cpp:51 opener/urlopener.cpp:88 optionslayer.cpp:53 #: replaygainscanner/replaygainscanner.cpp:84 msgid "Cancel" msgstr "Zrušit" #: opener/cdopener.cpp:473 msgid "Select CD-ROM drive" msgstr "Vybrat mechaniku CD-ROM" #: opener/cdopener.cpp:473 msgid "Multiple CD-ROM drives where found. Please select one:" msgstr "Bylo nalezeno více mechanik CD. Vyberte, prosím, jednu:" #: opener/cdopener.cpp:618 msgid "DVD Recorder" msgstr "Vypalovačka DVD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:624 msgid "CD Recorder" msgstr "Vypalovačka CD" #: opener/cdopener.cpp:620 opener/cdopener.cpp:622 msgid "DVD Player" msgstr "Přehrávač DVD" #: opener/cdopener.cpp:626 msgid "CD Player" msgstr "Přehrávač CD" #: opener/cdopener.cpp:627 msgid "%1 (%2): Audio CD with %3 tracks" msgstr "%1 (%2): Audio CD s %3 stopami" #: opener/cdopener.cpp:691 opener/cdopener.cpp:692 opener/cdopener.cpp:698 #: opener/cdopener.cpp:707 opener/cdopener.cpp:708 msgid "Unknown" msgstr "Neznámý" #: opener/cdopener.cpp:756 msgid "Please wait, trying to download CDDB data ..." msgstr "Počkejte, prosím, probíhá pokus o stažení dat CDDB..." #: opener/cdopener.cpp:805 msgid "Select CDDB Entry" msgstr "Vybrat záznam CDDB" #: opener/cdopener.cpp:805 msgid "Multiple CDDB entries where found. Please select one:" msgstr "Nalezeno více záznamů v CDDB. Vyberte, prosím, jeden:" #: opener/cdopener.cpp:992 msgid "All tracks" msgstr "Všechny skladby" #: opener/cdopener.cpp:996 msgid "Tracks" msgstr "Skladby" #: opener/cdopener.cpp:1302 msgid "Please select at least one track in order to proceed." msgstr "Vyberte, prosím, alespoň jednu skladbu, aby se mohlo pokračovat." #: opener/cdopener.cpp:1383 opener/diropener.cpp:208 opener/fileopener.cpp:206 #: opener/playlistopener.cpp:238 opener/urlopener.cpp:146 optionslayer.cpp:140 msgid "No conversion options selected." msgstr "Nevybrány žádné převodní volby." #: opener/cdopener.cpp:1397 msgid "" "A file with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Jeden soubor s tímto názvem již existuje.\n" "\n" "Chcete jej přepsat?" #: opener/cdopener.cpp:1398 msgid "File already exists" msgstr "Soubor již existuje" #: opener/diropener.cpp:26 msgid "Add folder" msgstr "Přidat složku" #: opener/diropener.cpp:52 msgid "1. Select directory" msgstr "1. Vybrat adresář" #: opener/diropener.cpp:83 msgid "Directory:" msgstr "Adresář:" #: opener/diropener.cpp:90 msgid "Only add selected file formats:" msgstr "Přidat pouze vybrané formáty souborů:" #: opener/diropener.cpp:118 opener/fileopener.cpp:72 #: replaygainscanner/replaygainscanner.cpp:150 msgid "Are you missing some file formats?" msgstr "Postrádáte některé souborové formáty?" #: opener/diropener.cpp:126 msgid "Select all" msgstr "Vybrat vše" #: opener/diropener.cpp:130 msgid "Select none" msgstr "Zrušit výběr" #: opener/diropener.cpp:134 msgid "Recursive" msgstr "Rekurzivní" #: opener/diropener.cpp:136 msgid "If checked, files from subdirectories will be added, too." msgstr "V případě, že je označeno, budou soubory v podadresářích přidány též." #: opener/fileopener.cpp:32 opener/fileopener.cpp:76 #: opener/playlistopener.cpp:56 replaygainscanner/replaygainscanner.cpp:154 msgid "Add Files" msgstr "Přidat soubory" #: opener/fileopener.cpp:51 replaygainscanner/replaygainscanner.cpp:144 msgid "%1 files" msgstr "%1 soubory" #: opener/fileopener.cpp:53 replaygainscanner/replaygainscanner.cpp:146 msgid "All supported files" msgstr "Všechny podporované soubory" #: opener/fileopener.cpp:54 replaygainscanner/replaygainscanner.cpp:147 msgid "All files" msgstr "Všechny soubory" #: opener/playlistopener.cpp:31 msgid "Add playlist" msgstr "Přidat seznam skladeb" #: opener/playlistopener.cpp:215 msgid "The following files couldn't be found:\n" msgstr "Následující soubory se nepodařilo nalézt:\n" #: opener/playlistopener.cpp:218 msgid "Files not found" msgstr "Soubory nenalezeny" #: opener/urlopener.cpp:35 msgid "Add url" msgstr "Přidat adresu (URL)" #: opener/urlopener.cpp:48 msgid "1. Enter url" msgstr "1. Zadat adresu (URL)" #: opener/urlopener.cpp:114 msgid "The Url you entered is invalid. Please try again." msgstr "Adresa, kterou jste zadal, je neplatná. Zkuste to, prosím, znovu." #: optionsdetailed.cpp:41 optionssimple.cpp:58 msgid "Format:" msgstr "Formát:" #: optionsdetailed.cpp:51 msgid "Use Plugin:" msgstr "Použít přídavný modul:" #: optionsdetailed.cpp:116 optionssimple.cpp:79 msgid "Destination:" msgstr "Cíl:" #: optionsdetailed.cpp:124 optionssimple.cpp:101 msgid "Calculate Replay Gain tags" msgstr "Spočítat značky k vyrovnání hlasitosti skladeb" #: optionsdetailed.cpp:134 msgid "Save current options as a profile" msgstr "Uložit nynější volby jako profil" #: optionsdetailed.cpp:141 msgid "Load saved profiles" msgstr "Nahrát uložené profily" #: optionsdetailed.cpp:252 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Possible solutions are listed below." msgstr "" "Vyrovnávání hlasitosti není pro %1 souborový formát podporováno.\n" "Možná řešení jsou vypsána níže." #: optionsdetailed.cpp:256 msgid "" "Replay Gain is not supported for the %1 file format.\n" "Please check your distribution's package manager in order to install an " "additional Replay Gain plugin." msgstr "" "Vyrovnávání hlasitosti není pro %1 souborový formát podporováno.\n" "Prověřte, prosím, na správce balíčků své distribuce, abyste nainstaloval " "dodatečný přídavný modul pro vyrovnání hlasitosti." #: optionsdetailed.cpp:262 msgid "" "Replay Gain tags can tell your music player how loud a track is\n" "so it can adjust the volume to play all tracks with equal loudness." msgstr "" "Značky pro vyrovnání hlasitosti mohou vašemu přehrávači hudby\n" "říct, jak hlasitá skladba je, takže tuto hlasitost může upravit tak, aby\n" "se všechny skladby přehrávaly stejně hlasitě." #: optionsdetailed.cpp:311 optionssimple.cpp:389 msgid "" "Using the current conversion options will create files with approximately %1 " "per minute." msgstr "" "Použití nynějších převodních voleb vytvoří soubory s přibližně %1 za minutu." #: optionsdetailed.cpp:448 msgid "New profile" msgstr "Nový profil" #: optionsdetailed.cpp:448 msgid "Enter a name for the new profile:" msgstr "Zadejte název pro nový profil:" #: optionsdetailed.cpp:455 msgid "You cannot save a profile without a name." msgstr "Nelze uložit profil bez názvu." #: optionsdetailed.cpp:455 msgid "Profile name is empty" msgstr "Název profilu je prázdný" #: optionsdetailed.cpp:475 msgid "You cannot overwrite the built-in profiles." msgstr "Vestavěné profily nelze přepsat ." #: optionsdetailed.cpp:475 optionsdetailed.cpp:500 msgid "Profile already exists" msgstr "Profil již existuje" #: optionsdetailed.cpp:500 msgid "" "A profile with this name already exists.\n" "\n" "Do you want to overwrite the existing one?" msgstr "" "Profil s tímto názvem již existuje.\n" "\n" "Chcete přepsat stávající?" #: optionseditor.cpp:40 msgid "Previous" msgstr "Předchozí" #: optionseditor.cpp:42 msgid "Next" msgstr "Další" #: optionseditor.cpp:65 msgid "Edit conversion options" msgstr "Upravit převodní volby" #: optionseditor.cpp:74 msgid "Tags" msgstr "Značky" #: optionseditor.cpp:85 msgid "Covers:" msgstr "Obaly:" #: optionseditor.cpp:102 optionseditor.cpp:113 optionseditor.cpp:124 #: optionseditor.cpp:140 optionseditor.cpp:151 optionseditor.cpp:167 #: optionseditor.cpp:183 optionseditor.cpp:194 optionseditor.cpp:206 #: optionseditor.cpp:223 optionseditor.cpp:239 msgid "Edit" msgstr "Upravit" #: optionseditor.cpp:106 msgid "Track No.:" msgstr "Číslo skladby:" #: optionseditor.cpp:249 msgid "Edit tags" msgstr "Upravit značky" #: optionseditor.cpp:353 msgid "No file selected" msgstr "Nevybrán žádný soubor" #: optionseditor.cpp:384 msgid "" "The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the " "file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags after downloading." msgstr "" "Značky se nepodařilo přečíst, protože soubor není místní.\n" "SoundKonverter se značky pokusí přečíst krátce před převodem souboru.\n" "Pokud chcete značky upravit, můžete stisknout tlačítko níže.\n" "Ale pak se soundKonverter značky po stažení už nebude pokoušet přečíst." #: optionseditor.cpp:394 msgid "" "Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the file.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Značky se nepodařilo přečíst.\n" "soundKonverter se značky pokusí přečíst podruhé před převodem souboru.\n" "Pokud chcete značky upravit, můžete stisknout tlačítko níže.\n" "Ale pak se soundKonverter podruhé už značky nebude pokoušet přečíst." #: optionseditor.cpp:418 msgctxt "cover tooltip" msgid "Cover type:" msgstr "Typ obalu:" #: optionseditor.cpp:420 msgctxt "cover tooltip" msgid "Description:" msgstr "Popis:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "Size:" msgstr "Velikost:" #: optionseditor.cpp:421 msgctxt "cover tooltip" msgid "%1 x %2 pixels (%3)" msgstr "%1 x %2 pixelů (%3)" #: optionseditor.cpp:423 msgctxt "cover tooltip" msgid "Mime type:" msgstr "Typ MIME:" #: optionseditor.cpp:447 msgid "%1 Files" msgstr "%1 Soubory" #: optionseditor.cpp:468 msgid "" "You have selected multiple files with different conversion options.\n" "You can change the options of all files by hitting the button below." msgstr "" "Vybral jste více souborů s různými volbami pro převod.\n" "Volby všech souborů můžete upravit klepnutím na dolní tlačítko." #: optionseditor.cpp:476 msgid "" "Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to " "convert the files.\n" "If you want to edit the tags, you can hit the button below but then " "soundKonverter will not try\n" "to read the tags a second time." msgstr "" "Čtení značek jednoho nebo více souborů se nezdařilo.\n" "Značky se nepodařilo přečíst.\n" "soundKonverter se značky pokusí přečíst podruhé před převodem souborů.\n" "Pokud chcete značky upravit, můžete stisknout tlačítko níže.\n" "Ale pak se soundKonverter podruhé značky nebude pokoušet přečíst." #: optionssimple.cpp:35 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:69 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:286 msgid "Quality:" msgstr "Kvalita:" #: optionssimple.cpp:46 msgid "Remove the selected profile" msgstr "Odstranit vybraný profil" #: optionssimple.cpp:49 optionssimple.cpp:68 msgid "Info" msgstr "Informace" #: optionssimple.cpp:51 msgid "Information about the selected profile" msgstr "Informace o vybraném profilu" #: optionssimple.cpp:70 msgid "Information about the selected file format" msgstr "Informace o vybraném formátu souborů" #: optionssimple.cpp:74 msgid "More formats..." msgstr "Další formáty..." #: optionssimple.cpp:96 msgid "Optional:" msgstr "Volitelné:" #: optionssimple.cpp:189 msgid "" "Encoding files with a very low quality can be useful if you have a mobile " "device where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Zakódování souborů o velmi nízké kvalitě může být užitečné, když máte " "přenosné zařízení, kde je velikost ukládacího prostoru omezena.\n" "Nedoporučuje se, abyste ukládali svou hudbu v této kvalitě bez toho, že " "byste ji měli zazálohovanou ve vyšší kvalitě." #: optionssimple.cpp:193 msgid "" "Encoding files with a low quality can be useful if you have a mobile device " "where your storage space is limited.\n" "It is not recommended to save your music in this quality without a copy of " "higher quality." msgstr "" "Zakódování souborů o nízké kvalitě může být užitečné, když máte přenosné " "zařízení, kde je velikost ukládacího prostoru omezena.\n" "Nedoporučuje se, abyste ukládali svou hudbu v této kvalitě bez toho, že " "byste ji měli zazálohovanou ve vyšší kvalitě." #: optionssimple.cpp:197 msgid "" "Encoding files with a medium quality is a compromise between quality and " "file size.\n" "Most people might not hear much of a difference to the original files but " "you should only use it to save music if your storage space is limited." msgstr "" "Zakódování souborů o střední kvalitě je kompromisem mezi jakostí a velikostí " "souboru.\n" "Většina lidí nějaký zvláštní rozdíl oproti původním souborům neuslyší, ale " "měli byste to použít pro ukládání jen v případě, že je velikost vašeho " "ukládacího prostoru omezena." #: optionssimple.cpp:201 msgid "" "Encoding files with a high quality is a good choice if you have enough " "storage space available. You can use this to save your music." msgstr "" "Zakódování souborů o vysoké kvalitě je dobrou volbou, pokud máte dostatek " "ukládacího prostoru. V tom případě použijte tento profil pro ukládání své " "hudby." #: optionssimple.cpp:205 msgid "" "Encoding files with a very high quality is fine if you have enough storage " "space." msgstr "" "Zakódování souborů o velmi vysoké kvalitě je dobré, pokud máte dostatek " "ukládacího prostoru." #: optionssimple.cpp:209 msgid "" "Encoding files lossless will preserve the quality of the original file.\n" "It is only then useful if the original file has a good quality (e.g. audio " "CD).\n" "The file size will be big, so you should only use it if you have enough " "storage space." msgstr "" "Bezztrátové zakódování souborů zachová kvalitu původního souboru.\n" "Je to užitečné jen tehdy, když má původní soubor dobrou kvalitu (např. " "zvukové CD).\n" "Velikost souboru bude velká. Měli byste to použít proto jen v případě, že " "máte dostatek ukládacího prostoru." #: optionssimple.cpp:217 msgid "You can define your own profile in the \"Detailed\" tab." msgstr "Můžete stanovit vlastní profil na kartě \"Podrobné\"." #: optionssimple.cpp:221 msgid "This is a user defined profile." msgstr "Toto je profil stanovený uživatelem." #: optionssimple.cpp:224 msgid "Profile info for %1" msgstr "Informace o profilu pro %1" #: optionssimple.cpp:231 msgid "Do you really want to remove the profile: %1" msgstr "Opravdu chcete odstranit profil: %1" #: optionssimple.cpp:231 msgid "Remove profile?" msgstr "Odstranit profil?" #: optionssimple.cpp:280 msgid "Format info for %1" msgstr "Informace o formátu pro %1" #: optionssimple.cpp:284 msgid "Sorry, no format information available." msgstr "Promiňte, ale není dostupná žádná informace o formátu." #: outputdirectory.cpp:36 msgid "By meta data" msgstr "Na základě metadat" #: outputdirectory.cpp:37 msgid "Source directory" msgstr "Zdrojový adresář" #: outputdirectory.cpp:38 msgid "Specify output directory" msgstr "Určit výstupní adresář" #: outputdirectory.cpp:39 msgid "Copy directory structure" msgstr "Kopírovat strukturu adresářů" #: outputdirectory.cpp:50 outputdirectory.cpp:461 msgid "Choose an output directory" msgstr "Vybrat výstupní adresář" #: outputdirectory.cpp:55 msgid "Open the output directory with Dolphin" msgstr "Otevřít výstupní adresář v programu Dolphin" #: outputdirectory.cpp:224 msgid "Unknown Artist" msgstr "Neznámý umělec" #: outputdirectory.cpp:228 msgid "Unknown Album" msgstr "Neznámé album" #: outputdirectory.cpp:232 msgid "No Comment" msgstr "Žádná poznámka" #: outputdirectory.cpp:239 msgid "Unknown Genre" msgstr "Neznámý žánr" #: outputdirectory.cpp:246 msgid "Unknown Composer" msgstr "Neznámý skladatel" #: outputdirectory.cpp:250 msgid "Unknown Title" msgstr "Neznámý název" #: outputdirectory.cpp:331 msgctxt "" "will be appended to the filename if a file with the same name already exists" msgid "new" msgstr "Nový" #: outputdirectory.cpp:512 msgid "Name all converted files according to the specified pattern" msgstr "Pojmenovat všechny převedené soubory podle zadaného vzoru" #: outputdirectory.cpp:513 msgid "" "The following strings are wildcards that will be replaced\n" "by the information in the meta data:\n" "\n" "%a - Artist\n" "%b - Album\n" "%c - Comment\n" "%d - Disc number\n" "%g - Genre\n" "%n - Track number\n" "%p - Composer\n" "%t - Title\n" "%y - Year\n" "%f - Original file name\n" "\n" "You may parenthesize these wildcards and surrounding characters with squared " "brackets ('[' and ']')\n" "so they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a " "backslash ('\\[' and '\\]')." msgstr "" "Následující řetězce jsou zástupnými znaky, které budou nahrazeny\n" "údaji v popisných datech:\n" "\n" "%a - Umělec\n" "%b - Album\n" "%c - Poznámka\n" "%d - Číslo disku\n" "%g - Žánr\n" "%n - Číslo skladby\n" "%p - Skladatel\n" "%t - Název\n" "%y - Rok\n" "%f - Původní název souboru\n" "\n" "Tyto zástupné znaky můžete dát do kulatých závorek a okolní znaky do " "hranatých závorek ('[' a ']'),\n" "takže se budou, pokud bude nahrazovací hodnota prázdná, přehlížet.\n" "Aby se použily hranaté závorky, budete je muset nechat utéct pomocí zpětného " "lomítka ('\\[' a '\\]')." #: outputdirectory.cpp:525 msgid "" "Output all converted files into the same directory as the original files" msgstr "" "Provést výstup všech převedených souborů do téhož adresáře, kde jsou původní " "soubory" #: outputdirectory.cpp:536 msgid "Output all converted files into the specified output directory" msgstr "" "Provést výstup všech převedených souborů do zadaného výstupního adresáře" #: outputdirectory.cpp:547 msgid "Copy the whole directory structure for all converted files" msgstr "Kopírovat úplnou strukturu adresářů pro všechny převedené soubory" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:28 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:28 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:80 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:32 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:33 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:60 msgid "Mode:" msgstr "Režim:" #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:32 #: plugins/soundkonverter_codec_aften/aftencodecwidget.cpp:131 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:32 #: plugins/soundkonverter_codec_faac/faaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:85 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:221 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:487 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:36 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:128 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:36 #: plugins/soundkonverter_codec_speex/speexcodecwidget.cpp:118 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:126 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:269 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:35 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:124 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:64 msgid "Bitrate" msgstr "Datový tok" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:31 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:31 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:88 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:246 msgid "Bitrate:" msgstr "Datový tok:" #: plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp:82 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:60 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:146 #: plugins/soundkonverter_codec_libav/libavcodecwidget.cpp:82 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:94 #: plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp:26 #: plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp:26 #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:64 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:47 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:102 msgid "Additional encoder arguments:" msgstr "Dodatečné argumenty pro kodér:" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:301 msgid "Enable experimental codecs in the ffmpeg configuration dialog." msgstr "Povolit v dialogu pro nastavení ffmpeg experimentální kodeky." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:305 msgid "Compile ffmpeg with %1 support." msgstr "Sestavit ffmpeg s podporou %1." #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:365 #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:80 #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:111 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:365 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:81 #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:240 #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:83 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:76 msgid "Configure %1" msgstr "Nastavit %1" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:370 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:370 msgid "Enable experimental codecs" msgstr "Povolit pokusné kodeky" #: plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp:396 #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:396 msgid "Please restart soundKonverter in order to activate the changes." msgstr "Pro zapnutí změn spusťte, prosím, soundKonverter znovu." #: plugins/soundkonverter_codec_flac/flaccodecwidget.cpp:29 #: plugins/soundkonverter_codec_flake/flakecodecwidget.cpp:31 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:123 #: plugins/soundkonverter_codec_mac/maccodecwidget.cpp:31 #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:30 #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:36 msgid "Compression level:" msgstr "Úroveň komprese:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:85 msgid "Use SoundFont file:" msgstr "Použít soubor se zvukovým písmem:" #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:86 msgid "" "In order to convert the midi data to a wave form you need a SoundFont which " "maps the midi data to sound effects.\n" "Have a look at %1 in order to get SoundFont files." msgstr "" "Pro převedení MIDI dat do podoby vlny (WAV) potřebujete zvukové písmo " "(SoundFont), které rozvrhne MIDI data ke zvukovým efektům.\n" "Podívejte se na %1 pro získání souborů se zvukovými písmy." #: plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp:141 msgid "FluidSynth is not configured, yet. You need to set a SoundFont file." msgstr "" "FluidSynth ještě není nastaven. Potřebujete nastavit soubor se zvukovým " "písmem." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:31 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:33 msgid "Preset:" msgstr "Přednastavení:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:34 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:396 msgctxt "Backend profile" msgid "Medium" msgstr "Střední" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:35 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:403 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:39 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:273 msgctxt "Backend profile" msgid "Standard" msgstr "Obvyklá" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:36 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:410 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:40 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:278 msgctxt "Backend profile" msgid "Extreme" msgstr "Ohromná" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:37 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:417 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:41 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:283 msgctxt "Backend profile" msgid "Insane" msgstr "Zázračná" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:38 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:424 msgid "Specify bitrate" msgstr "Stanovit datový tok" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:53 msgid "cbr" msgstr "SDT (CBR)" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:56 msgid "" "Encode using a constant bitrate.\n" "Only works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps" msgstr "" "Kódování pomocí stálého datového toku.\n" "Pracuje jen s 80, 96, 112, 128, 160, 192, 224, 256 a 320 kbps" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:60 msgid "Fast encoding" msgstr "Rychlé zakódování" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:63 msgid "" "Use a faster encoding algorithm (results in a slightly lower output quality)." msgstr "" "Použít pro zakódování rychlejší algoritmus (výsledkem je o něco nižší jakost " "výstupu)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:106 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:59 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:53 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:55 msgid "Bitrate mode:" msgstr "Režim datového toku:" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:109 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:217 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:472 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:62 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:124 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:288 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:58 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:120 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:263 msgid "Variable" msgstr "Proměnlivý" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:110 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:193 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:225 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:490 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:63 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:107 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:131 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:305 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:56 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:91 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:114 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:59 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:103 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:127 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:280 msgid "Average" msgstr "Průměrný" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:111 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:227 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:491 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:64 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:132 #: plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp:306 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:57 #: plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp:116 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:60 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:128 #: plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp:281 msgid "Constant" msgstr "Stálý" #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:133 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:142 msgid "" "Compression level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the slower the conversion and vice versa.)\n" "A value of 2 is recommended." msgstr "" "Úroveň komprese od 9 po 0, kde 0 je nejvyšší kvalita.\n" "(Čím vyšší je jakost, tím pomalejší je převod a naopak.)\n" "Jako hodnota se doporučuje 2." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:401 msgid "" "This preset should provide near transparency to most people on most music " "(~150 kbps abr)." msgstr "" "Tato předvolba by měla být pro většinu lidí u většiny hudby snadno " "pochopitelná (~150 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:408 msgid "" "This preset should generally be transparent to most people on most music\n" "and is already quite high in quality (~230 kbps abr)." msgstr "" "Tato předvolba by měla být většině lidí u většiny hudby obecně snadno " "pochopitelná a je už, co se týče jakosti záznamu, docela vysoká (~230 kbps " "abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:415 msgid "" "If you have extremely good hearing and similar equipment, this preset will " "generally provide\n" "slightly higher quality than the standard mode (~280 kbps abr)." msgstr "" "Pokud máte neobyčejně dobrý sluch a podobně neobyčejné vybavení, poskytne " "vám\n" "tato předvolba obecně vyšší jakost, než jakou poskytuje \"průměrný\" režim " "(~280 kbps abr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:422 msgid "" "This preset will usually be overkill for most people and most situations, " "but if you must have\n" "the absolute highest quality with no regard to filesize, this is the way to " "go (320 kbps cbr)." msgstr "" "Tato předvolba bude obvykle pro většinu lidí a většinu situací až " "přespříliš, ale jestliže musíte mít\n" "vyloženě nejvyšší jakost bez ohledu na velikost souboru, je toto právě ta " "cesta, kterou se chcete dát (320 kbps cbr)." #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:468 #: plugins/soundkonverter_codec_lame/lamecodecwidget.cpp:469 msgid "" "Quality level from 9 to 0 where 0 is the highest quality.\n" "(The higher the quality, the bigger the file size and vice versa.)" msgstr "" "Úroveň kvality od 9 do 0, kde 0 představuje nejvyšší jakost.\n" "(Čím vyšší je jakost, tím větší je velikost souboru a naopak.)" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:116 msgid "Stereo mode:" msgstr "Režim sterea:" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:119 msgid "Automatic" msgstr "Automaticky" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:120 msgid "Joint Stereo" msgstr "Společné stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:121 msgid "Simple Stereo" msgstr "Jednoduché stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:122 msgid "Forced Joint Stereo" msgstr "Vynucené společné stereo" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:123 msgid "Dual Mono" msgstr "Dvojité mono" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:166 #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:92 msgid "About %1" msgstr "O %1" #: plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp:171 msgid "" "LAME is a free high quality MP3 encoder.\n" "You can get it at: http://lame.sourceforge.net" msgstr "" "LAME je svobodný vysoce jakostní kodér MP3.\n" "Dostanete jej na stránkách http://lame.sourceforge.net" #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:301 msgid "Enable experimental codecs in the libav configuration dialog." msgstr "Povolit pokusné kodeky v dialogu pro nastavení libav." #: plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp:305 msgid "Compile libav with %1 support." msgstr "Sestavit libav s podporou pro %1." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:36 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:258 msgctxt "Backend profile" msgid "Telephone" msgstr "Telefon" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:37 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:263 msgctxt "Backend profile" msgid "Thumb" msgstr "Palec" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:38 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:268 msgctxt "Backend profile" msgid "Radio" msgstr "Rádio" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:42 #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:288 msgctxt "Backend profile" msgid "Braindead" msgstr "Klinická smrt" #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:45 msgid "Either use one of MusePacks's presets or your own settings." msgstr "" "Buď použijte jedno z přednastavení MusePack nebo své vlastní nastavení." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:261 msgid "low quality (~60 kbps abr)." msgstr "Nízká jakost (~60 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:266 msgid "low/medium quality (~90 kbps abr)." msgstr "Nízká/Střední jakost (~90 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:271 msgid "medium quality (~130 kbps abr)." msgstr "Střední jakost (~130 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:276 msgid "high quality (~180 kbps abr)." msgstr "Vysoká jakost (~180 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:281 msgid "excellent quality (~210 kbps abr)." msgstr "Vynikající jakost (~210 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:286 msgid "excellent quality (~240 kbps abr)." msgstr "Vynikající jakost (~240 kbps abr)." #: plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp:291 msgid "excellent quality (~270 kbps abr)." msgstr "Vynikající jakost (~270 kbps abr)." #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:42 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:50 #: plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp:58 msgid "You can download '%1' at '%2' after entering an email address." msgstr "'%1' můžete po zadání adresy elektronické pošty stáhnout na '%2." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:50 #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:58 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:38 #: plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp:46 #: plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp:33 msgid "" "'%1' is usually in the package '%2' which should be shipped with your " "distribution." msgstr "" "'%1' je obvykle v balíčku '%2', jenž by měl být přítomen ve vaší distribuci." #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:86 msgid "Uncoupled channels" msgstr "Nespojené kanály" #: plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp:87 msgid "Use one mono stream per channel" msgstr "Použít jeden mono proud na kanál " #: plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp:97 msgid "" "TwoLame is a free MP2 encoder.\n" "You can get it at: http://www.twolame.org" msgstr "" "TwoLame je svobodný kodér MP2.\n" "Dostanete jej na stránkách http://www.twolame.org" #: plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp:258 msgid "Quality level from -50 to 50." msgstr "Úroveň jakosti od -50 do 50." #: plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp:46 #: plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp:33 msgid "'%1' is usually in the package '%2' which you can download at %3" msgstr "'%1' je obvykle v balíčku '%2', který můžete stáhnout na %3" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:34 msgid "Fast" msgstr "Rychle" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:35 msgid "Normal" msgstr "Obvyklá" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:36 msgid "High quality" msgstr "Vysoká jakost" #: plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp:37 msgid "Very high quality" msgstr "Velmi vysoká jakost" #: plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp:24 msgid "Normalize" msgstr "Normalizovat" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:186 msgid "Enable experimental codecs in the sox configuration dialog." msgstr "Povolit v dialogu pro nastavení sox pokusné kodeky." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:190 msgid "Compile sox with %1 support." msgstr "Sestavit sox s podporou %1." #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:245 msgid "Sample rate change quality:" msgstr "Kvalita změny vzorkovacího kmitočtu:" #: plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp:248 msgid "Quick" msgstr "Rychlá" #: plugins/soundkonverter_filter_sox/soxcodecwidget.cpp:624 msgid "Quality level from 9 to 0 where 0 is the highest quality." msgstr "Úroveň jakosti od 9 po 0, kde 0 je největší kvalita." #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:22 msgid "Effect:" msgstr "Účinek:" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:27 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:189 #: plugins/soundkonverter_filter_sox/soxfilteroptions.cpp:82 #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:132 msgid "Disabled" msgstr "Zakázáno" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:102 msgid "Remove this effect" msgstr "Odstranit tento účinek" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:106 msgid "Add" msgstr "Přidat" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:107 msgid "Add another effect" msgstr "Přidat další účinek" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:146 msgid "" "Normalize:\n" "Change the volume so all files have the same loudness" msgstr "" "Normalizovat:\n" "Změnit hlasitost, takže všechny soubory mají tutéž hlasitost" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:150 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:166 #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:180 msgctxt "decibel" msgid "dB" msgstr "dB" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:162 msgid "" "Bass:\n" "Amplify the low frequencies" msgstr "" "Hloubky:\n" "Zesílit nízké kmitočty" #: plugins/soundkonverter_filter_sox/soxeffectwidget.cpp:176 msgid "" "Treble:\n" "Amplify the high frequencies" msgstr "" "Výšky:\n" "Zesílit vysoké kmitočty" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:28 msgid "Sample rate:" msgstr "Vzorkovací kmitočet:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:50 msgid "Sample size:" msgstr "Velikost vzorku:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:66 msgid "Channels:" msgstr "Kanály:" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:70 msgid "Mono" msgstr "Mono" #: plugins/soundkonverter_filter_sox/soxfilterwidget.cpp:71 msgid "Stereo" msgstr "Stereo" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:90 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:83 msgid "Use tag format:" msgstr "Použít formát značky" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:99 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:92 msgid "Modify audio stream" msgstr "Změnit proud zvuku" #: plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp:100 #: plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp:93 msgid "" "Write gain adjustments directly into the encoded data. That way the " "adjustment works with all mp3 players.\n" "Undoing the changes is still possible since correction data will be written " "as well." msgstr "" "Zapsat úpravy zesílení přímo do zakódovaných dat. Tím způsobem úprava " "pracuje se všemi přehrávači MP3.\n" "Pořád ještě je možné změny vrátit zpět, protože data opravy budou zapsána " "také." #: plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp:42 msgid "" "In order to rip audio cds per track or to a single file, you need to install " "'cdparanoia'.\n" "'cdparanoia' is usually shipped with your distribution, the package name can " "vary." msgstr "" "Pro vytahování skladeb ze zvukových CD po jednotlivých stopách nebo do " "jednoho souboru potřebujete nainstalovat 'cdparanoia'.\n" "Program 'cdparanoia' je obvykle přítomen ve vaší distribuci. Název balíčku " "se může různit." #: progressindicator.cpp:85 msgid "Speed:" msgstr "Rychlost:" #: progressindicator.cpp:98 msgid "Remaining time:" msgstr "Zbývající čas:" #: progressindicator.cpp:162 soundkonverter.cpp:297 soundkonverter.cpp:299 msgid "Finished" msgstr "Hotovo" #: replaygainscanner/replaygainfilelist.cpp:35 msgid "File" msgstr "Soubor" #: replaygainscanner/replaygainfilelist.cpp:37 msgid "Album" msgstr "Album" #: replaygainscanner/replaygainfilelist.cpp:59 msgid "Collapse all" msgstr "Složit vše" #: replaygainscanner/replaygainfilelist.cpp:63 msgid "Expand all" msgstr "Rozbalit vše" #: replaygainscanner/replaygainfilelist.cpp:73 msgid "Move to new Album" msgstr "Přesunout na nové album" #: replaygainscanner/replaygainfilelist.cpp:142 msgid "" "Some tracks can't be added to the album because either the codec or the " "sampling rate is different." msgstr "" "Některé skladby nelze přidat na album, protože se buď kodek nebo kmitočet " "vzorkování liší." #: replaygainscanner/replaygainfilelist.cpp:1050 msgid "New album" msgstr "Nové album" #: replaygainscanner/replaygainprocessor.cpp:89 msgid "Replay Gain failed. The used backend needs to be configured properly." msgstr "" "Vyrovnávání hlasitosti skladeb se nezdařilo. Použité jádro je potřeba " "nastavit správně." #: replaygainscanner/replaygainprocessor.cpp:95 msgid "" "Replay Gain failed. The preferred plugin lacks support for a necessary " "feature." msgstr "" "Vyrovnání hlasitosti skladeb se nezdařilo. Upřednostňovaný přídavný modul " "postrádá podporu pro nezbytnou vlastnost." #: replaygainscanner/replaygainprocessor.cpp:102 msgid "Replay Gain failed. Unknown Error." msgstr "Vyrovnání hlasitosti skladeb se nezdařilo. Neznámá chyba." #: replaygainscanner/replaygainprocessor.cpp:142 msgid "Replay Gain failed. Exit code: %1" msgstr "Vyrovnání hlasitosti skladeb se nezdařilo. Kód ukončení: %1" #: replaygainscanner/replaygainprocessor.cpp:214 msgid "Adding new item to Replay Gain processing list: '%1'" msgstr "" "Do seznamu pro zpracování vyrovnání hlasitosti se přidává nová položka: '%1'" #: replaygainscanner/replaygainprocessor.cpp:222 msgid "Replay Gain for %1" msgstr "Vyrovnání hlasitosti pro %1" #: replaygainscanner/replaygainprocessor.cpp:240 msgid "Possible Replay Gain backends:" msgstr "Možná jádra pro vyrovnávání hlasitosti skladeb:" #: replaygainscanner/replaygainprocessor.cpp:277 msgctxt "Conversion exit status" msgid "Skipped" msgstr "Přeskočeno" #: replaygainscanner/replaygainscanner.cpp:45 soundkonverter.cpp:192 #: soundkonverterview.cpp:80 msgid "Add folder..." msgstr "Přidat složku..." #: replaygainscanner/replaygainscanner.cpp:46 soundkonverter.cpp:187 #: soundkonverterview.cpp:79 msgid "Add files..." msgstr "Přidat soubory..." #: replaygainscanner/replaygainscanner.cpp:52 msgid "Force recalculation" msgstr "Vynutit přepočítání" #: replaygainscanner/replaygainscanner.cpp:53 msgid "" "Recalculate Replay Gain tags for files that already have Replay Gain tags " "set." msgstr "" "Přepočítat značky pro vyrovnání hlasitosti pro soubory, které už sadu značek " "pro vyrovnání hlasitosti mají." #: replaygainscanner/replaygainscanner.cpp:74 msgid "Tag untagged" msgstr "Označit neoznačené" #: replaygainscanner/replaygainscanner.cpp:75 msgid "" "Calculate Replay Gain tags for all files in the file list without Replay " "Gain tags." msgstr "" "Spočítat značky pro vyrovnání hlasitosti pro všechny soubory v seznamu " "souborů, které značky pro vyrovnání hlasitosti nemají." #: replaygainscanner/replaygainscanner.cpp:79 msgid "Untag tagged" msgstr "Zrušit označení označeného" #: replaygainscanner/replaygainscanner.cpp:80 msgid "Remove the Replay Gain tags from all files in the file list." msgstr "" "Odstranit značky pro vyrovnání hlasitosti ze všech souborů v seznamu souborů." #: replaygainscanner/replaygainscanner.cpp:91 msgid "Close" msgstr "Zavřít" #: replaygainscanner/replaygainscanner.cpp:314 msgid "" "There are still Replay Gain jobs running.\n" "Do you really want to cancel them?" msgstr "" "Stále ještě běží úkoly spojené s vyrovnáním hlasitosti.\n" "Opravdu je chcete zrušit?" #: soundkonverter.cpp:44 msgid "This is soundKonverter %1" msgstr "Toto je soundKonverter %1" #: soundkonverter.cpp:46 msgid "Compiled with TagLib %1.%2.%3" msgstr "Sestaveno s TagLib %1.%2.%3" #: soundkonverter.cpp:48 msgid "" "Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac " "and asf/wma files. TagLib 1.7 is needed for that." msgstr "" "Čtení/Zápis obalů není pro soubory ogg/METADATA_BLOCK_PICTURE, flac and asf/" "wma podporován. Je na to potřeba TagLib 1.7." #: soundkonverter.cpp:79 soundkonverter.cpp:84 soundkonverter.cpp:99 msgid "Removing old file: %1" msgstr "Odstraňuje se starý soubor: %1" #: soundkonverter.cpp:172 msgid "View logs..." msgstr "Zobrazit zápisy..." #: soundkonverter.cpp:177 msgid "Replay Gain tool..." msgstr "Nástroj pro vyrovnání hlasitosti skladeb..." #: soundkonverter.cpp:182 msgid "About plugins..." msgstr "O přídavných modulech..." #: soundkonverter.cpp:197 soundkonverterview.cpp:81 msgid "Add CD tracks..." msgstr "Přidat stopy na CD..." #: soundkonverter.cpp:202 soundkonverterview.cpp:82 msgid "Add url..." msgstr "Přidat adresu (URL)..." #: soundkonverter.cpp:207 soundkonverterview.cpp:83 msgid "Add playlist..." msgstr "Přidat seznam skladeb..." #: soundkonverter.cpp:212 msgid "Load file list" msgstr "Nahrát seznam se soubory" #: soundkonverter.cpp:217 msgid "Save file list" msgstr "Uložit seznam se soubory" #: soundkonverterview.cpp:91 soundkonverterview.cpp:94 msgid "Start" msgstr "Začít" #: soundkonverterview.cpp:101 soundkonverterview.cpp:114 msgid "Stop" msgstr "Zastavit" #: soundkonverterview.cpp:103 msgid "Stop immediatelly" msgstr "Zastavit okamžitě" #: soundkonverterview.cpp:106 msgid "Stop after current conversions are completed" msgstr "Zastavit po dokončení současných převodů" #: soundkonverterview.cpp:109 msgid "Continue after current conversions are completed" msgstr "Pokračovat po dokončení současných převodů" #: soundkonverterview.cpp:260 msgid "No CD device found" msgstr "Nenalezeno žádné zařízení CD" #. i18n: file: soundkonverterui.rc:20 #. i18n: ectx: Menu (tools) #: rc.cpp:6 msgid "Tools" msgstr "Nástroje" #: rc.cpp:7 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Pavel Fric" #: rc.cpp:8 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "fripohled.blogspot.com" #: rc.cpp:9 msgid "Audio file converter, CD ripper and Replay Gain tool" msgstr "" "Převaděč zvukových souborů, vytahovač stop z CD a nástroj na vyrovnání " "hlasitosti přehrávaných skladeb" #: rc.cpp:10 msgid "Rip Audio CD with soundKonverter" msgstr "Vytáhněte skladby z CD za pomoci soundKonverteru" ./soundkonverter-2.0.5/PaxHeaders.25599/optionseditor.h0000644000175000001440000000006212105142353021054 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.286421711 ./soundkonverter-2.0.5/optionseditor.h0000644000175000001440000000707312105142353020474 0ustar00danielusers00000000000000// // C++ Interface: optionseditor // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef OPTIONSEDITOR_H #define OPTIONSEDITOR_H // #include #include #include class Options; class Config; class TagEngine; // class ConversionOptions; class KLineEdit; class KComboBox; class KIntSpinBox; class KTextEdit; class KPushButton; class QLabel; class FileListItem; /** @author Daniel Faust */ class OptionsEditor : public KPageDialog { Q_OBJECT public: OptionsEditor( Config *_config, QWidget *parent ); ~OptionsEditor(); private: void setTagInputEnabled( bool enabled ); /** The widget, where we can set our output options */ Options *options; /** A list of all covers */ QLabel* lCoversLabel; QHBoxLayout *bCovers; QList lCovers; /** A lineedit for entering the title of track */ QLabel* lTitleLabel; KLineEdit* lTitle; KPushButton* pTitleEdit; /** A spinbox for entering or selecting the track number */ QLabel* lTrackLabel; KIntSpinBox* iTrack; KPushButton* pTrackEdit; /** A spinbox for entering or selecting the total track number */ QLabel* lTrackTotalLabel; KIntSpinBox* iTrackTotal; KPushButton* pTrackTotalEdit; /** A lineedit for entering the artist of a track */ QLabel* lArtistLabel; KLineEdit* lArtist; KPushButton* pArtistEdit; /** A lineedit for entering the composer of a track */ QLabel* lComposerLabel; KLineEdit* lComposer; KPushButton* pComposerEdit; /** A lineedit for entering the album name */ QLabel* lAlbumLabel; KLineEdit* lAlbum; KPushButton* pAlbumEdit; /** A spinbox for entering or selecting the disc number */ QLabel* lDiscLabel; KIntSpinBox* iDisc; KPushButton* pDiscEdit; /** A spinbox for entering or selecting the total disc number */ QLabel* lDiscTotalLabel; KIntSpinBox* iDiscTotal; KPushButton* pDiscTotalEdit; /** A spinbox for entering or selecting the year of the album */ QLabel* lYearLabel; KIntSpinBox* iYear; KPushButton* pYearEdit; /** A combobox for entering or selecting the genre of the album */ QLabel* lGenreLabel; KComboBox* cGenre; KPushButton* pGenreEdit; /** A textedit for entering a comment for a track */ QLabel* lCommentLabel; KTextEdit* tComment; KPushButton* pCommentEdit; /** When hitting this button, the options lock (when multiple files are selected) will be deactivated */ QLabel* lEditOptions; KPushButton* pEditOptions; /** When hitting this button, the tag lock (when reading tags failed) will be deactivated */ QLabel* lEditTags; KPushButton* pEditTags; QList selectedItems; Config *config; TagEngine *tagEngine; public slots: // connected to FileList void itemsSelected( QList ); void setPreviousEnabled( bool ); void setNextEnabled( bool ); private slots: void applyChanges(); void editOptionsClicked(); void editTagsClicked(); void editTitleClicked(); void editTrackClicked(); void editTrackTotalClicked(); void editArtistClicked(); void editComposerClicked(); void editAlbumClicked(); void editDiscClicked(); void editDiscTotalClicked(); void editYearClicked(); void editGenreClicked(); void editCommentClicked(); signals: // connected to FileList void updateFileListItems( QList items ); }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter.h0000644000175000001440000000013212255306740021250 xustar000000000000000030 mtime=1387630048.573961884 30 atime=1387630048.573961884 30 ctime=1387631578.286421711 ./soundkonverter-2.0.5/soundkonverter.h0000755000175000001440000000427112255306740020672 0ustar00danielusers00000000000000/* * soundkonverter.h * * Copyright (C) 2007 Daniel Faust */ #ifndef SOUNDKONVERTER_H #define SOUNDKONVERTER_H #include #include #include class soundKonverterView; class KToggleAction; class KUrl; class Config; class Logger; class LogViewer; class CDManager; class ReplayGainScanner; #if KDE_IS_VERSION(4,4,0) class KStatusNotifierItem; #else class KSystemTrayIcon; #endif /** * This class serves as the main window for soundKonverter. It handles the * menus, toolbars, and status bars. * * @short Main window class * @author Daniel Faust * @version 1.0 */ class soundKonverter : public KXmlGuiWindow { Q_OBJECT public: /** Default Constructor */ soundKonverter(); /** Default Destructor */ ~soundKonverter(); virtual void saveProperties( KConfigGroup& configGroup ); void showSystemTray(); void addConvertFiles( const KUrl::List& urls, const QString& profile, const QString& format, const QString& directory, const QString& notifyCommand ); void addReplayGainFiles( const KUrl::List& urls ); bool ripCd( const QString& device, const QString& profile, const QString& format, const QString& directory, const QString& notifyCommand ); void setAutoClose( bool enabled ) { autoclose = enabled; } void startConversion(); void loadAutosaveFileList(); private slots: void showConfigDialog(); void showLogViewer( const int logId = 0 ); void showReplayGainScanner(); void showAboutPlugins(); void progressChanged( const QString& progress ); /** The conversion has started */ void conversionStarted(); /** The conversion has stopped */ void conversionStopped( bool failed ); private: Config *config; Logger *logger; CDManager *cdManager; QWeakPointer replayGainScanner; soundKonverterView *m_view; LogViewer *logViewer; #if KDE_IS_VERSION(4,4,0) KStatusNotifierItem *systemTray; #else KSystemTrayIcon *systemTray; #endif /// exit soundkonverter after all files have been converted bool autoclose; void setupActions(); }; #endif // _SOUNDKONVERTER_H_ ./soundkonverter-2.0.5/PaxHeaders.25599/codecoptimizations.cpp0000644000175000001440000000006212106405146022417 xustar000000000000000020 atime=1360661094 30 ctime=1387631578.286421711 ./soundkonverter-2.0.5/codecoptimizations.cpp0000644000175000001440000000730612106405146022036 0ustar00danielusers00000000000000 #include "codecoptimizations.h" #include #include #include #include #include #include #include CodecOptimizations::CodecOptimizations( const QList& _optimizationList, QWidget* parent, Qt::WFlags f ) : KDialog( parent, f ), optimizationList( _optimizationList ) { setCaption( i18n("Solutions for backend problems") ); setWindowIcon( KIcon("help-about") ); setButtons( KDialog::Ok | KDialog::Cancel ); setButtonFocus( KDialog::Cancel ); connect( this, SIGNAL(okClicked()), this, SLOT(okClicked()) ); QWidget *widget = new QWidget( this ); setMainWidget( widget ); QVBoxLayout *box = new QVBoxLayout( widget ); QLabel *messageLabel = new QLabel( i18n("You have installed or removed backends and your soundKonverter settings can be optimized."), this ); box->addWidget( messageLabel ); QFrame *frame = new QFrame( widget ); frame->setFrameShape( QFrame::StyledPanel ); frame->setFrameShadow( QFrame::Sunken ); box->addWidget( frame ); QGridLayout *grid = new QGridLayout( frame ); grid->setColumnStretch( 1, 0 ); grid->setColumnStretch( 2, 0 ); for( int i=0; iaddWidget( solutionLabel, i, 0 ); if( mode == Optimization::Encode ) { solutionLabel->setText( i18n( "For encoding %1 files the backend '%2' can be replaced with '%3'.", codecName, currentBackend, betterBackend ) ); } else if( mode == Optimization::Decode && codecName == "audio cd" ) { solutionLabel->setText( i18n( "For ripping audio CDs the backend '%1' can be replaced with '%2'.", currentBackend, betterBackend ) ); } else if( mode == Optimization::Decode ) { solutionLabel->setText( i18n( "For decoding %1 files the backend '%2' can be replaced with '%3'.", codecName, currentBackend, betterBackend ) ); } else if( mode == Optimization::ReplayGain ) { solutionLabel->setText( i18n( "For applying Replay Gain to %1 files the backend '%2' can be replaced with '%3'.", codecName, currentBackend, betterBackend ) ); } QRadioButton *solutionIgnore = new QRadioButton( i18n("Ignore"), frame ); if( solution == Optimization::Ignore ) solutionIgnore->setChecked( true ); grid->addWidget( solutionIgnore, i, 1 ); QRadioButton *solutionFix = new QRadioButton( i18n("Fix"), frame ); solutionFixButtons.append( solutionFix ); if( solution != Optimization::Ignore ) solutionFix->setChecked( true ); grid->addWidget( solutionFix, i, 2 ); QButtonGroup *solutionButtonGroup = new QButtonGroup( frame ); solutionButtonGroup->addButton( solutionIgnore ); solutionButtonGroup->addButton( solutionFix ); } } CodecOptimizations::~CodecOptimizations() {} void CodecOptimizations::okClicked() { for( int i=0; iisChecked() ) optimizationList[i].solution = Optimization::Fix; else optimizationList[i].solution = Optimization::Ignore; } emit solutions( optimizationList ); } ./soundkonverter-2.0.5/PaxHeaders.25599/logviewer.h0000644000175000001440000000006212105142352020154 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.286421711 ./soundkonverter-2.0.5/logviewer.h0000644000175000001440000000147512105142352017574 0ustar00danielusers00000000000000 #ifndef LOGVIEWER_H #define LOGVIEWER_H #include class Logger; class KComboBox; class KTextEdit; /** * @short Shows the logs that are collected by the logger * @author Daniel Faust * @version 1.0 */ class LogViewer : public KDialog { Q_OBJECT public: /** Default Constructor */ LogViewer( Logger* _logger, QWidget* parent=0, Qt::WFlags f=0 ); /** Default Destructor */ ~LogViewer(); private: Logger* logger; KComboBox *cItem; KTextEdit *kLog; private slots: void refillLogs(); void itemChanged(); void save(); void updateProcess( int id ); public slots: /** get notification when a job has been removed */ void processRemoved( int id ); /** show the corresponding log */ void showLog( int id ); }; #endif // LOGVIEWER_H ./soundkonverter-2.0.5/PaxHeaders.25599/configdialog0000644000175000001440000000012012255306740020354 xustar000000000000000030 mtime=1387630048.398964072 20 atime=1357667220 30 ctime=1387631578.305421473 ./soundkonverter-2.0.5/configdialog/0000755000175000001440000000000012255306740020047 5ustar00danielusers00000000000000./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configdialog.cpp0000644000175000001440000000006212105142351023555 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.302421511 ./soundkonverter-2.0.5/configdialog/configdialog.cpp0000755000175000001440000001032312105142351023170 0ustar00danielusers00000000000000// // C++ Implementation: configdialog // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #include "configdialog.h" #include "../config.h" #include "configgeneralpage.h" #include "configadvancedpage.h" #include "configcoverartpage.h" #include "configbackendspage.h" #include #include #include ConfigDialog::ConfigDialog( Config *_config, QWidget *parent/*, Page startPage*/ ) : KPageDialog( parent ), config( _config ) { setButtons( KDialog::Help | KDialog::Default | KDialog::Apply | KDialog::Ok | KDialog::Cancel ); setCaption( i18n("Settings") ); generalPageChanged = false; advancedlPageChanged = false; coverArtPageChanged = false; backendsPageChanged = false; button(KDialog::Apply)->setEnabled( false ); connect( this, SIGNAL(applyClicked()), this, SLOT(applyClicked()) ); connect( this, SIGNAL(okClicked()), this, SLOT(okClicked()) ); connect( this, SIGNAL(defaultClicked()), this, SLOT(defaultClicked()) ); configGeneralPage = new ConfigGeneralPage( config, this ); generalPage = addPage( (QWidget*)configGeneralPage, i18n("General") ); generalPage->setHeader( "" ); generalPage->setIcon( KIcon("configure") ); connect( configGeneralPage, SIGNAL(configChanged(bool)), this, SLOT(configChanged(bool)) ); configAdvancedPage = new ConfigAdvancedPage( config, this ); advancedPage = addPage( (QWidget*)configAdvancedPage, i18n("Advanced") ); advancedPage->setHeader( "" ); advancedPage->setIcon( KIcon("preferences-desktop-gaming") ); connect( configAdvancedPage, SIGNAL(configChanged(bool)), this, SLOT(configChanged(bool)) ); configCoverArtPage = new ConfigCoverArtPage( config, this ); coverArtPage = addPage( (QWidget*)configCoverArtPage, i18n("Cover art") ); coverArtPage->setHeader( "" ); coverArtPage->setIcon( KIcon("image-x-generic") ); connect( configCoverArtPage, SIGNAL(configChanged(bool)), this, SLOT(configChanged(bool)) ); configBackendsPage = new ConfigBackendsPage( config, this ); backendsPage = addPage( (QWidget*)configBackendsPage, i18n("Backends") ); backendsPage->setHeader( "" ); backendsPage->setIcon( KIcon("applications-system") ); connect( configBackendsPage, SIGNAL(configChanged(bool)), this, SLOT(configChanged(bool)) ); lastUseVFATNames = config->data.general.useVFATNames; lastConflictHandling = (int)config->data.general.conflictHandling; } ConfigDialog::~ConfigDialog() {} void ConfigDialog::configChanged( bool state ) { if( QObject::sender() == configGeneralPage ) { generalPageChanged = state; } else if( QObject::sender() == configAdvancedPage ) { advancedlPageChanged = state; } else if( QObject::sender() == configCoverArtPage ) { coverArtPageChanged = state; } else if( QObject::sender() == configBackendsPage ) { backendsPageChanged = state; } const bool changed = ( generalPageChanged || advancedlPageChanged || coverArtPageChanged || backendsPageChanged ); button(KDialog::Apply)->setEnabled( changed ); } void ConfigDialog::applyClicked() { okClicked(); generalPageChanged = false; advancedlPageChanged = false; coverArtPageChanged = false; backendsPageChanged = false; button(KDialog::Apply)->setEnabled( false ); } void ConfigDialog::okClicked() { configGeneralPage->saveSettings(); configAdvancedPage->saveSettings(); configCoverArtPage->saveSettings(); configBackendsPage->saveSettings(); config->save(); if( lastUseVFATNames != config->data.general.useVFATNames || lastConflictHandling != (int)config->data.general.conflictHandling ) { emit updateFileList(); } } void ConfigDialog::defaultClicked() { if( currentPage() == generalPage ) { configGeneralPage->resetDefaults(); } else if( currentPage() == advancedPage ) { configAdvancedPage->resetDefaults(); } else if( currentPage() == coverArtPage ) { configCoverArtPage->resetDefaults(); } else if( currentPage() == backendsPage ) { configBackendsPage->resetDefaults(); } } ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configadvancedpage.cpp0000644000175000001440000000013212255306740024730 xustar000000000000000030 mtime=1387630048.397964084 30 atime=1387630048.397964084 30 ctime=1387631578.302421511 ./soundkonverter-2.0.5/configdialog/configadvancedpage.cpp0000644000175000001440000003446612255306740024360 0ustar00danielusers00000000000000// // C++ Implementation: configgeneralpage // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #include "configadvancedpage.h" #include "../config.h" #include #include #include #include #include #include #include #include ConfigAdvancedPage::ConfigAdvancedPage( Config *_config, QWidget *parent ) : ConfigPageBase( parent ), config( _config ) { QVBoxLayout *box = new QVBoxLayout( this ); QFont groupFont; groupFont.setBold( true ); QLabel *lAdvanced = new QLabel( i18n("Advanced"), this ); lAdvanced->setFont( groupFont ); box->addWidget( lAdvanced ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *preferredOggVorbisExtensionBox = new QHBoxLayout(); preferredOggVorbisExtensionBox->addSpacing( ConfigDialogOffset ); box->addLayout( preferredOggVorbisExtensionBox ); QLabel* lPreferredOggVorbisExtension = new QLabel( i18n("Preferred file name extension for ogg vorbis files:"), this ); preferredOggVorbisExtensionBox->addWidget( lPreferredOggVorbisExtension ); cPreferredOggVorbisExtension = new KComboBox( this ); cPreferredOggVorbisExtension->addItem( "ogg" ); cPreferredOggVorbisExtension->addItem( "oga" ); cPreferredOggVorbisExtension->setCurrentIndex( config->data.general.preferredOggVorbisExtension == "ogg" ? 0 : 1 ); preferredOggVorbisExtensionBox->addWidget( cPreferredOggVorbisExtension ); connect( cPreferredOggVorbisExtension, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); preferredOggVorbisExtensionBox->setStretch( 0, 3 ); preferredOggVorbisExtensionBox->setStretch( 1, 1 ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *preferredVorbisCommentCommentTagBox = new QHBoxLayout(); preferredVorbisCommentCommentTagBox->addSpacing( ConfigDialogOffset ); box->addLayout( preferredVorbisCommentCommentTagBox ); QLabel* lPreferredVorbisCommentCommentTag = new QLabel( i18n("Preferred comment tag field for ogg vorbis and flac files:"), this ); lPreferredVorbisCommentCommentTag->setToolTip( i18n("Some applications use the field DESCRIPTION even though the field COMMENT is the correct one.\nComments will be written to the selected field, when reading tags the selected field will be preferred.") ); preferredVorbisCommentCommentTagBox->addWidget( lPreferredVorbisCommentCommentTag ); cPreferredVorbisCommentCommentTag = new KComboBox( this ); cPreferredVorbisCommentCommentTag->setToolTip( i18n("Some applications use the field DESCRIPTION even though the field COMMENT is the correct one.\nComments will be written to the selected field, when reading tags the selected field will be preferred.") ); cPreferredVorbisCommentCommentTag->addItem( "COMMENT" ); cPreferredVorbisCommentCommentTag->addItem( "DESCRIPTION" ); cPreferredVorbisCommentCommentTag->setCurrentIndex( config->data.general.preferredVorbisCommentCommentTag == "COMMENT" ? 0 : 1 ); preferredVorbisCommentCommentTagBox->addWidget( cPreferredVorbisCommentCommentTag ); connect( cPreferredVorbisCommentCommentTag, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); preferredVorbisCommentCommentTagBox->setStretch( 0, 3 ); preferredVorbisCommentCommentTagBox->setStretch( 1, 1 ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *preferredVorbisCommentTrackTotalTagBox = new QHBoxLayout(); preferredVorbisCommentTrackTotalTagBox->addSpacing( ConfigDialogOffset ); box->addLayout( preferredVorbisCommentTrackTotalTagBox ); QLabel* lPreferredVorbisCommentTrackTotalTag = new QLabel( i18n("Preferred total tracks number tag field for ogg vorbis and flac files:"), this ); lPreferredVorbisCommentTrackTotalTag->setToolTip( i18n("Total tracks number will be written to the selected field, when reading tags the selected field will be preferred.\nWhen using the field TRACKNUMBER, the track number and the total tracks number will be written to the same field separated by a slash ('/').") ); preferredVorbisCommentTrackTotalTagBox->addWidget( lPreferredVorbisCommentTrackTotalTag ); cPreferredVorbisCommentTrackTotalTag = new KComboBox( this ); cPreferredVorbisCommentTrackTotalTag->setToolTip( i18n("Total tracks number will be written to the selected field, when reading tags the selected field will be preferred.\nWhen using the field TRACKNUMBER, the track number and the total tracks number will be written to the same field separated by a slash ('/').") ); cPreferredVorbisCommentTrackTotalTag->addItem( "TRACKTOTAL" ); cPreferredVorbisCommentTrackTotalTag->addItem( "TOTALTRACKS" ); cPreferredVorbisCommentTrackTotalTag->addItem( "TRACKNUMBER" ); cPreferredVorbisCommentTrackTotalTag->setCurrentIndex( cPreferredVorbisCommentTrackTotalTag->findText(config->data.general.preferredVorbisCommentTrackTotalTag) ); preferredVorbisCommentTrackTotalTagBox->addWidget( cPreferredVorbisCommentTrackTotalTag ); connect( cPreferredVorbisCommentTrackTotalTag, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); preferredVorbisCommentTrackTotalTagBox->setStretch( 0, 3 ); preferredVorbisCommentTrackTotalTagBox->setStretch( 1, 1 ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *preferredVorbisCommentDiscTotalTagBox = new QHBoxLayout(); preferredVorbisCommentDiscTotalTagBox->addSpacing( ConfigDialogOffset ); box->addLayout( preferredVorbisCommentDiscTotalTagBox ); QLabel* lPreferredVorbisCommentDiscTotalTag = new QLabel( i18n("Preferred total discs number tag field for ogg vorbis and flac files:"), this ); lPreferredVorbisCommentDiscTotalTag->setToolTip( i18n("Total discs number will be written to the selected field, when reading tags the selected field will be preferred.\nWhen using the field DISCNUMBER, the disc number and the total discs number will be written to the same field separated by a slash ('/').") ); preferredVorbisCommentDiscTotalTagBox->addWidget( lPreferredVorbisCommentDiscTotalTag ); cPreferredVorbisCommentDiscTotalTag = new KComboBox( this ); cPreferredVorbisCommentDiscTotalTag->setToolTip( i18n("Total discs number will be written to the selected field, when reading tags the selected field will be preferred.\nWhen using the field DISCNUMBER, the disc number and the total discs number will be written to the same field separated by a slash ('/').") ); cPreferredVorbisCommentDiscTotalTag->addItem( "DISCTOTAL" ); cPreferredVorbisCommentDiscTotalTag->addItem( "TOTALDISCS" ); cPreferredVorbisCommentDiscTotalTag->addItem( "DISCNUMBER" ); cPreferredVorbisCommentDiscTotalTag->setCurrentIndex( cPreferredVorbisCommentDiscTotalTag->findText(config->data.general.preferredVorbisCommentDiscTotalTag) ); preferredVorbisCommentDiscTotalTagBox->addWidget( cPreferredVorbisCommentDiscTotalTag ); connect( cPreferredVorbisCommentDiscTotalTag, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); preferredVorbisCommentDiscTotalTagBox->setStretch( 0, 3 ); preferredVorbisCommentDiscTotalTagBox->setStretch( 1, 1 ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *useVFATNamesBox = new QHBoxLayout(); useVFATNamesBox->addSpacing( ConfigDialogOffset ); box->addLayout( useVFATNamesBox ); cUseVFATNames = new QCheckBox( i18n("Always use FAT compatible output file names"), this ); cUseVFATNames->setToolTip( i18n("Replaces some special characters like \'?\' by \'_\'.\nIf the output directory is on a FAT file system FAT compatible file names will automatically be used independently from this option.") ); cUseVFATNames->setChecked( config->data.general.useVFATNames ); useVFATNamesBox->addWidget( cUseVFATNames ); connect( cUseVFATNames, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); box->addSpacing( ConfigDialogSpacingBig ); QLabel *lDebug = new QLabel( i18n("Debug"), this ); // TODO rename lDebug->setFont( groupFont ); box->addWidget( lDebug ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *writeLogFilesBox = new QHBoxLayout(); writeLogFilesBox->addSpacing( ConfigDialogOffset ); box->addLayout( writeLogFilesBox ); cWriteLogFiles = new QCheckBox( i18n("Write log files to disc"), this ); cWriteLogFiles->setToolTip( i18n("Write log files to the hard drive while converting.\nThis can be useful if a crash occurs and you can't access the log file using the log viewer.\nLog files will be written to %1",KStandardDirs::locateLocal("data","soundkonverter/log/")) ); cWriteLogFiles->setChecked( config->data.general.writeLogFiles ); writeLogFilesBox->addWidget( cWriteLogFiles ); connect( cWriteLogFiles, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); box->addSpacing( ConfigDialogSpacingBig ); QLabel *lExperimental = new QLabel( i18n("Experimental"), this ); lExperimental->setFont( groupFont ); box->addWidget( lExperimental ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *useSharedMemoryForTempFilesBox = new QHBoxLayout(); useSharedMemoryForTempFilesBox->addSpacing( ConfigDialogOffset ); box->addLayout( useSharedMemoryForTempFilesBox ); cUseSharedMemoryForTempFiles = new QCheckBox( i18n("Store temporary files in memory unless the estimated size is more than:"), this ); cUseSharedMemoryForTempFiles->setToolTip( i18n("Don't store files that are expected to be bigger than this value in memory to avoid swapping") ); cUseSharedMemoryForTempFiles->setChecked( config->data.advanced.useSharedMemoryForTempFiles ); useSharedMemoryForTempFilesBox->addWidget( cUseSharedMemoryForTempFiles ); iMaxSizeForSharedMemoryTempFiles = new KIntSpinBox( 1, config->data.advanced.sharedMemorySize, 1, config->data.advanced.sharedMemorySize / 2, this ); iMaxSizeForSharedMemoryTempFiles->setToolTip( i18n("Don't store files that are expected to be bigger than this value in memory to avoid swapping") ); iMaxSizeForSharedMemoryTempFiles->setSuffix( " " + i18nc("mega in bytes","MiB") ); iMaxSizeForSharedMemoryTempFiles->setValue( config->data.advanced.maxSizeForSharedMemoryTempFiles ); useSharedMemoryForTempFilesBox->addWidget( iMaxSizeForSharedMemoryTempFiles ); if( config->data.advanced.sharedMemorySize == 0 ) { cUseSharedMemoryForTempFiles->setEnabled( false ); cUseSharedMemoryForTempFiles->setChecked( false ); cUseSharedMemoryForTempFiles->setToolTip( i18n("It seems there's no filesystem mounted on /dev/shm") ); } iMaxSizeForSharedMemoryTempFiles->setEnabled( cUseSharedMemoryForTempFiles->isChecked() ); connect( cUseSharedMemoryForTempFiles, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); connect( cUseSharedMemoryForTempFiles, SIGNAL(toggled(bool)), iMaxSizeForSharedMemoryTempFiles, SLOT(setEnabled(bool)) ); connect( iMaxSizeForSharedMemoryTempFiles, SIGNAL(valueChanged(int)), this, SLOT(somethingChanged()) ); useSharedMemoryForTempFilesBox->setStretch( 0, 3 ); useSharedMemoryForTempFilesBox->setStretch( 1, 1 ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *usePipesBox = new QHBoxLayout(); usePipesBox->addSpacing( ConfigDialogOffset ); box->addLayout( usePipesBox ); cUsePipes = new QCheckBox( i18n("Use pipes when possible"), this ); cUsePipes->setToolTip( i18n("Pipes make it unnecessary to use temporary files, therefore increasing the performance.\nBut some backends cause errors in this mode so be cautious.") ); cUsePipes->setChecked( config->data.advanced.usePipes ); usePipesBox->addWidget( cUsePipes ); connect( cUsePipes, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); box->addStretch(); } ConfigAdvancedPage::~ConfigAdvancedPage() {} void ConfigAdvancedPage::resetDefaults() { cPreferredOggVorbisExtension->setCurrentIndex( 0 ); cPreferredVorbisCommentCommentTag->setCurrentIndex( 1 ); cPreferredVorbisCommentTrackTotalTag->setCurrentIndex( 0 ); cPreferredVorbisCommentDiscTotalTag->setCurrentIndex( 0 ); cUseVFATNames->setChecked( false ); cWriteLogFiles->setChecked( false ); cUseSharedMemoryForTempFiles->setChecked( false ); iMaxSizeForSharedMemoryTempFiles->setValue( config->data.advanced.sharedMemorySize / 4 ); cUsePipes->setChecked( false ); emit configChanged( true ); } void ConfigAdvancedPage::saveSettings() { config->data.general.preferredOggVorbisExtension = cPreferredOggVorbisExtension->currentText(); config->data.general.preferredVorbisCommentCommentTag = cPreferredVorbisCommentCommentTag->currentText(); config->data.general.preferredVorbisCommentTrackTotalTag = cPreferredVorbisCommentTrackTotalTag->currentText(); config->data.general.preferredVorbisCommentDiscTotalTag = cPreferredVorbisCommentDiscTotalTag->currentText(); config->data.general.useVFATNames = cUseVFATNames->isChecked(); config->data.general.writeLogFiles = cWriteLogFiles->isChecked(); config->data.advanced.useSharedMemoryForTempFiles = cUseSharedMemoryForTempFiles->isEnabled() && cUseSharedMemoryForTempFiles->isChecked(); config->data.advanced.maxSizeForSharedMemoryTempFiles = iMaxSizeForSharedMemoryTempFiles->value(); config->data.advanced.usePipes = cUsePipes->isChecked(); } void ConfigAdvancedPage::somethingChanged() { const bool changed = cPreferredOggVorbisExtension->currentText() != config->data.general.preferredOggVorbisExtension || cPreferredVorbisCommentCommentTag->currentText() != config->data.general.preferredVorbisCommentCommentTag || cPreferredVorbisCommentTrackTotalTag->currentText() != config->data.general.preferredVorbisCommentTrackTotalTag || cPreferredVorbisCommentDiscTotalTag->currentText() != config->data.general.preferredVorbisCommentDiscTotalTag || cUseVFATNames->isChecked() != config->data.general.useVFATNames || cWriteLogFiles->isChecked() != config->data.general.writeLogFiles || cUseSharedMemoryForTempFiles->isChecked() != config->data.advanced.useSharedMemoryForTempFiles || iMaxSizeForSharedMemoryTempFiles->value() != config->data.advanced.maxSizeForSharedMemoryTempFiles || cUsePipes->isChecked() != config->data.advanced.usePipes; emit configChanged( changed ); } ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configpagebase.cpp0000644000175000001440000000006211153222032024062 xustar000000000000000020 atime=1357667574 30 ctime=1387631578.302421511 ./soundkonverter-2.0.5/configdialog/configpagebase.cpp0000755000175000001440000000064411153222032023502 0ustar00danielusers00000000000000// // C++ Implementation: configpagebase // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #include "configpagebase.h" ConfigPageBase::ConfigPageBase( QWidget *parent ) : QWidget( parent ) {} ConfigPageBase::~ConfigPageBase() {} void ConfigPageBase::resetDefaults() {} void ConfigPageBase::saveSettings() {} ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configgeneralpage.h0000644000175000001440000000006212105142352024236 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.304421486 ./soundkonverter-2.0.5/configdialog/configgeneralpage.h0000755000175000001440000000240212105142352023650 0ustar00danielusers00000000000000// // C++ Interface: configgeneralpage // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #ifndef CONFIGGENERALPAGE_H #define CONFIGGENERALPAGE_H #include "configpagebase.h" class Config; class QCheckBox; class KComboBox; class KIntSpinBox; class KLineEdit; class KPushButton; /** @author Daniel Faust */ class ConfigGeneralPage : public ConfigPageBase { Q_OBJECT public: /** Default Constructor */ ConfigGeneralPage( Config *_config, QWidget *parent=0 ); /** Default Destructor */ ~ConfigGeneralPage(); private: KComboBox *cStartTab; KComboBox *cDefaultProfile; KComboBox *cDefaultFormat; // KComboBox *cPriority; // QStringList sPriority; KComboBox *cConflictHandling; KIntSpinBox *iNumFiles; QCheckBox *cWaitForAlbumGain; KComboBox *cReplayGainGrouping; KIntSpinBox *iNumReplayGainFiles; Config *config; // int profileIndex( const QString& string ); // int formatIndex( const QString& string ); public slots: void resetDefaults(); void saveSettings(); private slots: void somethingChanged(); // void selectDir(); void profileChanged(); }; #endif ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configpagebase.h0000644000175000001440000000006212105142352023533 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.304421486 ./soundkonverter-2.0.5/configdialog/configpagebase.h0000755000175000001440000000135612105142352023154 0ustar00danielusers00000000000000// // C++ Interface: configpagebase // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #ifndef CONFIGPAGEBASE_H #define CONFIGPAGEBASE_H #include class Config; #define ConfigDialogOffset 20 #define ConfigDialogSpacingSmall 5 #define ConfigDialogSpacingMedium 10 #define ConfigDialogSpacingBig 20 /** @author Daniel Faust */ class ConfigPageBase : public QWidget { Q_OBJECT public: ConfigPageBase( QWidget *parent=0 ); virtual ~ConfigPageBase(); public slots: virtual void resetDefaults(); virtual void saveSettings(); signals: void configChanged( bool state = true ); }; #endif ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configdialog.h0000644000175000001440000000006212105142351023222 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.304421486 ./soundkonverter-2.0.5/configdialog/configdialog.h0000755000175000001440000000213512105142351022637 0ustar00danielusers00000000000000 #ifndef CONFIGDIALOG_H #define CONFIGDIALOG_H #include class Config; class ConfigGeneralPage; class ConfigAdvancedPage; class ConfigCoverArtPage; class ConfigBackendsPage; /** @author Daniel Faust */ class ConfigDialog : public KPageDialog { Q_OBJECT public: ConfigDialog( Config *_config, QWidget *parent = 0/*, Page startPage = GeneralPage*/ ); ~ConfigDialog(); private: Config *config; KPageWidgetItem *generalPage; ConfigGeneralPage *configGeneralPage; KPageWidgetItem *advancedPage; ConfigAdvancedPage *configAdvancedPage; KPageWidgetItem *coverArtPage; ConfigCoverArtPage *configCoverArtPage; KPageWidgetItem *backendsPage; ConfigBackendsPage *configBackendsPage; bool lastUseVFATNames; int lastConflictHandling; bool generalPageChanged; bool advancedlPageChanged; bool coverArtPageChanged; bool backendsPageChanged; private slots: void configChanged( bool state ); void okClicked(); void applyClicked(); void defaultClicked(); signals: void updateFileList(); }; #endif ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configadvancedpage.h0000644000175000001440000000013212255306740024375 xustar000000000000000030 mtime=1387630048.398964072 30 atime=1387630048.397964084 30 ctime=1387631578.304421486 ./soundkonverter-2.0.5/configdialog/configadvancedpage.h0000644000175000001440000000224412255306740024012 0ustar00danielusers00000000000000// // C++ Interface: configgeneralpage // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #ifndef CONFIGADVANCEDPAGE_H #define CONFIGADVANCEDPAGE_H #include "configpagebase.h" class Config; class QCheckBox; class KIntSpinBox; class KComboBox; /** @author Daniel Faust */ class ConfigAdvancedPage : public ConfigPageBase { Q_OBJECT public: /** * Default Constructor */ ConfigAdvancedPage( Config *_config, QWidget *parent=0 ); /** * Default Destructor */ ~ConfigAdvancedPage(); private: KComboBox *cPreferredOggVorbisExtension; KComboBox *cPreferredVorbisCommentCommentTag; KComboBox *cPreferredVorbisCommentTrackTotalTag; KComboBox *cPreferredVorbisCommentDiscTotalTag; QCheckBox *cUseVFATNames; QCheckBox *cWriteLogFiles; QCheckBox *cUseSharedMemoryForTempFiles; KIntSpinBox *iMaxSizeForSharedMemoryTempFiles; QCheckBox *cUsePipes; Config *config; public slots: void resetDefaults(); void saveSettings(); private slots: void somethingChanged(); }; #endif ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configgeneralpage.cpp0000644000175000001440000000006212105142351024570 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.304421486 ./soundkonverter-2.0.5/configdialog/configgeneralpage.cpp0000755000175000001440000003054012105142351024206 0ustar00danielusers00000000000000// // C++ Implementation: configgeneralpage // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #include "configgeneralpage.h" #include "../config.h" #include #include #include #include #include #include #include #include #include #include #include #include ConfigGeneralPage::ConfigGeneralPage( Config *_config, QWidget *parent ) : ConfigPageBase( parent ), config( _config ) { const int processorsCount = Solid::Device::listFromType(Solid::DeviceInterface::Processor, QString()).count(); QVBoxLayout *box = new QVBoxLayout( this ); QFont groupFont; groupFont.setBold( true ); QLabel *lUserInterface = new QLabel( i18n("User interface"), this ); lUserInterface->setFont( groupFont ); box->addWidget( lUserInterface ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *startTabBox = new QHBoxLayout(); startTabBox->addSpacing( ConfigDialogOffset ); box->addLayout( startTabBox ); QLabel *lStartTab = new QLabel( i18n("Start in Mode:"), this ); startTabBox->addWidget( lStartTab ); cStartTab = new KComboBox( this ); cStartTab->addItem( i18n("Last used") ); cStartTab->addItem( i18n("Simple") ); cStartTab->addItem( i18n("Detailed") ); cStartTab->setCurrentIndex( config->data.general.startTab ); startTabBox->addWidget( cStartTab ); connect( cStartTab, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *defaultProfileBox = new QHBoxLayout(); defaultProfileBox->addSpacing( ConfigDialogOffset ); box->addLayout( defaultProfileBox ); QLabel *lDefaultProfile = new QLabel( i18n("Default profile:"), this ); defaultProfileBox->addWidget( lDefaultProfile ); cDefaultProfile = new KComboBox( this ); QStringList sDefaultProfile; sDefaultProfile += i18n("Last used"); sDefaultProfile += i18n("Very low"); sDefaultProfile += i18n("Low"); sDefaultProfile += i18n("Medium"); sDefaultProfile += i18n("High"); sDefaultProfile += i18n("Very high"); sDefaultProfile += i18n("Lossless"); // sDefaultProfile += i18n("Hybrid"); // currently unused sDefaultProfile += config->customProfiles(); cDefaultProfile->addItems( sDefaultProfile ); cDefaultProfile->setCurrentIndex( cDefaultProfile->findText(config->data.general.defaultProfile) ); defaultProfileBox->addWidget( cDefaultProfile ); connect( cDefaultProfile, SIGNAL(activated(int)), this, SLOT(profileChanged()) ); connect( cDefaultProfile, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); QLabel *lDefaultFormat = new QLabel( i18n("Default format:"), this ); defaultProfileBox->addWidget( lDefaultFormat ); cDefaultFormat = new KComboBox( this ); cDefaultFormat->setCurrentIndex( cDefaultFormat->findText(config->data.general.defaultFormat) ); defaultProfileBox->addWidget( cDefaultFormat ); connect( cDefaultFormat, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); profileChanged(); box->addSpacing( ConfigDialogSpacingBig ); QLabel *lConversion = new QLabel( i18n("Conversion"), this ); lConversion->setFont( groupFont ); box->addWidget( lConversion ); box->addSpacing( ConfigDialogSpacingSmall ); // QHBoxLayout *priorityBox = new QHBoxLayout(); // box->addLayout( priorityBox ); // QLabel *lPriority = new QLabel( i18n("Process priority of the backends:"), this ); // priorityBox->addWidget( lPriority ); // cPriority = new KComboBox( this ); // sPriority += i18n("Normal"); // sPriority += i18n("Low"); // cPriority->addItems( sPriority ); // cPriority->setCurrentIndex( config->data.general.priority / 10 ); // NOTE that just works for 'normal' and 'low' // priorityBox->addWidget( cPriority ); // connect( cPriority, SIGNAL(activated(int)), this, SIGNAL(configChanged()) ); // // box->addSpacing( 5 ); QHBoxLayout *conflictHandlingBox = new QHBoxLayout(); conflictHandlingBox->addSpacing( ConfigDialogOffset ); box->addLayout( conflictHandlingBox ); QLabel *lConflictHandling = new QLabel( i18n("Conflict handling:"), this ); conflictHandlingBox->addWidget( lConflictHandling ); cConflictHandling = new KComboBox( this ); cConflictHandling->addItem( i18n("Generate new file name") ); cConflictHandling->addItem( i18n("Skip file") ); // cConflictHandling->addItem( i18n("Overwrite file") ); cConflictHandling->setToolTip( i18n("Do that if the output file already exists") ); cConflictHandling->setCurrentIndex( (int)config->data.general.conflictHandling ); conflictHandlingBox->addWidget( cConflictHandling ); connect( cConflictHandling, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *numFilesBox = new QHBoxLayout(); numFilesBox->addSpacing( ConfigDialogOffset ); box->addLayout( numFilesBox ); QLabel *lNumFiles = new QLabel( i18n("Number of files to convert at once:"), this ); numFilesBox->addWidget( lNumFiles ); iNumFiles = new KIntSpinBox( this ); iNumFiles->setToolTip( i18n("You shouldn't set this number higher than the amount of installed processor cores.\nThere have been %1 processor cores detected.").arg(processorsCount) ); iNumFiles->setRange( 1, 100 ); iNumFiles->setValue( config->data.general.numFiles ); numFilesBox->addWidget( iNumFiles ); connect( iNumFiles, SIGNAL(valueChanged(int)), this, SLOT(somethingChanged()) ); numFilesBox->setStretch( 0, 3 ); numFilesBox->setStretch( 1, 1 ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *waitForAlbumGainBox = new QHBoxLayout(); waitForAlbumGainBox->addSpacing( ConfigDialogOffset ); box->addLayout( waitForAlbumGainBox ); cWaitForAlbumGain = new QCheckBox( i18n("Apply album gain to converted files"), this ); cWaitForAlbumGain->setToolTip( i18n("Keep songs of the same album waiting in file list in order to apply album gain to all files.") ); cWaitForAlbumGain->setChecked( config->data.general.waitForAlbumGain ); waitForAlbumGainBox->addWidget( cWaitForAlbumGain ); connect( cWaitForAlbumGain, SIGNAL(toggled(bool)), this, SLOT(somethingChanged()) ); box->addSpacing( ConfigDialogSpacingBig ); QLabel *lReplayGainTool = new QLabel( i18n("Replay Gain tool"), this ); lReplayGainTool->setFont( groupFont ); box->addWidget( lReplayGainTool ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *replayGainGroupingBox = new QHBoxLayout(); replayGainGroupingBox->addSpacing( ConfigDialogOffset ); box->addLayout( replayGainGroupingBox ); QLabel* lReplayGainGrouping = new QLabel( i18n("Group files in the Replay Gain tool by:"), this ); replayGainGroupingBox->addWidget( lReplayGainGrouping ); cReplayGainGrouping = new KComboBox( this ); cReplayGainGrouping->addItem( i18nc("Group files in the Replay Gain tool by","Album tags and directories") ); cReplayGainGrouping->addItem( i18nc("Group files in the Replay Gain tool by","Album tags only") ); cReplayGainGrouping->addItem( i18nc("Group files in the Replay Gain tool by","Directories only") ); cReplayGainGrouping->setCurrentIndex( (int)config->data.general.replayGainGrouping ); replayGainGroupingBox->addWidget( cReplayGainGrouping ); connect( cReplayGainGrouping, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *numReplayGainFilesBox = new QHBoxLayout(); numReplayGainFilesBox->addSpacing( ConfigDialogOffset ); box->addLayout( numReplayGainFilesBox ); QLabel *lNumReplayGainFiles = new QLabel( i18n("Number of items to process at once:"), this ); numReplayGainFilesBox->addWidget( lNumReplayGainFiles ); iNumReplayGainFiles = new KIntSpinBox( this ); iNumReplayGainFiles->setToolTip( i18n("You shouldn't set this number higher than the amount of installed processor cores.\nThere have been %1 processor cores detected.").arg(processorsCount) ); iNumReplayGainFiles->setRange( 1, 100 ); iNumReplayGainFiles->setValue( config->data.general.numReplayGainFiles ); numReplayGainFilesBox->addWidget( iNumReplayGainFiles ); connect( iNumReplayGainFiles, SIGNAL(valueChanged(int)), this, SLOT(somethingChanged()) ); numReplayGainFilesBox->setStretch( 0, 3 ); numReplayGainFilesBox->setStretch( 1, 1 ); box->addStretch(); } ConfigGeneralPage::~ConfigGeneralPage() {} void ConfigGeneralPage::resetDefaults() { const int processorsCount = Solid::Device::listFromType(Solid::DeviceInterface::Processor, QString()).count(); cStartTab->setCurrentIndex( 0 ); cDefaultProfile->setCurrentIndex( 0 ); cDefaultFormat->setCurrentIndex( 0 ); // cPriority->setCurrentIndex( 1 ); cConflictHandling->setCurrentIndex( 0 ); iNumFiles->setValue( processorsCount > 0 ? processorsCount : 1 ); cWaitForAlbumGain->setChecked( true ); cReplayGainGrouping->setCurrentIndex( 0 ); iNumReplayGainFiles->setValue( processorsCount > 0 ? processorsCount : 1 ); emit configChanged( true ); } void ConfigGeneralPage::saveSettings() { config->data.general.startTab = cStartTab->currentIndex(); config->data.general.defaultProfile = cDefaultProfile->currentText(); config->data.general.defaultFormat = cDefaultFormat->currentText(); // config->data.general.priority = cPriority->currentIndex() * 10; // NOTE that just works for 'normal' and 'low' config->data.general.conflictHandling = (Config::Data::General::ConflictHandling)cConflictHandling->currentIndex(); config->data.general.numFiles = iNumFiles->value(); config->data.general.waitForAlbumGain = cWaitForAlbumGain->isChecked(); config->data.general.replayGainGrouping = (Config::Data::General::ReplayGainGrouping)cReplayGainGrouping->currentIndex(); config->data.general.numReplayGainFiles = iNumReplayGainFiles->value(); } void ConfigGeneralPage::somethingChanged() { const bool changed = cStartTab->currentIndex() != config->data.general.startTab || cDefaultProfile->currentText() != config->data.general.defaultProfile || cDefaultFormat->currentText() != config->data.general.defaultFormat || cConflictHandling->currentIndex() != (int)config->data.general.conflictHandling || iNumFiles->value() != config->data.general.numFiles || cWaitForAlbumGain->isChecked() != config->data.general.waitForAlbumGain || cReplayGainGrouping->currentIndex() != (int)config->data.general.replayGainGrouping || iNumReplayGainFiles->value() != config->data.general.numReplayGainFiles; emit configChanged( changed ); } void ConfigGeneralPage::profileChanged() { const QString profile = cDefaultProfile->currentText(); QString lastFormat = cDefaultFormat->currentText(); if( lastFormat.isEmpty() ) lastFormat = config->data.general.defaultFormat; cDefaultFormat->clear(); if( profile == i18n("Last used") ) { cDefaultFormat->addItem( i18n("Last used") ); } else if( profile == i18n("Very low") || profile == i18n("Low") || profile == i18n("Medium") || profile == i18n("High") || profile == i18n("Very high") ) { cDefaultFormat->addItem( i18n("Last used") ); cDefaultFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Lossy) ); } else if( profile == i18n("Lossless") ) { cDefaultFormat->addItem( i18n("Last used") ); cDefaultFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Lossless) ); } else if( profile == i18n("Hybrid") ) { cDefaultFormat->addItem( i18n("Last used") ); cDefaultFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Encode,PluginLoader::Hybrid) ); } else { ConversionOptions *conversionOptions = config->data.profiles.value( profile ); if( conversionOptions ) cDefaultFormat->addItem( conversionOptions->codecName ); } if( cDefaultFormat->findText(lastFormat) != -1 ) cDefaultFormat->setCurrentIndex( cDefaultFormat->findText(lastFormat) ); } ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configbackendspage.h0000644000175000001440000000006212105142351024372 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.305421473 ./soundkonverter-2.0.5/configdialog/configbackendspage.h0000755000175000001440000000436312105142351024014 0ustar00danielusers00000000000000// // C++ Interface: configbackendspage // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #ifndef CONFIGBACKENDSPAGE_H #define CONFIGBACKENDSPAGE_H #include "configpagebase.h" #include class KComboBox; class KPushButton; class QCheckBox; class QListWidget; class QToolButton; class QListWidgetItem; /** @author Daniel Faust */ class BackendsListWidget : public QGroupBox { Q_OBJECT public: /** Default Constructor */ BackendsListWidget( const QString& _name, Config *_config, QWidget *parent=0 ); /** Default Destructor*/ ~BackendsListWidget(); void setFormat( const QString& _format ); void addItem( const QString& item ); void clear(); QStringList getList(); bool changed(); void resetOrder(); private: Config *config; QString name; QString format; QStringList originalOrder; QListWidget *lBackends; QToolButton *pUp; QToolButton *pDown; QToolButton *pConfigure; QToolButton *pInfo; private slots: void itemSelected( int item ); void up(); void down(); void configure(); void info(); signals: void orderChanged(); }; /** @author Daniel Faust */ class ConfigBackendsPage : public ConfigPageBase { Q_OBJECT public: /** Default Constructor */ ConfigBackendsPage( Config *_config, QWidget *parent=0 ); /** Default Destructor */ ~ConfigBackendsPage(); private: Config *config; KComboBox *cSelectorRipper; KComboBox *cSelectorFormat; QList filterCheckBoxes; QList filterConfigButtons; BackendsListWidget *decoderList; BackendsListWidget *encoderList; BackendsListWidget *replaygainList; KPushButton *pConfigureRipper; KPushButton *pShowOptimizations; QString currentFormat; private slots: void somethingChanged(); void ripperChanged( const QString& pluginName ); void formatChanged( const QString& format, bool ignoreChanges = false ); void configureRipper(); void configureFilter(); void showOptimizations(); public slots: void resetDefaults(); void saveSettings(); }; #endif ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configbackendspage.cpp0000644000175000001440000000013212255306740024735 xustar000000000000000030 mtime=1387630048.398964072 30 atime=1387630048.398964072 30 ctime=1387631578.305421473 ./soundkonverter-2.0.5/configdialog/configbackendspage.cpp0000755000175000001440000004453512255306740024366 0ustar00danielusers00000000000000// // C++ Implementation: configbackendspage // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #include "configbackendspage.h" #include "../config.h" #include "../core/codecplugin.h" #include #include #include #include #include #include #include #include #include #include #include BackendsListWidget::BackendsListWidget( const QString& _name, Config *_config, QWidget *parent ) : QGroupBox( _name, parent ), config( _config ), name( _name ) { QVBoxLayout *box = new QVBoxLayout(); setLayout( box ); lBackends = new QListWidget( this ); connect( lBackends, SIGNAL(currentRowChanged(int)), this, SLOT(itemSelected(int)) ); box->addWidget( lBackends ); QHBoxLayout *arrowBox = new QHBoxLayout(); box->addLayout( arrowBox ); pUp = new QToolButton( this ); pUp->setIcon( KIcon("arrow-up") ); pUp->setAutoRaise( true ); pUp->setEnabled( false ); connect( pUp, SIGNAL(clicked()), this, SLOT(up()) ); arrowBox->addWidget( pUp ); pDown = new QToolButton( this ); pDown->setIcon( KIcon("arrow-down") ); pDown->setAutoRaise( true ); pDown->setEnabled( false ); connect( pDown, SIGNAL(clicked()), this, SLOT(down()) ); arrowBox->addWidget( pDown ); pConfigure = new QToolButton( this ); pConfigure->setIcon( KIcon("configure") ); pConfigure->setAutoRaise( true ); pConfigure->setEnabled( false ); connect( pConfigure, SIGNAL(clicked()), this, SLOT(configure()) ); arrowBox->addWidget( pConfigure ); pInfo = new QToolButton( this ); pInfo->setIcon( KIcon("help-about") ); pInfo->setAutoRaise( true ); pInfo->setEnabled( false ); arrowBox->addWidget( pInfo ); connect( pInfo, SIGNAL(clicked()), this, SLOT(info()) ); } BackendsListWidget::~BackendsListWidget() {} void BackendsListWidget::setFormat( const QString& _format ) { format = _format; } void BackendsListWidget::addItem( const QString& item ) { lBackends->addItem( item ); } void BackendsListWidget::clear() { lBackends->clear(); pUp->setEnabled( false ); pDown->setEnabled( false ); pConfigure->setEnabled( false ); pInfo->setEnabled( false ); pUp->setToolTip( "" ); pDown->setToolTip( "" ); pConfigure->setToolTip( "" ); pInfo->setToolTip( "" ); originalOrder.clear(); } QStringList BackendsListWidget::getList() { QStringList list; for( int i=0; icount(); i++ ) { list.append( lBackends->item(i)->text() ); } return list; } bool BackendsListWidget::changed() { return originalOrder != getList(); } void BackendsListWidget::resetOrder() { originalOrder = getList(); } void BackendsListWidget::itemSelected( int row ) { const QListWidgetItem *item = lBackends->item( row ); if( !item ) return; BackendPlugin *plugin = config->pluginLoader()->backendPluginByName( item->text() ); pUp->setEnabled( row > 0 ); pDown->setEnabled( row < lBackends->count()-1 ); if( plugin ) { if( name == i18n("Decoder") ) pConfigure->setEnabled( plugin->isConfigSupported(CodecPlugin::Decoder,format) ); else if( name == i18n("Encoder") ) pConfigure->setEnabled( plugin->isConfigSupported(CodecPlugin::Encoder,format) ); else if( name == i18n("Replay Gain") ) pConfigure->setEnabled( plugin->isConfigSupported(CodecPlugin::ReplayGain,format) ); pInfo->setEnabled( plugin->hasInfo() ); const QString pluginName = plugin->name(); if( pUp->isEnabled() ) pUp->setToolTip( i18n("Move %1 one position up",pluginName) ); else pUp->setToolTip( "" ); if( pDown->isEnabled() ) pDown->setToolTip( i18n("Move %1 one position down",pluginName) ); else pDown->setToolTip( "" ); if( pInfo->isEnabled() ) pInfo->setToolTip( i18n("About %1 ...",pluginName) ); else pInfo->setToolTip( "" ); if( pConfigure->isEnabled() ) pConfigure->setToolTip( i18n("Configure %1 ...",pluginName) ); else pConfigure->setToolTip( "" ); } } void BackendsListWidget::up() { const int row = lBackends->currentRow(); lBackends->insertItem( row-1, lBackends->takeItem(row) ); lBackends->setCurrentRow( row-1 ); emit orderChanged(); } void BackendsListWidget::down() { const int row = lBackends->currentRow(); lBackends->insertItem( row+1, lBackends->takeItem(row) ); lBackends->setCurrentRow( row+1 ); emit orderChanged(); } void BackendsListWidget::configure() { const int row = lBackends->currentRow(); const QListWidgetItem *item = lBackends->item( row ); if( !item ) return; BackendPlugin *plugin = config->pluginLoader()->backendPluginByName( item->text() ); if( plugin ) { if( name == i18n("Decoder") ) plugin->showConfigDialog( CodecPlugin::Decoder, format, this ); else if( name == i18n("Encoder") ) plugin->showConfigDialog( CodecPlugin::Encoder, format, this ); else if( name == i18n("Replay Gain") ) plugin->showConfigDialog( CodecPlugin::ReplayGain, format, this ); } } void BackendsListWidget::info() { const int row = lBackends->currentRow(); const QListWidgetItem *item = lBackends->item( row ); if( !item ) return; BackendPlugin *plugin = config->pluginLoader()->backendPluginByName( item->text() ); if( plugin ) plugin->showInfo( this ); } // class ConfigBackendsPage /////////////////////////// ConfigBackendsPage::ConfigBackendsPage( Config *_config, QWidget *parent ) : ConfigPageBase( parent ), config( _config ) { QVBoxLayout *box = new QVBoxLayout( this ); QFont groupFont; groupFont.setBold( true ); QLabel *lCdRipper = new QLabel( i18n("CD ripper"), this ); lCdRipper->setFont( groupFont ); box->addWidget( lCdRipper ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *ripperBox = new QHBoxLayout(); ripperBox->addSpacing( ConfigDialogOffset ); box->addLayout( ripperBox ); QLabel *lSelectorRipper = new QLabel( i18n("Use plugin:"), this ); ripperBox->addWidget( lSelectorRipper ); ripperBox->setStretchFactor( lSelectorRipper, 2 ); cSelectorRipper = new KComboBox( this ); cSelectorRipper->addItems( config->data.backends.rippers ); ripperBox->addWidget( cSelectorRipper ); ripperBox->setStretchFactor( cSelectorRipper, 1 ); connect( cSelectorRipper, SIGNAL(activated(int)), this, SLOT(somethingChanged()) ); connect( cSelectorRipper, SIGNAL(activated(const QString&)), this, SLOT(ripperChanged(const QString&)) ); pConfigureRipper = new KPushButton( KIcon("configure"), "", this ); pConfigureRipper->setFixedSize( cSelectorRipper->sizeHint().height(), cSelectorRipper->sizeHint().height() ); pConfigureRipper->setFlat( true ); ripperBox->addWidget( pConfigureRipper ); ripperBox->setStretchFactor( pConfigureRipper, 1 ); connect( pConfigureRipper, SIGNAL(clicked()), this, SLOT(configureRipper()) ); box->addSpacing( ConfigDialogSpacingBig ); QLabel *lFilters = new QLabel( i18n("Filters"), this ); lFilters->setFont( groupFont ); box->addWidget( lFilters ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *filterBox = new QHBoxLayout(); filterBox->addSpacing( ConfigDialogOffset ); box->addLayout( filterBox ); QGridLayout *filterGrid = new QGridLayout(); int row = 0; foreach( const QString filterPluginName, config->data.backends.filters ) { if( row == 0 ) { QLabel *lSelectorFilter = new QLabel( i18n("Enable plugins:"), this ); filterGrid->addWidget( lSelectorFilter, row, 0 ); } QCheckBox *newCheckBox = new QCheckBox( filterPluginName, this ); newCheckBox->setChecked( config->data.backends.enabledFilters.contains(filterPluginName) ); filterGrid->addWidget( newCheckBox, row, 1 ); filterCheckBoxes.append( newCheckBox ); connect( newCheckBox, SIGNAL(stateChanged(int)), this, SLOT(somethingChanged()) ); KPushButton *newConfigButton = new KPushButton( KIcon("configure"), "", this ); newConfigButton->setFixedSize( cSelectorRipper->sizeHint().height(), cSelectorRipper->sizeHint().height() ); newConfigButton->setFlat( true ); filterGrid->addWidget( newConfigButton, row, 2 ); connect( newConfigButton, SIGNAL(clicked()), this, SLOT(configureFilter()) ); filterConfigButtons.append( newConfigButton ); FilterPlugin *plugin = qobject_cast(config->pluginLoader()->backendPluginByName(filterPluginName)); if( plugin ) { newConfigButton->setEnabled( plugin->isConfigSupported(BackendPlugin::General,"") ); } else { newConfigButton->setEnabled( false ); } if( newConfigButton->isEnabled() ) newConfigButton->setToolTip( i18n("Configure %1 ...",filterPluginName) ); row++; } filterGrid->setColumnStretch( 0, 2 ); filterGrid->setColumnStretch( 1, 1 ); filterBox->addLayout( filterGrid ); box->addSpacing( ConfigDialogSpacingBig ); QLabel *lPriorities = new QLabel( i18n("Priorities"), this ); lPriorities->setFont( groupFont ); box->addWidget( lPriorities ); box->addSpacing( ConfigDialogSpacingSmall ); QVBoxLayout *formatBox = new QVBoxLayout(); box->addLayout( formatBox, 1 ); QHBoxLayout *formatSelectorBox = new QHBoxLayout(); formatSelectorBox->addSpacing( ConfigDialogOffset ); formatBox->addLayout( formatSelectorBox ); QLabel *lSelectorFormat = new QLabel( i18n("Configure plugin priorities for format:"), this ); formatSelectorBox->addWidget( lSelectorFormat ); cSelectorFormat = new KComboBox( this ); cSelectorFormat->addItems( config->pluginLoader()->formatList(PluginLoader::Possibilities(PluginLoader::Encode|PluginLoader::Decode|PluginLoader::ReplayGain),PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)) ); cSelectorFormat->removeItem( cSelectorFormat->findText("wav") ); cSelectorFormat->removeItem( cSelectorFormat->findText("audio cd") ); formatSelectorBox->addWidget( cSelectorFormat ); connect( cSelectorFormat, SIGNAL(activated(const QString&)), this, SLOT(formatChanged(const QString&)) ); formatSelectorBox->addStretch(); QHBoxLayout *formatBackendsBox = new QHBoxLayout(); formatBackendsBox->addSpacing( ConfigDialogOffset ); formatBox->addLayout( formatBackendsBox ); decoderList = new BackendsListWidget( i18n("Decoder"), config, this ); formatBackendsBox->addWidget( decoderList ); connect( decoderList, SIGNAL(orderChanged()), this, SLOT(somethingChanged()) ); encoderList = new BackendsListWidget( i18n("Encoder"), config, this ); formatBackendsBox->addWidget( encoderList ); connect( encoderList, SIGNAL(orderChanged()), this, SLOT(somethingChanged()) ); replaygainList = new BackendsListWidget( i18n("Replay Gain"), config, this ); formatBackendsBox->addWidget( replaygainList ); connect( replaygainList, SIGNAL(orderChanged()), this, SLOT(somethingChanged()) ); QHBoxLayout *optimizationsBox = new QHBoxLayout(); optimizationsBox->addSpacing( ConfigDialogOffset ); formatBox->addLayout( optimizationsBox ); optimizationsBox->addStretch(); pShowOptimizations = new KPushButton( KIcon("games-solve"), i18n("Show possible optimizations"), this ); optimizationsBox->addWidget( pShowOptimizations ); connect( pShowOptimizations, SIGNAL(clicked()), this, SLOT(showOptimizations()) ); optimizationsBox->addStretch(); box->addStretch( 2 ); ripperChanged( cSelectorRipper->currentText() ); formatChanged( cSelectorFormat->currentText() ); } ConfigBackendsPage::~ConfigBackendsPage() {} void ConfigBackendsPage::ripperChanged( const QString& pluginName ) { RipperPlugin *plugin = qobject_cast(config->pluginLoader()->backendPluginByName(pluginName)); if( plugin ) { pConfigureRipper->setEnabled( plugin->isConfigSupported(BackendPlugin::General,"") ); } else { pConfigureRipper->setEnabled( false ); } if( pConfigureRipper->isEnabled() ) pConfigureRipper->setToolTip( i18n("Configure %1 ...",pluginName) ); else pConfigureRipper->setToolTip( "" ); } void ConfigBackendsPage::formatChanged( const QString& format, bool ignoreChanges ) { QStringList plugins; if( !ignoreChanges && ( decoderList->changed() || encoderList->changed() || replaygainList->changed() ) ) { const int ret = KMessageBox::questionYesNo( this, i18n("You have changed the current settings.\nDo you want to save them?"), i18n("Settings changed") ); if( ret == KMessageBox::Yes ) { saveSettings(); config->save(); } } decoderList->clear(); encoderList->clear(); replaygainList->clear(); currentFormat = format; decoderList->setFormat( format ); encoderList->setFormat( format ); replaygainList->setFormat( format ); foreach( const Config::CodecData codec, config->data.backends.codecs ) { if( codec.codecName == format ) { foreach( const QString decoder, codec.decoders ) { decoderList->addItem( decoder ); } foreach( const QString encoder, codec.encoders ) { encoderList->addItem( encoder ); } foreach( const QString replaygain, codec.replaygain ) { replaygainList->addItem( replaygain ); } } } decoderList->resetOrder(); encoderList->resetOrder(); replaygainList->resetOrder(); emit configChanged( false ); } void ConfigBackendsPage::resetDefaults() { // TODO reset rippers int i = 0; foreach( QCheckBox *checkBox, filterCheckBoxes ) { const QString filterPluginName = config->data.backends.filters.at(i); checkBox->setChecked( i == 0 ); i++; } const int answer = KMessageBox::questionYesNo( this, i18n("This will choose the best backends for all formats and save the new preferences immediately.\n\nDo you want to continue?") ); if( answer == KMessageBox::Yes ) { QList optimizationList = config->getOptimizations( true ); for( int i=0; idoOptimizations( optimizationList ); formatChanged( cSelectorFormat->currentText(), true ); emit configChanged( false ); } } void ConfigBackendsPage::saveSettings() { // TODO save rippers config->data.backends.enabledFilters.clear(); int i = 0; foreach( QCheckBox *checkBox, filterCheckBoxes ) { const QString filterPluginName = config->data.backends.filters.at(i); if( checkBox->isChecked() ) config->data.backends.enabledFilters.append( filterPluginName ); i++; } for( int i=0; idata.backends.codecs.count(); i++ ) { if( config->data.backends.codecs.at(i).codecName == currentFormat ) { config->data.backends.codecs[i].decoders = decoderList->getList(); config->data.backends.codecs[i].encoders = encoderList->getList(); config->data.backends.codecs[i].replaygain = replaygainList->getList(); } } decoderList->resetOrder(); encoderList->resetOrder(); replaygainList->resetOrder(); // ensure that the user won't get bothered by an optimization message at the next start QList optimizationList = config->getOptimizations( true ); for( int i=0; idata.backendOptimizationsIgnoreList.optimizationList = optimizationList; } void ConfigBackendsPage::somethingChanged() { bool changed = false; int i = 0; foreach( QCheckBox *checkBox, filterCheckBoxes ) { if( checkBox == QObject::sender() ) { const QString filterPluginName = config->data.backends.filters.at(i); if( checkBox->isChecked() != config->data.backends.enabledFilters.contains(filterPluginName) ) { changed = true; break; } } i++; } if( decoderList->changed() || encoderList->changed() || replaygainList->changed() ) changed = true; emit configChanged( changed ); } void ConfigBackendsPage::configureRipper() { RipperPlugin *plugin = qobject_cast(config->pluginLoader()->backendPluginByName(cSelectorRipper->currentText())); if( plugin ) { plugin->showConfigDialog( BackendPlugin::General, "", this ); } } void ConfigBackendsPage::configureFilter() { int i = 0; foreach( KPushButton *configButton, filterConfigButtons ) { if( configButton == QObject::sender() ) { const QString filterPluginName = config->data.backends.filters.at(i); FilterPlugin *plugin = qobject_cast(config->pluginLoader()->backendPluginByName(filterPluginName)); if( plugin ) { plugin->showConfigDialog( BackendPlugin::General, "", this ); } } i++; } } void ConfigBackendsPage::showOptimizations() { QList optimizationList = config->getOptimizations( true ); if( !optimizationList.isEmpty() ) { CodecOptimizations *optimizationsDialog = new CodecOptimizations( optimizationList, this ); connect( optimizationsDialog, SIGNAL(solutions(const QList&)), config, SLOT(doOptimizations(const QList&)) ); optimizationsDialog->exec(); } else { KMessageBox::information( this, i18n("All backend settings seem to be optimal, there is nothing to do.") ); } formatChanged( cSelectorFormat->currentText(), true ); } ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configcoverartpage.cpp0000644000175000001440000000006212105142351025000 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.305421473 ./soundkonverter-2.0.5/configdialog/configcoverartpage.cpp0000644000175000001440000001732212105142351024416 0ustar00danielusers00000000000000 #include "configcoverartpage.h" #include "../config.h" #include #include #include #include #include #include ConfigCoverArtPage::ConfigCoverArtPage( Config *_config, QWidget *parent ) : ConfigPageBase( parent ), config( _config ) { QVBoxLayout *box = new QVBoxLayout( this ); QFont groupFont; groupFont.setBold( true ); QLabel *lCoverSaving = new QLabel( i18n("Saving covers to output directory"), this ); lCoverSaving->setFont( groupFont ); box->addWidget( lCoverSaving ); box->addSpacing( ConfigDialogSpacingSmall ); QHBoxLayout *coverSavingBox = new QHBoxLayout(); coverSavingBox->addSpacing( ConfigDialogOffset ); box->addLayout( coverSavingBox ); QVBoxLayout *writeCoversBox = new QVBoxLayout(); coverSavingBox->addLayout( writeCoversBox ); QLabel *lWriteCovers = new QLabel( i18n("Save embedded covers to output directory"), this ); writeCoversBox->addWidget( lWriteCovers ); rWriteCoversAlways = new QRadioButton( i18n("Always"), this ); writeCoversBox->addWidget( rWriteCoversAlways ); rWriteCoversAuto = new QRadioButton( i18n("Only if embedding the covers into the output files is not possible"), this ); writeCoversBox->addWidget( rWriteCoversAuto ); rWriteCoversNever = new QRadioButton( i18n("Never"), this ); writeCoversBox->addWidget( rWriteCoversNever ); QButtonGroup *writeCoversGroup = new QButtonGroup( this ); writeCoversGroup->addButton( rWriteCoversAlways ); writeCoversGroup->addButton( rWriteCoversAuto ); writeCoversGroup->addButton( rWriteCoversNever ); connect( writeCoversGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(writeCoversChanged(QAbstractButton*)) ); connect( writeCoversGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(somethingChanged()) ); if( config->data.coverArt.writeCovers == 0 ) rWriteCoversAlways->setChecked( true ); else if( config->data.coverArt.writeCovers == 1 ) rWriteCoversAuto->setChecked( true ); else if( config->data.coverArt.writeCovers == 2 ) rWriteCoversNever->setChecked( true ); writeCoversBox->addSpacing( ConfigDialogSpacingMedium ); lWriteCoverName = new QLabel( i18n("File name for the cover (when saving to output directory)"), this ); writeCoversBox->addWidget( lWriteCoverName ); rWriteCoverNameTitle = new QRadioButton( i18n("The embedded cover description"), this ); writeCoversBox->addWidget( rWriteCoverNameTitle ); rWriteCoverNameDefault = new QRadioButton( i18n("The default cover file name"), this ); writeCoversBox->addWidget( rWriteCoverNameDefault ); QHBoxLayout *writeCoverNameTextBox = new QHBoxLayout( this ); lWriteCoverNameDefaultLabel = new QLabel( i18n("Default cover file name:"), this ); writeCoverNameTextBox->addWidget( lWriteCoverNameDefaultLabel ); lWriteCoverNameDefaultEdit = new KLineEdit( this ); lWriteCoverNameDefaultEdit->setToolTip( i18n("The following strings are wildcards that will be replaced\nby the information in the meta data:\n\n%a - Artist\n%b - Album\n%d - Cover description\n%r - Cover role") ); writeCoverNameTextBox->addWidget( lWriteCoverNameDefaultEdit ); writeCoverNameTextBox->addStretch(); writeCoversBox->addLayout( writeCoverNameTextBox ); connect( lWriteCoverNameDefaultEdit, SIGNAL(textChanged(QString)), this, SLOT(somethingChanged()) ); QButtonGroup *writeCoverNameGroup = new QButtonGroup( this ); writeCoverNameGroup->addButton( rWriteCoverNameTitle ); writeCoverNameGroup->addButton( rWriteCoverNameDefault ); connect( writeCoverNameGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(somethingChanged()) ); if( config->data.coverArt.writeCoverName == 0 ) rWriteCoverNameTitle->setChecked( true ); else if( config->data.coverArt.writeCoverName == 1 ) rWriteCoverNameDefault->setChecked( true ); lWriteCoverNameDefaultEdit->setText( config->data.coverArt.writeCoverDefaultName ); // QGroupBox *coverGroup = new QGroupBox( i18n("CD covers"), this ); // writeCoversBox->addWidget( coverGroup ); // QVBoxLayout *coverBox = new QVBoxLayout(); // // cCopyCover = new QCheckBox( i18n("Copy covers from the source directoy to output directoy"), this ); // coverBox->addWidget( cCopyCover ); // connect( cCopyCover, SIGNAL(toggled(bool)), this, SIGNAL(configChanged()) ); // // cEmbedCover = new QCheckBox( i18n("Embed covers from the source directoy into meta tags if possible"), this ); // coverBox->addWidget( cEmbedCover ); // connect( cEmbedCover, SIGNAL(toggled(bool)), this, SIGNAL(configChanged()) ); // // lCoverList = new QListView( this ); // coverBox->addWidget( lCoverList ); // // coverGroup->setLayout( coverBox ); // // QHBoxLayout *startTabBox = new QHBoxLayout(); // writeCoversBox->addLayout( startTabBox ); // // writeCoversBox->addSpacing( 5 ); // // QGroupBox *userScriptGroup = new QGroupBox( i18n("User scripts"), this ); // writeCoversBox->addWidget( userScriptGroup ); // QVBoxLayout *userScriptBox = new QVBoxLayout(); // // QLabel *lUserScript = new QLabel( i18n("Check all scripts that should be executed after a conversion has finished"), this ); // userScriptBox->addWidget( lUserScript ); // // QListView *lUserScriptList = new QListView( this ); // userScriptBox->addWidget( lUserScriptList ); // // userScriptGroup->setLayout( userScriptBox ); box->addStretch(); } ConfigCoverArtPage::~ConfigCoverArtPage() {} void ConfigCoverArtPage::resetDefaults() { rWriteCoversAuto->setChecked( true ); rWriteCoverNameTitle->setChecked( true ); lWriteCoverNameDefaultEdit->setText( i18nc("cover file name","cover") ); emit configChanged( true ); } void ConfigCoverArtPage::saveSettings() { if( rWriteCoversAlways->isChecked() ) config->data.coverArt.writeCovers = 0; else if( rWriteCoversAuto->isChecked() ) config->data.coverArt.writeCovers = 1; else if( rWriteCoversNever->isChecked() ) config->data.coverArt.writeCovers = 2; if( rWriteCoverNameTitle->isChecked() ) config->data.coverArt.writeCoverName = 0; else if( rWriteCoverNameDefault->isChecked() ) config->data.coverArt.writeCoverName = 1; config->data.coverArt.writeCoverDefaultName = lWriteCoverNameDefaultEdit->text(); } void ConfigCoverArtPage::somethingChanged() { const bool changed = ( rWriteCoversAlways->isChecked() && config->data.coverArt.writeCovers != 0 ) || ( rWriteCoversAuto->isChecked() && config->data.coverArt.writeCovers != 1 ) || ( rWriteCoversNever->isChecked() && config->data.coverArt.writeCovers != 2 ) || ( rWriteCoverNameTitle->isChecked() && config->data.coverArt.writeCoverName != 0 ) || ( rWriteCoverNameDefault->isChecked() && config->data.coverArt.writeCoverName != 1 ) || lWriteCoverNameDefaultEdit->text() != config->data.coverArt.writeCoverDefaultName; emit configChanged( changed ); } void ConfigCoverArtPage::writeCoversChanged( QAbstractButton *button ) { if( button == rWriteCoversNever ) { lWriteCoverName->setEnabled( false ); rWriteCoverNameTitle->setEnabled( false ); rWriteCoverNameDefault->setEnabled( false ); lWriteCoverNameDefaultLabel->setEnabled( false ); lWriteCoverNameDefaultEdit->setEnabled( false ); } else { lWriteCoverName->setEnabled( true ); rWriteCoverNameTitle->setEnabled( true ); rWriteCoverNameDefault->setEnabled( true ); lWriteCoverNameDefaultLabel->setEnabled( true ); lWriteCoverNameDefaultEdit->setEnabled( true ); } } ./soundkonverter-2.0.5/configdialog/PaxHeaders.25599/configcoverartpage.h0000644000175000001440000000006212105142351024445 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.305421473 ./soundkonverter-2.0.5/configdialog/configcoverartpage.h0000644000175000001440000000242012105142351024054 0ustar00danielusers00000000000000// // C++ Interface: configgeneralpage // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #ifndef CONFIGCOVERARTPAGE_H #define CONFIGCOVERARTPAGE_H #include "configpagebase.h" class Config; class QRadioButton; class QLabel; class QAbstractButton; class KLineEdit; /** @author Daniel Faust */ class ConfigCoverArtPage : public ConfigPageBase { Q_OBJECT public: /** * Default Constructor */ ConfigCoverArtPage( Config *_config, QWidget *parent=0 ); /** * Default Destructor */ ~ConfigCoverArtPage(); private: QRadioButton *rWriteCoversAlways; QRadioButton *rWriteCoversAuto; QRadioButton *rWriteCoversNever; QLabel *lWriteCoverName; QRadioButton *rWriteCoverNameTitle; QRadioButton *rWriteCoverNameDefault; QLabel *lWriteCoverNameDefaultLabel; KLineEdit *lWriteCoverNameDefaultEdit; // QCheckBox *cCopyCover; // QCheckBox *cEmbedCover; // QListView *lCoverList; Config *config; private slots: void somethingChanged(); void writeCoversChanged( QAbstractButton *button ); public slots: void resetDefaults(); void saveSettings(); }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter.cpp0000644000175000001440000000013212255306740021603 xustar000000000000000030 mtime=1387630048.573961884 30 atime=1387630048.573961884 30 ctime=1387631578.305421473 ./soundkonverter-2.0.5/soundkonverter.cpp0000755000175000001440000002615012255306740021225 0ustar00danielusers00000000000000/* * soundkonverter.cpp * * Copyright (C) 2007 Daniel Faust */ #include "soundkonverter.h" #include "soundkonverterview.h" #include "global.h" #include "config.h" #include "configdialog/configdialog.h" #include "logger.h" #include "logviewer.h" #include "replaygainscanner/replaygainscanner.h" #include "aboutplugins.h" #include #include #include #include #include #include #include #include #include #include #if KDE_IS_VERSION(4,4,0) #include #else #include #endif soundKonverter::soundKonverter() : KXmlGuiWindow(), logViewer( 0 ), systemTray( 0 ), autoclose( false ) { // accept dnd setAcceptDrops(true); logger = new Logger( this ); logger->log( 1000, i18n("This is soundKonverter %1").arg(SOUNDKONVERTER_VERSION_STRING) ); logger->log( 1000, "\n" + i18n("Compiled with TagLib %1.%2.%3").arg(TAGLIB_MAJOR_VERSION).arg(TAGLIB_MINOR_VERSION).arg(TAGLIB_PATCH_VERSION) ); #if (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION < 7) logger->log( 1000, "" + i18n("Reading/writing covers is not supported for ogg/METADATA_BLOCK_PICTURE, flac and asf/wma files. TagLib 1.7 is needed for that.") + "" ); #endif config = new Config( logger, this ); config->load(); m_view = new soundKonverterView( logger, config, cdManager, this ); connect( m_view, SIGNAL(signalConversionStarted()), this, SLOT(conversionStarted()) ); connect( m_view, SIGNAL(signalConversionStopped(bool)), this, SLOT(conversionStopped(bool)) ); connect( m_view, SIGNAL(progressChanged(const QString&)), this, SLOT(progressChanged(const QString&)) ); connect( m_view, SIGNAL(showLog(int)), this, SLOT(showLogViewer(int)) ); // tell the KXmlGuiWindow that this is indeed the main widget setCentralWidget( m_view ); // then, setup our actions setupActions(); // a call to KXmlGuiWindow::setupGUI() populates the GUI // with actions, using KXMLGUI. // It also applies the saved mainwindow settings, if any, and ask the // mainwindow to automatically save settings if changed: window size, // toolbar position, icon size, etc. setupGUI( QSize(700,400), ToolBar | Keys | Save | Create ); // clean up old files from previous soundKonverter versions if( config->data.app.configVersion < 1001 ) { if( QFile::exists(QDir::homePath()+"/.kde4/share/kde4/services/ServiceMenus/convert_with_soundkonverter.desktop") ) { QFile::remove(QDir::homePath()+"/.kde4/share/kde4/services/ServiceMenus/convert_with_soundkonverter.desktop"); logger->log( 1000, i18n("Removing old file: %1").arg(QDir::homePath()+"/.kde4/share/kde4/services/ServiceMenus/convert_with_soundkonverter.desktop") ); } if( QFile::exists(QDir::homePath()+"/.kde4/share/kde4/services/ServiceMenus/add_replaygain_with_soundkonverter.desktop") ) { QFile::remove(QDir::homePath()+"/.kde4/share/kde4/services/ServiceMenus/add_replaygain_with_soundkonverter.desktop"); logger->log( 1000, i18n("Removing old file: %1").arg(QDir::homePath()+"/.kde4/share/kde4/services/ServiceMenus/add_replaygain_with_soundkonverter.desktop") ); } } // clean up log directory QDir dir( KStandardDirs::locateLocal("data","soundkonverter/log/") ); dir.setFilter( QDir::Files | QDir::Writable ); QStringList list = dir.entryList(); for( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { if( *it != "1000.log" && (*it).endsWith(".log") ) { QFile::remove( dir.absolutePath() + "/" + (*it) ); logger->log( 1000, i18n("Removing old file: %1").arg(dir.absolutePath()+"/"+(*it)) ); } } // Check if new backends got installed and the backend settings can be optimized QList optimizationList = config->getOptimizations(); if( !optimizationList.isEmpty() ) { CodecOptimizations *optimizationsDialog = new CodecOptimizations( optimizationList, this ); connect( optimizationsDialog, SIGNAL(solutions(const QList&)), config, SLOT(doOptimizations(const QList&)) ); optimizationsDialog->open(); } } soundKonverter::~soundKonverter() { if( logViewer ) delete logViewer; if( replayGainScanner ) delete replayGainScanner.data(); if( systemTray ) delete systemTray; } void soundKonverter::saveProperties( KConfigGroup& configGroup ) { Q_UNUSED(configGroup) m_view->killConversion(); m_view->saveFileList( false ); } void soundKonverter::showSystemTray() { #if KDE_IS_VERSION(4,4,0) systemTray = new KStatusNotifierItem( this ); systemTray->setCategory( KStatusNotifierItem::ApplicationStatus ); systemTray->setStatus( KStatusNotifierItem::Active ); systemTray->setIconByName( "soundkonverter" ); systemTray->setToolTip( "soundkonverter", i18n("Waiting"), "" ); #else systemTray = new KSystemTrayIcon( this ); systemTray->setIcon( KIcon("soundkonverter") ); systemTray->setToolTip( i18n("Waiting") ); systemTray->show(); #endif } void soundKonverter::addConvertFiles( const KUrl::List& urls, const QString& profile, const QString& format, const QString& directory, const QString& notifyCommand ) { m_view->addConvertFiles( urls, profile, format, directory, notifyCommand ); } void soundKonverter::addReplayGainFiles( const KUrl::List& urls ) { showReplayGainScanner(); replayGainScanner.data()->addFiles( urls ); } bool soundKonverter::ripCd( const QString& device, const QString& profile, const QString& format, const QString& directory, const QString& notifyCommand ) { return m_view->showCdDialog( device != "auto" ? device : "", profile, format, directory, notifyCommand ); } void soundKonverter::setupActions() { KStandardAction::quit( this, SLOT(close()), actionCollection() ); KStandardAction::preferences( this, SLOT(showConfigDialog()), actionCollection() ); KAction *logviewer = actionCollection()->addAction("logviewer"); logviewer->setText(i18n("View logs...")); logviewer->setIcon(KIcon("view-list-text")); connect( logviewer, SIGNAL(triggered()), this, SLOT(showLogViewer()) ); KAction *replaygainscanner = actionCollection()->addAction("replaygainscanner"); replaygainscanner->setText(i18n("Replay Gain tool...")); replaygainscanner->setIcon(KIcon("soundkonverter-replaygain")); connect( replaygainscanner, SIGNAL(triggered()), this, SLOT(showReplayGainScanner()) ); KAction *aboutplugins = actionCollection()->addAction("aboutplugins"); aboutplugins->setText(i18n("About plugins...")); aboutplugins->setIcon(KIcon("preferences-plugin")); connect( aboutplugins, SIGNAL(triggered()), this, SLOT(showAboutPlugins()) ); KAction *add_files = actionCollection()->addAction("add_files"); add_files->setText(i18n("Add files...")); add_files->setIcon(KIcon("audio-x-generic")); connect( add_files, SIGNAL(triggered()), m_view, SLOT(showFileDialog()) ); KAction *add_folder = actionCollection()->addAction("add_folder"); add_folder->setText(i18n("Add folder...")); add_folder->setIcon(KIcon("folder")); connect( add_folder, SIGNAL(triggered()), m_view, SLOT(showDirDialog()) ); KAction *add_audiocd = actionCollection()->addAction("add_audiocd"); add_audiocd->setText(i18n("Add CD tracks...")); add_audiocd->setIcon(KIcon("media-optical-audio")); connect( add_audiocd, SIGNAL(triggered()), m_view, SLOT(showCdDialog()) ); KAction *add_url = actionCollection()->addAction("add_url"); add_url->setText(i18n("Add url...")); add_url->setIcon(KIcon("network-workgroup")); connect( add_url, SIGNAL(triggered()), m_view, SLOT(showUrlDialog()) ); KAction *add_playlist = actionCollection()->addAction("add_playlist"); add_playlist->setText(i18n("Add playlist...")); add_playlist->setIcon(KIcon("view-media-playlist")); connect( add_playlist, SIGNAL(triggered()), m_view, SLOT(showPlaylistDialog()) ); KAction *load = actionCollection()->addAction("load"); load->setText(i18n("Load file list")); load->setIcon(KIcon("document-open")); connect( load, SIGNAL(triggered()), m_view, SLOT(loadFileList()) ); KAction *save = actionCollection()->addAction("save"); save->setText(i18n("Save file list")); save->setIcon(KIcon("document-save")); connect( save, SIGNAL(triggered()), m_view, SLOT(saveFileList()) ); actionCollection()->addAction("start", m_view->start()); actionCollection()->addAction("stop_menu", m_view->stopMenu()); } void soundKonverter::showConfigDialog() { ConfigDialog *dialog = new ConfigDialog( config, this/*, ConfigDialog::Page(configStartPage)*/ ); connect( dialog, SIGNAL(updateFileList()), m_view, SLOT(updateFileList()) ); dialog->resize( size() ); dialog->exec(); delete dialog; } void soundKonverter::showLogViewer( const int logId ) { if( !logViewer ) logViewer = new LogViewer( logger, 0 ); if( logId ) logViewer->showLog( logId ); logViewer->show(); logViewer->raise(); } void soundKonverter::showReplayGainScanner() { if( !replayGainScanner ) replayGainScanner = new ReplayGainScanner( config, logger, 0 ); replayGainScanner.data()->setAttribute( Qt::WA_DeleteOnClose ); replayGainScanner.data()->show(); replayGainScanner.data()->raise(); replayGainScanner.data()->activateWindow(); } void soundKonverter::showAboutPlugins() { AboutPlugins *dialog = new AboutPlugins( config, this ); dialog->exec(); dialog->deleteLater(); } void soundKonverter::startConversion() { m_view->startConversion(); } void soundKonverter::loadAutosaveFileList() { m_view->loadAutosaveFileList(); } void soundKonverter::conversionStarted() { if( systemTray ) { #if KDE_IS_VERSION(4,4,0) systemTray->setToolTip( "soundkonverter", i18n("Converting") + ": 0%", "" ); #else systemTray->setToolTip( i18n("Converting") + ": 0%" ); #endif } } void soundKonverter::conversionStopped( bool failed ) { if( autoclose && !failed /*&& !m_view->isVisible()*/ ) KApplication::kApplication()->quit(); // close app on conversion stop unless the conversion was stopped by the user or the window is shown if( systemTray ) { #if KDE_IS_VERSION(4,4,0) systemTray->setToolTip( "soundkonverter", i18n("Finished"), "" ); #else systemTray->setToolTip( i18n("Finished") ); #endif } } void soundKonverter::progressChanged( const QString& progress ) { setWindowTitle( progress + " - soundKonverter" ); if( systemTray ) { #if KDE_IS_VERSION(4,4,0) systemTray->setToolTip( "soundkonverter", i18n("Converting") + ": " + progress, "" ); #else systemTray->setToolTip( i18n("Converting") + ": " + progress ); #endif } } #include "soundkonverter.moc" ./soundkonverter-2.0.5/PaxHeaders.25599/README0000644000175000001440000000006212105142351016657 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.335421098 ./soundkonverter-2.0.5/README0000644000175000001440000003157312105142351016301 0ustar00danielusers00000000000000 soundKonverter is a frontend to various audio converters. The key features are: - Audio conversion - ReplayGain calculation - CD ripping Reading and writing tags and covers is supported for many formats, so they are preserved when converting files. The following backends and formats are supported: Encoders/Decoders: Encode: Decode: faac (aac,m4a) (aac,m4a) ffmpeg (ogg vorbis,mp3,flac,wma,aac,m4a,ac3,alac,mp2,amr nb) (ogg vorbis,mp3,flac,wma,aac,ac3,alac,mp2,sad,als,amr nb,amr wb,ape,speex,m4a,mp1,musepack,shorten,tta,wavpack,ra,3gp,rm,avi,mkv,ogv,mpeg,mov,mp4,flv,wmv,rv) flac (flac) (flac) lame (mp3) (mp2,mp3) mplayer (ogg vorbis,mp3,flac,wma,aac,ac3,alac,mp2,sad,als,amr nb,amr wb,ape,speex,m4a,mp1,musepack,shorten,tta,wavpack,ra,3gp,rm,avi,mkv,ogv,mpeg,mov,mp4,flv,wmv,rv) neroaac (m4a) (m4a) timidity (midi,mod) fluidsynth (midi,mod) vorbistools (ogg vorbis) (ogg vorbis) twolame (mp2) musepack (musepack) (musepack) flake (flac) mac (ape) (ape) shorten (shorten) (shorten) wavpack (wavpack) (wavpack) ttaenc (tta) (tta) opustools (opus) (opus) speex (speex) (speex) sox (ogg vorbis,mp3,flac,mp2,8svx,aiff,amr nb,amr wb) (ogg vorbis,mp3,flac,mp2,8svx,aiff,amr nb,amr wb) Filters: sox (sample rate, sample size, channels, normalize, bass, treble) ReplayGain calculators: aacgain (aac,mp3) metaflac (flac) mp3gain (mp3) vorbisgain (ogg vorbis) wvgain (wavpack) mpcgain (musepack) CD rippers: cdparanoia If you try to convert a file that is not supported, soundKonverter will tell you which backend you need to install. soundKonverter has nothing to do with the soundconverter project, the very similar name is just an unfortunate coincident. Websites: https://github.com/HessiJames/soundkonverter http://kde-apps.org/content/show.php?content=29024 Feature list: ============= - Convert audio files between many formats - Change sample rate and sample size during conversion - Apply effects like normalize during conversion - Convert the audio stream from video files to audio files - Convert multiple files at once - Calculate ReplayGain for many formats - ReplayGain tool for calculating and removing ReplayGain tags - Calculate ReplayGain for multiple files or file stets at once - Conversion and ReplayGain calculation is very scalable, the conversion of 100000 files or more is not a problem - Copy tags and covers when converting files (note: for ogg/METADATA_BLOCK_PICTURE, flac and asf/wma files, taglib 1.7 or higher is needed) - Rip multiple audio CDs at once - Retrieve audio CD information from CDDB and MusicBrainz - Easy to use, just choose a file format and a quality level - Detailed control, if you want to choose the conversion settings in more detail, simply switch to the "detailed" tab - Manage your preferred conversion options with profiles - Contextual help, e.g. if you don't know what the speex format is, just click on the "info" button next to it. Or if you want to add a file that isn't supported, soundKonverter will tell you how to enable the format if possible. - Possibility to configure which backend shall be used for which codec - or let soundKonverter optimize that for you. Every time you install or remove backends soundKonverter will suggest optimizations if possible. - Possibility to integrate soundKonverter in other applications or scripts by using its command line interface Installation: ============= This section describes install soundKonverter from its sources. If you prefer to use precompiled packages have a look at the corresponding section below. First you should make sure that all dependencies are installed. soundKonverter will need the following packages to compile: kde development packages version 4.4 or higher taglib development package version 1.4 or higher cdparanoia development package libkcddb (sometimes kdemultimedia) development package gettext-tools cmake All dependencies - and whether they are fulfilled - should be shown when running cmake. Then open a console and change to the soundKonverter source directory and execute the following commands: mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` .. make sudo make install In order to compile soundKonverter with debug information the commands will look like this: mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` -DCMAKE_BUILD_TYPE=debugfull .. make sudo make install Note: `kde4-config --prefix` should return the installation path of kde. On some systems you might need to use kde-config. Or you can just define a path by yourself, "/usr" will be fine for most systems. For installing soundKonverter to your home directory see Building Amarok Locally at: http://amarok.kde.org/wiki/2.0_Development_HowTo Un-Installation: ================ For uninstalling soundKonverter, open a console and change to the soundKonverter build directory. (If you followed the instructions above it's the directory named "build" in the soundKonverter source directory.) Then execute one of the following commands: sudo make uninstall or sudo xargs rm < install_manifest.txt In order to remove the soundKonverter configuration and kde integration, run the following commands: rm `kde4-config --localprefix`share/config/soundkonverterrc rm -r `kde4-config --localprefix`share/apps/soundkonverter rm `kde4-config --localprefix`share/kde4/services/ServiceMenus/add_replaygain_with_soundkonverter.desktop rm `kde4-config --localprefix`share/kde4/services/ServiceMenus/convert_with_soundkonverter.desktop this will - depending on the location of your local kde directory - result in something like: rm ~/.kde4/share/config/soundkonverterrc rm -r ~/.kde4/share/apps/soundkonverter rm ~/.kde4/share/kde4/services/ServiceMenus/add_replaygain_with_soundkonverter.desktop rm ~/.kde4/share/kde4/services/ServiceMenus/convert_with_soundkonverter.desktop Precompiled packages: ===================== You can find soundKonverter packages for various distributions with a nice download interface and some instructions at: http://software.opensuse.org/download.html?project=home:HessiJames&package=soundkonverter openSUSE users should either add the following installation source to yast: http://download.opensuse.org/repositories/home:/HessiJames/ eg.: http://download.opensuse.org/repositories/home:/HessiJames/openSUSE_12.2 for openSUSE 12.2. Or add the KDE:Extra repository (includes a lot more KDE applications). eg.: http://download.opensuse.org/repositories/KDE:/Extra/openSUSE_12.2 for openSUSE 12.2 More information about openSUSE KDE repositories: http://en.opensuse.org/KDE_repositories Ubuntu/Debian Packages are also available at http://download.opensuse.org/repositories/home:/HessiJames The packages in the xUbuntu repositories are suitable for Ubuntu as well as for all its derivatives (like Kubuntu). Quick installation guide: Open the application launcher, start a terminal and enter the following commands (each line is one command, execute them by hitting [enter]): sudo -i wget http://download.opensuse.org/repositories/home:HessiJames/xUbuntu_12.04/Release.key apt-key add - < Release.key rm Release.key echo 'deb http://download.opensuse.org/repositories/home:HessiJames/xUbuntu_12.04/ /' >> /etc/apt/sources.list apt-get update apt-get install soundkonverter Packages for distributions other than openSUSE and Ubuntu are not tested, so please tell me if something is wrong with them. If your distribution is not listed here, you should start an internet search, there might be precompiled packages for your distribution provided by somebody else. But make sure the source is trustworthy of course...! Git repository: =============== For everybody who is interested, there is a git repository at https://github.com/HessiJames/soundkonverter In order to obtain the source code from the git repository you need to install "git" and execute the following commands: initialize local git repository: git clone git://github.com/HessiJames/soundkonverter.git update repository: git pull Reporting bugs - please report every bug you find, that's the only way I can fix it: ==================================================================================== You can either leave a comment at http://kde-apps.org/content/show.php?content=29024 or write me a mail to hessijames@gmail.com but the best way is to create a bug report/ask a question at https://bugs.launchpad.net/soundkonverter Some tips for creating a useful bug report: Include the version number of soundKonverter you are using: Click "Help" in the menu bar and select "About soundKonverter...", a new window will open and the version number will be shown at the top. If you have problems converting a file, please follow these steps: 1. Try to convert the file. 2. Then open the "Log Viewer" by clicking on "Conversion" in the menu bar and selecting "View logs...". The Log Viewer will now open in a new window. 3. By default the Log Viewer will show the log of the soundKonverter application, sending me this log won't hurt. 4. But the more important log is the log for the file you just tried to convert in step 1. To see that log, click on the combo box (drop down box) at the top of the Log Viewer window and select the file. 5. To save a log to a file, click on the "Save to file..." button on the bottom of the Log Viewer. 6. Attach latter or both log files to your bug report. In case soundKonverter crashes and you can't save the conversion log file, you can make soundKonverter write log files directly to the hard drive. (disabled by default for performance reasons.) You can find this option in the advanced tab of the configuration dialog. In case of a crash: After soundKonverter has crashed a new window should appear. It's KDE's crash handler and it has two tabs. Click on the tab "Developer information" and wait a few seconds until the crash has been analyzed. You will see three stars at the top right corner indicating how useful the crash report is. If all three stars are filled your crash report is very useful otherwise it might not help. If you don't have three filled stars you can install some additional developer information. a) If you are running openSUSE you can install soundKonverter via the open build service. It is available at the KDE:Extra and the home:HessiJames repositories. In addition to the soundkonverter package these repositories also contain a soundkonverter-debuginfo package which you have to install. It contains additional developer information. After installing the soundkonverter-debuginfo package you can go back to the crash handler window and click on the "reload" button. All these steps should actually happen automatically after hitting the "install missting debug symbols" button. b) If you have installed soundKonverter from its sources you will have to compile it with debug information enabled. Have a look at the "Installation" section above. After you installed soundKonverter with debug information enabled you will have to close the crash handler window and try to reproduce the crash. c) If you are running an operating system other than openSUSE and have installed soundKonverter via a software repository chances are you can simply click on the "install missing debug symbols" button and the additional developer information get installed automatically. But I haven't tested it. In order to reproduce a crash try doing the exact same thing you did when the crash occurred. If you managed to get a useful crash report you can either directly send it to me by clicking on the "Report problems or wishes" button or even better you can copy the generated information and create a new bug report at https://bugs.launchpad.net/soundkonverter and paste them there. Participating: ============== Translations: If you would like to translate soundKonverter to your native language you can request a new translation at https://www.transifex.net/projects/p/soundkonverter Patches: You can very easily fork the current code with github. You can then work in your forked version and request a pull. Have a look at: https://github.com/HessiJames/soundkonverter ./soundkonverter-2.0.5/PaxHeaders.25599/optionssimple.h0000644000175000001440000000006212105142353021057 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.335421098 ./soundkonverter-2.0.5/optionssimple.h0000755000175000001440000000452612105142353020502 0ustar00danielusers00000000000000 #ifndef OPTIONSSIMPLE_H #define OPTIONSSIMPLE_H // #include "outputdirectory.h" // #include "conversionoptions.h" #include class Config; class OutputDirectory; // class ConversionOptions; // class OptionsDetailed; class KToolBarButton; class KPushButton; class QLabel; class QCheckBox; class KComboBox; class CodecPlugin; /** * @short The options widget for setting up the output options very easy * @author Daniel Faust * @version 0.3 */ class OptionsSimple : public QWidget { Q_OBJECT public: /** Constructor */ OptionsSimple( Config *_config, /*OptionsDetailed*,*/ const QString &text, QWidget* parent=0 ); /** Detructor */ ~OptionsSimple(); void init(); /** Set the current options */ // void setCurrentOptions( const ConversionOptions& ); /** Refills the whole form (e.g. after a config change) */ // void refill(); // TODO syncronize with optionsDetailed // void setCurrentProfile( const QString& profile ); void setCurrentFormat( const QString& format ); void setCurrentOutputDirectory( const QString& directory ); void setCurrentOutputDirectoryMode( int mode ); void setReplayGainEnabled( bool enabled, const QString& toolTip = "" ); void setReplayGainChecked( bool enabled ); // void setBpmChecked( bool enabled ) { return cBpm->setChecked( enabled ); } void setCurrentPlugin( CodecPlugin *plugin ) { currentPlugin = plugin; } QString currentProfile(); QString currentFormat(); bool isReplayGainChecked(); // bool isBpmChecked() { return cBpm->isChecked(); } OutputDirectory *outputDirectory; // this way it's easier to sync simple and detailed options private: KComboBox* cProfile; KPushButton* pProfileRemove; KPushButton* pProfileInfo; KComboBox* cFormat; KPushButton* pFormatInfo; QCheckBox *cReplayGain; // QCheckBox *cBpm; QLabel *lEstimSize; Config *config; CodecPlugin *currentPlugin; public slots: void currentDataRateChanged( int dataRate ); void updateProfiles(); private slots: void showHelp(); void profileInfo(); void profileRemove(); void formatInfo(); void profileChanged(); // void formatChanged(); void outputDirectoryChanged(); void somethingChanged(); signals: void optionsChanged(); void customProfilesEdited(); }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/progressindicator.h0000644000175000001440000000006212105142356021716 xustar000000000000000020 atime=1360315630 30 ctime=1387631578.428419936 ./soundkonverter-2.0.5/progressindicator.h0000755000175000001440000000243312105142356021334 0ustar00danielusers00000000000000 #ifndef PROGRESSINDICATOR_H #define PROGRESSINDICATOR_H #include #include class QProgressBar; class QLabel; class TrailingAverage { public: TrailingAverage(); ~TrailingAverage(); void setCount( int _count ); void addData( float _deltaTime, float _deltaValue ); float average(); private: int count; QList deltaTime; QList deltaValue; }; /** * @short Displays the current progress * @author Daniel Faust * @version 0.3 */ class ProgressIndicator : public QWidget { Q_OBJECT public: enum Feature { FeatureNone = 0, FeatureSpeed = 1, FeatureTime = 2 }; ProgressIndicator( QWidget *parent = 0, Feature features = FeatureNone ); ~ProgressIndicator(); public slots: void timeChanged( float timeDelta ); void timeFinished( float timeDelta ); void finished( bool reset ); void update( float timeProgress ); private: QProgressBar *pBar; QLabel *lSpeed; QLabel *lTime; float totalTime; float processedTime; QTime updateTime; float lastProcessedTime; TrailingAverage timeAverage; TrailingAverage speedAverage; signals: void progressChanged( const QString& progress ); }; #endif // PROGRESSINDICATOR_H ./soundkonverter-2.0.5/PaxHeaders.25599/conversionoptionsmanager.h0000644000175000001440000000006211304233715023311 xustar000000000000000020 atime=1357667506 30 ctime=1387631578.428419936 ./soundkonverter-2.0.5/conversionoptionsmanager.h0000644000175000001440000000211111304233715022715 0ustar00danielusers00000000000000// // C++ Interface: conversionoptionsmanager // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef CONVERSIONOPTIONSMANAGER_H #define CONVERSIONOPTIONSMANAGER_H #include class ConversionOptions; class PluginLoader; /** @author Daniel Faust */ class ConversionOptionsManager { public: struct ConversionOptionsElement { int id; int references; ConversionOptions *conversionOptions; }; ConversionOptionsManager( PluginLoader *_pluginLoader ); ~ConversionOptionsManager(); int addConversionOptions( ConversionOptions *conversionOptions ); int increaseReferences( int id ); ConversionOptions *getConversionOptions( int id ); void removeConversionOptions( int id ); int updateConversionOptions( int id, ConversionOptions *conversionOptions ); QList getAllIds(); private: PluginLoader *pluginLoader; QList elements; int idCounter; }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/codecoptimizations.h0000644000175000001440000000006212105142351022057 xustar000000000000000020 atime=1360315625 30 ctime=1387631578.428419936 ./soundkonverter-2.0.5/codecoptimizations.h0000644000175000001440000000211412105142351021466 0ustar00danielusers00000000000000 #ifndef CODECOPTIMIZATIONS_H #define CODECOPTIMIZATIONS_H #include class QRadioButton; /** * @short Shows a message box with suggestions for optimizing the backend order * @author Daniel Faust * @version 1.0 */ class CodecOptimizations : public KDialog { Q_OBJECT public: struct Optimization { QString codecName; enum Mode { Encode, Decode, ReplayGain } mode; QString currentBackend; QString betterBackend; enum Solution { Fix, Ignore, Undecided } solution; }; /** Default Constructor */ CodecOptimizations( const QList& optimizationList, QWidget *parent=0, Qt::WFlags f=0 ); /** Default Destructor */ ~CodecOptimizations(); private: QList optimizationList; QList solutionFixButtons; private slots: void okClicked(); signals: void solutions( const QList& solutions ); }; #endif // CODECOPTIMIZATIONS_H ./soundkonverter-2.0.5/PaxHeaders.25599/pluginloader.h0000644000175000001440000000006212105142353020637 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.428419936 ./soundkonverter-2.0.5/pluginloader.h0000755000175000001440000001307412105142353020260 0ustar00danielusers00000000000000 // // C++ Interface: pluginloader // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #ifndef PLUGINLOADER_H #define PLUGINLOADER_H #include "core/codecplugin.h" #include "core/filterplugin.h" #include "core/replaygainplugin.h" #include "core/ripperplugin.h" #include #include class Logger; class Config; class QFile; struct ConversionPipe { QList trunks; bool operator==( const ConversionPipe& other ) { if( trunks.count() != other.trunks.count() ) return false; for( int i=0; i */ class PluginLoader { friend class Config; public: PluginLoader( Logger *_logger, Config *_config ); ~PluginLoader(); // enum Possibilities { EncAble, DecAble, EncOrDecAble, ReplayGain }; // TODO make or'ed list // enum CompressionType { Lossy, Lossless, Hybrid, LossyOrLossless, LossyOrLosslessOrHybrid }; // TODO make or'ed list enum Possibilities { Encode = 1, Decode = 2, ReplayGain = 4 }; enum CompressionType { InferiorQuality = 1, Lossy = 2, Lossless = 4, Hybrid = 8 }; void load(); QStringList formatList( Possibilities, CompressionType ); /** returns a list of encoder plugins for the given format (mime type or extension) the first value is the default encoder */ QList encodersForCodec( const QString& codecName ); // QList decodersForCodec( const QString& codecName ); // QList replaygainForCodec( const QString& codecName ); /** returns the codec plugin with the specified name */ BackendPlugin *backendPluginByName( const QString& name ); /** returns a list of possible conversion pipes */ QList getConversionPipes( const QString& codecFrom, const QString& codecTo, QList filterOptions = QList(), const QString& preferredPlugin = "" ); // TODO change name ? /** returns a list of possible replay gain pipes for the codec */ QList getReplayGainPipes( const QString& codecName, const QString& preferredPlugin = "" ); //** returns a list of possible rippers */ // QList getRipperInfos( bool mustRipEntireCd = false, const QString& preferredPlugin = "" ); QString getCodecFromM4aFile( QFile *file ); QString getCodecFromFile( const KUrl& filename, QString *mimeType = 0, bool checkM4a = true ); bool canDecode( const QString& codecName, QStringList *errorList = 0 ); bool canReplayGain( const QString& codecName, CodecPlugin *plugin, QStringList *errorList = 0 ); bool canRipEntireCd( QStringList *errorList = 0 ); QMap decodeProblems( bool detailed = false ); QMap encodeProblems( bool detailed = false ); QMap replaygainProblems( bool detailed = false ); QString pluginDecodeProblems( const QString& pluginName, const QString& codecName ); QString pluginEncodeProblems( const QString& pluginName, const QString& codecName ); QString pluginReplayGainProblems( const QString& pluginName, const QString& codecName ); bool isCodecLossless( const QString& codecName ); bool isCodecInferiorQuality( const QString& codecName ); bool isCodecHybrid( const QString& codecName ); bool hasCodecInternalReplayGain( const QString& codecName ); QStringList codecExtensions( const QString& codecName ); QStringList codecMimeTypes( const QString& codecName ); QString codecDescription( const QString& codecName ); /** returns a list of all plugins e.g. for connecting their signals */ QList getAllCodecPlugins() { return codecPlugins; } /** returns a list of all plugins e.g. for connecting their signals */ QList getAllFilterPlugins() { return filterPlugins; } /** returns a list of all plugins e.g. for connecting their signals */ QList getAllReplayGainPlugins() { return replaygainPlugins; } /** returns a list of all plugins e.g. for connecting their signals */ QList getAllRipperPlugins() { return ripperPlugins; } private: Logger *logger; Config *config; // for determining the codec of an m4a file QStringList atomPath; // void addCodecItem( ConversionPipeTrunk trunk ); // void addReplayGainItem( ReplayGainPipe pipe ); void addFormatInfo( const QString& codecName, BackendPlugin *plugin ); /** holds all known codec plugins */ QList codecPlugins; /** holds all known filter plugins */ QList filterPlugins; /** holds all known replay gain plugins */ QList replaygainPlugins; /** holds all known ripper plugins */ QList ripperPlugins; /** holds all known conversion pipe trunks */ QList conversionPipeTrunks; /** holds all known filter items */ QList filterPipeTrunks; /** holds all known conversion pipe trunks and filter items */ QList conversionFilterPipeTrunks; /** holds all known replay gain items */ QList replaygainPipes; /** holds all known format infos */ QList formatInfos; }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/INSTALL0000644000175000001440000000006211616031237017036 xustar000000000000000020 atime=1357667506 30 ctime=1387631578.428419936 ./soundkonverter-2.0.5/INSTALL0000644000175000001440000000056511616031237016455 0ustar00danielusers00000000000000 Please have a look at CMakeLists.txt first and ensure the paths to the TagLib and cdrapanoia include dirs and libs are set properly. (You'll need the TagLib and cdparanoia devel packages.) mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=`kde-config --prefix` .. make sudo make install (make install DESTDIR=$HOME/tempdir makes a test installation into $HOME/tempdir) ./soundkonverter-2.0.5/PaxHeaders.25599/logger.h0000644000175000001440000000006212105142352017430 xustar000000000000000020 atime=1360315626 30 ctime=1387631578.428419936 ./soundkonverter-2.0.5/logger.h0000644000175000001440000000323212105142352017041 0ustar00danielusers00000000000000 #ifndef LOGGER_H #define LOGGER_H #include #include #include #include #include /** * @short An item for every process that is logged * @author Daniel Faust */ class LoggerItem { public: LoggerItem(); ~LoggerItem(); QString identifier; int id; QStringList data; bool completed; bool succeeded; QTime time; QFile file; QTextStream textStream; }; /** * @short All data about the processes are collected here * @author Daniel Faust */ class Logger : public QObject { Q_OBJECT public: Logger( QObject *parent ); ~Logger(); /** Creates a new logger item and returns the id of it, @p filename is added to the new logger item */ int registerProcess( const QString& identifier ); /** Adds the string @p data to the data of the logger item with id @p id */ void log( int id, const QString& data ); /** Returns a list of all logger item titles + ids */ // QList getLogOverview(); /** Returns the logger item with id @p id */ LoggerItem* getLog( int id ); /** Returns a list of all logger items */ QList getLogs(); private: /** the list of all logger items */ QList processes; bool writeLogFiles; /** returns an unused random id */ int getNewID(); public slots: void processCompleted( int id, bool succeeded, bool waitingForAlbumGain = false ); // connected to config void updateWriteSetting( bool _writeLogFiles ); signals: void removedProcess( int id ); void updateProcess( int id ); }; #endif // LOGGER_H ./soundkonverter-2.0.5/PaxHeaders.25599/global.h0000644000175000001440000000013212255311652017416 xustar000000000000000030 mtime=1387631530.344021073 30 atime=1387631530.344021073 30 ctime=1387631578.428419936 ./soundkonverter-2.0.5/global.h0000644000175000001440000000101512255311652017026 0ustar00danielusers00000000000000// // C++ Interface: global // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #ifndef GLOBAL_H #define GLOBAL_H #include #define SOUNDKONVERTER_VERSION_NUMBER 1005 #define SOUNDKONVERTER_VERSION_STRING "2.0.5" /** @author Daniel Faust */ class Global { public: Global(); ~Global(); static QString prettyNumber( double num, QString unit, short digits = 3 ); }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/convert.cpp0000644000175000001440000000006212106405146020170 xustar000000000000000020 atime=1360661094 30 ctime=1387631578.429419923 ./soundkonverter-2.0.5/convert.cpp0000644000175000001440000014224212106405146017606 0ustar00danielusers00000000000000 #include "convert.h" #include "convertitem.h" #include "config.h" #include "core/codecplugin.h" #include "core/conversionoptions.h" #include "filelist.h" #include "global.h" #include "logger.h" #include "outputdirectory.h" #include #include #include #include #include #include Convert::Convert( Config *_config, FileList *_fileList, Logger *_logger, QObject *parent ) : QObject( parent ), config( _config ), fileList( _fileList ), logger( _logger ) { connect( &updateTimer, SIGNAL(timeout()), this, SLOT(updateProgress()) ); QList codecPlugins = config->pluginLoader()->getAllCodecPlugins(); for( int i=0; i filterPlugins = config->pluginLoader()->getAllFilterPlugins(); for( int i=0; i replaygainPlugins = config->pluginLoader()->getAllReplayGainPlugins(); for( int i=0; i ripperPlugins = config->pluginLoader()->getAllRipperPlugins(); for( int i=0; itake > 0 ) remove( item, FileListItem::Failed ); logger->log( item->logID, i18n("Getting file") ); item->state = ConvertItem::get; item->tempInputUrl = item->generateTempUrl( "download", item->inputUrl.fileName().mid(item->inputUrl.fileName().lastIndexOf(".")+1) ); if( !updateTimer.isActive() ) updateTimer.start( ConfigUpdateDelay ); logger->log( item->logID, i18n("Copying \"%1\" to \"%2\"",item->inputUrl.pathOrUrl(),item->tempInputUrl.toLocalFile()) ); item->kioCopyJob = KIO::file_copy( item->inputUrl, item->tempInputUrl, 0700 , KIO::HideProgressInfo ); connect( item->kioCopyJob.data(), SIGNAL(result(KJob*)), this, SLOT(kioJobFinished(KJob*)) ); connect( item->kioCopyJob.data(), SIGNAL(percent(KJob*,unsigned long)), this, SLOT(kioJobProgress(KJob*,unsigned long)) ); } void Convert::convert( ConvertItem *item ) { if( !item ) return; ConversionOptions *conversionOptions = config->conversionOptionsManager()->getConversionOptions( item->fileListItem->conversionOptionsId ); if( !conversionOptions ) return; KUrl inputUrl; if( !item->tempInputUrl.toLocalFile().isEmpty() ) inputUrl = item->tempInputUrl; else inputUrl = item->inputUrl; if( !item->fileListItem->tags ) item->fileListItem->tags = config->tagEngine()->readTags( inputUrl ); if( item->outputUrl.isEmpty() ) { // item->outputUrl = !item->fileListItem->outputUrl.url().isEmpty() ? item->fileListItem->outputUrl : OutputDirectory::calcPath( item->fileListItem, config, usedOutputNames.values() ); item->outputUrl = OutputDirectory::calcPath( item->fileListItem, config, usedOutputNames.values() ); if( QFile::exists(item->outputUrl.toLocalFile()) ) { logger->log( item->logID, "\tOutput file already exists" ); item->outputUrl = KUrl(); remove( item, FileListItem::Skipped ); return; } OutputDirectory::makePath( item->outputUrl ); fileList->updateItem( item->fileListItem ); } usedOutputNames.insert( item->logID, item->outputUrl.toLocalFile() ); if( item->take > item->conversionPipes.count() - 1 ) { logger->log( item->logID, "\t" + i18n("No more backends left to try :(") ); remove( item, FileListItem::Failed ); return; } if( item->take > 0 ) item->updateTimes(); item->conversionPipesStep = -1; if( !updateTimer.isActive() ) updateTimer.start( ConfigUpdateDelay ); if( item->conversionPipes.at(item->take).trunks.count() == 1 ) // conversion can be done by one plugin alone { logger->log( item->logID, i18n("Converting") ); item->state = ConvertItem::convert; item->conversionPipesStep = 0; item->backendPlugin = item->conversionPipes.at(item->take).trunks.at(0).plugin; if( item->backendPlugin->type() == "codec" || item->backendPlugin->type() == "filter" ) { bool useInternalReplayGain = false; if( item->conversionPipes.at(item->take).trunks.at(0).data.hasInternalReplayGain && item->mode & ConvertItem::replaygain ) { foreach( Config::CodecData codecData, config->data.backends.codecs ) { if( codecData.codecName == item->conversionPipes.at(item->take).trunks.at(0).codecTo ) { if( codecData.replaygain.first() == i18n("Try internal") ) useInternalReplayGain = true; break; } } } if( useInternalReplayGain ) { item->internalReplayGainUsed = true; } item->backendID = qobject_cast(item->backendPlugin)->convert( inputUrl, item->outputUrl, item->conversionPipes.at(item->take).trunks.at(0).codecFrom, item->conversionPipes.at(item->take).trunks.at(0).codecTo, conversionOptions, item->fileListItem->tags, useInternalReplayGain ); } else if( item->backendPlugin->type() == "ripper" ) { item->backendID = qobject_cast(item->backendPlugin)->rip( item->fileListItem->device, item->fileListItem->track, item->fileListItem->tracks, item->outputUrl ); } if( item->backendID < 100 ) { switch( item->backendID ) { case BackendPlugin::BackendNeedsConfiguration: { logger->log( item->logID, "\t" + i18n("Conversion failed. At least one of the used backends needs to be configured properly.") ); remove( item, FileListItem::BackendNeedsConfiguration ); break; } case BackendPlugin::FeatureNotSupported: { logger->log( item->logID, "\t" + i18n("Conversion failed. The preferred plugin lacks support for a necessary feature.") ); executeSameStep( item ); break; } case BackendPlugin::UnknownError: { logger->log( item->logID, "\t" + i18n("Conversion failed. Unknown Error.") ); executeSameStep( item ); break; } } } else if( item->backendPlugin->type() == "ripper" ) { item->fileListItem->state = FileListItem::Ripping; } } else // conversion needs two plugins or more { bool usePipes = false; bool useInternalReplayGain = false; QStringList commandList; if( config->data.advanced.usePipes ) { usePipes = true; const int stepCount = item->conversionPipes.at(item->take).trunks.count() - 1; int step = 0; foreach( const ConversionPipeTrunk trunk, item->conversionPipes.at(item->take).trunks ) { BackendPlugin *plugin = trunk.plugin; QStringList command; const KUrl inUrl = ( step == 0 ) ? inputUrl : KUrl(); const KUrl outUrl = ( step == stepCount ) ? item->outputUrl : KUrl(); if( plugin->type() == "codec" || plugin->type() == "filter" ) { if( step == stepCount && trunk.data.hasInternalReplayGain && item->mode & ConvertItem::replaygain ) { foreach( Config::CodecData codecData, config->data.backends.codecs ) { if( codecData.codecName == trunk.codecTo ) { if( codecData.replaygain.first() == i18n("Try internal") ) useInternalReplayGain = true; break; } } } command = qobject_cast(plugin)->convertCommand( inUrl, outUrl, item->conversionPipes.at(item->take).trunks.at(step).codecFrom, item->conversionPipes.at(item->take).trunks.at(step).codecTo, conversionOptions, item->fileListItem->tags, useInternalReplayGain ); } else if( plugin->type() == "ripper" ) { command = qobject_cast(plugin)->ripCommand( item->fileListItem->device, item->fileListItem->track, item->fileListItem->tracks, outUrl ); } if( command.isEmpty() ) { usePipes = false; break; } commandList.append( command.join(" ") ); step++; } } if( usePipes ) { // both plugins support pipes const QString command = commandList.join(" | "); if( useInternalReplayGain ) item->internalReplayGainUsed = true; logger->log( item->logID, i18n("Converting") ); item->state = ConvertItem::convert; // merge all conversion times into one since we are doing everything in one step float time = 0.0f; foreach( float t, item->convertTimes ) { time += t; } item->convertTimes.clear(); item->convertTimes.append( time ); item->conversionPipesStep = 0; logger->log( item->logID, "
\t" + command + "
" ); item->process = new KProcess(); item->process.data()->setOutputChannelMode( KProcess::MergedChannels ); connect( item->process.data(), SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( item->process.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); item->process.data()->clearProgram(); item->process.data()->setShellCommand( command ); item->process.data()->start(); } else { // at least on plugins doesn't support pipes // estimated size of the wav file int estimatedFileSize = 0; if( item->conversionPipes.at(item->take).trunks.first().plugin->type() == "ripper" && item->fileListItem->tags ) { estimatedFileSize = item->fileListItem->tags->length * 44100*16*2/8/1024/1024; } else { QFileInfo fileInfo( inputUrl.toLocalFile() ); estimatedFileSize = fileInfo.size(); if( config->pluginLoader()->isCodecLossless(item->fileListItem->codecName) ) { estimatedFileSize *= 1.4; } else if( item->fileListItem->codecName == "midi" || item->fileListItem->codecName == "mod" ) { estimatedFileSize *= 1000; } else { estimatedFileSize *= 10; } estimatedFileSize /= 1024*1024; } const bool useSharedMemory = config->data.advanced.useSharedMemoryForTempFiles && estimatedFileSize > 0 && estimatedFileSize < config->data.advanced.maxSizeForSharedMemoryTempFiles; for( int i=0; iconversionPipes.at(item->take).trunks.count()-1; i++ ) { item->tempConvertUrls += item->generateTempUrl( "convert", config->pluginLoader()->codecExtensions(item->conversionPipes.at(item->take).trunks.at(i).codecTo).first(), useSharedMemory ); } convertNextBackend( item ); } } } void Convert::convertNextBackend( ConvertItem *item ) { if( !item ) return; ConversionOptions *conversionOptions = config->conversionOptionsManager()->getConversionOptions( item->fileListItem->conversionOptionsId ); if( !conversionOptions ) return; const int stepCount = item->conversionPipes.at(item->take).trunks.count() - 1; const int step = ++item->conversionPipesStep; if( step > stepCount ) { executeNextStep( item ); } BackendPlugin *plugin = item->conversionPipes.at(item->take).trunks.at(step).plugin; if( !plugin ) return; KUrl inputUrl; if( !item->tempInputUrl.toLocalFile().isEmpty() ) inputUrl = item->tempInputUrl; else inputUrl = item->inputUrl; const KUrl inUrl = ( step == 0 ) ? inputUrl : item->tempConvertUrls.at(step - 1); const KUrl outUrl = ( step == stepCount ) ? item->outputUrl : item->tempConvertUrls.at(step); if( step == 0 ) { if( plugin->type() == "ripper" ) { item->state = ConvertItem::rip; logger->log( item->logID, i18n("Ripping") ); } else if( plugin->type() == "codec" || ( plugin->type() == "filter" && item->conversionPipes.at(item->take).trunks.at(step).codecFrom != "wav" ) ) { item->state = ConvertItem::decode; logger->log( item->logID, i18n("Decoding") ); } else if( plugin->type() == "filter" ) { item->state = ConvertItem::filter; logger->log( item->logID, i18n("Applying filter") ); } } else if( step == stepCount ) { if( plugin->type() == "codec" || ( plugin->type() == "filter" && item->conversionPipes.at(item->take).trunks.at(step).codecTo != "wav" ) ) { item->state = ConvertItem::encode; logger->log( item->logID, i18n("Encoding") ); } else if( plugin->type() == "filter" ) { item->state = ConvertItem::filter; logger->log( item->logID, i18n("Applying filter") ); } } else { item->state = ConvertItem::filter; logger->log( item->logID, i18n("Applying filter") ); } item->backendPlugin = plugin; if( plugin->type() == "codec" || plugin->type() == "filter" ) { bool useInternalReplayGain = false; if( step == stepCount && item->conversionPipes.at(item->take).trunks.at(step).data.hasInternalReplayGain && item->mode & ConvertItem::replaygain ) { foreach( Config::CodecData codecData, config->data.backends.codecs ) { if( codecData.codecName == item->conversionPipes.at(item->take).trunks.at(step).codecTo ) { if( codecData.replaygain.first() == i18n("Try internal") ) useInternalReplayGain = true; break; } } } if( useInternalReplayGain ) { item->internalReplayGainUsed = true; } item->backendID = qobject_cast(plugin)->convert( inUrl, outUrl, item->conversionPipes.at(item->take).trunks.at(step).codecFrom, item->conversionPipes.at(item->take).trunks.at(step).codecTo, conversionOptions, item->fileListItem->tags, useInternalReplayGain ); } else if( plugin->type() == "ripper" ) { item->backendID = qobject_cast(plugin)->rip( item->fileListItem->device, item->fileListItem->track, item->fileListItem->tracks, outUrl ); } if( item->backendID < 100 ) { switch( item->backendID ) { case BackendPlugin::BackendNeedsConfiguration: { logger->log( item->logID, "\t" + i18n("Conversion failed. At least one of the used backends needs to be configured properly.") ); remove( item, FileListItem::BackendNeedsConfiguration ); break; } case BackendPlugin::FeatureNotSupported: { logger->log( item->logID, "\t" + i18n("Conversion failed. The preferred plugin lacks support for a necessary feature.") ); executeSameStep( item ); break; } case BackendPlugin::UnknownError: { logger->log( item->logID, "\t" + i18n("Conversion failed. Unknown Error.") ); executeSameStep( item ); break; } } } else if( item->backendPlugin->type() == "ripper" ) { item->fileListItem->state = FileListItem::Ripping; } } void Convert::replaygain( ConvertItem *item ) { if( !item ) return; const QString albumName = item->fileListItem->tags ? item->fileListItem->tags->album : ""; if( fileList->waitForAlbumGain(item->fileListItem) ) { logger->log( item->logID, i18n("Skipping Replay Gain, Album Gain will be calculated later") ); albumGainItems[albumName].append( item ); item->state = ConvertItem::replaygain; executeNextStep( item ); return; } QList albumItems; if( !albumName.isEmpty() ) albumItems = albumGainItems[albumName]; albumItems.append( item ); logger->log( item->logID, i18n("Applying Replay Gain") ); if( item->take > item->replaygainPipes.count() - 1 ) { logger->log( item->logID, "\t" + i18n("No more backends left to try :(") ); remove( item, FileListItem::Failed ); return; } item->state = ConvertItem::replaygain; item->backendPlugin = item->replaygainPipes.at(item->take).plugin; KUrl::List urlList; foreach( ConvertItem *albumItem, albumItems ) { urlList.append( albumItem->outputUrl ); if( albumItem != item ) { albumItem->fileListItem->state = FileListItem::ApplyingAlbumGain; fileList->updateItem( albumItem->fileListItem ); } } item->backendID = qobject_cast(item->backendPlugin)->apply( urlList ); if( item->backendID < 100 ) { switch( item->backendID ) { case BackendPlugin::BackendNeedsConfiguration: { logger->log( item->logID, "\t" + i18n("Conversion failed. At least one of the used backends needs to be configured properly.") ); remove( item, FileListItem::BackendNeedsConfiguration ); break; } case BackendPlugin::FeatureNotSupported: { logger->log( item->logID, "\t" + i18n("Conversion failed. The preferred plugin lacks support for a necessary feature.") ); executeSameStep( item ); break; } case BackendPlugin::UnknownError: { logger->log( item->logID, "\t" + i18n("Conversion failed. Unknown Error.") ); executeSameStep( item ); break; } } } if( !updateTimer.isActive() ) updateTimer.start( ConfigUpdateDelay ); } void Convert::writeTags( ConvertItem *item ) { if( !item || !item->fileListItem || !item->fileListItem->tags ) return; logger->log( item->logID, i18n("Writing tags") ); // item->state = ConvertItem::write_tags; // item->fileListItem->setText( 0, i18n("Writing tags")+"... 00 %" ); config->tagEngine()->writeTags( item->outputUrl, item->fileListItem->tags ); KUrl inputUrl; if( !item->tempInputUrl.toLocalFile().isEmpty() ) inputUrl = item->tempInputUrl; else inputUrl = item->inputUrl; if( !(item->fileListItem->tags->tagsRead & TagData::Covers) ) { item->fileListItem->tags->covers = config->tagEngine()->readCovers( inputUrl ); item->fileListItem->tags->tagsRead = TagData::TagsRead(item->fileListItem->tags->tagsRead | TagData::Covers); } const bool success = config->tagEngine()->writeCovers( item->outputUrl, item->fileListItem->tags->covers ); if( config->data.coverArt.writeCovers == 0 || ( config->data.coverArt.writeCovers == 1 && !success ) ) { config->tagEngine()->writeCoversToDirectory( item->outputUrl.directory(), item->fileListItem->tags ); } } void Convert::executeUserScript( ConvertItem *item ) { logger->log( item->logID, i18n("Running user script") ); item->state = ConvertItem::execute_userscript; // KUrl source( item->fileListItem->options.filePathName ); // KUrl destination( item->outputFilePathName ); // // item->fileListItem->setText( 0, i18n("Running user script")+"... 00 %" ); // // item->convertProcess->clearProgram(); // // QString userscript = locate( "data", "soundkonverter/userscript.sh" ); // if( userscript == "" ) executeNextStep( item ); // // *(item->convertProcess) << userscript; // *(item->convertProcess) << source.path(); // *(item->convertProcess) << destination.path(); // // logger->log( item->logID, userscript + " \"" + source.path() + "\" \"" + destination.path() + "\"" ); // // /* item->convertProcess->setPriority( config->data.general.priority ); // // item->convertProcess->start( KProcess::NotifyOnExit, KProcess::AllOutput );*/ } void Convert::executeNextStep( ConvertItem *item ) { logger->log( item->logID, "
" + i18n("Executing next step") ); item->lastTake = item->take; item->take = 0; item->progress = 0.0f; switch( item->state ) { case ConvertItem::get: { if( item->mode & ConvertItem::convert ) convert( item ); else remove( item, FileListItem::Succeeded ); break; } case ConvertItem::convert: case ConvertItem::encode: { if( item->mode & ConvertItem::replaygain ) replaygain( item ); else remove( item, FileListItem::Succeeded ); break; } case ConvertItem::rip: case ConvertItem::decode: case ConvertItem::filter: { item->take = item->lastTake; convertNextBackend( item ); break; } case ConvertItem::replaygain: { remove( item, FileListItem::Succeeded ); break; } default: { if( item->mode & ConvertItem::get ) get( item ); else if( item->mode & ConvertItem::convert ) convert( item ); else if( item->mode & ConvertItem::replaygain ) replaygain( item ); else remove( item, FileListItem::Succeeded ); break; } } } void Convert::executeSameStep( ConvertItem *item ) { item->take++; item->updateTimes(); item->progress = 0.0f; if( item->internalReplayGainUsed ) { item->mode = ConvertItem::Mode( item->mode | ConvertItem::replaygain ); item->internalReplayGainUsed = false; } switch( item->state ) { case ConvertItem::get: { get( item ); return; } case ConvertItem::rip: case ConvertItem::convert: case ConvertItem::decode: case ConvertItem::filter: case ConvertItem::encode: { // remove temp/failed files foreach( const KUrl url, item->tempConvertUrls ) { if( QFile::exists(url.toLocalFile()) ) { QFile::remove( url.toLocalFile() ); } } if( QFile::exists(item->outputUrl.toLocalFile()) ) { QFile::remove( item->outputUrl.toLocalFile() ); } convert( item ); return; } case ConvertItem::replaygain: { replaygain( item ); return; } default: break; } remove( item, FileListItem::Failed ); // shouldn't be possible } void Convert::kioJobProgress( KJob *job, unsigned long percent ) { // search the item list for our item foreach( ConvertItem *item, items ) { if( item->kioCopyJob.data() == job ) { item->progress = (float)percent; } } } void Convert::kioJobFinished( KJob *job ) { // search the item list for our item foreach( ConvertItem *item, items ) { if( item->kioCopyJob.data() == job ) { item->kioCopyJob.data()->deleteLater(); if( job->error() == 0 ) // copy was successful { float fileTime; switch( item->state ) { case ConvertItem::get: fileTime = item->getTime; break; default: fileTime = 0.0f; } if( item->state == ConvertItem::get ) { if( !item->fileListItem->tags ) { item->fileListItem->tags = config->tagEngine()->readTags( item->tempInputUrl ); if( item->fileListItem->tags ) { logger->log( item->logID, i18n("Read tags successfully") ); } else { logger->log( item->logID, i18n("Unable to read tags") ); } } } item->finishedTime += fileTime; executeNextStep( item ); } else { // remove temp/failed files if( QFile::exists(item->tempInputUrl.toLocalFile()) ) { QFile::remove(item->tempInputUrl.toLocalFile()); logger->log( item->logID, i18nc("removing file","Removing: %1",item->tempInputUrl.toLocalFile()) ); } if( QFile::exists(item->tempInputUrl.toLocalFile()+".part") ) { QFile::remove(item->tempInputUrl.toLocalFile()+".part"); logger->log( item->logID, i18nc("removing file","Removing: %1",item->tempInputUrl.toLocalFile()+".part") ); } if( job->error() == 1 ) { remove( item, FileListItem::StoppedByUser ); } else { logger->log( item->logID, i18n("An error occurred. Error code: %1 (%2)",job->error(),job->errorString()) ); remove( item, FileListItem::Failed ); } } } } } void Convert::processOutput() { foreach( ConvertItem *item, items ) { if( item->process.data() == QObject::sender() ) { const QString output = item->process.data()->readAllStandardOutput().data(); bool logOutput = true; foreach( const ConversionPipeTrunk trunk, item->conversionPipes.at(item->take).trunks ) { const float progress = trunk.plugin->parseOutput( output ); if( progress > item->progress ) { item->progress = progress; logOutput = false; } } if( logOutput && !output.simplified().isEmpty() ) logger->log( item->logID, "
\t" + output.trimmed().replace("\n","
\t") + "
" ); break; } } } void Convert::processExit( int exitCode, QProcess::ExitStatus exitStatus ) { Q_UNUSED(exitStatus) if( QObject::sender() == 0 ) { logger->log( 1000, QString("Error: processExit was called from a null sender. Exit code: %1").arg(exitCode) ); KMessageBox::error( 0, QString("Error: processExit was called from a null sender. Exit code: %1").arg(exitCode) ); return; } // search the item list for our item foreach( ConvertItem *item, items ) { if( item->process.data() == QObject::sender() ) { item->process.data()->deleteLater(); // NOTE crash discovered here - probably fixed by using deleteLater if( item->killed ) { remove( item, FileListItem::StoppedByUser ); return; } if( exitCode == 0 ) { float fileTime; switch( item->state ) { case ConvertItem::convert: case ConvertItem::rip: case ConvertItem::decode: case ConvertItem::filter: case ConvertItem::encode: fileTime = item->convertTimes.at(item->conversionPipesStep); break; case ConvertItem::replaygain: fileTime = item->replaygainTime; break; default: fileTime = 0.0f; } item->finishedTime += fileTime; if( item->state == ConvertItem::rip ) { item->fileListItem->state = FileListItem::Converting; emit rippingFinished( item->fileListItem->device ); } if( item->internalReplayGainUsed ) { item->mode = ConvertItem::Mode( item->mode ^ ConvertItem::replaygain ); } switch( item->state ) { case ConvertItem::rip: case ConvertItem::decode: case ConvertItem::filter: convertNextBackend( item ); break; default: executeNextStep( item ); } } else { logger->log( item->logID, "\t" + i18n("Conversion failed. Exit code: %1",exitCode) ); executeSameStep( item ); } } } } void Convert::pluginProcessFinished( int id, int exitCode ) { if( QObject::sender() == 0 ) { logger->log( 1000, QString("Error: pluginProcessFinished was called from a null sender. Exit code: %1").arg(exitCode) ); KMessageBox::error( 0, QString("Error: pluginProcessFinished was called from a null sender. Exit code: %1").arg(exitCode) ); return; } foreach( ConvertItem *item, items ) { if( item->backendPlugin && item->backendPlugin == QObject::sender() && item->backendID == id ) { item->backendID = -1; if( item->killed ) { remove( item, FileListItem::StoppedByUser ); return; } if( exitCode == 0 ) { float fileTime; switch( item->state ) { case ConvertItem::convert: case ConvertItem::rip: case ConvertItem::decode: case ConvertItem::filter: case ConvertItem::encode: fileTime = item->convertTimes.at(item->conversionPipesStep); break; case ConvertItem::replaygain: fileTime = item->replaygainTime; break; default: fileTime = 0.0f; } item->finishedTime += fileTime; if( item->state == ConvertItem::rip ) { item->fileListItem->state = FileListItem::Converting; emit rippingFinished( item->fileListItem->device ); } if( item->internalReplayGainUsed ) { item->mode = ConvertItem::Mode( item->mode ^ ConvertItem::replaygain ); } executeNextStep( item ); } else { logger->log( item->logID, "\t" + i18n("Conversion failed. Exit code: %1",exitCode) ); executeSameStep( item ); } } } } void Convert::pluginLog( int id, const QString& message ) { // log all cached logs that can be logged now for( int i=0; ibackendPlugin && items.at(j)->backendPlugin == pluginLogQueue.at(i).plugin && items.at(j)->backendID == pluginLogQueue.at(i).id ) { for( int k=0; klog( items.at(j)->logID, pluginLogQueue.at(i).messages.at(k) ); } pluginLogQueue.removeAt(i); i--; break; } } } if( message.trimmed().isEmpty() ) return; // search the matching process for( int i=0; ibackendPlugin && items.at(i)->backendPlugin == QObject::sender() && items.at(i)->backendID == id ) { logger->log( items.at(i)->logID, message ); return; } } // if the process can't be found; add to the log queue for( int i=0; i(QObject::sender()); newLog.id = id; newLog.messages = QStringList(message); pluginLogQueue += newLog; // logger->log( 1000, qobject_cast(QObject::sender())->name() + ": " + message.trimmed().replace("\n","\n\t") ); } void Convert::add( FileListItem *fileListItem ) { KUrl fileName; if( fileListItem->track >= 0 ) { if( fileListItem->tags ) { fileName = KUrl( i18nc("identificator for the logger","CD track %1: %2 - %3",QString().sprintf("%02i",fileListItem->tags->track),fileListItem->tags->artist,fileListItem->tags->title) ); } else // shouldn't be possible { fileName = KUrl( i18nc("identificator for the logger","CD track %1",fileListItem->track) ); } } else { fileName = fileListItem->url; } logger->log( 1000, i18n("Adding new item to conversion list: '%1'",fileName.pathOrUrl()) ); ConvertItem *newItem = new ConvertItem( fileListItem ); items.append( newItem ); // register at the logger newItem->logID = logger->registerProcess( fileName.pathOrUrl() ); logger->log( 1000, "\t" + i18n("Got log ID: %1",QString::number(newItem->logID)) ); // TODO remove redundancy, logID is needed in the fileListItem newItem->fileListItem->logId = newItem->logID; // logger->log( newItem->logID, "Mime Type: " + newItem->fileListItem->mimeType ); // if( newItem->fileListItem->tags ) logger->log( newItem->logID, i18n("Tags successfully read") ); // else logger->log( newItem->logID, i18n("Reading tags failed") ); // set some variables to default values newItem->mode = (ConvertItem::Mode)0x0000; newItem->state = (ConvertItem::Mode)0x0000; newItem->inputUrl = fileListItem->url; ConversionOptions *conversionOptions = config->conversionOptionsManager()->getConversionOptions(fileListItem->conversionOptionsId); if( !conversionOptions ) { logger->log( 1000, "Convert::add(...) no ConversionOptions found" ); remove( newItem, FileListItem::Failed ); return; } if( fileListItem->track >= 0 ) { logger->log( newItem->logID, "\t" + i18n("Track number: %1, device: %2",QString::number(fileListItem->track),fileListItem->device) ); } newItem->conversionPipes = config->pluginLoader()->getConversionPipes( fileListItem->codecName, conversionOptions->codecName, conversionOptions->filterOptions, conversionOptions->pluginName ); logger->log( newItem->logID, "\t" + i18n("Possible conversion strategies:") ); for( int i=0; iconversionPipes.size(); i++ ) { QStringList pipe_str; for( int j=0; jconversionPipes.at(i).trunks.size(); j++ ) { pipe_str += QString("%1 %2 %3 (%4)").arg(newItem->conversionPipes.at(i).trunks.at(j).codecFrom).arg(QChar(10141)).arg(newItem->conversionPipes.at(i).trunks.at(j).codecTo).arg(newItem->conversionPipes.at(i).trunks.at(j).plugin->name()); } logger->log( newItem->logID, "\t\t" + pipe_str.join(", ") ); } if( conversionOptions->outputDirectoryMode != OutputDirectory::Source ) logger->log( newItem->logID, i18n("File system type: %1",conversionOptions->outputFilesystem) ); newItem->mode = ConvertItem::Mode( newItem->mode | ConvertItem::convert ); if( conversionOptions->replaygain ) { newItem->replaygainPipes = config->pluginLoader()->getReplayGainPipes( conversionOptions->codecName ); newItem->mode = ConvertItem::Mode( newItem->mode | ConvertItem::replaygain ); } if( !newItem->inputUrl.isLocalFile() && fileListItem->track == -1 ) newItem->mode = ConvertItem::Mode( newItem->mode | ConvertItem::get ); // if( (!newItem->inputUrl.isLocalFile() && item->track == -1) || newItem->inputUrl.url().toAscii() != newItem->inputUrl.url() ) // newItem->mode = ConvertItem::Mode( newItem->mode | ConvertItem::get ); newItem->updateTimes(); // (visual) feedback fileListItem->state = FileListItem::Converting; newItem->progressedTime.start(); // and start executeNextStep( newItem ); } void Convert::remove( ConvertItem *item, FileListItem::ReturnCode returnCode ) { // TODO "remove" (re-add) the times to the progress indicator //emit uncountTime( item->getTime + item->getCorrectionTime + item->ripTime + // item->decodeTime + item->encodeTime + item->replaygainTime ); QString exitMessage; bool waitForAlbumGain = false; const QString albumName = item->fileListItem->tags ? item->fileListItem->tags->album : ""; if( !albumName.isEmpty() ) waitForAlbumGain = albumGainItems[albumName].contains( item ); QFileInfo outputFileInfo( item->outputUrl.toLocalFile() ); float fileRatio = outputFileInfo.size(); if( item->fileListItem->track > 0 ) { fileRatio /= item->fileListItem->length*4*44100; } else if( !item->fileListItem->local ) { QFileInfo inputFileInfo( item->tempInputUrl.toLocalFile() ); fileRatio /= inputFileInfo.size(); } else { QFileInfo inputFileInfo( item->inputUrl.toLocalFile() ); fileRatio /= inputFileInfo.size(); } ConversionOptions *conversionOptions = config->conversionOptionsManager()->getConversionOptions( item->fileListItem->conversionOptionsId ); if( fileRatio < 0.01 && outputFileInfo.size() < 100000 && returnCode != FileListItem::StoppedByUser && ( !conversionOptions || !config->pluginLoader()->isCodecInferiorQuality(conversionOptions->codecName) ) ) { exitMessage = i18n("An error occurred, the output file size is less than one percent of the input file size"); if( returnCode == FileListItem::Succeeded || returnCode == FileListItem::SucceededWithProblems ) { logger->log( item->logID, i18n("Conversion failed, trying again. Exit code: -2 (%1)",exitMessage) ); item->take = item->lastTake; logger->log( item->logID, i18n("Removing partially converted output file") ); QFile::remove( item->outputUrl.toLocalFile() ); executeSameStep( item ); return; } } if( returnCode == FileListItem::Succeeded && item->lastTake > 0 ) returnCode = FileListItem::SucceededWithProblems; switch( returnCode ) { case FileListItem::Succeeded: exitMessage = i18nc("Conversion exit status","Normal exit"); break; case FileListItem::SucceededWithProblems: exitMessage = i18nc("Conversion exit status","Succeeded but problems occurred"); break; case FileListItem::StoppedByUser: exitMessage = i18nc("Conversion exit status","Aborted by the user"); break; case FileListItem::BackendNeedsConfiguration: exitMessage = i18nc("Conversion exit status","Backend needs configuration"); break; case FileListItem::DiscFull: exitMessage = i18nc("Conversion exit status","Not enough space on the output device"); break; case FileListItem::Skipped: exitMessage = i18nc("Conversion exit status","File already exists"); break; case FileListItem::Failed: exitMessage = i18nc("Conversion exit status","An error occurred"); break; } if( returnCode == FileListItem::Succeeded || returnCode == FileListItem::SucceededWithProblems ) writeTags( item ); if( !waitForAlbumGain && !item->fileListItem->notifyCommand.isEmpty() && ( !config->data.general.waitForAlbumGain || !conversionOptions->replaygain ) ) { QList albumItems; if( !albumName.isEmpty() ) albumItems = albumGainItems[albumName]; albumItems.append( item ); foreach( ConvertItem *albumItem, albumItems ) { QString command = albumItem->fileListItem->notifyCommand; // command.replace( "%u", albumItem->fileListItem->url ); command.replace( "%i", albumItem->inputUrl.toLocalFile() ); command.replace( "%o", albumItem->outputUrl.toLocalFile() ); logger->log( item->logID, i18n("Executing command: \"%1\"",command) ); QProcess::startDetached( command ); } } // remove temp/failed files if( QFile::exists(item->tempInputUrl.toLocalFile()) ) { QFile::remove(item->tempInputUrl.toLocalFile()); } foreach( const KUrl url, item->tempConvertUrls ) { if( QFile::exists(url.toLocalFile()) ) { QFile::remove( url.toLocalFile() ); } } if( returnCode != FileListItem::Succeeded && returnCode != FileListItem::SucceededWithProblems && returnCode != FileListItem::Skipped && QFile::exists(item->outputUrl.toLocalFile()) ) { logger->log( item->logID, i18n("Removing partially converted output file") ); QFile::remove(item->outputUrl.toLocalFile()); } usedOutputNames.remove( item->logID ); logger->log( item->logID, "
" + i18n("Removing file from conversion list. Exit code %1 (%2)",returnCode,exitMessage) ); logger->log( item->logID, "\t" + i18n("Conversion time") + ": " + Global::prettyNumber(item->progressedTime.elapsed(),"ms") ); logger->log( item->logID, "\t" + i18n("Output file size") + ": " + Global::prettyNumber(outputFileInfo.size(),"B") ); logger->log( item->logID, "\t" + i18n("File size ratio") + ": " + Global::prettyNumber(fileRatio*100,"%") ); emit timeFinished( item->fileListItem->length ); if( item->process.data() ) item->process.data()->deleteLater(); if( item->kioCopyJob.data() ) item->kioCopyJob.data()->deleteLater(); if( !waitForAlbumGain && !albumName.isEmpty() ) { QList albumItems = albumGainItems[albumName]; foreach( ConvertItem *albumItem, albumItems ) { emit finished( albumItem->fileListItem, FileListItem::Succeeded ); // send signal to FileList } qDeleteAll( albumItems ); albumGainItems.remove( albumName ); } emit finished( item->fileListItem, returnCode, waitForAlbumGain ); // send signal to FileList emit finishedProcess( item->logID, returnCode == FileListItem::Succeeded, waitForAlbumGain ); // send signal to Logger items.removeAll( item ); if( !waitForAlbumGain ) delete item; if( items.size() == 0 && albumGainItems.size() == 0 ) updateTimer.stop(); } void Convert::kill( FileListItem *fileListItem ) { for( int i=0; ifileListItem == fileListItem ) { items.at(i)->killed = true; if( items.at(i)->backendID != -1 && items.at(i)->backendPlugin ) { items.at(i)->backendPlugin->kill( items.at(i)->backendID ); } else if( items.at(i)->process.data() != 0 ) { items.at(i)->process.data()->kill(); } else if( items.at(i)->kioCopyJob.data() != 0 ) { items.at(i)->kioCopyJob.data()->kill( KJob::EmitResult ); } } } } void Convert::itemRemoved( FileListItem *fileListItem ) { if( !fileListItem ) return; const QString albumName = fileListItem->tags ? fileListItem->tags->album : ""; if( !albumName.isEmpty() ) { QList albumItems = albumGainItems[albumName]; foreach( ConvertItem *albumItem, albumItems ) { if( albumItem->fileListItem == fileListItem ) { albumGainItems[albumName].removeAll( albumItem ); break; } } } } void Convert::updateProgress() { float time = 0.0f; float fileTime; QString fileProgressString; // trigger flushing of the logger cache pluginLog( 0, "" ); foreach( ConvertItem *item, items ) { float fileProgress = 0.0f; if( item->backendID != -1 && item->backendPlugin ) { fileProgress = item->backendPlugin->progress( item->backendID ); } else { fileProgress = item->progress; } if( fileProgress >= 0 ) { fileProgressString = Global::prettyNumber(fileProgress,"%"); } else { fileProgressString = i18nc("The conversion progress can't be determined","Unknown"); fileProgress = 0; // make it a valid value so the calculations below work } fileTime = 0.0f; switch( item->state ) { case ConvertItem::get: { fileTime = item->getTime; item->fileListItem->setText( 0, i18n("Getting file")+"... "+fileProgressString ); break; } case ConvertItem::convert: { fileTime = item->convertTimes.at(item->conversionPipesStep); item->fileListItem->setText( 0, i18n("Converting")+"... "+fileProgressString ); break; } case ConvertItem::rip: { fileTime = item->convertTimes.at(item->conversionPipesStep); item->fileListItem->setText( 0, i18n("Ripping")+"... "+fileProgressString ); break; } case ConvertItem::decode: { fileTime = item->convertTimes.at(item->conversionPipesStep); item->fileListItem->setText( 0, i18n("Decoding")+"... "+fileProgressString ); break; } case ConvertItem::filter: { fileTime = item->convertTimes.at(item->conversionPipesStep); item->fileListItem->setText( 0, i18n("Filter")+"... "+fileProgressString ); break; } case ConvertItem::encode: { fileTime = item->convertTimes.at(item->conversionPipesStep); item->fileListItem->setText( 0, i18n("Encoding")+"... "+fileProgressString ); break; } case ConvertItem::replaygain: { const QString albumName = item->fileListItem->tags ? item->fileListItem->tags->album : ""; QList albumItems; if( !albumName.isEmpty() ) albumItems = albumGainItems[albumName]; if( !albumItems.contains(item) ) albumItems.append( item ); foreach( ConvertItem *albumItem, albumItems ) { fileTime += albumItem->replaygainTime; } item->fileListItem->setText( 0, i18n("Replay Gain")+"... "+fileProgressString ); break; } } time += item->finishedTime + fileProgress * fileTime / 100.0f; logger->log( item->logID, "
\t" + i18n("Progress: %1",fileProgress) + "
" ); } emit updateTime( time ); } ./soundkonverter-2.0.5/PaxHeaders.25599/optionseditor.cpp0000644000175000001440000000006212105142353021407 xustar000000000000000020 atime=1379147562 30 ctime=1387631578.429419923 ./soundkonverter-2.0.5/optionseditor.cpp0000644000175000001440000007476412105142353021042 0ustar00danielusers00000000000000// // C++ Implementation: optionseditor // // Description: // // // Author: Daniel Faust , (C) 2008 - 2012 // // Copyright: See COPYING file that comes with this distribution // // #include "optionseditor.h" #include "options.h" #include "config.h" #include "filelistitem.h" #include "global.h" #include #include #include #include #include #include #include #include #include #include // TODO use QPointer or QSharedPointer OptionsEditor::OptionsEditor( Config *_config, QWidget *parent ) : KPageDialog( parent ), config( _config ) { tagEngine = config->tagEngine(); setButtons( KDialog::User1 | KDialog::User2 | KDialog::Ok | KDialog::Apply | KDialog::Cancel ); setButtonText( KDialog::User2, i18n("Previous") ); setButtonIcon( KDialog::User2, KIcon("go-previous") ); setButtonText( KDialog::User1, i18n("Next") ); setButtonIcon( KDialog::User1, KIcon("go-next") ); connect( this, SIGNAL(applyClicked()), this, SLOT(applyChanges()) ); connect( this, SIGNAL(okClicked()), this, SLOT(applyChanges()) ); button(KDialog::User2)->setAutoRepeat(true); button(KDialog::User1)->setAutoRepeat(true); QWidget *conversionOptionsWidget = new QWidget( this ); KPageWidgetItem *conversionOptionsPage = addPage( conversionOptionsWidget, i18n("Conversion") ); conversionOptionsPage->setIcon( KIcon( "view-list-text" ) ); // the grid for all widgets in the main window QGridLayout* conversionOptionsGridLayout = new QGridLayout( conversionOptionsWidget ); // generate the options input area options = new Options( config, i18n("Select your desired output options and click on \"Ok\"."), conversionOptionsWidget ); conversionOptionsGridLayout->addWidget( options, 0, 0 ); conversionOptionsGridLayout->setRowStretch( 1, 1 ); lEditOptions = new QLabel( "", conversionOptionsWidget ); conversionOptionsGridLayout->addWidget( lEditOptions, 2, 0 ); lEditOptions->setAlignment( Qt::AlignHCenter ); lEditOptions->hide(); pEditOptions = new KPushButton( i18n("Edit conversion options"), conversionOptionsWidget ); pEditOptions->setFixedWidth( pEditOptions->sizeHint().width() ); conversionOptionsGridLayout->addWidget( pEditOptions, 3, 0, Qt::AlignHCenter ); pEditOptions->hide(); connect( pEditOptions, SIGNAL(clicked()), this, SLOT(editOptionsClicked()) ); QWidget *tagsWidget = new QWidget( this ); KPageWidgetItem *tagsPage = addPage( tagsWidget, i18n("Tags") ); tagsPage->setIcon( KIcon( "feed-subscribe" ) ); // the grid for all widgets in the main window QGridLayout* tagsGridLayout = new QGridLayout( tagsWidget ); // add the inputs // add a horizontal box layout for the covers QHBoxLayout *coversBox = new QHBoxLayout(); tagsGridLayout->addLayout( coversBox, 0, 1 ); // and fill it up lCoversLabel = new QLabel( i18n("Covers:"), tagsWidget ); tagsGridLayout->addWidget( lCoversLabel, 0, 0 ); bCovers = new QHBoxLayout(); coversBox->addLayout( bCovers ); coversBox->addStretch(); // add a horizontal box layout for the title and track number QHBoxLayout *titleBox = new QHBoxLayout(); tagsGridLayout->addLayout( titleBox, 1, 1 ); // and fill it up lTitleLabel = new QLabel( i18n("Title:"), tagsWidget ); tagsGridLayout->addWidget( lTitleLabel, 1, 0 ); lTitle = new KLineEdit( tagsWidget ); titleBox->addWidget( lTitle ); pTitleEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pTitleEdit->setFixedSize( pTitleEdit->sizeHint().height(), lTitle->sizeHint().height() ); pTitleEdit->setFlat( true ); pTitleEdit->setToolTip( i18n("Edit") ); pTitleEdit->hide(); titleBox->addWidget( pTitleEdit ); connect( pTitleEdit, SIGNAL(clicked()), this, SLOT(editTitleClicked()) ); lTrackLabel = new QLabel( i18n("Track No.:"), tagsWidget ); titleBox->addWidget( lTrackLabel ); iTrack = new KIntSpinBox( 0, 999, 1, 1, tagsWidget ); titleBox->addWidget( iTrack ); pTrackEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pTrackEdit->setFixedSize( pTrackEdit->sizeHint().height(), iTrack->sizeHint().height() ); pTrackEdit->setFlat( true ); pTrackEdit->setToolTip( i18n("Edit") ); pTrackEdit->hide(); titleBox->addWidget( pTrackEdit ); connect( pTrackEdit, SIGNAL(clicked()), this, SLOT(editTrackClicked()) ); lTrackTotalLabel = new QLabel( i18nc("Track/Disc No. x of y","of"), tagsWidget ); titleBox->addWidget( lTrackTotalLabel ); iTrackTotal = new KIntSpinBox( 0, 999, 1, 1, tagsWidget ); titleBox->addWidget( iTrackTotal ); pTrackTotalEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pTrackTotalEdit->setFixedSize( pTrackTotalEdit->sizeHint().height(), iTrackTotal->sizeHint().height() ); pTrackTotalEdit->setFlat( true ); pTrackTotalEdit->setToolTip( i18n("Edit") ); pTrackTotalEdit->hide(); titleBox->addWidget( pTrackTotalEdit ); connect( pTrackTotalEdit, SIGNAL(clicked()), this, SLOT(editTrackTotalClicked()) ); // add a horizontal box layout for the artist and the composer QHBoxLayout *artistBox = new QHBoxLayout(); tagsGridLayout->addLayout( artistBox, 2, 1 ); // and fill it up lArtistLabel = new QLabel( i18n("Artist:"), tagsWidget ); tagsGridLayout->addWidget( lArtistLabel, 2, 0 ); lArtist = new KLineEdit( tagsWidget ); artistBox->addWidget( lArtist ); pArtistEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pArtistEdit->setFixedSize( pArtistEdit->sizeHint().height(), lArtist->sizeHint().height() ); pArtistEdit->setFlat( true ); pArtistEdit->setToolTip( i18n("Edit") ); pArtistEdit->hide(); artistBox->addWidget( pArtistEdit ); connect( pArtistEdit, SIGNAL(clicked()), this, SLOT(editArtistClicked()) ); lComposerLabel = new QLabel( i18n("Composer:"), tagsWidget ); artistBox->addWidget( lComposerLabel ); lComposer = new KLineEdit( tagsWidget ); artistBox->addWidget( lComposer ); pComposerEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pComposerEdit->setFixedSize( pComposerEdit->sizeHint().height(), lComposer->sizeHint().height() ); pComposerEdit->setFlat( true ); pComposerEdit->setToolTip( i18n("Edit") ); pComposerEdit->hide(); artistBox->addWidget( pComposerEdit ); connect( pComposerEdit, SIGNAL(clicked()), this, SLOT(editComposerClicked()) ); // add a horizontal box layout for the album QHBoxLayout *albumBox = new QHBoxLayout(); tagsGridLayout->addLayout( albumBox, 3, 1 ); // and fill it up lAlbumLabel = new QLabel( i18n("Album:"), tagsWidget ); tagsGridLayout->addWidget( lAlbumLabel, 3, 0 ); lAlbum = new KLineEdit( tagsWidget ); albumBox->addWidget( lAlbum ); pAlbumEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pAlbumEdit->setFixedSize( pAlbumEdit->sizeHint().height(), lAlbum->sizeHint().height() ); pAlbumEdit->setFlat( true ); pAlbumEdit->setToolTip( i18n("Edit") ); pAlbumEdit->hide(); albumBox->addWidget( pAlbumEdit ); connect( pAlbumEdit, SIGNAL(clicked()), this, SLOT(editAlbumClicked()) ); // add a horizontal box layout for the disc number, year and genre QHBoxLayout *albumdataBox = new QHBoxLayout(); tagsGridLayout->addLayout( albumdataBox, 4, 1 ); // and fill it up lDiscLabel = new QLabel( i18n("Disc No.:"), tagsWidget ); tagsGridLayout->addWidget( lDiscLabel, 4, 0 ); iDisc = new KIntSpinBox( 0, 99, 1, 1, tagsWidget ); albumdataBox->addWidget( iDisc ); pDiscEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pDiscEdit->setFixedSize( pDiscEdit->sizeHint().height(), iDisc->sizeHint().height() ); pDiscEdit->setFlat( true ); pDiscEdit->setToolTip( i18n("Edit") ); pDiscEdit->hide(); albumdataBox->addWidget( pDiscEdit ); connect( pDiscEdit, SIGNAL(clicked()), this, SLOT(editDiscClicked()) ); lDiscTotalLabel = new QLabel( i18nc("Track/Disc No. x of y","of"), tagsWidget ); albumdataBox->addWidget( lDiscTotalLabel ); iDiscTotal = new KIntSpinBox( 0, 99, 1, 1, tagsWidget ); albumdataBox->addWidget( iDiscTotal ); pDiscTotalEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pDiscTotalEdit->setFixedSize( pDiscTotalEdit->sizeHint().height(), iDiscTotal->sizeHint().height() ); pDiscTotalEdit->setFlat( true ); pDiscTotalEdit->setToolTip( i18n("Edit") ); pDiscTotalEdit->hide(); albumdataBox->addWidget( pDiscTotalEdit ); connect( pDiscTotalEdit, SIGNAL(clicked()), this, SLOT(editDiscTotalClicked()) ); albumdataBox->addStretch(); lYearLabel = new QLabel( i18n("Year:"), tagsWidget ); albumdataBox->addWidget( lYearLabel ); iYear = new KIntSpinBox( 0, 99999, 1, QDate::currentDate().year(), tagsWidget ); albumdataBox->addWidget( iYear ); pYearEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pYearEdit->setFixedSize( pYearEdit->sizeHint().height(), iYear->sizeHint().height() ); pYearEdit->setFlat( true ); pYearEdit->setToolTip( i18n("Edit") ); pYearEdit->hide(); albumdataBox->addWidget( pYearEdit ); connect( pYearEdit, SIGNAL(clicked()), this, SLOT(editYearClicked()) ); albumdataBox->addStretch(); lGenreLabel = new QLabel( i18n("Genre:"), tagsWidget ); albumdataBox->addWidget( lGenreLabel ); cGenre = new KComboBox( true, tagsWidget ); cGenre->addItems( tagEngine->genreList ); cGenre->clearEditText(); KCompletion *cGenreCompletion = cGenre->completionObject(); cGenreCompletion->insertItems( tagEngine->genreList ); cGenreCompletion->setIgnoreCase( tagsWidget ); albumdataBox->addWidget( cGenre ); pGenreEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pGenreEdit->setFixedSize( pGenreEdit->sizeHint().height(), cGenre->sizeHint().height() ); pGenreEdit->setFlat( true ); pGenreEdit->setToolTip( i18n("Edit") ); pGenreEdit->hide(); albumdataBox->addWidget( pGenreEdit ); connect( pGenreEdit, SIGNAL(clicked()), this, SLOT(editGenreClicked()) ); // add a horizontal box layout for the comment QHBoxLayout *commentBox = new QHBoxLayout(); tagsGridLayout->addLayout( commentBox, 5, 1 ); // and fill it up lCommentLabel = new QLabel( i18n("Comment:"), tagsWidget ); tagsGridLayout->addWidget( lCommentLabel, 5, 0 ); tComment = new KTextEdit( tagsWidget ); commentBox->addWidget( tComment ); pCommentEdit = new KPushButton( KIcon("edit-rename"), " ", tagsWidget ); pCommentEdit->setFixedSize( pCommentEdit->sizeHint().height(), lTitle->sizeHint().height() ); pCommentEdit->setFlat( true ); pCommentEdit->setToolTip( i18n("Edit") ); pCommentEdit->hide(); commentBox->addWidget( pCommentEdit ); connect( pCommentEdit, SIGNAL(clicked()), this, SLOT(editCommentClicked()) ); tagsGridLayout->setRowStretch( 5, 1 ); lEditTags = new QLabel( "", tagsWidget ); tagsGridLayout->addWidget( lEditTags, 6, 1 ); lEditTags->setAlignment( Qt::AlignHCenter ); lEditTags->hide(); pEditTags = new KPushButton( i18n("Edit tags"), tagsWidget ); pEditTags->setFixedWidth( pEditTags->sizeHint().width() ); tagsGridLayout->addWidget( pEditTags, 7, 1, Qt::AlignHCenter ); pEditTags->hide(); connect( pEditTags, SIGNAL(clicked()), this, SLOT(editTagsClicked()) ); } OptionsEditor::~OptionsEditor() {} void OptionsEditor::setTagInputEnabled( bool enabled ) { lTitleLabel->setEnabled( enabled ); lTitle->setEnabled( enabled ); pTitleEdit->hide(); lTrackLabel->setEnabled( enabled ); iTrack->setEnabled( enabled ); lTrackTotalLabel->setEnabled( enabled ); iTrackTotal->setEnabled( enabled ); pTrackEdit->hide(); lArtistLabel->setEnabled( enabled ); lArtist->setEnabled( enabled ); pArtistEdit->hide(); lComposerLabel->setEnabled( enabled ); lComposer->setEnabled( enabled ); pComposerEdit->hide(); lAlbumLabel->setEnabled( enabled ); lAlbum->setEnabled( enabled ); pAlbumEdit->hide(); lDiscLabel->setEnabled( enabled ); iDisc->setEnabled( enabled ); lDiscTotalLabel->setEnabled( enabled ); iDiscTotal->setEnabled( enabled ); pDiscEdit->hide(); lYearLabel->setEnabled( enabled ); iYear->setEnabled( enabled ); pYearEdit->hide(); lGenreLabel->setEnabled( enabled ); cGenre->setEnabled( enabled ); pGenreEdit->hide(); lCommentLabel->setEnabled( enabled ); tComment->setEnabled( enabled ); tComment->setReadOnly( !enabled ); pCommentEdit->hide(); if( !enabled ) { lTitle->setText( "" ); iTrack->setValue( 0 ); iTrackTotal->setValue( 0 ); lArtist->setText( "" ); lComposer->setText( "" ); lAlbum->setText( "" ); iDisc->setValue( 0 ); iDiscTotal->setValue( 0 ); iYear->setValue( 0 ); cGenre->setEditText( "" ); tComment->setText( "" ); } } void OptionsEditor::itemsSelected( QList items ) { selectedItems.clear(); foreach( FileListItem *item, items ) { bool canEdit = false; if( item ) { switch( item->state ) { case FileListItem::WaitingForConversion: canEdit = true; break; case FileListItem::Ripping: break; case FileListItem::Converting: break; case FileListItem::ApplyingReplayGain: break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: canEdit = true; break; } } if( canEdit ) selectedItems.append( item ); } // remove all cover widgets foreach( QLabel* label, lCovers ) { bCovers->removeWidget( label ); label->deleteLater(); } lCovers.clear(); lCoversLabel->setEnabled( false ); if( selectedItems.count() == 0 ) { setCaption( i18n("No file selected") ); options->setEnabled( false ); lEditOptions->hide(); pEditOptions->hide(); setTagInputEnabled( false ); lEditTags->hide(); pEditTags->hide(); return; } options->setEnabled( true ); lEditOptions->hide(); pEditOptions->hide(); setTagInputEnabled( true ); lEditTags->hide(); pEditTags->hide(); if( selectedItems.count() == 1 ) { FileListItem *item = selectedItems.first(); setCaption( selectedItems.first()->url.fileName() ); const bool success = options->setCurrentConversionOptions( config->conversionOptionsManager()->getConversionOptions(selectedItems.first()->conversionOptionsId) ); options->setEnabled( success ); // TODO show error message if !success if( item->tags == 0 && !item->local ) { setTagInputEnabled( false ); lEditTags->setText( i18n("The tags could not be read, because this is not a local file.\n" "soundKonverter will try to read the tags, when it is about to convert the file.\n" "If you want to edit the tags, you can hit the button below but then soundKonverter will not try\n" "to read the tags after downloading.") ); lEditTags->show(); pEditTags->show(); } else if( item->tags == 0 ) { setTagInputEnabled( false ); lEditTags->setText( i18n("Reading the tags of this file failed.\n" "soundKonverter will try to read the tags a second time, when it is about to convert the file.\n" "If you want to edit the tags, you can hit the button below but then soundKonverter will not try\n" "to read the tags a second time.") ); lEditTags->show(); pEditTags->show(); } else { if( !(item->tags->tagsRead & TagData::Covers) ) { item->tags->covers = tagEngine->readCovers( item->url ); item->tags->tagsRead = TagData::TagsRead(item->tags->tagsRead | TagData::Covers); } foreach( CoverData* cover, item->tags->covers ) { QPixmap pixmap; pixmap.loadFromData( cover->data ); QLabel *label = new QLabel(); label->setFrameShape( QFrame::StyledPanel ); label->setFrameShadow( QFrame::Raised ); QString toolTip; toolTip += ""; toolTip += ""; if( !cover->description.isEmpty() ) toolTip += ""; toolTip += ""; if( !cover->mimeType.isEmpty() ) toolTip += ""; toolTip += "
" + i18nc("cover tooltip","Cover type:") + "" + CoverData::roleName(cover->role) + "
" + i18nc("cover tooltip","Description:") + "" + cover->description + "
" + i18nc("cover tooltip","Size:") + "" + i18nc("cover tooltip","%1 x %2 pixels (%3)",pixmap.width(),pixmap.height(),Global::prettyNumber(cover->data.size(),"B")) + "
" + i18nc("cover tooltip","Mime type:") + "" + cover->mimeType + "
"; label->setToolTip( toolTip ); bCovers->addWidget( label ); lCovers.append( label ); label->setPixmap( pixmap.scaledToHeight( 48, Qt::SmoothTransformation ) ); } lCoversLabel->setEnabled( item->tags->covers.count() > 0 ); lTitle->setText( item->tags->title ); iTrack->setValue( item->tags->track ); iTrackTotal->setValue( item->tags->trackTotal ); lArtist->setText( item->tags->artist ); lComposer->setText( item->tags->composer ); lAlbum->setText( item->tags->album ); iDisc->setValue( item->tags->disc ); iDiscTotal->setValue( item->tags->discTotal ); iYear->setValue( item->tags->year ); cGenre->setEditText( item->tags->genre ); tComment->setText( item->tags->comment ); } } else // selectedItems.count() > 1 { setCaption( i18n("%1 Files").arg(selectedItems.count()) ); FileListItem *firstItem = selectedItems.first(); const int conversionOptionsId = firstItem->conversionOptionsId; const QString title = ( firstItem->tags == 0 ) ? "" : firstItem->tags->title; const int track = ( firstItem->tags == 0 ) ? 0 : firstItem->tags->track; const int trackTotal = ( firstItem->tags == 0 ) ? 0 : firstItem->tags->trackTotal; const QString artist = ( firstItem->tags == 0 ) ? "" : firstItem->tags->artist; const QString composer = ( firstItem->tags == 0 ) ? "" : firstItem->tags->composer; const QString album = ( firstItem->tags == 0 ) ? "" : firstItem->tags->album; const int disc = ( firstItem->tags == 0 ) ? 0 : firstItem->tags->disc; const int discTotal = ( firstItem->tags == 0 ) ? 0 : firstItem->tags->discTotal; const int year = ( firstItem->tags == 0 ) ? 0 : firstItem->tags->year; const QString genre = ( firstItem->tags == 0 ) ? "" : firstItem->tags->genre; const QString comment = ( firstItem->tags == 0 ) ? "" : firstItem->tags->comment; foreach( FileListItem *item, selectedItems ) { if( item->conversionOptionsId != conversionOptionsId ) { options->setEnabled( false ); lEditOptions->setText( i18n("You have selected multiple files with different conversion options.\nYou can change the options of all files by hitting the button below.") ); lEditOptions->show(); pEditOptions->show(); } if( item->tags == 0 ) { setTagInputEnabled( false ); lEditTags->setText( i18n("Reading the tags of one or more files failed.\n" "soundKonverter will try to read the tags a second time, when it is about to convert the files.\n" "If you want to edit the tags, you can hit the button below but then soundKonverter will not try\n" "to read the tags a second time.") ); lEditTags->show(); pEditTags->show(); continue; } if( title != item->tags->title && lTitle->isEnabled() ) { lTitle->setEnabled( false ); lTitle->setText( "" ); pTitleEdit->show(); } if( track != item->tags->track && iTrack->isEnabled() ) { iTrack->setEnabled( false ); iTrack->setValue( 1 ); pTrackEdit->show(); } if( trackTotal != item->tags->trackTotal && iTrackTotal->isEnabled() ) { iTrackTotal->setEnabled( false ); iTrackTotal->setValue( 1 ); pTrackTotalEdit->show(); } if( artist != item->tags->artist && lArtist->isEnabled() ) { lArtist->setEnabled( false ); lArtist->setText( "" ); pArtistEdit->show(); } if( composer != item->tags->composer && lComposer->isEnabled() ) { lComposer->setEnabled( false ); lComposer->setText( "" ); pComposerEdit->show(); } if( album != item->tags->album && lAlbum->isEnabled() ) { lAlbum->setEnabled( false ); lAlbum->setText( "" ); pAlbumEdit->show(); } if( disc != item->tags->disc && iDisc->isEnabled() ) { iDisc->setEnabled( false ); iDisc->setValue( 1 ); pDiscEdit->show(); } if( discTotal != item->tags->discTotal && iDiscTotal->isEnabled() ) { iDiscTotal->setEnabled( false ); iDiscTotal->setValue( 1 ); pDiscTotalEdit->show(); } if( year != item->tags->year && iYear->isEnabled() ) { iYear->setEnabled( false ); iYear->setValue( QDate::currentDate().year() ); pYearEdit->show(); } if( genre != item->tags->genre && cGenre->isEnabled() ) { cGenre->setEnabled( false ); cGenre->setEditText( "" ); pGenreEdit->show(); } if( comment != item->tags->comment && tComment->isEnabled() ) { tComment->setEnabled( false ); tComment->setReadOnly( true ); tComment->setText( "" ); pCommentEdit->show(); } } if( options->isEnabled() ) { const bool success = options->setCurrentConversionOptions( config->conversionOptionsManager()->getConversionOptions(conversionOptionsId) ); options->setEnabled( success ); // TODO show error message if !success } if( lTitle->isEnabled() ) lTitle->setText( title ); if( iTrack->isEnabled() ) iTrack->setValue( track ); if( iTrackTotal->isEnabled() ) iTrackTotal->setValue( trackTotal ); if( lArtist->isEnabled() ) lArtist->setText( artist ); if( lComposer->isEnabled() ) lComposer->setText( composer ); if( lAlbum->isEnabled() ) lAlbum->setText( album ); if( iDisc->isEnabled() ) iDisc->setValue( disc ); if( iDiscTotal->isEnabled() ) iDiscTotal->setValue( discTotal ); if( iYear->isEnabled() ) iYear->setValue( year ); if( cGenre->isEnabled() ) cGenre->setEditText( genre ); if( tComment->isEnabled() ) tComment->setText( comment ); } } void OptionsEditor::setPreviousEnabled( bool enabled ) { enableButton( User2, enabled ); } void OptionsEditor::setNextEnabled( bool enabled ) { enableButton( User1, enabled ); } void OptionsEditor::applyChanges() { ConversionOptions *newConversionOptions = options->currentConversionOptions(); for( int i=0; iisEnabled() ) { selectedItems.at(i)->conversionOptionsId = config->conversionOptionsManager()->updateConversionOptions( selectedItems.at(i)->conversionOptionsId, newConversionOptions ); } else { // TODO error message } if( selectedItems.at(i)->tags ) { if( lTitle->isEnabled() ) selectedItems.at(i)->tags->title = lTitle->text(); if( iTrack->isEnabled() ) selectedItems.at(i)->tags->track = iTrack->value(); if( iTrackTotal->isEnabled() ) selectedItems.at(i)->tags->trackTotal = iTrackTotal->value(); if( lArtist->isEnabled() ) selectedItems.at(i)->tags->artist = lArtist->text(); if( lComposer->isEnabled() ) selectedItems.at(i)->tags->composer = lComposer->text(); if( lAlbum->isEnabled() ) selectedItems.at(i)->tags->album = lAlbum->text(); if( iDisc->isEnabled() ) selectedItems.at(i)->tags->disc = iDisc->value(); if( iDiscTotal->isEnabled() ) selectedItems.at(i)->tags->discTotal= iDiscTotal->value(); if( iYear->isEnabled() ) selectedItems.at(i)->tags->year = iYear->value(); if( cGenre->isEnabled() ) selectedItems.at(i)->tags->genre = cGenre->currentText(); if( tComment->isEnabled() ) selectedItems.at(i)->tags->comment = tComment->toPlainText(); } } options->accepted(); emit updateFileListItems( selectedItems ); } void OptionsEditor::editOptionsClicked() { options->setEnabled( true ); lEditOptions->hide(); pEditOptions->hide(); if( selectedItems.count() > 0 && selectedItems.first() ) { ConversionOptions *conversionOptions = config->conversionOptionsManager()->getConversionOptions( selectedItems.first()->conversionOptionsId ); if( conversionOptions ) options->setCurrentConversionOptions( conversionOptions ); } } void OptionsEditor::editTagsClicked() { for( int i=0; itags = new TagData(); } editTitleClicked(); editTrackClicked(); editTrackTotalClicked(); editArtistClicked(); editComposerClicked(); editAlbumClicked(); editDiscClicked(); editDiscTotalClicked(); editYearClicked(); editGenreClicked(); editCommentClicked(); } void OptionsEditor::editTitleClicked() { lTitle->setEnabled( true ); lTitle->setFocus(); pTitleEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { lTitle->setText( selectedItems.first()->tags->title ); } } void OptionsEditor::editTrackClicked() { iTrack->setEnabled( true ); iTrack->setFocus(); pTrackEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { iTrack->setValue( selectedItems.first()->tags->track ); } } void OptionsEditor::editTrackTotalClicked() { iTrackTotal->setEnabled( true ); iTrackTotal->setFocus(); pTrackTotalEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { iTrackTotal->setValue( selectedItems.first()->tags->trackTotal ); } } void OptionsEditor::editArtistClicked() { lArtist->setEnabled( true ); lArtist->setFocus(); pArtistEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { lArtist->setText( selectedItems.first()->tags->artist ); } } void OptionsEditor::editComposerClicked() { lComposer->setEnabled( true ); lComposer->setFocus(); pComposerEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { lComposer->setText( selectedItems.first()->tags->composer ); } } void OptionsEditor::editAlbumClicked() { lAlbum->setEnabled( true ); lAlbum->setFocus(); pAlbumEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { lAlbum->setText( selectedItems.first()->tags->album ); } } void OptionsEditor::editDiscClicked() { iDisc->setEnabled( true ); iDisc->setFocus(); pDiscEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { iDisc->setValue( selectedItems.first()->tags->disc ); } } void OptionsEditor::editDiscTotalClicked() { iDiscTotal->setEnabled( true ); iDiscTotal->setFocus(); pDiscTotalEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { iDiscTotal->setValue( selectedItems.first()->tags->discTotal ); } } void OptionsEditor::editYearClicked() { iYear->setEnabled( true ); iYear->setFocus(); pYearEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { iYear->setValue( selectedItems.first()->tags->year ); } } void OptionsEditor::editGenreClicked() { cGenre->setEnabled( true ); cGenre->setFocus(); pGenreEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { cGenre->setCurrentItem( selectedItems.first()->tags->genre ); } } void OptionsEditor::editCommentClicked() { tComment->setEnabled( true ); tComment->setReadOnly( false ); tComment->setFocus(); pCommentEdit->hide(); if( selectedItems.count() > 0 && selectedItems.first() && selectedItems.first()->tags ) { tComment->setPlainText( selectedItems.first()->tags->comment ); } } ./soundkonverter-2.0.5/PaxHeaders.25599/plugins0000644000175000001440000000012012255306740017410 xustar000000000000000030 mtime=1387630048.347964709 20 atime=1357667221 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/plugins/0000755000175000001440000000000012255306740017103 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_replaygain_mp3gain0000644000175000001440000000006212105142507026327 xustar000000000000000020 atime=1357667235 30 ctime=1387631578.493419123 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/0000755000175000001440000000000012105142507026015 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/PaxHeaders.25599/soundkonverter_rep0000644000175000001440000000006212105142507032265 xustar000000000000000020 atime=1360315719 30 ctime=1387631578.484419236 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.h0000755000175000001440000000316312105142507035115 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_REPLAYGAIN_MP3GAIN_H #define SOUNDKONVERTER_REPLAYGAIN_MP3GAIN_H #include "../../core/replaygainplugin.h" #include #include class ConversionOptions; class KDialog; class QComboBox; class QCheckBox; class Mp3GainPluginItem : public ReplayGainPluginItem { Q_OBJECT public: Mp3GainPluginItem( QObject *parent=0 ); ~Mp3GainPluginItem(); KUrl::List undoFileList; }; class soundkonverter_replaygain_mp3gain : public ReplayGainPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_replaygain_mp3gain( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_replaygain_mp3gain(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); unsigned int apply( const KUrl::List& fileList, ApplyMode mode = Add ); float parseOutput( const QString& output ); private: QWeakPointer configDialog; QComboBox *configDialogTagModeComboBox; QCheckBox *configDialogModifyAudioStreamCheckBox; int tagMode; bool modifyAudioStream; private slots: /** The undo process has exited */ virtual void undoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ); void configDialogSave(); void configDialogDefault(); }; K_EXPORT_SOUNDKONVERTER_REPLAYGAIN( mp3gain, soundkonverter_replaygain_mp3gain ) #endif // _SOUNDKONVERTER_REPLAYGAIN_MP3GAIN_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605563031162 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.485419223 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/CMakeLists.txt0000755000175000001440000000121211726605563030572 0ustar00danielusers00000000000000project(soundkonverter_replaygain_mp3gain) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_replaygain_mp3gain_SRCS soundkonverter_replaygain_mp3gain.cpp ) kde4_add_plugin(soundkonverter_replaygain_mp3gain ${soundkonverter_replaygain_mp3gain_SRCS}) target_link_libraries(soundkonverter_replaygain_mp3gain ${KDE4_KDEUI_LIBS} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_replaygain_mp3gain DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_replaygain_mp3gain.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/PaxHeaders.25599/soundkonverter_rep0000644000175000001440000000024611314457756032311 xustar0000000000000000116 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.desktop 20 atime=1357667632 30 ctime=1387631578.485419223 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.d0000755000175000001440000000055711314457756035135 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter mp3gain plugin X-KDE-Library=soundkonverter_replaygain_mp3gain ServiceTypes=soundKonverter/ReplayGainPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_replaygain_mp3gain X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/PaxHeaders.25599/mp3replaygaingloba0000644000175000001440000000006211314457616032122 xustar000000000000000020 atime=1371411854 30 ctime=1387631578.492419136 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/mp3replaygainglobal.h0000644000175000001440000000011111314457616032126 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Mp3 Gain" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/PaxHeaders.25599/soundkonverter_rep0000644000175000001440000000024212105142507032265 xustar0000000000000000112 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.cpp 20 atime=1387530389 30 ctime=1387631578.493419123 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_mp3gain/soundkonverter_replaygain_mp3gain.c0000755000175000001440000002142112105142507035105 0ustar00danielusers00000000000000 #include "mp3replaygainglobal.h" #include "soundkonverter_replaygain_mp3gain.h" #include #include #include #include #include Mp3GainPluginItem::Mp3GainPluginItem( QObject *parent ) : ReplayGainPluginItem( parent ) {} Mp3GainPluginItem::~Mp3GainPluginItem() {} soundkonverter_replaygain_mp3gain::soundkonverter_replaygain_mp3gain( QObject *parent, const QStringList& args ) : ReplayGainPlugin( parent ) { Q_UNUSED(args) binaries["mp3gain"] = ""; allCodecs += "mp3"; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); tagMode = group.readEntry( "tagMode", 0 ); modifyAudioStream = group.readEntry( "modifyAudioStream", true ); } soundkonverter_replaygain_mp3gain::~soundkonverter_replaygain_mp3gain() {} QString soundkonverter_replaygain_mp3gain::name() { return global_plugin_name; } QList soundkonverter_replaygain_mp3gain::codecTable() { QList table; ReplayGainPipe newPipe; newPipe.codecName = "mp3"; newPipe.rating = 100; newPipe.enabled = ( binaries["mp3gain"] != "" ); newPipe.problemInfo = standardMessage( "replygain_codec,backend", "mp3", "mp3gain" ) + "\n" + standardMessage( "install_patented_backend", "mp3gain" ); table.append( newPipe ); return table; } bool soundkonverter_replaygain_mp3gain::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return true; } void soundkonverter_replaygain_mp3gain::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) if( !configDialog.data() ) { configDialog = new KDialog( parent ); configDialog.data()->setCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Default ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QVBoxLayout *configDialogBox = new QVBoxLayout( configDialogWidget ); QHBoxLayout *configDialogBox1 = new QHBoxLayout(); QLabel *configDialogTagModeLabel = new QLabel( i18n("Use tag format:"), configDialogWidget ); configDialogBox1->addWidget( configDialogTagModeLabel ); configDialogTagModeComboBox = new QComboBox( configDialogWidget ); configDialogTagModeComboBox->addItem( "APE" ); configDialogTagModeComboBox->addItem( "ID3v2" ); configDialogBox1->addWidget( configDialogTagModeComboBox ); configDialogBox->addLayout( configDialogBox1 ); QHBoxLayout *configDialogBox2 = new QHBoxLayout(); configDialogModifyAudioStreamCheckBox = new QCheckBox( i18n("Modify audio stream"), configDialogWidget ); configDialogModifyAudioStreamCheckBox->setToolTip( i18n("Write gain adjustments directly into the encoded data. That way the adjustment works with all mp3 players.\nUndoing the changes is still possible since correction data will be written as well.") ); configDialogBox2->addWidget( configDialogModifyAudioStreamCheckBox ); configDialogBox->addLayout( configDialogBox2 ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); connect( configDialog.data(), SIGNAL( defaultClicked() ), this, SLOT( configDialogDefault() ) ); } configDialogTagModeComboBox->setCurrentIndex( tagMode ); configDialogModifyAudioStreamCheckBox->setChecked( modifyAudioStream ); configDialog.data()->show(); } void soundkonverter_replaygain_mp3gain::configDialogSave() { if( configDialog.data() ) { tagMode = configDialogTagModeComboBox->currentIndex(); modifyAudioStream = configDialogModifyAudioStreamCheckBox->isChecked(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "tagMode", tagMode ); group.writeEntry( "modifyAudioStream", modifyAudioStream ); configDialog.data()->deleteLater(); } } void soundkonverter_replaygain_mp3gain::configDialogDefault() { if( configDialog.data() ) { configDialogTagModeComboBox->setCurrentIndex( 0 ); configDialogModifyAudioStreamCheckBox->setChecked( true ); } } bool soundkonverter_replaygain_mp3gain::hasInfo() { return false; } void soundkonverter_replaygain_mp3gain::showInfo( QWidget *parent ) { Q_UNUSED(parent) } unsigned int soundkonverter_replaygain_mp3gain::apply( const KUrl::List& fileList, ReplayGainPlugin::ApplyMode mode ) { if( fileList.count() <= 0 ) return BackendPlugin::UnknownError; Mp3GainPluginItem *newItem = new Mp3GainPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); QStringList command; command += binaries["mp3gain"]; command += "-k"; if( mode == ReplayGainPlugin::Add ) { if( modifyAudioStream ) { command += "-a"; } connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); } else if( mode == ReplayGainPlugin::Force ) { if( modifyAudioStream ) { command += "-a"; } command += "-s"; command += "r"; connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); } else { command += "-u"; connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(undoProcessExit(int,QProcess::ExitStatus)) ); newItem->undoFileList = fileList; } if( mode == ReplayGainPlugin::Add || mode == ReplayGainPlugin::Force ) { if( tagMode == 0 ) { // APE tags command += "-s"; command += "a"; } else { // ID3v2 tags command += "-s"; command += "i"; } } foreach( const KUrl file, fileList ) { command += "\"" + escapeUrl(file) + "\""; } newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } void soundkonverter_replaygain_mp3gain::undoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ) { Q_UNUSED(exitCode) Q_UNUSED(exitStatus) Mp3GainPluginItem *item = 0; for( int i=0; iprocess == QObject::sender() ) { item = (Mp3GainPluginItem*)backendItems.at(i); break; } } if( !item ) return; if( item->undoFileList.count() <= 0 ) return; if( item->process ) item->process->deleteLater(); item->process = new KProcess( item ); item->process->setOutputChannelMode( KProcess::MergedChannels ); connect( item->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( item->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["mp3gain"]; command += "-s"; command += "d"; foreach( const KUrl file, item->undoFileList ) { command += "\"" + escapeUrl(file) + "\""; } item->process->clearProgram(); item->process->setShellCommand( command.join(" ") ); item->process->start(); logCommand( item->id, command.join(" ") ); } float soundkonverter_replaygain_mp3gain::parseOutput( const QString& output ) { // 9% of 45218064 bytes analyzed // [1/10] 32% of 13066690 bytes analyzed float progress = -1.0f; QRegExp reg1("\\[(\\d+)/(\\d+)\\] (\\d+)%"); QRegExp reg2("(\\d+)%"); if( output.contains(reg1) ) { float fraction = 1.0f/reg1.cap(2).toInt(); progress = 100*(reg1.cap(1).toInt()-1)*fraction + reg1.cap(3).toInt()*fraction; } else if( output.contains(reg2) ) { progress = reg2.cap(1).toInt(); } // Applying mp3 gain change of -6 to /home/user/file.mp3... // Undoing mp3gain changes (6,6) to /home/user/file.mp3... // Deleting tag info of /home/user/file.mp3... QRegExp reg3("[Applying mp3 gain change|Undoing mp3gain changes|Deleting tag info]"); if( progress == -1 && output.contains(reg3) ) { progress = 0.0f; } return progress; } #include "soundkonverter_replaygain_mp3gain.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_shorten0000644000175000001440000000006112105142355025375 xustar000000000000000020 atime=1357667235 29 ctime=1387631578.56641821 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/0000755000175000001440000000000012105142355025064 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605644030230 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.527418698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/CMakeLists.txt0000755000175000001440000000122011726605644027637 0ustar00danielusers00000000000000project(soundkonverter_codec_shorten) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_shorten_SRCS soundkonverter_codec_shorten.cpp shortencodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_shorten ${soundkonverter_codec_shorten_SRCS}) target_link_libraries(soundkonverter_codec_shorten ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_shorten DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_shorten.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/PaxHeaders.25599/soundkonverter_codec_sh0000644000175000001440000000006212105142355032315 xustar000000000000000020 atime=1371411850 30 ctime=1387631578.527418698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/soundkonverter_codec_shorten.cpp0000755000175000001440000001120512105142355033561 0ustar00danielusers00000000000000 #include "shortencodecglobal.h" #include "soundkonverter_codec_shorten.h" #include "../../core/conversionoptions.h" #include "shortencodecwidget.h" soundkonverter_codec_shorten::soundkonverter_codec_shorten( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["shorten"] = ""; allCodecs += "shorten"; allCodecs += "wav"; } soundkonverter_codec_shorten::~soundkonverter_codec_shorten() {} QString soundkonverter_codec_shorten::name() { return global_plugin_name; } QList soundkonverter_codec_shorten::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "shorten"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["shorten"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "shorten", "shorten" ) + "\n" + standardMessage( "install_website_backend,url", "shorten", "http://etree.org/shnutils/shorten/" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "shorten"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["shorten"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "shorten", "shorten" ) + "\n" + standardMessage( "install_website_backend,url", "shorten", "http://etree.org/shnutils/shorten/" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_shorten::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_shorten::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_shorten::hasInfo() { return false; } void soundkonverter_codec_shorten::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_shorten::newCodecWidget() { ShortenCodecWidget *widget = new ShortenCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_shorten::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_shorten::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "shorten" ) { command += binaries["shorten"]; if( conversionOptions->pluginName == global_plugin_name ) { command += conversionOptions->cmdArguments; } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["shorten"]; command += "-x"; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_shorten::parseOutput( const QString& output ) { Q_UNUSED(output) // no output provided return -1; } #include "soundkonverter_codec_shorten.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/PaxHeaders.25599/shortencodecwidget.cpp0000644000175000001440000000006212105142355032043 xustar000000000000000020 atime=1379147587 30 ctime=1387631578.527418698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/shortencodecwidget.cpp0000644000175000001440000000441712105142355031462 0ustar00danielusers00000000000000 #include "shortencodecglobal.h" #include "shortencodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include ShortenCodecWidget::ShortenCodecWidget() : CodecWidget(), currentFormat( "shorten" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); } ShortenCodecWidget::~ShortenCodecWidget() {} ConversionOptions *ShortenCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Lossless; if( cCmdArguments->isChecked() ) options->cmdArguments = lCmdArguments->text(); else options->cmdArguments = ""; return options; } bool ShortenCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void ShortenCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString ShortenCodecWidget::currentProfile() { return i18n("Lossless"); } bool ShortenCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int ShortenCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/PaxHeaders.25599/shortencodecglobal.h0000644000175000001440000000006211773075463031504 xustar000000000000000020 atime=1387530394 30 ctime=1387631578.527418698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/shortencodecglobal.h0000644000175000001440000000011011773075463031105 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Shorten" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/PaxHeaders.25599/soundkonverter_codec_sh0000644000175000001440000000006112105142355032314 xustar000000000000000020 atime=1360315629 29 ctime=1387631578.56641821 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/soundkonverter_codec_shorten.h0000755000175000001440000000246312105142355033234 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_SHORTEN_H #define SOUNDKONVERTER_CODEC_SHORTEN_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_shorten : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_shorten( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_shorten(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( shorten, soundkonverter_codec_shorten ) #endif // _SOUNDKONVERTER_CODEC_SHORTEN_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/PaxHeaders.25599/soundkonverter_codec_sh0000644000175000001440000000006111441376651032326 xustar000000000000000020 atime=1357667632 29 ctime=1387631578.56641821 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/soundkonverter_codec_shorten.desktop0000755000175000001440000000054011441376651034462 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Shorten Plugin X-KDE-Library=soundkonverter_codec_shorten ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_shorten X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/PaxHeaders.25599/shortencodecwidget.h0000644000175000001440000000006112105142355031507 xustar000000000000000020 atime=1360315629 29 ctime=1387631578.56641821 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_shorten/shortencodecwidget.h0000644000175000001440000000130712105142355031122 0ustar00danielusers00000000000000 #ifndef SHORTENCODECWIDGET_H #define SHORTENCODECWIDGET_H #include "../../core/codecwidget.h" class QCheckBox; class KLineEdit; class ShortenCodecWidget : public CodecWidget { Q_OBJECT public: ShortenCodecWidget(); ~ShortenCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format }; #endif // SHORTENCODECWIDGET_H ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_faac0000644000175000001440000000006212105142353024604 xustar000000000000000020 atime=1357667235 30 ctime=1387631578.607417698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/0000755000175000001440000000000012105142353024272 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/PaxHeaders.25599/soundkonverter_codec_faac.0000644000175000001440000000006112105142353032060 xustar000000000000000020 atime=1360315627 29 ctime=1387631578.60641771 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/soundkonverter_codec_faac.h0000755000175000001440000000243312105142353031647 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_FAAC_H #define SOUNDKONVERTER_CODEC_FAAC_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_faac : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_faac( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_faac(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( faac, soundkonverter_codec_faac ) #endif // _SOUNDKONVERTER_CODEC_FAAC_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/PaxHeaders.25599/faaccodecwidget.h0000644000175000001440000000006112105142353030125 xustar000000000000000020 atime=1360315627 29 ctime=1387631578.60641771 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/faaccodecwidget.h0000644000175000001440000000166012105142353027542 0ustar00danielusers00000000000000 #ifndef FAACCODECWIDGET_H #define FAACCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QSpinBox; class FaacCodecWidget : public CodecWidget { Q_OBJECT public: FaacCodecWidget(); ~FaacCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: KComboBox *cMode; QSlider *sQuality; QSpinBox *dQuality; QString currentFormat; // holds the current output file format int bitrateForQuality( int quality ); int qualityForBitrate( int bitrate ); private slots: void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( int quality ); }; #endif // FAACCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006111726605441027432 xustar000000000000000020 atime=1357667632 29 ctime=1387631578.60641771 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/CMakeLists.txt0000755000175000001440000000116511726605441027052 0ustar00danielusers00000000000000project(soundkonverter_codec_faac) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_faac_SRCS soundkonverter_codec_faac.cpp faaccodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_faac ${soundkonverter_codec_faac_SRCS}) target_link_libraries(soundkonverter_codec_faac ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_faac DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_faac.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/PaxHeaders.25599/soundkonverter_codec_faac.0000644000175000001440000000006112105142353032060 xustar000000000000000020 atime=1368977617 29 ctime=1387631578.60641771 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/soundkonverter_codec_faac.cpp0000755000175000001440000001434212105142353032204 0ustar00danielusers00000000000000 #include "faaccodecglobal.h" #include "soundkonverter_codec_faac.h" #include "../../core/conversionoptions.h" #include "faaccodecwidget.h" soundkonverter_codec_faac::soundkonverter_codec_faac( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["faac"] = ""; binaries["faad"] = ""; allCodecs += "aac"; allCodecs += "m4a/aac"; allCodecs += "mp4"; allCodecs += "wav"; } soundkonverter_codec_faac::~soundkonverter_codec_faac() {} QString soundkonverter_codec_faac::name() { return global_plugin_name; } QList soundkonverter_codec_faac::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "aac"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["faac"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "aac", "faac" ) + "\n" + standardMessage( "install_patented_backend", "faac" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "wav"; newTrunk.codecTo = "m4a/aac"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["faac"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "m4a/aac", "faac" ) + "\n" + standardMessage( "install_patented_backend", "faac" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "aac"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["faad"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "aac", "faac" ) + "\n" + standardMessage( "install_patented_backend", "faac" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "m4a/aac"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["faad"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "m4a/aac", "faac" ) + "\n" + standardMessage( "install_patented_backend", "faac" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mp4"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["faad"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "mp4", "faac" ) + "\n" + standardMessage( "install_patented_backend", "faac" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_faac::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_faac::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_faac::hasInfo() { return false; } void soundkonverter_codec_faac::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_faac::newCodecWidget() { FaacCodecWidget *widget = new FaacCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_faac::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_faac::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "aac" || outputCodec == "m4a/aac" ) { command += binaries["faac"]; if( conversionOptions->qualityMode == ConversionOptions::Quality ) { command += "-q"; command += QString::number(conversionOptions->quality); } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { command += "-b"; command += QString::number(conversionOptions->bitrate); } command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; command += "\"" + escapeUrl(inputFile) + "\""; } else { command += binaries["faad"]; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; command += "\"" + escapeUrl(inputFile) + "\""; } return command; } float soundkonverter_codec_faac::parseOutput( const QString& output ) { // 9397/9397 (100%)| 136.1 | 9.1/9.1 | 23.92x | 0.0 QRegExp regEnc("(\\d+)/(\\d+)"); if( output.contains(regEnc) ) { return (float)regEnc.cap(1).toInt()*100/regEnc.cap(2).toInt(); } // 15% decoding xxx QRegExp regDec("(\\d+)%"); if( output.contains(regDec) ) { return (float)regDec.cap(1).toInt(); } return -1; } #include "soundkonverter_codec_faac.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/PaxHeaders.25599/faaccodecwidget.cpp0000644000175000001440000000006212105142353030461 xustar000000000000000020 atime=1379147591 30 ctime=1387631578.607417698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/faaccodecwidget.cpp0000644000175000001440000001536012105142353030077 0ustar00danielusers00000000000000 #include "faaccodecglobal.h" #include "faaccodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include FaacCodecWidget::FaacCodecWidget() : CodecWidget(), currentFormat( "m4a/aac" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lMode = new QLabel( i18n("Mode:"), this ); topBox->addWidget( lMode ); cMode = new KComboBox( this ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cMode ); sQuality = new QSlider( Qt::Horizontal, this ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); dQuality = new QSpinBox( this ); dQuality->setRange( 8, 320 ); dQuality->setSuffix( " kbps" ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); connect( dQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySpinBoxChanged(int)) ); connect( dQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( dQuality ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); modeChanged( 0 ); } FaacCodecWidget::~FaacCodecWidget() {} // TODO optimize int FaacCodecWidget::bitrateForQuality( int quality ) { return quality*100/3; } // TODO optimize int FaacCodecWidget::qualityForBitrate( int bitrate ) { return bitrate*3/100; } ConversionOptions *FaacCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); if( cMode->currentText()==i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); options->bitrate = bitrateForQuality( options->quality ); } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = dQuality->value(); options->quality = qualityForBitrate( options->bitrate ); } return options; } bool FaacCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( cMode->findText(i18n("Quality")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->quality ); } else { cMode->setCurrentIndex( cMode->findText(i18n("Bitrate")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->bitrate ); } return true; } void FaacCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString FaacCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 60 ) { return i18n("Very low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 80 ) { return i18n("Low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 100 ) { return i18n("Medium"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 140 ) { return i18n("High"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 180 ) { return i18n("Very high"); } return i18n("User defined"); } bool FaacCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 60 ); dQuality->setValue( 60 ); return true; } else if( profile == i18n("Low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 80 ); dQuality->setValue( 80 ); return true; } else if( profile == i18n("Medium") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 100 ); dQuality->setValue( 100 ); return true; } else if( profile == i18n("High") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 140 ); dQuality->setValue( 140 ); return true; } else if( profile == i18n("Very high") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 180 ); dQuality->setValue( 180 ); return true; } return false; } int FaacCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { // TODO calculate data rate for faac dataRate = 0; } return dataRate; } void FaacCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( 10, 500 ); // sQuality->setTickInterval( 100 ); sQuality->setSingleStep( 10 ); dQuality->setRange( 10, 500 ); dQuality->setSingleStep( 1 ); dQuality->setSuffix( "" ); sQuality->setValue( 100 ); dQuality->setValue( 100 ); // dQuality->setValue( qualityForBitrate(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); // cBitrateMode->clear(); // cBitrateMode->addItem( i18n("Variable") ); // cBitrateMode->setEnabled( false ); } else { sQuality->setRange( 60, 152 ); // max. value 152 kbps/stereo with a 16 kHz cutoff sQuality->setSingleStep( 8 ); dQuality->setRange( 60, 152 ); dQuality->setSingleStep( 1 ); dQuality->setSuffix( " kbps" ); sQuality->setValue( 128 ); dQuality->setValue( 128 ); // dQuality->setValue( bitrateForQuality(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); // cBitrateMode->clear(); // cBitrateMode->addItem( i18n("Average") ); // cBitrateMode->addItem( i18n("Constant") ); // cBitrateMode->setEnabled( true ); } } void FaacCodecWidget::qualitySliderChanged( int quality ) { dQuality->setValue( quality ); } void FaacCodecWidget::qualitySpinBoxChanged( int quality ) { sQuality->setValue( quality ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/PaxHeaders.25599/soundkonverter_codec_faac.0000644000175000001440000000006211374506670032076 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.607417698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/soundkonverter_codec_faac.desktop0000755000175000001440000000052711374506670033110 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter FAAC Plugin X-KDE-Library=soundkonverter_codec_faac ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_faac X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/PaxHeaders.25599/faaccodecglobal.h0000644000175000001440000000006211374506770030121 xustar000000000000000020 atime=1387530395 30 ctime=1387631578.607417698 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_faac/faaccodecglobal.h0000644000175000001440000000010511374506770027526 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "FAAC" #endif ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006111635146242022231 xustar000000000000000020 atime=1357667576 29 ctime=1387631578.63841731 ./soundkonverter-2.0.5/plugins/CMakeLists.txt0000644000175000001440000000032411635146242021642 0ustar00danielusers00000000000000file(GLOB _plugins *) foreach(_current_plugin ${_plugins}) if(IS_DIRECTORY ${_current_plugin}) add_subdirectory(${_current_plugin}) endif(IS_DIRECTORY ${_current_plugin}) endforeach(_current_plugin) ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_timidity0000644000175000001440000000006212105142355025550 xustar000000000000000020 atime=1357667235 30 ctime=1387631578.681416773 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/0000755000175000001440000000000012105142355025236 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/PaxHeaders.25599/timiditycodecwidget.cp0000644000175000001440000000006212105142355032207 xustar000000000000000020 atime=1387530388 30 ctime=1387631578.651417148 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/timiditycodecwidget.cpp0000644000175000001440000000222612105142355032002 0ustar00danielusers00000000000000 #include "timiditycodecglobal.h" #include "timiditycodecwidget.h" #include "../../core/conversionoptions.h" #include TimidityCodecWidget::TimidityCodecWidget() : CodecWidget(), currentFormat( "midi" ) {} TimidityCodecWidget::~TimidityCodecWidget() {} ConversionOptions *TimidityCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); return options; } bool TimidityCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; return true; } void TimidityCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString TimidityCodecWidget::currentProfile() { return i18n("Lossless"); } bool TimidityCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int TimidityCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } return dataRate; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605631030376 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.651417148 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/CMakeLists.txt0000755000175000001440000000123111726605631030007 0ustar00danielusers00000000000000project(soundkonverter_codec_timidity) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_timidity_SRCS soundkonverter_codec_timidity.cpp timiditycodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_timidity ${soundkonverter_codec_timidity_SRCS}) target_link_libraries(soundkonverter_codec_timidity ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_timidity DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_timidity.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/PaxHeaders.25599/soundkonverter_codec_t0000644000175000001440000000006211404674443032331 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.651417148 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/soundkonverter_codec_timidity.desktop0000755000175000001440000000054511404674443035012 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter TiMidity++ Plugin X-KDE-Library=soundkonverter_codec_timidity ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_timidity X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/PaxHeaders.25599/soundkonverter_codec_t0000644000175000001440000000006112105142355032317 xustar000000000000000020 atime=1368977616 29 ctime=1387631578.65441711 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/soundkonverter_codec_timidity.cpp0000755000175000001440000001032012105142355034102 0ustar00danielusers00000000000000 #include "timiditycodecglobal.h" #include "soundkonverter_codec_timidity.h" #include "../../core/conversionoptions.h" #include "timiditycodecwidget.h" soundkonverter_codec_timidity::soundkonverter_codec_timidity( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["timidity"] = ""; allCodecs += "midi"; allCodecs += "mod"; allCodecs += "wav"; } soundkonverter_codec_timidity::~soundkonverter_codec_timidity() {} QString soundkonverter_codec_timidity::name() { return global_plugin_name; } QList soundkonverter_codec_timidity::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "midi"; newTrunk.codecTo = "wav"; newTrunk.rating = 90; newTrunk.enabled = ( binaries["timidity"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "midi", "timidity" ) + "\n" + standardMessage( "install_opensource_backend", "timidity" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mod"; newTrunk.codecTo = "wav"; newTrunk.rating = 90; newTrunk.enabled = ( binaries["timidity"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "mod", "timidity" ) + "\n" + standardMessage( "install_opensource_backend", "timidity" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_timidity::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_timidity::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_timidity::hasInfo() { return false; } void soundkonverter_codec_timidity::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_timidity::newCodecWidget() { TimidityCodecWidget *widget = new TimidityCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_timidity::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_timidity::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(_conversionOptions) Q_UNUSED(tags) Q_UNUSED(replayGain) QStringList command; if( outputCodec == "wav" ) { command += binaries["timidity"]; command += "-Ow"; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; command += "\"" + escapeUrl(inputFile) + "\""; } return command; } float soundkonverter_codec_timidity::parseOutput( const QString& output ) { Q_UNUSED(output) // no output return -1; } #include "soundkonverter_codec_timidity.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/PaxHeaders.25599/timiditycodecglobal.h0000644000175000001440000000006211773075463032030 xustar000000000000000020 atime=1379576794 30 ctime=1387631578.675416848 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/timiditycodecglobal.h0000644000175000001440000000011311773075463031434 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "TiMidity++" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/PaxHeaders.25599/timiditycodecwidget.h0000644000175000001440000000006212105142355032034 xustar000000000000000020 atime=1360315629 30 ctime=1387631578.675416848 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/timiditycodecwidget.h0000644000175000001440000000115512105142355031447 0ustar00danielusers00000000000000 #ifndef TIMIDITYCODECWIDGET_H #define TIMIDITYCODECWIDGET_H #include "../../core/codecwidget.h" class TimidityCodecWidget : public CodecWidget { Q_OBJECT public: TimidityCodecWidget(); ~TimidityCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QString currentFormat; // holds the current output file format }; #endif // TIMIDITYCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/PaxHeaders.25599/soundkonverter_codec_t0000644000175000001440000000006212105142355032320 xustar000000000000000020 atime=1360315629 30 ctime=1387631578.681416773 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_timidity/soundkonverter_codec_timidity.h0000755000175000001440000000246212105142355033557 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_TIMIDITY_H #define SOUNDKONVERTER_CODEC_TIMIDITY_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_timidity : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_timidity( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_timidity(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& format ); void showConfigDialog( ActionType action, const QString& format, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( timidity, soundkonverter_codec_timidity ) #endif // SOUNDKONVERTER_CODEC_TIMIDITY_H ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_vorbistools0000644000175000001440000000006112105142355026300 xustar000000000000000020 atime=1357667235 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/0000755000175000001440000000000012105142355025767 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/PaxHeaders.25599/vorbistoolscodecglo0000644000175000001440000000006111773075463032404 xustar000000000000000020 atime=1360922605 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/vorbistoolscodecglobal.h0000644000175000001440000000011511773075463032720 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Vorbis Tools" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/PaxHeaders.25599/vorbistoolscodecwid0000644000175000001440000000006112105142355032367 xustar000000000000000020 atime=1360315629 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.h0000644000175000001440000000205512105142355032731 0ustar00danielusers00000000000000 #ifndef VORBISTOOLSCODECWIDGET_H #define VORBISTOOLSCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QDoubleSpinBox; class QCheckBox; // class QLabel; class VorbisToolsCodecWidget : public CodecWidget { Q_OBJECT public: VorbisToolsCodecWidget(); ~VorbisToolsCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: KComboBox *cMode; QSlider *sQuality; QDoubleSpinBox *dQuality; KComboBox *cBitrateMode; QString currentFormat; // holds the current output file format int bitrateForQuality( double quality ); double qualityForBitrate( int bitrate ); private slots: void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( double quality ); }; #endif // VORBISTOOLSCODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006111726605613031126 xustar000000000000000020 atime=1357667632 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/CMakeLists.txt0000755000175000001440000000126411726605613030546 0ustar00danielusers00000000000000project(soundkonverter_codec_vorbistools) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_vorbistools_SRCS soundkonverter_codec_vorbistools.cpp vorbistoolscodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_vorbistools ${soundkonverter_codec_vorbistools_SRCS}) target_link_libraries(soundkonverter_codec_vorbistools ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_vorbistools DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_vorbistools.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/PaxHeaders.25599/soundkonverter_code0000644000175000001440000000024311404672724032375 xustar0000000000000000114 path=./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.desktop 20 atime=1357667632 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.des0000755000175000001440000000055511404672724035377 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Vorbis Tools Plugin X-KDE-Library=soundkonverter_codec_vorbistools ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_vorbistools X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/PaxHeaders.25599/soundkonverter_code0000644000175000001440000000006112105142355032362 xustar000000000000000020 atime=1360315629 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.h0000755000175000001440000000252012105142355035034 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_VORBISTOOLS_H #define SOUNDKONVERTER_CODEC_VORBISTOOLS_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_vorbistools : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_vorbistools( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_vorbistools(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( vorbistools, soundkonverter_codec_vorbistools ) #endif // SOUNDKONVERTER_CODEC_VORBISTOOLS_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/PaxHeaders.25599/vorbistoolscodecwid0000644000175000001440000000006112105142355032367 xustar000000000000000020 atime=1371411854 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/vorbistoolscodecwidget.cpp0000644000175000001440000002063012105142355033263 0ustar00danielusers00000000000000 #include "vorbistoolscodecglobal.h" #include "vorbistoolscodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include #include #include VorbisToolsCodecWidget::VorbisToolsCodecWidget() : CodecWidget(), currentFormat( "ogg vorbis" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lMode = new QLabel( i18n("Mode:"), this ); topBox->addWidget( lMode ); cMode = new KComboBox( this ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cMode ); sQuality = new QSlider( Qt::Horizontal, this ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); dQuality = new QDoubleSpinBox( this ); dQuality->setRange( 8, 320 ); dQuality->setSuffix( " kbps" ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); connect( dQuality, SIGNAL(valueChanged(double)), this, SLOT(qualitySpinBoxChanged(double)) ); connect( dQuality, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); topBox->addWidget( dQuality ); topBox->addSpacing( 12 ); QLabel *lBitrateMode = new QLabel( i18n("Bitrate mode:"), this ); topBox->addWidget( lBitrateMode ); cBitrateMode = new KComboBox( this ); cBitrateMode->addItem( i18n("Variable") ); cBitrateMode->addItem( i18n("Average") ); cBitrateMode->addItem( i18n("Constant") ); cBitrateMode->setFixedWidth( cBitrateMode->sizeHint().width() ); connect( cBitrateMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cBitrateMode ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); modeChanged( 0 ); } VorbisToolsCodecWidget::~VorbisToolsCodecWidget() {} // TODO optimize int VorbisToolsCodecWidget::bitrateForQuality( double quality ) { return quality*100/3; } // TODO optimize double VorbisToolsCodecWidget::qualityForBitrate( int bitrate ) { return (double)bitrate*3/100; } ConversionOptions *VorbisToolsCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); if( cMode->currentText()==i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); options->bitrate = bitrateForQuality( options->quality ); options->bitrateMode = ConversionOptions::Vbr; } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = dQuality->value(); options->quality = qualityForBitrate( options->bitrate ); options->bitrateMode = ( cBitrateMode->currentText()==i18n("Average") ) ? ConversionOptions::Abr : ConversionOptions::Cbr; } return options; } bool VorbisToolsCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( cMode->findText(i18n("Quality")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->quality ); cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Variable")) ); } else { cMode->setCurrentIndex( cMode->findText(i18n("Bitrate")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->bitrate ); if( options->bitrateMode == ConversionOptions::Abr ) cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Average")) ); else cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Constant")) ); } return true; } void VorbisToolsCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString VorbisToolsCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 2.0 ) { return i18n("Very low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 3.0 ) { return i18n("Low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 4.0 ) { return i18n("Medium"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 5.0 ) { return i18n("High"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 6.0 ) { return i18n("Very high"); } return i18n("User defined"); } bool VorbisToolsCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 200 ); dQuality->setValue( 2.0 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 300 ); dQuality->setValue( 3.0 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Medium") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 400 ); dQuality->setValue( 4.0 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("High") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 500 ); dQuality->setValue( 5.0 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Very high") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 600 ); dQuality->setValue( 6.0 ); cBitrateMode->setCurrentIndex( 0 ); return true; } return false; } int VorbisToolsCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { if( cMode->currentIndex() == 0 ) { dataRate = 500000 + dQuality->value()*150000; if( dQuality->value() > 7 ) dataRate += (dQuality->value()-7)*250000; if( dQuality->value() > 9 ) dataRate += (dQuality->value()-9)*800000; } else { dataRate = dQuality->value()/8*60*1000; } } return dataRate; } void VorbisToolsCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( -100, 1000 ); sQuality->setSingleStep( 50 ); dQuality->setRange( -1, 10 ); dQuality->setSingleStep( 0.01 ); dQuality->setDecimals( 2 ); dQuality->setSuffix( "" ); sQuality->setValue( 400 ); dQuality->setValue( 4.0 ); // dQuality->setValue( qualityForBitrate(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); cBitrateMode->clear(); cBitrateMode->addItem( i18n("Variable") ); cBitrateMode->setEnabled( false ); } else { sQuality->setRange( 800, 32000 ); sQuality->setSingleStep( 800 ); dQuality->setRange( 8, 320 ); dQuality->setSingleStep( 1 ); dQuality->setDecimals( 0 ); dQuality->setSuffix( " kbps" ); sQuality->setValue( 16000 ); dQuality->setValue( 160 ); // dQuality->setValue( bitrateForQuality(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); cBitrateMode->clear(); cBitrateMode->addItem( i18n("Average") ); cBitrateMode->addItem( i18n("Constant") ); cBitrateMode->setEnabled( true ); } } void VorbisToolsCodecWidget::qualitySliderChanged( int quality ) { dQuality->setValue( double(quality)/100.0 ); } void VorbisToolsCodecWidget::qualitySpinBoxChanged( double quality ) { sQuality->setValue( round(quality*100.0) ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/PaxHeaders.25599/soundkonverter_code0000644000175000001440000000006112105142355032362 xustar000000000000000020 atime=1387530395 29 ctime=1387631578.73041616 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_vorbistools/soundkonverter_codec_vorbistools.cpp0000755000175000001440000001353012105142355035372 0ustar00danielusers00000000000000 #include "vorbistoolscodecglobal.h" #include "soundkonverter_codec_vorbistools.h" #include "../../core/conversionoptions.h" #include "vorbistoolscodecwidget.h" soundkonverter_codec_vorbistools::soundkonverter_codec_vorbistools( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["oggenc"] = ""; binaries["oggdec"] = ""; allCodecs += "ogg vorbis"; allCodecs += "wav"; } soundkonverter_codec_vorbistools::~soundkonverter_codec_vorbistools() {} QString soundkonverter_codec_vorbistools::name() { return global_plugin_name; } QList soundkonverter_codec_vorbistools::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "ogg vorbis"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["oggenc"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "ogg vorbis", "oggenc" ) + "\n" + i18n( "'%1' is usually in the package '%2' which should be shipped with your distribution.", QString("oggenc"), QString("vorbis-tools") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "ogg vorbis"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["oggdec"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "ogg vorbis", "oggdec" ) + "\n" + i18n( "'%1' is usually in the package '%2' which should be shipped with your distribution.", QString("oggdec"), QString("vorbis-tools") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_vorbistools::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_vorbistools::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_vorbistools::hasInfo() { return false; } void soundkonverter_codec_vorbistools::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_vorbistools::newCodecWidget() { VorbisToolsCodecWidget *widget = new VorbisToolsCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_vorbistools::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_vorbistools::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "ogg vorbis" ) { command += binaries["oggenc"]; // if( inputFile.isEmpty() ) // { // command += "--raw"; // } if( conversionOptions->qualityMode == ConversionOptions::Quality ) { command += "-q"; command += QString::number(conversionOptions->quality); } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { if( conversionOptions->bitrateMode == ConversionOptions::Abr ) { command += "-b"; command += QString::number(conversionOptions->bitrate); } else if( conversionOptions->bitrateMode == ConversionOptions::Cbr ) { command += "--managed"; command += "-b"; command += QString::number(conversionOptions->bitrate); } } command += "\"" + escapeUrl(inputFile) + "\""; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["oggdec"]; if( outputFile.isEmpty() ) { command += "-Q"; } command += "\"" + escapeUrl(inputFile) + "\""; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_vorbistools::parseOutput( const QString& output ) { // [ 99.5%] if( output == "" || !output.contains("%") || output.contains("error",Qt::CaseInsensitive) ) return -1; QString data = output; data.remove( 0, data.indexOf("[")+1 ); data = data.left( data.indexOf("%") ); return data.toFloat(); } #include "soundkonverter_codec_vorbistools.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_ripper_cdparanoia0000644000175000001440000000012012255306740026242 xustar000000000000000030 mtime=1387630048.456963347 20 atime=1357667235 30 ctime=1387631578.757415823 ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/0000755000175000001440000000000012255306740025735 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006111726605536031072 xustar000000000000000020 atime=1357667632 29 ctime=1387631578.75441586 ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/CMakeLists.txt0000755000175000001440000000120211726605536030502 0ustar00danielusers00000000000000project(soundkonverter_ripper_cdparanoia) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_ripper_cdparanoia_SRCS soundkonverter_ripper_cdparanoia.cpp ) kde4_add_plugin(soundkonverter_ripper_cdparanoia ${soundkonverter_ripper_cdparanoia_SRCS}) target_link_libraries(soundkonverter_ripper_cdparanoia ${KDE4_KDEUI_LIBS} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_ripper_cdparanoia DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_ripper_cdparanoia.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/PaxHeaders.25599/soundkonverter_ripp0000644000175000001440000000013112255306740032366 xustar000000000000000030 mtime=1387630048.456963347 30 atime=1387630048.456963347 29 ctime=1387631578.75441586 ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.cpp0000755000175000001440000001251712255306740035304 0ustar00danielusers00000000000000 #include "cdparanoiaripperglobal.h" #include "soundkonverter_ripper_cdparanoia.h" #include #include #include #include #include #include #include #include #include soundkonverter_ripper_cdparanoia::soundkonverter_ripper_cdparanoia( QObject *parent, const QStringList& args ) : RipperPlugin( parent ) { Q_UNUSED(args) binaries["cdparanoia"] = ""; } soundkonverter_ripper_cdparanoia::~soundkonverter_ripper_cdparanoia() {} QString soundkonverter_ripper_cdparanoia::name() { return global_plugin_name; } QList soundkonverter_ripper_cdparanoia::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "audio cd"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["cdparanoia"] != "" ); newTrunk.data.canRipEntireCd = true; newTrunk.problemInfo = i18n( "In order to rip audio cds per track or to a single file, you need to install 'cdparanoia'.\n'cdparanoia' is usually shipped with your distribution, the package name can vary." ); table.append( newTrunk ); return table; } bool soundkonverter_ripper_cdparanoia::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_ripper_cdparanoia::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_ripper_cdparanoia::hasInfo() { return false; } void soundkonverter_ripper_cdparanoia::showInfo( QWidget *parent ) { Q_UNUSED(parent) } unsigned int soundkonverter_ripper_cdparanoia::rip( const QString& device, int track, int tracks, const KUrl& outputFile ) { QStringList command; command += binaries["cdparanoia"]; command += "-e"; command += "-d"; command += device; if( track > 0 ) { command += QString::number(track); } else { command += "1-" + QString::number(tracks); } command += "\"" + outputFile.toLocalFile() + "\""; RipperPluginItem *newItem = new RipperPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_ripper_cdparanoia::ripCommand( const QString& device, int track, int tracks, const KUrl& outputFile ) { Q_UNUSED(device) Q_UNUSED(track) Q_UNUSED(tracks) Q_UNUSED(outputFile) return QStringList(); } float soundkonverter_ripper_cdparanoia::parseOutput( const QString& output, int *fromSector, int *toSector ) { // Ripping from sector 0 (track 1 [0:00.00]) // to sector 16361 (track 1 [3:38.11]) // ##: -2 [wrote] @ 19242887\n if( output.contains("sector") ) { if( fromSector && output.contains("from sector") ) { QString data = output; data.remove( 0, data.indexOf("from sector") + 11 ); data = data.left( data.indexOf("(") ); data = data.simplified(); *fromSector = data.toInt(); } if( toSector && output.contains("to sector") ) { QString data = output; data.remove( 0, data.indexOf("to sector") + 9 ); data = data.left( data.indexOf("(") ); data = data.simplified(); *toSector = data.toInt(); } return -1; } if( output == "" || !output.contains("@") ) return -1; if( !output.contains("[wrote] @") ) return 0; QString data = output; data.remove( 0, data.indexOf("[wrote] @") + 9 ); data = data.left( data.indexOf("\n") ); data = data.simplified(); return data.toFloat() / 1176; } float soundkonverter_ripper_cdparanoia::parseOutput( const QString& output ) { return parseOutput( output, 0, 0 ); } void soundkonverter_ripper_cdparanoia::processOutput() { RipperPluginItem *pluginItem; float progress; for( int i=0; iprocess == QObject::sender() ) { QString output = backendItems.at(i)->process->readAllStandardOutput().data(); pluginItem = qobject_cast(backendItems.at(i)); progress = parseOutput( output, &pluginItem->data.fromSector, &pluginItem->data.toSector ); if( progress == -1 && !output.simplified().isEmpty() ) logOutput( backendItems.at(i)->id, output ); progress = (progress-pluginItem->data.fromSector) * 100 / (pluginItem->data.toSector-pluginItem->data.fromSector); if( progress > backendItems.at(i)->progress ) backendItems.at(i)->progress = progress; return; } } } #include "soundkonverter_ripper_cdparanoia.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/PaxHeaders.25599/cdparanoiaripperglo0000644000175000001440000000006111271064043032265 xustar000000000000000020 atime=1387530397 29 ctime=1387631578.75441586 ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/cdparanoiaripperglobal.h0000644000175000001440000000011311271064043032577 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "cdparanoia" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/PaxHeaders.25599/soundkonverter_ripp0000644000175000001440000000013212255306740032367 xustar000000000000000030 mtime=1387630048.456963347 30 atime=1387630048.456963347 30 ctime=1387631578.757415823 ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.h0000755000175000001440000000237212255306740034747 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_RIPPER_CDPARANOIA_H #define SOUNDKONVERTER_RIPPER_CDPARANOIA_H #include "../../core/ripperplugin.h" #include #include #include class soundkonverter_ripper_cdparanoia : public RipperPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_ripper_cdparanoia( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_ripper_cdparanoia(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); unsigned int rip( const QString& device, int track, int tracks, const KUrl& outputFile ); QStringList ripCommand( const QString& device, int track, int tracks, const KUrl& outputFile ); float parseOutput( const QString& output, int *fromSector, int *toSector ); float parseOutput( const QString& output ); private slots: /** Get the process' output */ void processOutput(); }; K_EXPORT_SOUNDKONVERTER_RIPPER( cdparanoia, soundkonverter_ripper_cdparanoia ) #endif // SOUNDKONVERTER_RIPPER_CDPARANOIA_H ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/PaxHeaders.25599/soundkonverter_ripp0000644000175000001440000000024411271067021032364 xustar0000000000000000114 path=./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.desktop 20 atime=1357667632 30 ctime=1387631578.757415823 ./soundkonverter-2.0.5/plugins/soundkonverter_ripper_cdparanoia/soundkonverter_ripper_cdparanoia.des0000755000175000001440000000055411271067021035264 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter cdparanoia plugin X-KDE-Library=soundkonverter_ripper_cdparanoia ServiceTypes=soundKonverter/RipperPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_ripper_cdparanoia X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_fluidsynth0000644000175000001440000000006212105142354026104 xustar000000000000000020 atime=1357667235 30 ctime=1387631578.800415285 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/0000755000175000001440000000000012105142354025572 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/PaxHeaders.25599/fluidsynthcodecwidge0000644000175000001440000000006212105142354032313 xustar000000000000000020 atime=1360315628 30 ctime=1387631578.780415535 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.h0000644000175000001440000000117112105142354032336 0ustar00danielusers00000000000000 #ifndef FLUIDSYNTHCODECWIDGET_H #define FLUIDSYNTHCODECWIDGET_H #include "../../core/codecwidget.h" class FluidsynthCodecWidget : public CodecWidget { Q_OBJECT public: FluidsynthCodecWidget(); ~FluidsynthCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QString currentFormat; // holds the current output file format }; #endif // FLUIDSYNTHCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211603060115030715 xustar000000000000000020 atime=1357667633 30 ctime=1387631578.780415535 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/CMakeLists.txt0000644000175000001440000000127411603060115030332 0ustar00danielusers00000000000000project(soundkonverter_codec_fluidsynth) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_fluidsynth_SRCS soundkonverter_codec_fluidsynth.cpp fluidsynthcodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_fluidsynth ${soundkonverter_codec_fluidsynth_SRCS}) target_link_libraries(soundkonverter_codec_fluidsynth ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_fluidsynth DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_fluidsynth.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/PaxHeaders.25599/soundkonverter_codec0000644000175000001440000000024211603025544032334 xustar0000000000000000112 path=./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.desktop 20 atime=1357667633 30 ctime=1387631578.780415535 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.deskt0000644000175000001440000000055111603025544035330 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Fluidsynth Plugin X-KDE-Library=soundkonverter_codec_fluidsynth ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_fluidsynth X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/PaxHeaders.25599/soundkonverter_codec0000644000175000001440000000006212105142354032331 xustar000000000000000020 atime=1360315628 30 ctime=1387631578.800415285 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.h0000644000175000001440000000307512105142354034446 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_FLUIDSYNTH_H #define SOUNDKONVERTER_CODEC_FLUIDSYNTH_H #include "../../core/codecplugin.h" #include #include class ConversionOptions; class KDialog; class KUrlRequester; class soundkonverter_codec_fluidsynth : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_fluidsynth( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_fluidsynth(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& format ); void showConfigDialog( ActionType action, const QString& format, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); private: QWeakPointer configDialog; KUrlRequester *configDialogSoundFontUrlRequester; KUrl soundFontFile; private slots: void configDialogSave(); }; K_EXPORT_SOUNDKONVERTER_CODEC( fluidsynth, soundkonverter_codec_fluidsynth ) #endif // SOUNDKONVERTER_CODEC_FLUIDSYNTH_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/PaxHeaders.25599/fluidsynthcodecgloba0000644000175000001440000000006211603043354032302 xustar000000000000000020 atime=1387530393 30 ctime=1387631578.800415285 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecglobal.h0000644000175000001440000000011311603043354032310 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "FluidSynth" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/PaxHeaders.25599/fluidsynthcodecwidge0000644000175000001440000000006212105142354032313 xustar000000000000000020 atime=1371411849 30 ctime=1387631578.800415285 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/fluidsynthcodecwidget.cpp0000644000175000001440000000225612105142354032676 0ustar00danielusers00000000000000 #include "fluidsynthcodecglobal.h" #include "fluidsynthcodecwidget.h" #include "../../core/conversionoptions.h" #include FluidsynthCodecWidget::FluidsynthCodecWidget() : CodecWidget(), currentFormat( "midi" ) {} FluidsynthCodecWidget::~FluidsynthCodecWidget() {} ConversionOptions *FluidsynthCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); return options; } bool FluidsynthCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; return true; } void FluidsynthCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString FluidsynthCodecWidget::currentProfile() { return i18n("Lossless"); } bool FluidsynthCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int FluidsynthCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } return dataRate; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/PaxHeaders.25599/soundkonverter_codec0000644000175000001440000000006212105142354032331 xustar000000000000000020 atime=1379576797 30 ctime=1387631578.800415285 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_fluidsynth/soundkonverter_codec_fluidsynth.cpp0000644000175000001440000001523412105142354035001 0ustar00danielusers00000000000000 #include "fluidsynthcodecglobal.h" #include "soundkonverter_codec_fluidsynth.h" #include "../../core/conversionoptions.h" #include "fluidsynthcodecwidget.h" #include #include #include #include soundkonverter_codec_fluidsynth::soundkonverter_codec_fluidsynth( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["fluidsynth"] = ""; allCodecs += "midi"; allCodecs += "mod"; allCodecs += "wav"; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); soundFontFile = group.readEntry( "soundFontFile", KUrl() ); } soundkonverter_codec_fluidsynth::~soundkonverter_codec_fluidsynth() {} QString soundkonverter_codec_fluidsynth::name() { return global_plugin_name; } QList soundkonverter_codec_fluidsynth::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "midi"; newTrunk.codecTo = "wav"; newTrunk.rating = 90; newTrunk.enabled = ( binaries["fluidsynth"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "midi", "fluidsynth" ) + "\n" + standardMessage( "install_opensource_backend", "fluidsynth" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mod"; newTrunk.codecTo = "wav"; newTrunk.rating = 90; newTrunk.enabled = ( binaries["fluidsynth"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "mod", "fluidsynth" ) + "\n" + standardMessage( "install_opensource_backend", "fluidsynth" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_fluidsynth::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return true; } void soundkonverter_codec_fluidsynth::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) if( !configDialog.data() ) { configDialog = new KDialog( parent ); configDialog.data()->setCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QHBoxLayout *configDialogBox = new QHBoxLayout( configDialogWidget ); QLabel *configDialogSoundFontLabel = new QLabel( i18n("Use SoundFont file:"), configDialogWidget ); configDialogSoundFontLabel->setToolTip( i18n("In order to convert the midi data to a wave form you need a SoundFont which maps the midi data to sound effects.\nHave a look at %1 in order to get SoundFont files.",QString("http://sourceforge.net/apps/trac/fluidsynth/wiki/SoundFont")) ); configDialogBox->addWidget( configDialogSoundFontLabel ); configDialogSoundFontUrlRequester = new KUrlRequester( configDialogWidget ); configDialogSoundFontUrlRequester->setMinimumWidth( 200 ); configDialogBox->addWidget( configDialogSoundFontUrlRequester ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); } configDialogSoundFontUrlRequester->setUrl( soundFontFile ); configDialog.data()->show(); } void soundkonverter_codec_fluidsynth::configDialogSave() { if( configDialog.data() ) { soundFontFile = configDialogSoundFontUrlRequester->url().toLocalFile(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "soundFontFile", soundFontFile ); configDialog.data()->deleteLater(); } } bool soundkonverter_codec_fluidsynth::hasInfo() { return false; } void soundkonverter_codec_fluidsynth::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_fluidsynth::newCodecWidget() { FluidsynthCodecWidget *widget = new FluidsynthCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_fluidsynth::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { if( soundFontFile.isEmpty() ) { emit log( 1000, i18n("FluidSynth is not configured, yet. You need to set a SoundFont file.") ); return BackendPlugin::BackendNeedsConfiguration; } const QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) { return BackendPlugin::UnknownError; } CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_fluidsynth::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(_conversionOptions) Q_UNUSED(tags) Q_UNUSED(replayGain) if( soundFontFile.isEmpty() ) return QStringList(); if( outputFile.isEmpty() ) return QStringList(); QStringList command; if( outputCodec == "wav" ) { command += binaries["fluidsynth"]; command += "-l"; command += "--fast-render"; command += "\"" + escapeUrl(outputFile) + "\""; command += "\"" + escapeUrl(soundFontFile) + "\""; command += "\"" + escapeUrl(inputFile) + "\""; } return command; } float soundkonverter_codec_fluidsynth::parseOutput( const QString& output ) { Q_UNUSED(output) // no output return -1; } #include "soundkonverter_codec_fluidsynth.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_replaygain_wvgain0000644000175000001440000000006212105142356026266 xustar000000000000000020 atime=1357667235 30 ctime=1387631578.847414698 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/0000755000175000001440000000000012105142356025754 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006111726605544031115 xustar000000000000000020 atime=1357667632 29 ctime=1387631578.82241501 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/CMakeLists.txt0000755000175000001440000000120211726605544030525 0ustar00danielusers00000000000000project(soundkonverter_replaygain_wvgain) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_replaygain_wvgain_SRCS soundkonverter_replaygain_wvgain.cpp ) kde4_add_plugin(soundkonverter_replaygain_wvgain ${soundkonverter_replaygain_wvgain_SRCS}) target_link_libraries(soundkonverter_replaygain_wvgain ${KDE4_KDEUI_LIBS} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_replaygain_wvgain DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_replaygain_wvgain.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/PaxHeaders.25599/soundkonverter_repl0000644000175000001440000000024311441370014032375 xustar0000000000000000114 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.desktop 20 atime=1357667632 29 ctime=1387631578.82241501 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.des0000755000175000001440000000055411441370014035332 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter wvgain plugin X-KDE-Library=soundkonverter_replaygain_wvgain ServiceTypes=soundKonverter/ReplayGainPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_replaygain_wvgain X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/PaxHeaders.25599/wvreplaygainglobal.0000644000175000001440000000006211441370226032236 xustar000000000000000020 atime=1379576795 30 ctime=1387631578.847414698 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/wvreplaygainglobal.h0000644000175000001440000000011011441370226032007 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Wv Gain" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/PaxHeaders.25599/soundkonverter_repl0000644000175000001440000000006212105142356032400 xustar000000000000000020 atime=1360315630 30 ctime=1387631578.847414698 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.h0000755000175000001440000000174212105142356035012 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_REPLAYGAIN_WVGAIN_H #define SOUNDKONVERTER_REPLAYGAIN_WVGAIN_H #include "../../core/replaygainplugin.h" #include class ConversionOptions; class soundkonverter_replaygain_wvgain : public ReplayGainPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_replaygain_wvgain( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_replaygain_wvgain(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); unsigned int apply( const KUrl::List& fileList, ApplyMode mode = Add ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_REPLAYGAIN( wvgain, soundkonverter_replaygain_wvgain ) #endif // _SOUNDKONVERTER_REPLAYGAIN_WVGAIN_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/PaxHeaders.25599/soundkonverter_repl0000644000175000001440000000006212105142356032400 xustar000000000000000020 atime=1387530393 30 ctime=1387631578.847414698 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_wvgain/soundkonverter_replaygain_wvgain.cpp0000755000175000001440000000606112105142356035344 0ustar00danielusers00000000000000 #include "wvreplaygainglobal.h" #include "soundkonverter_replaygain_wvgain.h" soundkonverter_replaygain_wvgain::soundkonverter_replaygain_wvgain( QObject *parent, const QStringList& args ) : ReplayGainPlugin( parent ) { Q_UNUSED(args) binaries["wvgain"] = ""; allCodecs += "wavpack"; } soundkonverter_replaygain_wvgain::~soundkonverter_replaygain_wvgain() {} QString soundkonverter_replaygain_wvgain::name() { return global_plugin_name; } QList soundkonverter_replaygain_wvgain::codecTable() { QList table; ReplayGainPipe newPipe; newPipe.codecName = "wavpack"; newPipe.rating = 100; newPipe.enabled = ( binaries["wvgain"] != "" ); newPipe.problemInfo = standardMessage( "replaygain_codec,backend", "wavpack", "wvgain" ) + "\n" + i18n( "'%1' is usually in the package '%2' which you can download at %3", QString("wvgain"), QString("wavpack"), QString("http://www.wavpack.com") ); table.append( newPipe ); return table; } bool soundkonverter_replaygain_wvgain::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_replaygain_wvgain::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_replaygain_wvgain::hasInfo() { return false; } void soundkonverter_replaygain_wvgain::showInfo( QWidget *parent ) { Q_UNUSED(parent) } unsigned int soundkonverter_replaygain_wvgain::apply( const KUrl::List& fileList, ReplayGainPlugin::ApplyMode mode ) { if( fileList.count() <= 0 ) return BackendPlugin::UnknownError; ReplayGainPluginItem *newItem = new ReplayGainPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["wvgain"]; if( mode == ReplayGainPlugin::Add ) { command += "-a"; command += "-n"; } else if( mode == ReplayGainPlugin::Force ) { command += "-a"; } else { command += "-c"; } foreach( const KUrl file, fileList ) { command += "\"" + escapeUrl(file) + "\""; } newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } float soundkonverter_replaygain_wvgain::parseOutput( const QString& output ) { // analyzing test.wv, 35% done... QRegExp reg("\\s+(\\d+)% done"); if( output.contains(reg) ) { return (float)reg.cap(1).toInt(); } return -1; } #include "soundkonverter_replaygain_wvgain.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_aften0000644000175000001440000000006212105142353025007 xustar000000000000000020 atime=1357667235 30 ctime=1387631578.903413997 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/0000755000175000001440000000000012105142353024475 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211626453745027645 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.867414447 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/CMakeLists.txt0000755000175000001440000000117611626453745027266 0ustar00danielusers00000000000000project(soundkonverter_codec_aften) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_aften_SRCS soundkonverter_codec_aften.cpp aftencodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_aften ${soundkonverter_codec_aften_SRCS}) target_link_libraries(soundkonverter_codec_aften ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_aften DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_aften.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/PaxHeaders.25599/soundkonverter_codec_afte0000644000175000001440000000006112105142353032232 xustar000000000000000020 atime=1360315627 29 ctime=1387631578.89441411 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/soundkonverter_codec_aften.h0000755000175000001440000000244312105142353032256 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_AFTEN_H #define SOUNDKONVERTER_CODEC_AFTEN_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_aften : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_aften( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_aften(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( aften, soundkonverter_codec_aften ) #endif // _SOUNDKONVERTER_CODEC_AFTEN_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/PaxHeaders.25599/soundkonverter_codec_afte0000644000175000001440000000006111626454025032243 xustar000000000000000020 atime=1357667632 29 ctime=1387631578.89441411 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/soundkonverter_codec_aften.desktop0000755000175000001440000000053211626454025033506 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Aften Plugin X-KDE-Library=soundkonverter_codec_aften ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_aften X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/PaxHeaders.25599/aftencodecwidget.cpp0000644000175000001440000000006112105142353031066 xustar000000000000000020 atime=1379576791 29 ctime=1387631578.89441411 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/aftencodecwidget.cpp0000644000175000001440000001643312105142353030507 0ustar00danielusers00000000000000 #include "aftencodecglobal.h" #include "aftencodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include AftenCodecWidget::AftenCodecWidget() : CodecWidget(), currentFormat( "ac3" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lMode = new QLabel( i18n("Mode:"), this ); topBox->addWidget( lMode ); cMode = new KComboBox( this ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cMode ); sQuality = new QSlider( Qt::Horizontal, this ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); dQuality = new QSpinBox( this ); dQuality->setRange( 32, 640 ); dQuality->setSuffix( " kbps" ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); connect( dQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySpinBoxChanged(int)) ); connect( dQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( dQuality ); cBitrate = new KComboBox( this ); cBitrate->addItem( "32 kbps" ); cBitrate->addItem( "40 kbps" ); cBitrate->addItem( "48 kbps" ); cBitrate->addItem( "56 kbps" ); cBitrate->addItem( "64 kbps" ); cBitrate->addItem( "80 kbps" ); cBitrate->addItem( "96 kbps" ); cBitrate->addItem( "112 kbps" ); cBitrate->addItem( "128 kbps" ); cBitrate->addItem( "160 kbps" ); cBitrate->addItem( "192 kbps" ); cBitrate->addItem( "224 kbps" ); cBitrate->addItem( "256 kbps" ); cBitrate->addItem( "320 kbps" ); cBitrate->addItem( "384 kbps" ); cBitrate->addItem( "448 kbps" ); cBitrate->addItem( "512 kbps" ); cBitrate->addItem( "576 kbps" ); cBitrate->addItem( "640 kbps" ); cBitrate->hide(); connect( cBitrate, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cBitrate ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); modeChanged( 0 ); } AftenCodecWidget::~AftenCodecWidget() {} // TODO optimize !!! int AftenCodecWidget::bitrateForQuality( int quality ) { return quality*100/3; } // TODO optimize !!! int AftenCodecWidget::qualityForBitrate( int bitrate ) { return bitrate*3/100; } ConversionOptions *AftenCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); if( cMode->currentText()==i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); options->bitrate = bitrateForQuality( options->quality ); } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = cBitrate->currentText().replace(" kbps","").toInt(); options->quality = qualityForBitrate( cBitrate->currentText().replace(" kbps","").toInt() ); } return options; } bool AftenCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( cMode->findText(i18n("Quality")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->quality ); } else { cMode->setCurrentIndex( cMode->findText(i18n("Bitrate")) ); modeChanged( cMode->currentIndex() ); cBitrate->setCurrentIndex( cBitrate->findText(QString::number(options->bitrate)+" kbps") ); } return true; } void AftenCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } // TODO optimize !!! QString AftenCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 60 ) { return i18n("Very low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 80 ) { return i18n("Low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 100 ) { return i18n("Medium"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 140 ) { return i18n("High"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 180 ) { return i18n("Very high"); } return i18n("User defined"); } // TODO optimize !!! bool AftenCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 60 ); dQuality->setValue( 60 ); return true; } else if( profile == i18n("Low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 80 ); dQuality->setValue( 80 ); return true; } else if( profile == i18n("Medium") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 100 ); dQuality->setValue( 100 ); return true; } else if( profile == i18n("High") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 140 ); dQuality->setValue( 140 ); return true; } else if( profile == i18n("Very high") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 180 ); dQuality->setValue( 180 ); return true; } return false; } int AftenCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } void AftenCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( 0, 1023 ); sQuality->setSingleStep( 10 ); dQuality->setRange( 0, 1023 ); dQuality->setSingleStep( 1 ); dQuality->setSuffix( "" ); sQuality->setValue( 240 ); dQuality->setValue( 240 ); // dQuality->setValue( qualityForBitrate(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); sQuality->show(); dQuality->show(); cBitrate->hide(); } else { cBitrate->setCurrentIndex( cBitrate->findText("192 kbps") ); // dQuality->setValue( bitrateForQuality(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); sQuality->hide(); dQuality->hide(); cBitrate->show(); } } void AftenCodecWidget::qualitySliderChanged( int quality ) { dQuality->setValue( quality ); } void AftenCodecWidget::qualitySpinBoxChanged( int quality ) { sQuality->setValue( quality ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/PaxHeaders.25599/aftencodecglobal.h0000644000175000001440000000006211626453772030532 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.903413997 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/aftencodecglobal.h0000644000175000001440000000010611626453772030140 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Aften" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/PaxHeaders.25599/aftencodecwidget.h0000644000175000001440000000006212105142353030534 xustar000000000000000020 atime=1360315627 30 ctime=1387631578.903413997 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/aftencodecwidget.h0000644000175000001440000000171712105142353030153 0ustar00danielusers00000000000000 #ifndef AFTENCODECWIDGET_H #define AFTENCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QSpinBox; class AftenCodecWidget : public CodecWidget { Q_OBJECT public: AftenCodecWidget(); ~AftenCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: KComboBox *cMode; QSlider *sQuality; QSpinBox *dQuality; KComboBox *cBitrate; QString currentFormat; // holds the current output file format int bitrateForQuality( int quality ); int qualityForBitrate( int bitrate ); private slots: void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( int quality ); }; #endif // AFTENCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/PaxHeaders.25599/soundkonverter_codec_afte0000644000175000001440000000006212105142353032233 xustar000000000000000020 atime=1387530399 30 ctime=1387631578.903413997 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_aften/soundkonverter_codec_aften.cpp0000755000175000001440000001126012105142353032606 0ustar00danielusers00000000000000 #include "aftencodecglobal.h" #include "soundkonverter_codec_aften.h" #include "../../core/conversionoptions.h" #include "aftencodecwidget.h" soundkonverter_codec_aften::soundkonverter_codec_aften( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["aften"] = ""; allCodecs += "ac3"; allCodecs += "wav"; } soundkonverter_codec_aften::~soundkonverter_codec_aften() {} QString soundkonverter_codec_aften::name() { return global_plugin_name; } QList soundkonverter_codec_aften::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "ac3"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["aften"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "ac3", "aften" ) + "\n" + standardMessage( "install_opensource_backend", "aften" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "ac3"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["aften"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "ac3", "aften" ) + "\n" + standardMessage( "install_opensource_backend", "aften" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_aften::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_aften::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_aften::hasInfo() { return false; } void soundkonverter_codec_aften::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_aften::newCodecWidget() { AftenCodecWidget *widget = new AftenCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_aften::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { const QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_aften::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "ac3" ) { command += binaries["aften"]; if( conversionOptions->qualityMode == ConversionOptions::Quality ) { command += "-q"; command += QString::number(conversionOptions->quality); } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { command += "-b"; command += QString::number(conversionOptions->bitrate); } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_aften::parseOutput( const QString& output ) { // progress: 59% | q: 269.7 | bw: 44.0 | bitrate: 192.0 kbps QRegExp reg("progress:\\s+(\\d+)%"); if( output.contains(reg) ) { return (float)reg.cap(1).toInt(); } return -1; } #include "soundkonverter_codec_aften.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_ttaenc0000644000175000001440000000006212105142355025172 xustar000000000000000020 atime=1357667235 30 ctime=1387631578.948413435 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/0000755000175000001440000000000012105142355024660 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/PaxHeaders.25599/ttaenccodecglobal.h0000644000175000001440000000006211773075463031074 xustar000000000000000020 atime=1360922606 30 ctime=1387631578.927413697 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/ttaenccodecglobal.h0000644000175000001440000000011011773075463030475 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "TTA Enc" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605624030022 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.927413697 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/CMakeLists.txt0000755000175000001440000000120711726605624027436 0ustar00danielusers00000000000000project(soundkonverter_codec_ttaenc) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_ttaenc_SRCS soundkonverter_codec_ttaenc.cpp ttaenccodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_ttaenc ${soundkonverter_codec_ttaenc_SRCS}) target_link_libraries(soundkonverter_codec_ttaenc ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_ttaenc DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_ttaenc.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/PaxHeaders.25599/soundkonverter_codec_tta0000644000175000001440000000006212105142355032267 xustar000000000000000020 atime=1387530399 30 ctime=1387631578.927413697 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/soundkonverter_codec_ttaenc.cpp0000755000175000001440000001121212105142355033147 0ustar00danielusers00000000000000 #include "ttaenccodecglobal.h" #include "soundkonverter_codec_ttaenc.h" #include "../../core/conversionoptions.h" #include "ttaenccodecwidget.h" soundkonverter_codec_ttaenc::soundkonverter_codec_ttaenc( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["ttaenc"] = ""; allCodecs += "tta"; allCodecs += "wav"; } soundkonverter_codec_ttaenc::~soundkonverter_codec_ttaenc() {} QString soundkonverter_codec_ttaenc::name() { return global_plugin_name; } QList soundkonverter_codec_ttaenc::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "tta"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["ttaenc"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "tta", "ttaenc" ) + "\n" + standardMessage( "install_opensource_backend", "ttaenc" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "tta"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["ttaenc"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "tta", "ttaenc" ) + "\n" + standardMessage( "install_opensource_backend", "ttaenc" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_ttaenc::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_ttaenc::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_ttaenc::hasInfo() { return false; } void soundkonverter_codec_ttaenc::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_ttaenc::newCodecWidget() { TTAEncCodecWidget *widget = new TTAEncCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_ttaenc::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_ttaenc::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); if( inputFile.isEmpty() ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "tta" ) { command += binaries["ttaenc"]; command += "-e"; if( conversionOptions->pluginName == global_plugin_name ) { command += conversionOptions->cmdArguments; } command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; command += "\"" + escapeUrl(inputFile) + "\""; } else { command += binaries["ttaenc"]; command += "-d"; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; command += "\"" + escapeUrl(inputFile) + "\""; } return command; } float soundkonverter_codec_ttaenc::parseOutput( const QString& output ) { Q_UNUSED(output) // no output provided return -1; } #include "soundkonverter_codec_ttaenc.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/PaxHeaders.25599/ttaenccodecwidget.cpp0000644000175000001440000000006212105142355031433 xustar000000000000000020 atime=1379576794 30 ctime=1387631578.927413697 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.cpp0000644000175000001440000000437712105142355031057 0ustar00danielusers00000000000000 #include "ttaenccodecglobal.h" #include "ttaenccodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include TTAEncCodecWidget::TTAEncCodecWidget() : CodecWidget(), currentFormat( "tta" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); } TTAEncCodecWidget::~TTAEncCodecWidget() {} ConversionOptions *TTAEncCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Lossless; if( cCmdArguments->isChecked() ) options->cmdArguments = lCmdArguments->text(); else options->cmdArguments = ""; return options; } bool TTAEncCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void TTAEncCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString TTAEncCodecWidget::currentProfile() { return i18n("Lossless"); } bool TTAEncCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int TTAEncCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/PaxHeaders.25599/ttaenccodecwidget.h0000644000175000001440000000006212105142355031100 xustar000000000000000020 atime=1360315629 30 ctime=1387631578.927413697 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/ttaenccodecwidget.h0000644000175000001440000000127312105142355030514 0ustar00danielusers00000000000000 #ifndef FLACCODECWIDGET_H #define FLACCODECWIDGET_H #include "../../core/codecwidget.h" class QCheckBox; class KLineEdit; class TTAEncCodecWidget : public CodecWidget { Q_OBJECT public: TTAEncCodecWidget(); ~TTAEncCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format }; #endif // FLACCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/PaxHeaders.25599/soundkonverter_codec_tta0000644000175000001440000000006211723707255032302 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.927413697 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/soundkonverter_codec_ttaenc.desktop0000755000175000001440000000053611723707255034060 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter TTA Enc Plugin X-KDE-Library=soundkonverter_codec_ttaenc ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_ttaenc X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/PaxHeaders.25599/soundkonverter_codec_tta0000644000175000001440000000006212105142355032267 xustar000000000000000020 atime=1360315629 30 ctime=1387631578.948413435 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ttaenc/soundkonverter_codec_ttaenc.h0000755000175000001440000000245312105142355032623 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_TTAENC_H #define SOUNDKONVERTER_CODEC_TTAENC_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_ttaenc : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_ttaenc( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_ttaenc(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( ttaenc, soundkonverter_codec_ttaenc ) #endif // _SOUNDKONVERTER_CODEC_TTAENC_H_ ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_libav0000644000175000001440000000006112105142507025007 xustar000000000000000020 atime=1360315719 29 ctime=1387631578.97041316 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/0000755000175000001440000000000012105142507024476 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006212105142507027625 xustar000000000000000020 atime=1360315719 30 ctime=1387631578.968413185 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/CMakeLists.txt0000755000175000001440000000117612105142507027246 0ustar00danielusers00000000000000project(soundkonverter_codec_libav) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_libav_SRCS soundkonverter_codec_libav.cpp libavcodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_libav ${soundkonverter_codec_libav_SRCS}) target_link_libraries(soundkonverter_codec_libav ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_libav DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_libav.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/PaxHeaders.25599/soundkonverter_codec_liba0000644000175000001440000000006212105142507032224 xustar000000000000000020 atime=1360315719 30 ctime=1387631578.968413185 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.desktop0000755000175000001440000000053212105142507033476 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter libav Plugin X-KDE-Library=soundkonverter_codec_libav ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_libav X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/PaxHeaders.25599/soundkonverter_codec_liba0000644000175000001440000000006112105142507032223 xustar000000000000000020 atime=1360315719 29 ctime=1387631578.97041316 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.h0000755000175000001440000000452012105142507032255 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_FFMPEG_H #define SOUNDKONVERTER_CODEC_FFMPEG_H #include "../../core/codecplugin.h" #include #include class ConversionOptions; class KDialog; class QCheckBox; class soundkonverter_codec_libav : public CodecPlugin { Q_OBJECT public: struct LibavCodecData { QString name; bool external; bool experimental; }; struct CodecData { QString codecName; QList libavCodecList; LibavCodecData currentLibavCodec; }; /** Default Constructor */ soundkonverter_codec_libav( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_libav(); QString name(); int version(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output, int *length ); float parseOutput( const QString& output ); private: QList codecList; QWeakPointer infoProcess; QString infoProcessOutputData; QWeakPointer configDialog; QCheckBox *configDialogExperimantalCodecsEnabledCheckBox; int configVersion; bool experimentalCodecsEnabled; int libavVersionMajor; int libavVersionMinor; QDateTime libavLastModified; QSet libavCodecList; private slots: /** Get the process' output */ void processOutput(); void configDialogSave(); void configDialogDefault(); void infoProcessOutput(); void infoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ); }; K_EXPORT_SOUNDKONVERTER_CODEC( libav, soundkonverter_codec_libav ) #endif // _SOUNDKONVERTER_CODEC_FFMPEG_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/PaxHeaders.25599/libavcodecwidget.h0000644000175000001440000000006112105142507030534 xustar000000000000000020 atime=1360315719 29 ctime=1387631578.97041316 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/libavcodecwidget.h0000644000175000001440000000170612105142507030152 0ustar00danielusers00000000000000 #ifndef FFMPEGCODECWIDGET_H #define FFMPEGCODECWIDGET_H #include "../../core/codecwidget.h" class QLabel; class QSlider; class QSpinBox; class QCheckBox; class KComboBox; class KLineEdit; class LibavCodecWidget : public CodecWidget { Q_OBJECT public: LibavCodecWidget(); ~LibavCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QLabel *lBitrate; QSlider *sBitrate; QSpinBox *iBitrate; KComboBox *cBitrate; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format private slots: void qualitySliderChanged( int bitrate ); void qualitySpinBoxChanged( int bitrate ); }; #endif // FFMPEGCODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/PaxHeaders.25599/libavcodecglobal.h0000644000175000001440000000006112105142507030511 xustar000000000000000020 atime=1387530396 29 ctime=1387631578.97041316 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/libavcodecglobal.h0000644000175000001440000000021412105142507030120 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "libav" #endif #ifndef global_plugin_version #define global_plugin_version 2 #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/PaxHeaders.25599/libavcodecwidget.cpp0000644000175000001440000000006112105142507031067 xustar000000000000000020 atime=1371411860 29 ctime=1387631578.97041316 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/libavcodecwidget.cpp0000644000175000001440000002217412105142507030507 0ustar00danielusers00000000000000 #include "libavcodecglobal.h" #include "libavcodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include #include #include #include LibavCodecWidget::LibavCodecWidget() : CodecWidget(), currentFormat( "ogg vorbis" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); lBitrate = new QLabel( i18n("Bitrate:"), this ); topBox->addWidget( lBitrate ); sBitrate = new QSlider( Qt::Horizontal, this ); sBitrate->setRange( 8, 320 ); sBitrate->setValue( 160 ); connect( sBitrate, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sBitrate, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sBitrate ); iBitrate = new QSpinBox( this ); iBitrate->setRange( 8, 320 ); iBitrate->setValue( 160 ); iBitrate->setSuffix( " kbps" ); iBitrate->setFixedWidth( iBitrate->sizeHint().width() ); connect( iBitrate, SIGNAL(valueChanged(int)), this, SLOT(qualitySpinBoxChanged(int)) ); connect( iBitrate, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( iBitrate ); cBitrate = new KComboBox( this ); cBitrate->addItem( "32 kbps" ); cBitrate->addItem( "40 kbps" ); cBitrate->addItem( "48 kbps" ); cBitrate->addItem( "56 kbps" ); cBitrate->addItem( "64 kbps" ); cBitrate->addItem( "80 kbps" ); cBitrate->addItem( "96 kbps" ); cBitrate->addItem( "112 kbps" ); cBitrate->addItem( "128 kbps" ); cBitrate->addItem( "160 kbps" ); cBitrate->addItem( "192 kbps" ); cBitrate->addItem( "224 kbps" ); cBitrate->addItem( "256 kbps" ); cBitrate->addItem( "320 kbps" ); cBitrate->addItem( "384 kbps" ); cBitrate->addItem( "448 kbps" ); cBitrate->addItem( "512 kbps" ); cBitrate->addItem( "576 kbps" ); cBitrate->addItem( "640 kbps" ); cBitrate->setCurrentIndex( 10 ); cBitrate->hide(); connect( cBitrate, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cBitrate ); topBox->addStretch(); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); } LibavCodecWidget::~LibavCodecWidget() {} ConversionOptions *LibavCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Bitrate; if( currentFormat == "ac3" ) options->bitrate = cBitrate->currentText().replace(" kbps","").toInt(); else options->bitrate = iBitrate->value(); options->quality = -1000; options->bitrateMode = ConversionOptions::Cbr; if( cCmdArguments->isChecked() ) options->cmdArguments = lCmdArguments->text(); else options->cmdArguments = ""; return options; } bool LibavCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( currentFormat == "ac3" ) cBitrate->setCurrentIndex( cBitrate->findText(QString::number(options->bitrate)+" kbps") ); else iBitrate->setValue( options->bitrate ); cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void LibavCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; if( currentFormat == "wav" ) { lBitrate->hide(); sBitrate->hide(); iBitrate->hide(); cBitrate->hide(); cCmdArguments->hide(); lCmdArguments->hide(); } else if( currentFormat == "flac" || currentFormat == "m4a/alac" ) { lBitrate->hide(); sBitrate->hide(); iBitrate->hide(); cBitrate->hide(); cCmdArguments->show(); lCmdArguments->show(); } else if( currentFormat == "ac3" ) { lBitrate->show(); sBitrate->hide(); iBitrate->hide(); cBitrate->show(); cCmdArguments->show(); lCmdArguments->show(); } else { lBitrate->show(); sBitrate->show(); iBitrate->show(); cBitrate->hide(); cCmdArguments->show(); lCmdArguments->show(); } if( currentFormat == "mp2" ) { sBitrate->setRange( 32, 384 ); iBitrate->setRange( 32, 384 ); } else { sBitrate->setRange( 8, 320 ); iBitrate->setRange( 8, 320 ); } } QString LibavCodecWidget::currentProfile() { if( currentFormat == "wav" || currentFormat == "flac" || currentFormat == "m4a/alac" ) { return i18n("Lossless"); } else if( currentFormat == "amr nb" || currentFormat == "speex" ) { return i18n("User defined"); } else if( currentFormat == "ac3" ) { if( cBitrate->currentText() == "64 kbps" ) { return i18n("Very low"); } else if( cBitrate->currentText() == "128 kbps" ) { return i18n("Low"); } else if( cBitrate->currentText() == "192 kbps" ) { return i18n("Medium"); } else if( cBitrate->currentText() == "320 kbps" ) { return i18n("High"); } else if( cBitrate->currentText() == "640 kbps" ) { return i18n("Very high"); } } else { if( iBitrate->value() == 64 ) { return i18n("Very low"); } else if( iBitrate->value() == 128 ) { return i18n("Low"); } else if( iBitrate->value() == 160 ) { return i18n("Medium"); } else if( iBitrate->value() == 240 ) { return i18n("High"); } else if( iBitrate->value() == 320 ) { return i18n("Very high"); } } return i18n("User defined"); } bool LibavCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("64 kbps") ); } else { sBitrate->setValue( 64 ); iBitrate->setValue( 64 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Low") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("128 kbps") ); } else { sBitrate->setValue( 128 ); iBitrate->setValue( 128 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Medium") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("192 kbps") ); } else { sBitrate->setValue( 160 ); iBitrate->setValue( 160 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("High") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("320 kbps") ); } else { sBitrate->setValue( 240 ); iBitrate->setValue( 240 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Very high") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("640 kbps") ); } else { sBitrate->setValue( 320 ); iBitrate->setValue( 320 ); } cCmdArguments->setChecked( false ); return true; } return false; } int LibavCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else if( currentFormat == "flac" || currentFormat == "m4a/alac" ) { dataRate = 6520000; } else if( currentFormat == "ac3" ) { dataRate = cBitrate->currentText().replace(" kbps","").toInt()/8*60*1000; } else { dataRate = iBitrate->value()/8*60*1000; } return dataRate; } void LibavCodecWidget::qualitySliderChanged( int bitrate ) { iBitrate->setValue( bitrate ); } void LibavCodecWidget::qualitySpinBoxChanged( int bitrate ) { sBitrate->setValue( bitrate ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/PaxHeaders.25599/soundkonverter_codec_liba0000644000175000001440000000006112105142507032223 xustar000000000000000020 atime=1379147586 29 ctime=1387631578.97041316 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_libav/soundkonverter_codec_libav.cpp0000755000175000001440000004773612105142507032630 0ustar00danielusers00000000000000 #include "libavcodecglobal.h" #include "soundkonverter_codec_libav.h" #include "libavcodecwidget.h" #include "../../core/conversionoptions.h" #include "../../metadata/tagengine.h" #include #include #include #include #include // TODO check for decoders at runtime, too soundkonverter_codec_libav::soundkonverter_codec_libav( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["avconv"] = ""; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); configVersion = group.readEntry( "configVersion", 0 ); experimentalCodecsEnabled = group.readEntry( "experimentalCodecsEnabled", false ); libavVersionMajor = group.readEntry( "libavVersionMajor", 0 ); libavVersionMinor = group.readEntry( "libavVersionMinor", 0 ); libavLastModified = group.readEntry( "libavLastModified", QDateTime() ); libavCodecList = group.readEntry( "codecList", QStringList() ).toSet(); CodecData data; LibavCodecData libavData; // WARNING enabled codecs need to be rescanned everytime new codecs are added here -> increase plugin version data.libavCodecList.clear(); data.codecName = "wav"; libavData.name = "wav"; libavData.external = false; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "ogg vorbis"; libavData.name = "libvorbis"; libavData.external = true; libavData.experimental = false; data.libavCodecList.append( libavData ); libavData.name = "vorbis"; libavData.external = true; // ? libavData.experimental = true; data.libavCodecList.append( libavData ); codecList.append( data ); // data.libavCodecList.clear(); // data.codecName = "opus"; // libavData.name = "opus"; // libavData.external = true; // libavData.experimental = false; // data.libavCodecList.append( libavData ); // codecList.append( data ); data.libavCodecList.clear(); data.codecName = "mp3"; libavData.name = "libmp3lame"; libavData.external = true; libavData.experimental = false; data.libavCodecList.append( libavData ); libavData.name = "mp3"; libavData.external = true; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "flac"; libavData.name = "flac"; libavData.external = false; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "wma"; libavData.name = "wmav2"; libavData.external = false; libavData.experimental = false; data.libavCodecList.append( libavData ); libavData.name = "wmav1"; libavData.external = false; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "aac"; libavData.name = "libfaac"; libavData.external = true; libavData.experimental = false; data.libavCodecList.append( libavData ); libavData.name = "aac"; libavData.external = false; libavData.experimental = true; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "m4a/aac"; libavData.name = "libfaac"; libavData.external = true; libavData.experimental = false; data.libavCodecList.append( libavData ); libavData.name = "aac"; libavData.external = false; libavData.experimental = true; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "ac3"; libavData.name = "ac3"; libavData.external = false; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "m4a/alac"; libavData.name = "alac"; libavData.external = false; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "mp2"; libavData.name = "mp2"; libavData.external = false; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); data.libavCodecList.clear(); data.codecName = "amr nb"; libavData.name = "libopencore_amrnb"; libavData.external = true; libavData.experimental = false; data.libavCodecList.append( libavData ); libavData.name = "amr_nb"; libavData.external = true; libavData.experimental = false; data.libavCodecList.append( libavData ); codecList.append( data ); // codecMap["sonic"] = "sonic"; // codecMap["sonic lossless"] = "sonicls"; // codecMap["real audio 1"] = "real_144"; // codecMap["e-ac3"] = "eac3"; for( int i=0; i soundkonverter_codec_libav::codecTable() { QList table; QStringList fromCodecs; QStringList toCodecs; /// decode fromCodecs += "wav"; fromCodecs += "ogg vorbis"; // fromCodecs += "opus"; fromCodecs += "mp3"; fromCodecs += "flac"; fromCodecs += "wma"; fromCodecs += "aac"; fromCodecs += "ac3"; fromCodecs += "m4a/alac"; fromCodecs += "mp2"; // fromCodecs += "sonic"; // fromCodecs += "sonic lossless"; fromCodecs += "als"; fromCodecs += "amr nb"; fromCodecs += "amr wb"; fromCodecs += "ape"; // fromCodecs += "e-ac3"; fromCodecs += "speex"; fromCodecs += "m4a/aac"; fromCodecs += "mp1"; fromCodecs += "musepack"; fromCodecs += "shorten"; // fromCodecs += "mlp"; // fromCodecs += "truehd"; // fromCodecs += "truespeech"; fromCodecs += "tta"; fromCodecs += "wavpack"; fromCodecs += "ra"; fromCodecs += "sad"; /// containers fromCodecs += "3gp"; fromCodecs += "rm"; /// video fromCodecs += "avi"; fromCodecs += "mkv"; fromCodecs += "ogv"; fromCodecs += "mpeg"; fromCodecs += "mov"; fromCodecs += "mp4"; fromCodecs += "flv"; fromCodecs += "wmv"; fromCodecs += "rv"; /// encode if( !binaries["avconv"].isEmpty() ) { QFileInfo libavInfo( binaries["avconv"] ); if( libavInfo.lastModified() > libavLastModified || configVersion < version() ) { infoProcess = new KProcess(); infoProcess.data()->setOutputChannelMode( KProcess::MergedChannels ); connect( infoProcess.data(), SIGNAL(readyRead()), this, SLOT(infoProcessOutput()) ); connect( infoProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(infoProcessExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["avconv"]; command += "-codecs"; infoProcess.data()->clearProgram(); infoProcess.data()->setShellCommand( command.join(" ") ); infoProcess.data()->start(); infoProcess.data()->waitForFinished( 3000 ); } } for( int i=0; i codecs; codecs += QSet::fromList(fromCodecs); codecs += QSet::fromList(toCodecs); allCodecs = codecs.toList(); return table; } bool soundkonverter_codec_libav::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return true; } void soundkonverter_codec_libav::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) if( !configDialog.data() ) { configDialog = new KDialog( parent ); configDialog.data()->setCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Default ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QHBoxLayout *configDialogBox = new QHBoxLayout( configDialogWidget ); configDialogExperimantalCodecsEnabledCheckBox = new QCheckBox( i18n("Enable experimental codecs"), configDialogWidget ); configDialogBox->addWidget( configDialogExperimantalCodecsEnabledCheckBox ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); connect( configDialog.data(), SIGNAL( defaultClicked() ), this, SLOT( configDialogDefault() ) ); } configDialogExperimantalCodecsEnabledCheckBox->setChecked( experimentalCodecsEnabled ); configDialog.data()->show(); } void soundkonverter_codec_libav::configDialogSave() { if( configDialog.data() ) { const bool old_experimentalCodecsEnabled = experimentalCodecsEnabled; experimentalCodecsEnabled = configDialogExperimantalCodecsEnabledCheckBox->isChecked(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "experimentalCodecsEnabled", experimentalCodecsEnabled ); if( experimentalCodecsEnabled != old_experimentalCodecsEnabled ) { KMessageBox::information( configDialog.data(), i18n("Please restart soundKonverter in order to activate the changes.") ); } configDialog.data()->deleteLater(); } } void soundkonverter_codec_libav::configDialogDefault() { if( configDialog.data() ) { configDialogExperimantalCodecsEnabledCheckBox->setChecked( false ); } } bool soundkonverter_codec_libav::hasInfo() { return false; } void soundkonverter_codec_libav::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_libav::newCodecWidget() { LibavCodecWidget *widget = new LibavCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_libav::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec != "wav" ) { command += binaries["avconv"]; command += "-i"; command += "\"" + escapeUrl(inputFile) + "\""; for( int i=0; ibitrate) + "k"; } if( conversionOptions->pluginName == name() ) { command += conversionOptions->cmdArguments; } command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["avconv"]; command += "-i"; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); if( tags ) newItem->data.length = tags->length; newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_libav::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputFile) Q_UNUSED(outputFile) Q_UNUSED(inputCodec) Q_UNUSED(outputCodec) Q_UNUSED(_conversionOptions) Q_UNUSED(tags) Q_UNUSED(replayGain) return QStringList(); } float soundkonverter_codec_libav::parseOutput( const QString& output, int *length ) { // Duration: 00:02:16.50, start: 0.000000, bitrate: 1411 kb/s // size= 2445kB time=158.31 bitrate= 169.3kbits/s QRegExp regLength("Duration: (\\d{2}):(\\d{2}):(\\d{2})\\.(\\d{2})"); if( length && output.contains(regLength) ) { *length = regLength.cap(1).toInt()*3600 + regLength.cap(2).toInt()*60 + regLength.cap(3).toInt(); } QRegExp reg1("time=(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d{2})"); QRegExp reg2("time=(\\d+)\\.\\d"); if( output.contains(reg1) ) { return reg1.cap(1).toInt()*3600 + reg1.cap(2).toInt()*60 + reg1.cap(3).toInt(); } else if( output.contains(reg2) ) { return reg2.cap(1).toInt(); } // TODO error handling // Error while decoding stream #0.0 return -1; } float soundkonverter_codec_libav::parseOutput( const QString& output ) { return parseOutput( output, 0 ); } void soundkonverter_codec_libav::processOutput() { for( int i=0; iprocess == QObject::sender() ) { const QString output = backendItems.at(i)->process->readAllStandardOutput().data(); CodecPluginItem *pluginItem = qobject_cast(backendItems.at(i)); float progress = parseOutput( output, &pluginItem->data.length ); if( progress == -1 && !output.simplified().isEmpty() ) logOutput( backendItems.at(i)->id, output ); progress = progress * 100 / pluginItem->data.length; if( progress > backendItems.at(i)->progress ) backendItems.at(i)->progress = progress; return; } } } void soundkonverter_codec_libav::infoProcessOutput() { infoProcessOutputData.append( infoProcess.data()->readAllStandardOutput().data() ); } void soundkonverter_codec_libav::infoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ) { Q_UNUSED(exitStatus) Q_UNUSED(exitCode) QRegExp regVersion("libav version (\\d+)\\.(\\d+) "); if( infoProcessOutputData.contains( regVersion ) ) { libavVersionMajor = regVersion.cap(1).toInt(); libavVersionMinor = regVersion.cap(2).toInt(); } libavCodecList.clear(); for( int i=0; igroup( "Plugin-"+name() ); group.writeEntry( "configVersion", version() ); group.writeEntry( "libavVersionMajor", libavVersionMajor ); group.writeEntry( "libavVersionMinor", libavVersionMinor ); group.writeEntry( "libavLastModified", libavLastModified ); group.writeEntry( "codecList", libavCodecList.toList() ); infoProcessOutputData.clear(); infoProcess.data()->deleteLater(); } #include "soundkonverter_codec_libav.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_lame0000644000175000001440000000006212105142354024631 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.017412572 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/0000755000175000001440000000000012105142354024317 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/lamecodecwidget.cpp0000644000175000001440000000006212105142354030532 xustar000000000000000020 atime=1360315628 30 ctime=1387631578.983412997 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/lamecodecwidget.cpp0000644000175000001440000004411512105142354030150 0ustar00danielusers00000000000000 #include "lamecodecglobal.h" #include "lamecodecwidget.h" #include "lameconversionoptions.h" #include #include #include #include #include #include #include #include LameCodecWidget::LameCodecWidget() : CodecWidget(), currentFormat( "mp3" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up preset selection QHBoxLayout *presetBox = new QHBoxLayout(); grid->addLayout( presetBox, 0, 0 ); QLabel *lPreset = new QLabel( i18n("Preset:"), this ); presetBox->addWidget( lPreset ); cPreset = new KComboBox( this ); cPreset->addItem( i18nc("Backend profile","Medium") ); cPreset->addItem( i18nc("Backend profile","Standard") ); cPreset->addItem( i18nc("Backend profile","Extreme") ); cPreset->addItem( i18nc("Backend profile","Insane") ); cPreset->addItem( i18n("Specify bitrate") ); cPreset->addItem( i18n("User defined") ); connect( cPreset, SIGNAL(activated(const QString&)), this, SLOT(presetChanged(const QString&)) ); connect( cPreset, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); presetBox->addWidget( cPreset ); // cPreset->setToolTip( i18n("Either use one of lames's presets or your own settings.") ); iPresetBitrate = new QSpinBox( this ); iPresetBitrate->setRange( 8, 320 ); iPresetBitrate->setSuffix( " kbps" ); iPresetBitrate->setValue( 192 ); connect( iPresetBitrate, SIGNAL(valueChanged(int)), this, SLOT(presetBitrateChanged(int)) ); connect( iPresetBitrate, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); presetBox->addWidget( iPresetBitrate ); cPresetBitrateCbr = new QCheckBox( i18n("cbr"), this ); connect( cPresetBitrateCbr, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()) ); presetBox->addWidget( cPresetBitrateCbr ); cPresetBitrateCbr->setToolTip( i18n("Encode using a constant bitrate.\nOnly works with 80, 96, 112, 128, 160, 192, 224, 256 and 320 kbps") ); presetBox->addSpacing( 12 ); cPresetFast = new QCheckBox( i18n("Fast encoding"), this ); connect( cPresetFast, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()) ); presetBox->addWidget( cPresetFast ); cPresetFast->setToolTip( i18n("Use a faster encoding algorithm (results in a slightly lower output quality).") ); presetBox->addStretch(); // set up user defined options userdefinedBox = new QGroupBox( /*i18n("User defined"),*/ this ); grid->addWidget( userdefinedBox, 1, 0 ); QVBoxLayout *userdefinedBoxLayout = new QVBoxLayout(); userdefinedBox->setLayout( userdefinedBoxLayout ); // top box ---------------------------------------- QHBoxLayout *userdefinedTopBox = new QHBoxLayout(); userdefinedBoxLayout->addLayout( userdefinedTopBox ); QLabel *lMode = new QLabel( i18n("Mode:"), userdefinedBox ); userdefinedTopBox->addWidget( lMode ); cMode = new KComboBox( userdefinedBox ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); userdefinedTopBox->addWidget( cMode ); sQuality = new QSlider( Qt::Horizontal, userdefinedBox ); sQuality->setRange( 8, 320 ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); userdefinedTopBox->addWidget( sQuality ); iQuality = new QSpinBox( userdefinedBox ); iQuality->setRange( 8, 320 ); iQuality->setSuffix( " kbps" ); iQuality->setFixedWidth( iQuality->sizeHint().width() ); connect( iQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySpinBoxChanged(int)) ); connect( iQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); userdefinedTopBox->addWidget( iQuality ); userdefinedTopBox->addSpacing( 12 ); QLabel *lBitrateMode = new QLabel( i18n("Bitrate mode:"), this ); userdefinedTopBox->addWidget( lBitrateMode ); cBitrateMode = new KComboBox( this ); cBitrateMode->addItem( i18n("Variable") ); cBitrateMode->addItem( i18n("Average") ); cBitrateMode->addItem( i18n("Constant") ); cBitrateMode->setFixedWidth( cBitrateMode->sizeHint().width() ); connect( cBitrateMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); userdefinedTopBox->addWidget( cBitrateMode ); userdefinedTopBox->addStretch(); // bottom box QHBoxLayout *bottomBox = new QHBoxLayout(); grid->addLayout( bottomBox, 2, 0 ); QLabel *lCompressionLevel = new QLabel( i18n("Compression level:"), this ); bottomBox->addWidget( lCompressionLevel ); sCompressionLevel = new QSlider( Qt::Horizontal, this ); sCompressionLevel->setRange( 0, 9 ); sCompressionLevel->setSingleStep( 1 ); sCompressionLevel->setPageStep( 1 ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSliderChanged(int)) ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); bottomBox->addWidget( sCompressionLevel ); sCompressionLevel->setToolTip( i18n("Compression level from 9 to 0 where 0 is the highest quality.\n(The higher the quality, the slower the conversion and vice versa.)\nA value of 2 is recommended.") ); iCompressionLevel = new QSpinBox( this ); iCompressionLevel->setRange( 0, 9 ); iCompressionLevel->setSingleStep( 1 ); iCompressionLevel->setFixedWidth( iCompressionLevel->sizeHint().width() ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSpinBoxChanged(int)) ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); bottomBox->addWidget( iCompressionLevel ); iCompressionLevel->setToolTip( i18n("Compression level from 9 to 0 where 0 is the highest quality.\n(The higher the quality, the slower the conversion and vice versa.)\nA value of 2 is recommended.") ); bottomBox->addSpacing( 12 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); bottomBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); bottomBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 3, 1 ); presetChanged( cPreset->currentText() ); modeChanged( 0 ); iCompressionLevel->setValue( 2 ); } LameCodecWidget::~LameCodecWidget() {} // TODO optimize int LameCodecWidget::bitrateForQuality( int quality ) { return 320-quality*32; } // TODO optimize int LameCodecWidget::qualityForBitrate( int bitrate ) { return (320-bitrate)/32; } ConversionOptions *LameCodecWidget::currentConversionOptions() { LameConversionOptions *options = new LameConversionOptions(); options->data.preset = (LameConversionOptions::Data::Preset)cPreset->currentIndex(); options->data.presetBitrate = iPresetBitrate->value(); options->data.presetBitrateCbr = cPresetBitrateCbr->isEnabled() && cPresetBitrateCbr->isChecked(); options->data.presetFast = cPresetFast->isEnabled() && cPresetFast->isChecked(); if( cMode->currentText() == i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = iQuality->value(); options->bitrate = bitrateForQuality( options->quality ); } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = iQuality->value(); options->quality = qualityForBitrate( options->bitrate ); options->bitrateMode = ( cBitrateMode->currentText()==i18n("Average") ) ? ConversionOptions::Abr : ConversionOptions::Cbr; } options->compressionLevel = iCompressionLevel->value(); options->cmdArguments = cCmdArguments->isChecked() ? lCmdArguments->text() : ""; return options; } bool LameCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; LameConversionOptions *options = static_cast(_options); cPreset->setCurrentIndex( (int)options->data.preset ); presetChanged( cPreset->currentText() ); iPresetBitrate->setValue( options->data.presetBitrate ); cPresetBitrateCbr->setChecked( options->data.presetBitrateCbr ); cPresetFast->setChecked( options->data.presetFast ); if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( cMode->findText(i18n("Quality")) ); modeChanged( cMode->currentIndex() ); iQuality->setValue( options->quality ); cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Variable")) ); } else { cMode->setCurrentIndex( cMode->findText(i18n("Bitrate")) ); modeChanged( cMode->currentIndex() ); iQuality->setValue( options->bitrate ); if( options->bitrateMode == ConversionOptions::Abr ) cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Average")) ); else cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Constant")) ); } iCompressionLevel->setValue( options->compressionLevel ); cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); else lCmdArguments->clear(); return true; } void LameCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString LameCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( cPreset->currentIndex() == 5 && cMode->currentIndex() == 0 && iQuality->value() == 6 ) { return i18n("Very low"); } else if( cPreset->currentIndex() == 5 && cMode->currentIndex() == 0 && iQuality->value() == 5 ) { return i18n("Low"); } else if( cPreset->currentIndex() == 5 && cMode->currentIndex() == 0 && iQuality->value() == 4 ) { return i18n("Medium"); } else if( cPreset->currentIndex() == 5 && cMode->currentIndex() == 0 && iQuality->value() == 3 ) { return i18n("High"); } else if( cPreset->currentIndex() == 5 && cMode->currentIndex() == 0 && iQuality->value() == 2 ) { return i18n("Very high"); } return i18n("User defined"); } bool LameCodecWidget::setCurrentProfile( const QString& profile ) { cCmdArguments->setChecked( false ); lCmdArguments->clear(); if( profile == i18n("Very low") ) { cPreset->setCurrentIndex( 5 ); presetChanged( cPreset->currentText() ); cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 6 ); iQuality->setValue( 6 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Low") ) { cPreset->setCurrentIndex( 5 ); presetChanged( cPreset->currentText() ); cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 5 ); iQuality->setValue( 5 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Medium") ) { cPreset->setCurrentIndex( 5 ); presetChanged( cPreset->currentText() ); cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 4 ); iQuality->setValue( 4 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("High") ) { cPreset->setCurrentIndex( 5 ); presetChanged( cPreset->currentText() ); cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 3 ); iQuality->setValue( 3 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Very high") ) { cPreset->setCurrentIndex( 5 ); presetChanged( cPreset->currentText() ); cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 2 ); iQuality->setValue( 2 ); cBitrateMode->setCurrentIndex( 0 ); return true; } return false; } int LameCodecWidget::currentDataRate() { int dataRate = 0; if( currentFormat == "wav" ) { dataRate = 10590000; } else { if( cPreset->currentIndex() == 0 ) { dataRate = 1090000; } else if( cPreset->currentIndex() == 1 ) { dataRate = 1140000; } else if( cPreset->currentIndex() == 2 ) { dataRate = 1400000; } else if( cPreset->currentIndex() == 3 ) { dataRate = 2360000; } else if( cPreset->currentIndex() == 4 ) { dataRate = iPresetBitrate->value()/8*60*1000; } else if( cPreset->currentIndex() == 5 ) { if( cMode->currentIndex() == 0 ) { dataRate = 1500000 - iQuality->value()*100000; } else { dataRate = iQuality->value()/8*60*1000; } } if( cPresetFast->isEnabled() && cPresetFast->isChecked() ) { dataRate *= 1.1f; } } return dataRate; } void LameCodecWidget::presetChanged( const QString& preset ) { cPreset->setToolTip( "" ); if( preset == i18nc("Backend profile","Medium") ) { iPresetBitrate->setEnabled( false ); cPresetFast->setEnabled( true ); userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("This preset should provide near transparency to most people on most music (~150 kbps abr).") ); } else if( preset == i18nc("Backend profile","Standard") ) { iPresetBitrate->setEnabled( false ); cPresetFast->setEnabled( true ); userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("This preset should generally be transparent to most people on most music\nand is already quite high in quality (~230 kbps abr).") ); } else if( preset == i18nc("Backend profile","Extreme") ) { iPresetBitrate->setEnabled( false ); cPresetFast->setEnabled( true ); userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("If you have extremely good hearing and similar equipment, this preset will generally provide\nslightly higher quality than the standard mode (~280 kbps abr).") ); } else if( preset == i18nc("Backend profile","Insane") ) { iPresetBitrate->setEnabled( false ); cPresetFast->setEnabled( false ); userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("This preset will usually be overkill for most people and most situations, but if you must have\nthe absolute highest quality with no regard to filesize, this is the way to go (320 kbps cbr).") ); } else if( preset == i18n("Specify bitrate") ) { iPresetBitrate->setEnabled( true ); cPresetFast->setEnabled( false ); userdefinedBox->setEnabled( false ); } else // "User defined" { iPresetBitrate->setEnabled( false ); cPresetFast->setEnabled( false ); userdefinedBox->setEnabled( true ); } presetBitrateChanged( iPresetBitrate->value() ); } void LameCodecWidget::presetBitrateChanged( int bitrate ) { if( iPresetBitrate->isEnabled() && ( bitrate == 80 || bitrate == 96 || bitrate == 112 || bitrate == 128 || bitrate == 160 || bitrate == 192 || bitrate == 224 || bitrate == 256 || bitrate == 320 ) ) { cPresetBitrateCbr->setEnabled( true ); } else { cPresetBitrateCbr->setEnabled( false ); } } void LameCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( 0, 9 ); // sQuality->setTickInterval( 100 ); sQuality->setSingleStep( 1 ); iQuality->setRange( 0, 9 ); iQuality->setSingleStep( 1 ); iQuality->setSuffix( "" ); sQuality->setValue( 5 ); iQuality->setValue( 5 ); // dQuality->setValue( qualityForBitrate(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); sQuality->setToolTip( i18n("Quality level from 9 to 0 where 0 is the highest quality.\n(The higher the quality, the bigger the file size and vice versa.)") ); iQuality->setToolTip( i18n("Quality level from 9 to 0 where 0 is the highest quality.\n(The higher the quality, the bigger the file size and vice versa.)") ); cBitrateMode->clear(); cBitrateMode->addItem( i18n("Variable") ); cBitrateMode->setEnabled( false ); } else { sQuality->setRange( 8, 320 ); // sQuality->setTickInterval( 800 ); sQuality->setSingleStep( 8 ); iQuality->setRange( 8, 320 ); iQuality->setSingleStep( 1 ); iQuality->setSuffix( " kbps" ); sQuality->setValue( 160 ); iQuality->setValue( 160 ); // dQuality->setValue( bitrateForQuality(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); iQuality->setToolTip( i18n("Bitrate") ); cBitrateMode->clear(); cBitrateMode->addItem( i18n("Average") ); cBitrateMode->addItem( i18n("Constant") ); cBitrateMode->setEnabled( true ); } } void LameCodecWidget::qualitySliderChanged( int quality ) { if( cMode->currentText() == i18n("Quality") ) { iQuality->setValue( 9 - quality ); } else { iQuality->setValue( quality ); } } void LameCodecWidget::qualitySpinBoxChanged( int quality ) { if( cMode->currentText() == i18n("Quality") ) { sQuality->setValue( 9 - quality ); } else { sQuality->setValue( quality ); } } void LameCodecWidget::compressionLevelSliderChanged( int quality ) { iCompressionLevel->setValue( 9 - quality ); } void LameCodecWidget::compressionLevelSpinBoxChanged( int quality ) { sCompressionLevel->setValue( 9 - quality ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605673027466 xustar000000000000000020 atime=1357667632 30 ctime=1387631578.983412997 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/CMakeLists.txt0000755000175000001440000000122211726605673027077 0ustar00danielusers00000000000000project(soundkonverter_codec_lame) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_lame_SRCS soundkonverter_codec_lame.cpp lameconversionoptions.cpp lamecodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_lame ${soundkonverter_codec_lame_SRCS}) target_link_libraries(soundkonverter_codec_lame ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_lame DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_lame.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/soundkonverter_codec_lame.0000644000175000001440000000006212105142354032132 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.009412672 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.h0000755000175000001440000000330412105142354031716 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_LAME_H #define SOUNDKONVERTER_CODEC_LAME_H #include "../../core/codecplugin.h" #include #include class ConversionOptions; class KDialog; class KComboBox; class soundkonverter_codec_lame : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_lame( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_lame(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); ConversionOptions *conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); private: QWeakPointer configDialog; KComboBox *configDialogStereoModeComboBox; int configVersion; QString stereoMode; private slots: void configDialogSave(); void configDialogDefault(); }; K_EXPORT_SOUNDKONVERTER_CODEC( lame, soundkonverter_codec_lame ) #endif // _SOUNDKONVERTER_CODEC_LAME_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/lamecodecwidget.h0000644000175000001440000000006212105142354030177 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.009412672 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/lamecodecwidget.h0000644000175000001440000000311712105142354027612 0ustar00danielusers00000000000000 #ifndef LAMECODECWIDGET_H #define LAMECODECWIDGET_H #include "../../core/codecwidget.h" #include class KComboBox; class QSpinBox; class QCheckBox; class QLabel; class QSlider; class KLineEdit; class LameCodecWidget : public CodecWidget { Q_OBJECT public: LameCodecWidget(); ~LameCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: // preset selection KComboBox *cPreset; QSpinBox *iPresetBitrate; QCheckBox *cPresetBitrateCbr; QCheckBox *cPresetFast; // user defined options QGroupBox *userdefinedBox; KComboBox *cMode; QSpinBox *iQuality; QSlider *sQuality; KComboBox *cBitrateMode; QSlider *sCompressionLevel; QSpinBox *iCompressionLevel; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format int bitrateForQuality( int quality ); int qualityForBitrate( int bitrate ); private slots: // presets void presetChanged( const QString& preset ); void presetBitrateChanged( int bitrate ); // user defined options void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( int quality ); void compressionLevelSliderChanged( int quality ); void compressionLevelSpinBoxChanged( int quality ); }; #endif // LAMECODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/lamecodecglobal.h0000644000175000001440000000006211017026701030152 xustar000000000000000020 atime=1379576790 30 ctime=1387631579.017412572 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/lamecodecglobal.h0000644000175000001440000000010511017026701027557 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "lame" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/soundkonverter_codec_lame.0000644000175000001440000000006210764724042032143 xustar000000000000000020 atime=1357667632 30 ctime=1387631579.017412572 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.desktop0000755000175000001440000000052710764724042033155 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Lame Plugin X-KDE-Library=soundkonverter_codec_lame ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_lame X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/lameconversionoptions.h0000644000175000001440000000006212105142354031517 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.017412572 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/lameconversionoptions.h0000644000175000001440000000141012105142354031124 0ustar00danielusers00000000000000 #ifndef LAMECONVERSIONOPTIONS_H #define LAMECONVERSIONOPTIONS_H #include "../../core/conversionoptions.h" class LameConversionOptions : public ConversionOptions { public: LameConversionOptions(); ~LameConversionOptions(); bool equals( ConversionOptions *_other ); QDomElement toXml( QDomDocument document ); bool fromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); struct Data { enum Preset { Medium = 0, Standard = 1, Extreme = 2, Insane = 3, SpecifyBitrate = 4, UserDefined = 5 } preset; int presetBitrate; bool presetBitrateCbr; bool presetFast; } data; }; #endif // LAMECONVERSIONOPTIONS_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/lameconversionoptions.cpp0000644000175000001440000000006212105142354032052 xustar000000000000000020 atime=1387530392 30 ctime=1387631579.017412572 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/lameconversionoptions.cpp0000644000175000001440000000502712105142354031467 0ustar00danielusers00000000000000 #include "lamecodecglobal.h" #include "lameconversionoptions.h" LameConversionOptions::LameConversionOptions() : ConversionOptions() { pluginName = global_plugin_name; } LameConversionOptions::~LameConversionOptions() {} bool LameConversionOptions::equals( ConversionOptions *_other ) { if( !_other || _other->pluginName!=pluginName ) return false; LameConversionOptions *other = dynamic_cast(_other); if( data.preset==other->data.preset && data.preset==Data::UserDefined ) { return ConversionOptions::equals(_other); } else if( data.preset==other->data.preset && data.preset==Data::SpecifyBitrate ) { return ( equalsBasics(_other) && equalsFilters(_other) && data.presetBitrate==other->data.presetBitrate && data.presetBitrateCbr==other->data.presetBitrateCbr && data.presetFast==other->data.presetFast ); } else if( data.preset==other->data.preset ) { return ( equalsBasics(_other) && equalsFilters(_other) && data.presetFast==other->data.presetFast ); } else { return false; } } QDomElement LameConversionOptions::toXml( QDomDocument document ) { QDomElement conversionOptions = ConversionOptions::toXml( document ); QDomElement encodingOptions = conversionOptions.elementsByTagName("encodingOptions").at(0).toElement(); QDomElement data = document.createElement("data"); data.setAttribute("preset",LameConversionOptions::data.preset); data.setAttribute("presetBitrate",LameConversionOptions::data.presetBitrate); data.setAttribute("presetBitrateCbr",LameConversionOptions::data.presetBitrateCbr); data.setAttribute("presetFast",LameConversionOptions::data.presetFast); encodingOptions.appendChild(data); return conversionOptions; } bool LameConversionOptions::fromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { ConversionOptions::fromXml( conversionOptions, filterOptionsElements ); QDomElement encodingOptions = conversionOptions.elementsByTagName("encodingOptions").at(0).toElement(); QDomElement data = encodingOptions.elementsByTagName("data").at(0).toElement(); LameConversionOptions::data.preset = (Data::Preset)data.attribute("preset").toInt(); LameConversionOptions::data.presetBitrate = data.attribute("presetBitrate").toInt(); LameConversionOptions::data.presetBitrateCbr = data.attribute("presetBitrateCbr").toInt(); LameConversionOptions::data.presetFast = data.attribute("presetFast").toInt(); return true; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/PaxHeaders.25599/soundkonverter_codec_lame.0000644000175000001440000000006212105142354032132 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.017412572 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_lame/soundkonverter_codec_lame.cpp0000755000175000001440000003301612105142354032254 0ustar00danielusers00000000000000 #include "lamecodecglobal.h" #include "soundkonverter_codec_lame.h" #include "lameconversionoptions.h" #include "lamecodecwidget.h" #include #include #include #include #include #include #include #include #include #include soundkonverter_codec_lame::soundkonverter_codec_lame( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["lame"] = ""; allCodecs += "mp3"; allCodecs += "mp2"; allCodecs += "wav"; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); configVersion = group.readEntry( "configVersion", 0 ); stereoMode = group.readEntry( "stereoMode", "automatic" ); } soundkonverter_codec_lame::~soundkonverter_codec_lame() {} QString soundkonverter_codec_lame::name() { return global_plugin_name; } QList soundkonverter_codec_lame::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "mp3"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["lame"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "mp3", "lame" ) + "\n" + standardMessage( "install_patented_backend", "lame" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mp3"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["lame"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "mp3", "lame" ) + "\n" + standardMessage( "install_patented_backend", "lame" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mp3"; newTrunk.codecTo = "mp3"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["lame"] != "" ); newTrunk.problemInfo = standardMessage( "transcode_codec,backend", "mp3", "lame" ) + "\n" + standardMessage( "install_patented_backend", "lame" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mp2"; newTrunk.codecTo = "wav"; newTrunk.rating = 70; newTrunk.enabled = ( binaries["lame"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "mp2", "lame" ) + "\n" + standardMessage( "install_patented_backend", "lame" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mp2"; newTrunk.codecTo = "mp3"; newTrunk.rating = 70; newTrunk.enabled = ( binaries["lame"] != "" ); newTrunk.problemInfo = standardMessage( "transcode_codec,backend", "mp2/mp3", "lame" ) + "\n" + standardMessage( "install_patented_backend", "lame" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_lame::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return true; } void soundkonverter_codec_lame::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) if( !configDialog.data() ) { configDialog = new KDialog( parent ); configDialog.data()->setCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Default ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QHBoxLayout *configDialogBox = new QHBoxLayout( configDialogWidget ); QLabel *configDialogStereoModeLabel = new QLabel( i18n("Stereo mode:"), configDialogWidget ); configDialogBox->addWidget( configDialogStereoModeLabel ); configDialogStereoModeComboBox = new KComboBox( configDialogWidget ); configDialogStereoModeComboBox->addItem( i18n("Automatic"), "automatic" ); configDialogStereoModeComboBox->addItem( i18n("Joint Stereo"), "joint stereo" ); configDialogStereoModeComboBox->addItem( i18n("Simple Stereo"), "simple stereo" ); configDialogStereoModeComboBox->addItem( i18n("Forced Joint Stereo"), "forced joint stereo" ); configDialogStereoModeComboBox->addItem( i18n("Dual Mono"), "dual mono" ); configDialogBox->addWidget( configDialogStereoModeComboBox ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); connect( configDialog.data(), SIGNAL( defaultClicked() ), this, SLOT( configDialogDefault() ) ); } configDialogStereoModeComboBox->setCurrentIndex( configDialogStereoModeComboBox->findData(stereoMode) ); configDialog.data()->show(); } void soundkonverter_codec_lame::configDialogSave() { if( configDialog.data() ) { stereoMode = configDialogStereoModeComboBox->itemData( configDialogStereoModeComboBox->currentIndex() ).toString(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "stereoMode", stereoMode ); configDialog.data()->deleteLater(); } } void soundkonverter_codec_lame::configDialogDefault() { if( configDialog.data() ) { configDialogStereoModeComboBox->setCurrentIndex( configDialogStereoModeComboBox->findData("automatic") ); } } bool soundkonverter_codec_lame::hasInfo() { return true; } void soundkonverter_codec_lame::showInfo( QWidget *parent ) { KDialog *dialog = new KDialog( parent ); dialog->setCaption( i18n("About %1").arg(global_plugin_name) ); dialog->setButtons( KDialog::Ok ); QLabel *widget = new QLabel( dialog ); widget->setText( i18n("LAME is a free high quality MP3 encoder.\nYou can get it at: http://lame.sourceforge.net") ); dialog->setMainWidget( widget ); dialog->enableButtonApply( false ); dialog->show(); } CodecWidget *soundkonverter_codec_lame::newCodecWidget() { LameCodecWidget *widget = new LameCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_lame::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_lame::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); if( inputFile.isEmpty() ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; LameConversionOptions *lameConversionOptions = 0; if( conversionOptions->pluginName == name() ) { lameConversionOptions = static_cast(conversionOptions); } if( outputCodec == "mp3" ) { command += binaries["lame"]; command += "--nohist"; command += "--pad-id3v2"; if( conversionOptions->pluginName == name() ) { command += "-q"; command += QString::number((int)conversionOptions->compressionLevel); } // if( conversionOptions->replaygain && replayGain ) // { // command += "--replaygain-accurate"; // } // else // { // command += "--noreplaygain"; // } if( conversionOptions->pluginName != name() || !conversionOptions->cmdArguments.contains("replaygain") ) { command += "--noreplaygain"; } if( lameConversionOptions && lameConversionOptions->data.preset != LameConversionOptions::Data::UserDefined ) { command += "--preset"; if( lameConversionOptions->data.presetFast ) { command += "fast"; } if( lameConversionOptions->data.preset == LameConversionOptions::Data::Medium ) { command += "medium"; } else if( lameConversionOptions->data.preset == LameConversionOptions::Data::Standard ) { command += "standard"; } else if( lameConversionOptions->data.preset == LameConversionOptions::Data::Extreme ) { command += "extreme"; } else if( lameConversionOptions->data.preset == LameConversionOptions::Data::Insane ) { command += "insane"; } else if( lameConversionOptions->data.preset == LameConversionOptions::Data::SpecifyBitrate ) { if( lameConversionOptions->data.presetBitrateCbr ) { command += "cbr"; } command += QString::number(lameConversionOptions->data.presetBitrate); } } else { if( conversionOptions->qualityMode == ConversionOptions::Quality ) { if( conversionOptions->pluginName != name() || !conversionOptions->cmdArguments.contains("--vbr-old") ) { command += "--vbr-new"; } command += "-V"; command += QString::number(conversionOptions->quality); } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { if( conversionOptions->bitrateMode == ConversionOptions::Abr ) { command += "--abr"; command += QString::number(conversionOptions->bitrate); } else if( conversionOptions->bitrateMode == ConversionOptions::Cbr ) { command += "--cbr"; command += "-b"; command += QString::number(conversionOptions->bitrate); } } } if( stereoMode != "automatic" ) { command += "-m"; if( stereoMode == "joint stereo" ) { command += "j"; } else if( stereoMode == "simple stereo" ) { command += "s"; } else if( stereoMode == "forced joint stereo" ) { command += "f"; } else if( stereoMode == "dual mono" ) { command += "d"; } } if( conversionOptions->pluginName == name() ) { command += conversionOptions->cmdArguments; } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["lame"]; command += "--decode"; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_lame::parseOutput( const QString& output ) { // decoding // Frame# 1398/8202 256 kbps L R (...) // encoding // \r 3600/3696 (97%)| 0:05/ 0:05| 0:05/ 0:05| 18.190x| 0:00 QString data = output; QString frame, count; if( output.contains("Frame#") ) { data.remove( 0, data.indexOf("Frame#")+7 ); frame = data.left( data.indexOf("/") ); data.remove( 0, data.indexOf("/")+1 ); count = data.left( data.indexOf(" ") ); return frame.toFloat()/count.toFloat()*100.0f; } if( output.contains("%") ) { frame = data.left( data.indexOf("/") ); frame.remove( 0, frame.lastIndexOf(" ")+1 ); data.remove( 0, data.indexOf("/")+1 ); count = data.left( data.indexOf(" ") ); return frame.toFloat()/count.toFloat()*100.0f; } /*if( output.contains("%") ) { data.remove( 0, data.indexOf("(")+1 ); data.remove( data.indexOf("%"), data.length()-data.indexOf("%") ); return data.toFloat(); }*/ return -1; } ConversionOptions *soundkonverter_codec_lame::conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { LameConversionOptions *options = new LameConversionOptions(); options->fromXml( conversionOptions, filterOptionsElements ); return options; } #include "soundkonverter_codec_lame.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_replaygain_metaflac0000644000175000001440000000006212105142355026546 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.059412047 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/0000755000175000001440000000000012105142355026234 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605575031403 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.037412322 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/CMakeLists.txt0000755000175000001440000000122211726605575031014 0ustar00danielusers00000000000000project(soundkonverter_replaygain_metaflac) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_replaygain_metaflac_SRCS soundkonverter_replaygain_metaflac.cpp ) kde4_add_plugin(soundkonverter_replaygain_metaflac ${soundkonverter_replaygain_metaflac_SRCS}) target_link_libraries(soundkonverter_replaygain_metaflac ${KDE4_KDEUI_LIBS} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_replaygain_metaflac DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_replaygain_metaflac.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/PaxHeaders.25599/soundkonverter_re0000644000175000001440000000024412105142355032326 xustar0000000000000000114 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.cpp 20 atime=1379576797 30 ctime=1387631579.037412322 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac0000755000175000001440000000567012105142355035331 0ustar00danielusers00000000000000 #include "flacreplaygainglobal.h" #include "soundkonverter_replaygain_metaflac.h" soundkonverter_replaygain_metaflac::soundkonverter_replaygain_metaflac( QObject *parent, const QStringList& args ) : ReplayGainPlugin( parent ) { Q_UNUSED(args) binaries["metaflac"] = ""; allCodecs += "flac"; } soundkonverter_replaygain_metaflac::~soundkonverter_replaygain_metaflac() {} QString soundkonverter_replaygain_metaflac::name() { return global_plugin_name; } QList soundkonverter_replaygain_metaflac::codecTable() { QList table; ReplayGainPipe newPipe; newPipe.codecName = "flac"; newPipe.rating = 100; newPipe.enabled = ( binaries["metaflac"] != "" ); newPipe.problemInfo = standardMessage( "replygain_codec,backend", "flac", "metaflac" ) + "\n" + i18n( "'%1' is usually in the package '%2' which should be shipped with your distribution.", QString("metaflac"), QString("flac") ); table.append( newPipe ); return table; } bool soundkonverter_replaygain_metaflac::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_replaygain_metaflac::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_replaygain_metaflac::hasInfo() { return false; } void soundkonverter_replaygain_metaflac::showInfo( QWidget *parent ) { Q_UNUSED(parent) } unsigned int soundkonverter_replaygain_metaflac::apply( const KUrl::List& fileList, ReplayGainPlugin::ApplyMode mode ) { if( fileList.count() <= 0 ) return BackendPlugin::UnknownError; ReplayGainPluginItem *newItem = new ReplayGainPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["metaflac"]; if( mode == ReplayGainPlugin::Add || mode == ReplayGainPlugin::Force ) { command += "--add-replay-gain"; } else { command += "--remove-replay-gain"; } foreach( const KUrl file, fileList ) { command += "\"" + escapeUrl(file) + "\""; } newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } float soundkonverter_replaygain_metaflac::parseOutput( const QString& output ) { Q_UNUSED(output) // metaflac doesn't provide any progress data return -1; } #include "soundkonverter_replaygain_metaflac.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/PaxHeaders.25599/flacreplaygainglo0000644000175000001440000000006211773075463032250 xustar000000000000000020 atime=1387530399 30 ctime=1387631579.039412297 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/flacreplaygainglobal.h0000644000175000001440000000011111773075463032557 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Metaflac" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/PaxHeaders.25599/soundkonverter_re0000644000175000001440000000024212105142355032324 xustar0000000000000000112 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.h 20 atime=1360315629 30 ctime=1387631579.059412047 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac0000755000175000001440000000176212105142355035327 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_REPLAYGAIN_METAFLAC_H #define SOUNDKONVERTER_REPLAYGAIN_METAFLAC_H #include "../../core/replaygainplugin.h" #include class ConversionOptions; class soundkonverter_replaygain_metaflac : public ReplayGainPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_replaygain_metaflac( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_replaygain_metaflac(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); unsigned int apply( const KUrl::List& fileList, ApplyMode mode = Add ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_REPLAYGAIN( metaflac, soundkonverter_replaygain_metaflac ) #endif // _SOUNDKONVERTER_REPLAYGAIN_METAFLAC_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/PaxHeaders.25599/soundkonverter_re0000644000175000001440000000025011377742701032336 xustar0000000000000000118 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac.desktop 20 atime=1357667633 30 ctime=1387631579.059412047 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_metaflac/soundkonverter_replaygain_metaflac0000755000175000001440000000056211377742701035337 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter metaflac plugin X-KDE-Library=soundkonverter_replaygain_metaflac ServiceTypes=soundKonverter/ReplayGainPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_replaygain_metaflac X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_replaygain_vorbisgain0000644000175000001440000000006112105142356027135 xustar000000000000000020 atime=1357667235 29 ctime=1387631579.08641171 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/0000755000175000001440000000000012105142356026624 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605551031764 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.083411747 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/CMakeLists.txt0000755000175000001440000000124211726605551031377 0ustar00danielusers00000000000000project(soundkonverter_replaygain_vorbisgain) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_replaygain_vorbisgain_SRCS soundkonverter_replaygain_vorbisgain.cpp ) kde4_add_plugin(soundkonverter_replaygain_vorbisgain ${soundkonverter_replaygain_vorbisgain_SRCS}) target_link_libraries(soundkonverter_replaygain_vorbisgain ${KDE4_KDEUI_LIBS} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_replaygain_vorbisgain DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_replaygain_vorbisgain.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/PaxHeaders.25599/soundkonverter_0000644000175000001440000000025012105142356032364 xustar0000000000000000118 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/soundkonverter_replaygain_vorbisgain.cpp 20 atime=1371411852 30 ctime=1387631579.083411747 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/soundkonverter_replaygain_vorbis0000755000175000001440000001131512105142356035442 0ustar00danielusers00000000000000 #include "vorbisreplaygainglobal.h" #include "soundkonverter_replaygain_vorbisgain.h" soundkonverter_replaygain_vorbisgain::soundkonverter_replaygain_vorbisgain( QObject *parent, const QStringList& args ) : ReplayGainPlugin( parent ) { Q_UNUSED(args) binaries["vorbisgain"] = ""; allCodecs += "ogg vorbis"; } soundkonverter_replaygain_vorbisgain::~soundkonverter_replaygain_vorbisgain() {} QString soundkonverter_replaygain_vorbisgain::name() { return global_plugin_name; } QList soundkonverter_replaygain_vorbisgain::codecTable() { QList table; ReplayGainPipe newPipe; newPipe.codecName = "ogg vorbis"; newPipe.rating = 100; newPipe.enabled = ( binaries["vorbisgain"] != "" ); newPipe.problemInfo = standardMessage( "replygain_codec,backend", "ogg vorbis", "vorbisgain" ) + "\n" + standardMessage( "install_opensource_backend", "vorbisgain" ); table.append( newPipe ); return table; } bool soundkonverter_replaygain_vorbisgain::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_replaygain_vorbisgain::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_replaygain_vorbisgain::hasInfo() { return false; } void soundkonverter_replaygain_vorbisgain::showInfo( QWidget *parent ) { Q_UNUSED(parent) } unsigned int soundkonverter_replaygain_vorbisgain::apply( const KUrl::List& fileList, ReplayGainPlugin::ApplyMode mode ) { if( fileList.count() <= 0 ) return BackendPlugin::UnknownError; ReplayGainPluginItem *newItem = new ReplayGainPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->data.fileCount = fileList.count(); QStringList command; command += binaries["vorbisgain"]; if( mode == ReplayGainPlugin::Add ) { command += "--album"; command += "--fast"; } else if( mode == ReplayGainPlugin::Force ) { command += "--album"; } else { command += "--clean"; } foreach( const KUrl file, fileList ) { command += "\"" + escapeUrl(file) + "\""; } newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } // float soundkonverter_replaygain_vorbisgain::parseOutput( const QString& output, BackendPluginItem *backendItem ) TODO ogg replaygain fix float soundkonverter_replaygain_vorbisgain::parseOutput( const QString& output, ReplayGainPluginItem *replayGainItem ) { float progress = -1; // -12.14 dB | 46927 | 0.25 | 11599 | 03 - Sugar.ogg // 59% - 04 - Suggestions.ogg QRegExp regApply("(\\d+)%"); if( output.contains(regApply) ) { progress = (float)regApply.cap(1).toInt(); } if( progress == -1 ) return -1; if( !replayGainItem ) return progress; if( progress > 90 && replayGainItem->data.lastFileProgress <= 90 ) { replayGainItem->data.processedFiles++; } replayGainItem->data.lastFileProgress = progress; int processedFiles = replayGainItem->data.processedFiles; if( progress > 90 ) processedFiles--; return float( processedFiles * 100 + progress ) / replayGainItem->data.fileCount; } float soundkonverter_replaygain_vorbisgain::parseOutput( const QString& output ) { return parseOutput( output, 0 ); } void soundkonverter_replaygain_vorbisgain::processOutput() { ReplayGainPluginItem *pluginItem; float progress; for( int i=0; iprocess == QObject::sender() ) { const QString output = backendItems.at(i)->process->readAllStandardOutput().data(); pluginItem = qobject_cast(backendItems.at(i)); progress = parseOutput( output, pluginItem ); if( progress == -1 && !output.simplified().isEmpty() ) emit log( backendItems.at(i)->id, output ); if( progress > backendItems.at(i)->progress ) backendItems.at(i)->progress = progress; return; } } } #include "soundkonverter_replaygain_vorbisgain.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/PaxHeaders.25599/soundkonverter_0000644000175000001440000000025411271067053032373 xustar0000000000000000122 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/soundkonverter_replaygain_vorbisgain.desktop 20 atime=1357667634 30 ctime=1387631579.083411747 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/soundkonverter_replaygain_vorbis0000755000175000001440000000057011271067053035446 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter vorbisgain plugin X-KDE-Library=soundkonverter_replaygain_vorbisgain ServiceTypes=soundKonverter/ReplayGainPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_replaygain_vorbisgain X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/PaxHeaders.25599/vorbisreplaygai0000644000175000001440000000006211200043671032333 xustar000000000000000020 atime=1387530392 30 ctime=1387631579.083411747 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/vorbisreplaygainglobal.h0000644000175000001440000000011411200043671033525 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Vorbis Gain" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/PaxHeaders.25599/soundkonverter_0000644000175000001440000000024512105142356032370 xustar0000000000000000116 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/soundkonverter_replaygain_vorbisgain.h 20 atime=1360315630 29 ctime=1387631579.08641171 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_vorbisgain/soundkonverter_replaygain_vorbis0000755000175000001440000000224512105142356035444 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_REPLAYGAIN_VORBISGAIN_H #define SOUNDKONVERTER_REPLAYGAIN_VORBISGAIN_H #include "../../core/replaygainplugin.h" #include class ConversionOptions; class soundkonverter_replaygain_vorbisgain : public ReplayGainPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_replaygain_vorbisgain( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_replaygain_vorbisgain(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); unsigned int apply( const KUrl::List& fileList, ApplyMode mode = Add ); float parseOutput( const QString& output, ReplayGainPluginItem *replayGainItem ); float parseOutput( const QString& output ); private slots: /** Get the process' output */ void processOutput(); }; K_EXPORT_SOUNDKONVERTER_REPLAYGAIN( vorbisgain, soundkonverter_replaygain_vorbisgain ) #endif // _SOUNDKONVERTER_REPLAYGAIN_VORBISGAIN_H_ ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_flac0000644000175000001440000000006112105142353024616 xustar000000000000000020 atime=1357667235 29 ctime=1387631579.13041116 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/0000755000175000001440000000000012105142353024305 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/PaxHeaders.25599/soundkonverter_codec_flac.0000644000175000001440000000006212105142353032107 xustar000000000000000020 atime=1379147582 30 ctime=1387631579.105411472 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/soundkonverter_codec_flac.cpp0000755000175000001440000001166312105142353032235 0ustar00danielusers00000000000000 #include "flaccodecglobal.h" #include "soundkonverter_codec_flac.h" #include "../../core/conversionoptions.h" #include "flaccodecwidget.h" soundkonverter_codec_flac::soundkonverter_codec_flac( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["flac"] = ""; allCodecs += "flac"; allCodecs += "wav"; } soundkonverter_codec_flac::~soundkonverter_codec_flac() {} QString soundkonverter_codec_flac::name() { return global_plugin_name; } QList soundkonverter_codec_flac::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "flac"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["flac"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "flac", "flac" ) + "\n" + standardMessage( "install_opensource_backend", "flac" ); newTrunk.data.hasInternalReplayGain = true; table.append( newTrunk ); newTrunk.codecFrom = "flac"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["flac"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "flac", "flac" ) + "\n" + standardMessage( "install_opensource_backend", "flac" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_flac::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_flac::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_flac::hasInfo() { return false; } void soundkonverter_codec_flac::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_flac::newCodecWidget() { FlacCodecWidget *widget = new FlacCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_flac::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_flac::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) if( !_conversionOptions ) return QStringList(); if( inputFile.isEmpty() ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "flac" ) { command += binaries["flac"]; command += "-V"; if( conversionOptions->pluginName == global_plugin_name ) { command += "--compression-level-"+QString::number((int)conversionOptions->compressionLevel); } if( conversionOptions->replaygain && replayGain ) { command += "--replay-gain"; } command += "\"" + escapeUrl(inputFile) + "\""; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["flac"]; command += "-d"; command += "\"" + escapeUrl(inputFile) + "\""; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_flac::parseOutput( const QString& output ) { // 01-Unknown.wav: 98% complete, ratio=0,479 // encode // 01-Unknown.wav: 27% complete // decode QRegExp regEnc("(\\d+)% complete"); if( output.contains(regEnc) ) { return (float)regEnc.cap(1).toInt(); } return -1; } #include "soundkonverter_codec_flac.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605707027453 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.105411472 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/CMakeLists.txt0000755000175000001440000000116511726605707027072 0ustar00danielusers00000000000000project(soundkonverter_codec_flac) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_flac_SRCS soundkonverter_codec_flac.cpp flaccodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_flac ${soundkonverter_codec_flac_SRCS}) target_link_libraries(soundkonverter_codec_flac ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_flac DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_flac.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/PaxHeaders.25599/soundkonverter_codec_flac.0000644000175000001440000000006211377743311032122 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.105411472 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/soundkonverter_codec_flac.desktop0000755000175000001440000000052711377743311033134 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Flac Plugin X-KDE-Library=soundkonverter_codec_flac ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_flac X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/PaxHeaders.25599/soundkonverter_codec_flac.0000644000175000001440000000006112105142353032106 xustar000000000000000020 atime=1360315627 29 ctime=1387631579.13041116 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/soundkonverter_codec_flac.h0000755000175000001440000000243312105142353031675 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_FLAC_H #define SOUNDKONVERTER_CODEC_FLAC_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_flac : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_flac( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_flac(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( flac, soundkonverter_codec_flac ) #endif // _SOUNDKONVERTER_CODEC_FLAC_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/PaxHeaders.25599/flaccodecglobal.h0000644000175000001440000000006111377725702030147 xustar000000000000000020 atime=1387530398 29 ctime=1387631579.13041116 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/flaccodecglobal.h0000644000175000001440000000010511377725702027555 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "FLAC" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/PaxHeaders.25599/flaccodecwidget.cpp0000644000175000001440000000006112105142353030506 xustar000000000000000020 atime=1371411854 29 ctime=1387631579.13041116 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/flaccodecwidget.cpp0000644000175000001440000000623712105142353030130 0ustar00danielusers00000000000000 #include "flaccodecglobal.h" #include "flaccodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include FlacCodecWidget::FlacCodecWidget() : CodecWidget(), currentFormat( "flac" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lCompressionLevel = new QLabel( i18n("Compression level:"), this ); topBox->addWidget( lCompressionLevel ); sCompressionLevel = new QSlider( Qt::Horizontal, this ); sCompressionLevel->setRange( 0, 8 ); sCompressionLevel->setSingleStep( 1 ); sCompressionLevel->setPageStep( 1 ); // sQuality->setTickPosition( QSlider::TicksBelow ); // sQuality->setFixedWidth( sQuality->sizeHint().width() ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSliderChanged(int)) ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sCompressionLevel ); iCompressionLevel = new QSpinBox( this ); iCompressionLevel->setRange( 0, 8 ); iCompressionLevel->setSingleStep( 1 ); iCompressionLevel->setFixedWidth( iCompressionLevel->sizeHint().width() ); // dQuality->setFixedHeight( cMode->minimumSizeHint().height() ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSpinBoxChanged(int)) ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( iCompressionLevel ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); iCompressionLevel->setValue( 5 ); } FlacCodecWidget::~FlacCodecWidget() {} ConversionOptions *FlacCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Lossless; options->compressionLevel = iCompressionLevel->value(); return options; } bool FlacCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; iCompressionLevel->setValue( options->compressionLevel ); return true; } void FlacCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString FlacCodecWidget::currentProfile() { return i18n("Lossless"); } bool FlacCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int FlacCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } void FlacCodecWidget::compressionLevelSliderChanged( int quality ) { iCompressionLevel->setValue( quality ); } void FlacCodecWidget::compressionLevelSpinBoxChanged( int quality ) { sCompressionLevel->setValue( quality ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/PaxHeaders.25599/flaccodecwidget.h0000644000175000001440000000006112105142353030153 xustar000000000000000020 atime=1360315627 29 ctime=1387631579.13041116 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flac/flaccodecwidget.h0000644000175000001440000000150712105142353027570 0ustar00danielusers00000000000000 #ifndef FLACCODECWIDGET_H #define FLACCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QSpinBox; class FlacCodecWidget : public CodecWidget { Q_OBJECT public: FlacCodecWidget(); ~FlacCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QSlider *sCompressionLevel; QSpinBox *iCompressionLevel; QString currentFormat; // holds the current output file format private slots: void compressionLevelSliderChanged( int quality ); void compressionLevelSpinBoxChanged( int quality ); }; #endif // FLACCODECWIDGET_H ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_ffmpeg0000644000175000001440000000006112105142507025156 xustar000000000000000020 atime=1357667235 29 ctime=1387631579.15441086 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/0000755000175000001440000000000012105142507024645 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/PaxHeaders.25599/ffmpegcodecwidget.h0000644000175000001440000000006212105142353031052 xustar000000000000000020 atime=1360315627 30 ctime=1387631579.151410897 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.h0000644000175000001440000000171112105142353030463 0ustar00danielusers00000000000000 #ifndef FFMPEGCODECWIDGET_H #define FFMPEGCODECWIDGET_H #include "../../core/codecwidget.h" class QLabel; class QSlider; class QSpinBox; class QCheckBox; class KComboBox; class KLineEdit; class FFmpegCodecWidget : public CodecWidget { Q_OBJECT public: FFmpegCodecWidget(); ~FFmpegCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QLabel *lBitrate; QSlider *sBitrate; QSpinBox *iBitrate; KComboBox *cBitrate; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format private slots: void qualitySliderChanged( int bitrate ); void qualitySpinBoxChanged( int bitrate ); }; #endif // FFMPEGCODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/PaxHeaders.25599/ffmpegcodecwidget.cpp0000644000175000001440000000006212105142353031405 xustar000000000000000020 atime=1379147584 30 ctime=1387631579.151410897 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/ffmpegcodecwidget.cpp0000644000175000001440000002221212105142353031015 0ustar00danielusers00000000000000 #include "ffmpegcodecglobal.h" #include "ffmpegcodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include #include #include #include FFmpegCodecWidget::FFmpegCodecWidget() : CodecWidget(), currentFormat( "ogg vorbis" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); lBitrate = new QLabel( i18n("Bitrate:"), this ); topBox->addWidget( lBitrate ); sBitrate = new QSlider( Qt::Horizontal, this ); sBitrate->setRange( 8, 320 ); sBitrate->setValue( 160 ); connect( sBitrate, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sBitrate, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sBitrate ); iBitrate = new QSpinBox( this ); iBitrate->setRange( 8, 320 ); iBitrate->setValue( 160 ); iBitrate->setSuffix( " kbps" ); iBitrate->setFixedWidth( iBitrate->sizeHint().width() ); connect( iBitrate, SIGNAL(valueChanged(int)), this, SLOT(qualitySpinBoxChanged(int)) ); connect( iBitrate, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( iBitrate ); cBitrate = new KComboBox( this ); cBitrate->addItem( "32 kbps" ); cBitrate->addItem( "40 kbps" ); cBitrate->addItem( "48 kbps" ); cBitrate->addItem( "56 kbps" ); cBitrate->addItem( "64 kbps" ); cBitrate->addItem( "80 kbps" ); cBitrate->addItem( "96 kbps" ); cBitrate->addItem( "112 kbps" ); cBitrate->addItem( "128 kbps" ); cBitrate->addItem( "160 kbps" ); cBitrate->addItem( "192 kbps" ); cBitrate->addItem( "224 kbps" ); cBitrate->addItem( "256 kbps" ); cBitrate->addItem( "320 kbps" ); cBitrate->addItem( "384 kbps" ); cBitrate->addItem( "448 kbps" ); cBitrate->addItem( "512 kbps" ); cBitrate->addItem( "576 kbps" ); cBitrate->addItem( "640 kbps" ); cBitrate->setCurrentIndex( 10 ); cBitrate->hide(); connect( cBitrate, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cBitrate ); topBox->addStretch(); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); } FFmpegCodecWidget::~FFmpegCodecWidget() {} ConversionOptions *FFmpegCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Bitrate; if( currentFormat == "ac3" ) options->bitrate = cBitrate->currentText().replace(" kbps","").toInt(); else options->bitrate = iBitrate->value(); options->quality = -1000; options->bitrateMode = ConversionOptions::Cbr; if( cCmdArguments->isChecked() ) options->cmdArguments = lCmdArguments->text(); else options->cmdArguments = ""; return options; } bool FFmpegCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( currentFormat == "ac3" ) cBitrate->setCurrentIndex( cBitrate->findText(QString::number(options->bitrate)+" kbps") ); else iBitrate->setValue( options->bitrate ); cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void FFmpegCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; if( currentFormat == "wav" ) { lBitrate->hide(); sBitrate->hide(); iBitrate->hide(); cBitrate->hide(); cCmdArguments->hide(); lCmdArguments->hide(); } else if( currentFormat == "flac" || currentFormat == "m4a/alac" ) { lBitrate->hide(); sBitrate->hide(); iBitrate->hide(); cBitrate->hide(); cCmdArguments->show(); lCmdArguments->show(); } else if( currentFormat == "ac3" ) { lBitrate->show(); sBitrate->hide(); iBitrate->hide(); cBitrate->show(); cCmdArguments->show(); lCmdArguments->show(); } else { lBitrate->show(); sBitrate->show(); iBitrate->show(); cBitrate->hide(); cCmdArguments->show(); lCmdArguments->show(); } if( currentFormat == "mp2" ) { sBitrate->setRange( 32, 384 ); iBitrate->setRange( 32, 384 ); } else { sBitrate->setRange( 8, 320 ); iBitrate->setRange( 8, 320 ); } } QString FFmpegCodecWidget::currentProfile() { if( currentFormat == "wav" || currentFormat == "flac" || currentFormat == "m4a/alac" ) { return i18n("Lossless"); } else if( currentFormat == "amr nb" || currentFormat == "speex" ) { return i18n("User defined"); } else if( currentFormat == "ac3" ) { if( cBitrate->currentText() == "64 kbps" ) { return i18n("Very low"); } else if( cBitrate->currentText() == "128 kbps" ) { return i18n("Low"); } else if( cBitrate->currentText() == "192 kbps" ) { return i18n("Medium"); } else if( cBitrate->currentText() == "320 kbps" ) { return i18n("High"); } else if( cBitrate->currentText() == "640 kbps" ) { return i18n("Very high"); } } else { if( iBitrate->value() == 64 ) { return i18n("Very low"); } else if( iBitrate->value() == 128 ) { return i18n("Low"); } else if( iBitrate->value() == 160 ) { return i18n("Medium"); } else if( iBitrate->value() == 240 ) { return i18n("High"); } else if( iBitrate->value() == 320 ) { return i18n("Very high"); } } return i18n("User defined"); } bool FFmpegCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("64 kbps") ); } else { sBitrate->setValue( 64 ); iBitrate->setValue( 64 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Low") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("128 kbps") ); } else { sBitrate->setValue( 128 ); iBitrate->setValue( 128 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Medium") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("192 kbps") ); } else { sBitrate->setValue( 160 ); iBitrate->setValue( 160 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("High") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("320 kbps") ); } else { sBitrate->setValue( 240 ); iBitrate->setValue( 240 ); } cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Very high") ) { if( currentFormat == "ac3" ) { cBitrate->setCurrentIndex( cBitrate->findText("640 kbps") ); } else { sBitrate->setValue( 320 ); iBitrate->setValue( 320 ); } cCmdArguments->setChecked( false ); return true; } return false; } int FFmpegCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else if( currentFormat == "flac" || currentFormat == "m4a/alac" ) { dataRate = 6520000; } else if( currentFormat == "ac3" ) { dataRate = cBitrate->currentText().replace(" kbps","").toInt()/8*60*1000; } else { dataRate = iBitrate->value()/8*60*1000; } return dataRate; } void FFmpegCodecWidget::qualitySliderChanged( int bitrate ) { iBitrate->setValue( bitrate ); } void FFmpegCodecWidget::qualitySpinBoxChanged( int bitrate ) { sBitrate->setValue( bitrate ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605714030010 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.151410897 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/CMakeLists.txt0000755000175000001440000000120711726605714027424 0ustar00danielusers00000000000000project(soundkonverter_codec_ffmpeg) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_ffmpeg_SRCS soundkonverter_codec_ffmpeg.cpp ffmpegcodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_ffmpeg ${soundkonverter_codec_ffmpeg_SRCS}) target_link_libraries(soundkonverter_codec_ffmpeg ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_ffmpeg DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_ffmpeg.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/PaxHeaders.25599/soundkonverter_codec_ffm0000644000175000001440000000006212105142507032234 xustar000000000000000020 atime=1387530392 30 ctime=1387631579.153410872 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.cpp0000755000175000001440000005023712105142507033134 0ustar00danielusers00000000000000 #include "ffmpegcodecglobal.h" #include "soundkonverter_codec_ffmpeg.h" #include "ffmpegcodecwidget.h" #include "../../core/conversionoptions.h" #include "../../metadata/tagengine.h" #include #include #include #include #include // TODO check for decoders at runtime, too soundkonverter_codec_ffmpeg::soundkonverter_codec_ffmpeg( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["ffmpeg"] = ""; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); configVersion = group.readEntry( "configVersion", 0 ); experimentalCodecsEnabled = group.readEntry( "experimentalCodecsEnabled", false ); ffmpegVersionMajor = group.readEntry( "ffmpegVersionMajor", 0 ); ffmpegVersionMinor = group.readEntry( "ffmpegVersionMinor", 0 ); ffmpegLastModified = group.readEntry( "ffmpegLastModified", QDateTime() ); ffmpegCodecList = group.readEntry( "codecList", QStringList() ).toSet(); CodecData data; FFmpegCodecData ffmpegData; // WARNING enabled codecs need to be rescanned everytime new codecs are added here -> increase plugin version data.ffmpegCodecList.clear(); data.codecName = "wav"; ffmpegData.name = "wav"; ffmpegData.external = false; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "ogg vorbis"; ffmpegData.name = "libvorbis"; ffmpegData.external = true; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); ffmpegData.name = "vorbis"; ffmpegData.external = true; // ? ffmpegData.experimental = true; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); // data.ffmpegCodecList.clear(); // data.codecName = "opus"; // ffmpegData.name = "opus"; // ffmpegData.external = true; // ffmpegData.experimental = false; // data.ffmpegCodecList.append( ffmpegData ); // codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "mp3"; ffmpegData.name = "libmp3lame"; ffmpegData.external = true; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); ffmpegData.name = "mp3"; ffmpegData.external = true; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "flac"; ffmpegData.name = "flac"; ffmpegData.external = false; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "wma"; ffmpegData.name = "wmav2"; ffmpegData.external = false; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); ffmpegData.name = "wmav1"; ffmpegData.external = false; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "aac"; ffmpegData.name = "libfaac"; ffmpegData.external = true; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); ffmpegData.name = "aac"; ffmpegData.external = false; ffmpegData.experimental = true; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "m4a/aac"; ffmpegData.name = "libfaac"; ffmpegData.external = true; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); ffmpegData.name = "aac"; ffmpegData.external = false; ffmpegData.experimental = true; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "ac3"; ffmpegData.name = "ac3"; ffmpegData.external = false; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "m4a/alac"; ffmpegData.name = "alac"; ffmpegData.external = false; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "mp2"; ffmpegData.name = "mp2"; ffmpegData.external = false; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); data.ffmpegCodecList.clear(); data.codecName = "amr nb"; ffmpegData.name = "libopencore_amrnb"; ffmpegData.external = true; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); ffmpegData.name = "amr_nb"; ffmpegData.external = true; ffmpegData.experimental = false; data.ffmpegCodecList.append( ffmpegData ); codecList.append( data ); // codecMap["sonic"] = "sonic"; // codecMap["sonic lossless"] = "sonicls"; // codecMap["real audio 1"] = "real_144"; // codecMap["e-ac3"] = "eac3"; for( int i=0; i soundkonverter_codec_ffmpeg::codecTable() { QList table; QStringList fromCodecs; QStringList toCodecs; /// decode fromCodecs += "wav"; fromCodecs += "ogg vorbis"; // fromCodecs += "opus"; fromCodecs += "mp3"; fromCodecs += "flac"; fromCodecs += "wma"; fromCodecs += "aac"; fromCodecs += "ac3"; fromCodecs += "m4a/alac"; fromCodecs += "mp2"; // fromCodecs += "sonic"; // fromCodecs += "sonic lossless"; fromCodecs += "als"; fromCodecs += "amr nb"; fromCodecs += "amr wb"; fromCodecs += "ape"; // fromCodecs += "e-ac3"; fromCodecs += "speex"; fromCodecs += "m4a/aac"; fromCodecs += "mp1"; fromCodecs += "musepack"; fromCodecs += "shorten"; // fromCodecs += "mlp"; // fromCodecs += "truehd"; // fromCodecs += "truespeech"; fromCodecs += "tta"; fromCodecs += "wavpack"; fromCodecs += "ra"; fromCodecs += "sad"; /// containers fromCodecs += "3gp"; fromCodecs += "rm"; /// video fromCodecs += "avi"; fromCodecs += "mkv"; fromCodecs += "ogv"; fromCodecs += "mpeg"; fromCodecs += "mov"; fromCodecs += "mp4"; fromCodecs += "flv"; fromCodecs += "wmv"; fromCodecs += "rv"; /// encode if( !binaries["ffmpeg"].isEmpty() ) { QFileInfo ffmpegInfo( binaries["ffmpeg"] ); if( ffmpegInfo.lastModified() > ffmpegLastModified || configVersion < version() ) { infoProcess = new KProcess(); infoProcess.data()->setOutputChannelMode( KProcess::MergedChannels ); connect( infoProcess.data(), SIGNAL(readyRead()), this, SLOT(infoProcessOutput()) ); connect( infoProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(infoProcessExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["ffmpeg"]; command += "-codecs"; infoProcess.data()->clearProgram(); infoProcess.data()->setShellCommand( command.join(" ") ); infoProcess.data()->start(); infoProcess.data()->waitForFinished( 3000 ); } } for( int i=0; i codecs; codecs += QSet::fromList(fromCodecs); codecs += QSet::fromList(toCodecs); allCodecs = codecs.toList(); return table; } bool soundkonverter_codec_ffmpeg::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return true; } void soundkonverter_codec_ffmpeg::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) if( !configDialog.data() ) { configDialog = new KDialog( parent ); configDialog.data()->setCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Default ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QHBoxLayout *configDialogBox = new QHBoxLayout( configDialogWidget ); configDialogExperimantalCodecsEnabledCheckBox = new QCheckBox( i18n("Enable experimental codecs"), configDialogWidget ); configDialogBox->addWidget( configDialogExperimantalCodecsEnabledCheckBox ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); connect( configDialog.data(), SIGNAL( defaultClicked() ), this, SLOT( configDialogDefault() ) ); } configDialogExperimantalCodecsEnabledCheckBox->setChecked( experimentalCodecsEnabled ); configDialog.data()->show(); } void soundkonverter_codec_ffmpeg::configDialogSave() { if( configDialog.data() ) { const bool old_experimentalCodecsEnabled = experimentalCodecsEnabled; experimentalCodecsEnabled = configDialogExperimantalCodecsEnabledCheckBox->isChecked(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "experimentalCodecsEnabled", experimentalCodecsEnabled ); if( experimentalCodecsEnabled != old_experimentalCodecsEnabled ) { KMessageBox::information( configDialog.data(), i18n("Please restart soundKonverter in order to activate the changes.") ); } configDialog.data()->deleteLater(); } } void soundkonverter_codec_ffmpeg::configDialogDefault() { if( configDialog.data() ) { configDialogExperimantalCodecsEnabledCheckBox->setChecked( false ); } } bool soundkonverter_codec_ffmpeg::hasInfo() { return false; } void soundkonverter_codec_ffmpeg::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_ffmpeg::newCodecWidget() { FFmpegCodecWidget *widget = new FFmpegCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_ffmpeg::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec != "wav" ) { command += binaries["ffmpeg"]; command += "-i"; command += "\"" + escapeUrl(inputFile) + "\""; for( int i=0; ibitrate) + "k"; } if( conversionOptions->pluginName == name() ) { command += conversionOptions->cmdArguments; } command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["ffmpeg"]; command += "-i"; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); if( tags ) newItem->data.length = tags->length; newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_ffmpeg::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputFile) Q_UNUSED(outputFile) Q_UNUSED(inputCodec) Q_UNUSED(outputCodec) Q_UNUSED(_conversionOptions) Q_UNUSED(tags) Q_UNUSED(replayGain) return QStringList(); } float soundkonverter_codec_ffmpeg::parseOutput( const QString& output, int *length ) { // Duration: 00:02:16.50, start: 0.000000, bitrate: 1411 kb/s // size= 2445kB time=00:01:58.31 bitrate= 169.3kbits/s QRegExp regLength("Duration: (\\d{2}):(\\d{2}):(\\d{2})\\.(\\d{2})"); if( length && output.contains(regLength) ) { *length = regLength.cap(1).toInt()*3600 + regLength.cap(2).toInt()*60 + regLength.cap(3).toInt(); } QRegExp reg1("time=(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d{2})"); QRegExp reg2("time=(\\d+)\\.\\d"); if( output.contains(reg1) ) { return reg1.cap(1).toInt()*3600 + reg1.cap(2).toInt()*60 + reg1.cap(3).toInt(); } else if( output.contains(reg2) ) { return reg2.cap(1).toInt(); } // TODO error handling // Error while decoding stream #0.0 return -1; } float soundkonverter_codec_ffmpeg::parseOutput( const QString& output ) { return parseOutput( output, 0 ); } void soundkonverter_codec_ffmpeg::processOutput() { for( int i=0; iprocess == QObject::sender() ) { const QString output = backendItems.at(i)->process->readAllStandardOutput().data(); CodecPluginItem *pluginItem = qobject_cast(backendItems.at(i)); float progress = parseOutput( output, &pluginItem->data.length ); if( progress == -1 && !output.simplified().isEmpty() ) logOutput( backendItems.at(i)->id, output ); progress = progress * 100 / pluginItem->data.length; if( progress > backendItems.at(i)->progress ) backendItems.at(i)->progress = progress; return; } } } void soundkonverter_codec_ffmpeg::infoProcessOutput() { infoProcessOutputData.append( infoProcess.data()->readAllStandardOutput().data() ); } void soundkonverter_codec_ffmpeg::infoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ) { Q_UNUSED(exitStatus) Q_UNUSED(exitCode) QRegExp regVersion("ffmpeg version (\\d+)\\.(\\d+) "); if( infoProcessOutputData.contains( regVersion ) ) { ffmpegVersionMajor = regVersion.cap(1).toInt(); ffmpegVersionMinor = regVersion.cap(2).toInt(); } ffmpegCodecList.clear(); for( int i=0; igroup( "Plugin-"+name() ); group.writeEntry( "configVersion", version() ); group.writeEntry( "ffmpegVersionMajor", ffmpegVersionMajor ); group.writeEntry( "ffmpegVersionMinor", ffmpegVersionMinor ); group.writeEntry( "ffmpegLastModified", ffmpegLastModified ); group.writeEntry( "codecList", ffmpegCodecList.toList() ); infoProcessOutputData.clear(); infoProcess.data()->deleteLater(); } #include "soundkonverter_codec_ffmpeg.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/PaxHeaders.25599/soundkonverter_codec_ffm0000644000175000001440000000006212105142353032233 xustar000000000000000020 atime=1360315627 30 ctime=1387631579.153410872 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.h0000755000175000001440000000453612105142353032601 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_FFMPEG_H #define SOUNDKONVERTER_CODEC_FFMPEG_H #include "../../core/codecplugin.h" #include #include class ConversionOptions; class KDialog; class QCheckBox; class soundkonverter_codec_ffmpeg : public CodecPlugin { Q_OBJECT public: struct FFmpegCodecData { QString name; bool external; bool experimental; }; struct CodecData { QString codecName; QList ffmpegCodecList; FFmpegCodecData currentFFmpegCodec; }; /** Default Constructor */ soundkonverter_codec_ffmpeg( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_ffmpeg(); QString name(); int version(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output, int *length ); float parseOutput( const QString& output ); private: QList codecList; QWeakPointer infoProcess; QString infoProcessOutputData; QWeakPointer configDialog; QCheckBox *configDialogExperimantalCodecsEnabledCheckBox; int configVersion; bool experimentalCodecsEnabled; int ffmpegVersionMajor; int ffmpegVersionMinor; QDateTime ffmpegLastModified; QSet ffmpegCodecList; private slots: /** Get the process' output */ void processOutput(); void configDialogSave(); void configDialogDefault(); void infoProcessOutput(); void infoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ); }; K_EXPORT_SOUNDKONVERTER_CODEC( ffmpeg, soundkonverter_codec_ffmpeg ) #endif // _SOUNDKONVERTER_CODEC_FFMPEG_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/PaxHeaders.25599/ffmpegcodecglobal.h0000644000175000001440000000006112105142507031027 xustar000000000000000020 atime=1360315719 29 ctime=1387631579.15441086 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/ffmpegcodecglobal.h0000644000175000001440000000021512105142507030437 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "FFmpeg" #endif #ifndef global_plugin_version #define global_plugin_version 2 #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/PaxHeaders.25599/soundkonverter_codec_ffm0000644000175000001440000000006110764724046032250 xustar000000000000000020 atime=1357667633 29 ctime=1387631579.15441086 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_ffmpeg/soundkonverter_codec_ffmpeg.desktop0000755000175000001440000000053510764724046034034 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter FFmpeg Plugin X-KDE-Library=soundkonverter_codec_ffmpeg ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_ffmpeg X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_mplayer0000644000175000001440000000006212105142354025364 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.186410459 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/0000755000175000001440000000000012105142354025052 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006212105142354030201 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.165410722 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/CMakeLists.txt0000755000175000001440000000116612105142354027621 0ustar00danielusers00000000000000project(soundkonverter_codec_mplayer) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_mplayer_SRCS soundkonverter_codec_mplayer.cpp ) kde4_add_plugin(soundkonverter_codec_mplayer ${soundkonverter_codec_mplayer_SRCS}) target_link_libraries(soundkonverter_codec_mplayer ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_mplayer DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_mplayer.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/PaxHeaders.25599/soundkonverter_codec_mp0000644000175000001440000000006112105142354032304 xustar000000000000000020 atime=1360315628 29 ctime=1387631579.16641071 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/soundkonverter_codec_mplayer.h0000755000175000001440000000261412105142354033207 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_MPLAYER_H #define SOUNDKONVERTER_CODEC_MPLAYER_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_mplayer : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_mplayer( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_mplayer(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& format ); void showConfigDialog( ActionType action, const QString& format, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); private: QStringList fromCodecs; QStringList toCodecs; QMap codecMap; }; K_EXPORT_SOUNDKONVERTER_CODEC( mplayer, soundkonverter_codec_mplayer ) #endif // SOUNDKONVERTER_CODEC_MPLAYER_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/PaxHeaders.25599/soundkonverter_codec_mp0000644000175000001440000000006111404710577032315 xustar000000000000000020 atime=1357667633 29 ctime=1387631579.16641071 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/soundkonverter_codec_mplayer.desktop0000755000175000001440000000054011404710577034436 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter MPlayer Plugin X-KDE-Library=soundkonverter_codec_mplayer ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_mplayer X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/PaxHeaders.25599/soundkonverter_codec_mp0000644000175000001440000000006112105142354032304 xustar000000000000000020 atime=1387530399 29 ctime=1387631579.16641071 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/soundkonverter_codec_mplayer.cpp0000755000175000001440000001306612105142354033545 0ustar00danielusers00000000000000 #include "mplayercodecglobal.h" #include "soundkonverter_codec_mplayer.h" #include "../../core/conversionoptions.h" soundkonverter_codec_mplayer::soundkonverter_codec_mplayer( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["mplayer"] = ""; } soundkonverter_codec_mplayer::~soundkonverter_codec_mplayer() {} QString soundkonverter_codec_mplayer::name() { return global_plugin_name; } QList soundkonverter_codec_mplayer::codecTable() { QList table; /// decode fromCodecs += "wav"; fromCodecs += "ogg vorbis"; fromCodecs += "mp3"; fromCodecs += "flac"; fromCodecs += "wma"; fromCodecs += "aac"; fromCodecs += "ac3"; fromCodecs += "m4a/alac"; fromCodecs += "mp2"; fromCodecs += "als"; fromCodecs += "amr nb"; fromCodecs += "amr wb"; fromCodecs += "ape"; fromCodecs += "speex"; fromCodecs += "m4a/aac"; fromCodecs += "mp1"; fromCodecs += "musepack"; fromCodecs += "shorten"; fromCodecs += "tta"; fromCodecs += "wavpack"; fromCodecs += "ra"; fromCodecs += "sad"; /// containers fromCodecs += "3gp"; fromCodecs += "rm"; /// video fromCodecs += "avi"; fromCodecs += "mkv"; fromCodecs += "ogv"; fromCodecs += "mpeg"; fromCodecs += "mov"; fromCodecs += "mp4"; fromCodecs += "flv"; fromCodecs += "wmv"; fromCodecs += "rv"; /// encode toCodecs += "wav"; for( int i=0; i codecs; codecs += QSet::fromList(fromCodecs); codecs += QSet::fromList(toCodecs); allCodecs = codecs.toList(); return table; } bool soundkonverter_codec_mplayer::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_mplayer::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_mplayer::hasInfo() { return false; } void soundkonverter_codec_mplayer::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_mplayer::newCodecWidget() { return 0; } unsigned int soundkonverter_codec_mplayer::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { const QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_mplayer::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(_conversionOptions) Q_UNUSED(tags) Q_UNUSED(replayGain) if( outputFile.isEmpty() ) return QStringList(); QStringList command; if( outputCodec == "wav" ) { command += binaries["mplayer"]; command += "-ao"; command += "pcm:file=\"" + escapeUrl(outputFile) + "\""; command += "-vc"; command += "null"; command += "-vo"; command += "null"; command += "\"" + escapeUrl(inputFile) + "\""; } return command; } float soundkonverter_codec_mplayer::parseOutput( const QString& output ) { // decoding audio // A: 921.7 (15:21.7) of 2260.0 (37:40.0) 0.4% // decoding video // A:19743.6 V:19743.6 A-V: 0.016 ct: -0.506 491/491 0% 0% 0.6% 237 0 QRegExp regAudio("A:\\s+(\\d+\\.\\d)\\s+\\(.*\\)\\s+of\\s+(\\d+\\.\\d)\\s+\\(.*\\)"); if( output.contains(regAudio) ) { return regAudio.cap(1).toFloat()/regAudio.cap(2).toFloat()*100.0f; } QRegExp regVideo("A:\\s*\\d+\\.\\d\\s+V:\\s*\\d+\\.\\d"); if( output.contains(regVideo) ) { return 0; } if( output.contains("Too many buffered pts") ) { return 0; } // no encoding // TODO error handling return -1; } #include "soundkonverter_codec_mplayer.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/PaxHeaders.25599/mplayercodecglobal.h0000644000175000001440000000006211404710337031445 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.186410459 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mplayer/mplayercodecglobal.h0000644000175000001440000000011011404710337031046 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "MPlayer" #endif ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_mac0000644000175000001440000000006212105142354024453 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.281409272 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/0000755000175000001440000000000012105142354024141 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/PaxHeaders.25599/soundkonverter_codec_mac.cp0000644000175000001440000000006212105142354032121 xustar000000000000000020 atime=1387530393 30 ctime=1387631579.207410197 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/soundkonverter_codec_mac.cpp0000755000175000001440000001134712105142354031723 0ustar00danielusers00000000000000 #include "maccodecglobal.h" #include "soundkonverter_codec_mac.h" #include "../../core/conversionoptions.h" #include "maccodecwidget.h" soundkonverter_codec_mac::soundkonverter_codec_mac( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["mac"] = ""; allCodecs += "ape"; allCodecs += "wav"; } soundkonverter_codec_mac::~soundkonverter_codec_mac() {} QString soundkonverter_codec_mac::name() { return global_plugin_name; } QList soundkonverter_codec_mac::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "ape"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["mac"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "ape", "mac" ) + "\n" + standardMessage( "install_website_backend,url", "mac", "http://www.monkeysaudio.com" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "ape"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["mac"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "ape", "mac" ) + "\n" + standardMessage( "install_website_backend,url", "mac", "http://www.monkeysaudio.com" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_mac::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_mac::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_mac::hasInfo() { return false; } void soundkonverter_codec_mac::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_mac::newCodecWidget() { MacCodecWidget *widget = new MacCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_mac::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return BackendPlugin::UnknownError; QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "ape" ) { command += binaries["mac"]; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; if( conversionOptions->pluginName == global_plugin_name ) { command += "-c"+QString::number((int)conversionOptions->compressionLevel); } } else { command += binaries["mac"]; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; command += "-d"; } if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_mac::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputFile) Q_UNUSED(outputFile) Q_UNUSED(inputCodec) Q_UNUSED(outputCodec) Q_UNUSED(_conversionOptions) Q_UNUSED(tags) Q_UNUSED(replayGain) return QStringList(); } float soundkonverter_codec_mac::parseOutput( const QString& output ) { // Progress: 55.2% (1.0 seconds remaining, 1.2 seconds total) QRegExp regEnc("Progress:\\s+(\\d+.\\d)%"); if( output.contains(regEnc) ) { return regEnc.cap(1).toFloat(); } return -1; } #include "soundkonverter_codec_mac.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605666027312 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.207410197 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/CMakeLists.txt0000755000175000001440000000115411726605666026727 0ustar00danielusers00000000000000project(soundkonverter_codec_mac) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_mac_SRCS soundkonverter_codec_mac.cpp maccodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_mac ${soundkonverter_codec_mac_SRCS}) target_link_libraries(soundkonverter_codec_mac ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_mac DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_mac.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/PaxHeaders.25599/maccodecwidget.cpp0000644000175000001440000000006212105142354030176 xustar000000000000000020 atime=1368948790 30 ctime=1387631579.207410197 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/maccodecwidget.cpp0000644000175000001440000000635712105142354027622 0ustar00danielusers00000000000000 #include "maccodecglobal.h" #include "maccodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include #include MacCodecWidget::MacCodecWidget() : CodecWidget(), currentFormat( "ape" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lCompressionLevel = new QLabel( i18n("Compression level:"), this ); topBox->addWidget( lCompressionLevel ); sCompressionLevel = new QSlider( Qt::Horizontal, this ); sCompressionLevel->setRange( 1, 5 ); sCompressionLevel->setSingleStep( 1 ); sCompressionLevel->setPageStep( 1 ); // sQuality->setTickPosition( QSlider::TicksBelow ); // sQuality->setFixedWidth( sQuality->sizeHint().width() ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSliderChanged(int)) ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sCompressionLevel ); iCompressionLevel = new QSpinBox( this ); iCompressionLevel->setRange( 1, 5 ); iCompressionLevel->setSingleStep( 1 ); iCompressionLevel->setSuffix( "000" ); iCompressionLevel->setFixedWidth( iCompressionLevel->sizeHint().width() ); // dQuality->setFixedHeight( cMode->minimumSizeHint().height() ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSpinBoxChanged(int)) ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( iCompressionLevel ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); iCompressionLevel->setValue( 2 ); } MacCodecWidget::~MacCodecWidget() {} ConversionOptions *MacCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Lossless; options->compressionLevel = iCompressionLevel->value()*1000; return options; } bool MacCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; iCompressionLevel->setValue( options->compressionLevel/1000 ); return true; } void MacCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString MacCodecWidget::currentProfile() { return i18n("Lossless"); } bool MacCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int MacCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } void MacCodecWidget::compressionLevelSliderChanged( int quality ) { iCompressionLevel->setValue( quality ); } void MacCodecWidget::compressionLevelSpinBoxChanged( int quality ) { sCompressionLevel->setValue( quality ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/PaxHeaders.25599/maccodecwidget.h0000644000175000001440000000006212105142354027643 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.207410197 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/maccodecwidget.h0000644000175000001440000000154312105142354027257 0ustar00danielusers00000000000000 #ifndef MACCODECWIDGET_H #define MACCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QSpinBox; class QCheckBox; class KLineEdit; class MacCodecWidget : public CodecWidget { Q_OBJECT public: MacCodecWidget(); ~MacCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QSlider *sCompressionLevel; QSpinBox *iCompressionLevel; QString currentFormat; // holds the current output file format private slots: void compressionLevelSliderChanged( int quality ); void compressionLevelSpinBoxChanged( int quality ); }; #endif // MACCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/PaxHeaders.25599/soundkonverter_codec_mac.de0000644000175000001440000000006211440746150032114 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.208410184 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/soundkonverter_codec_mac.desktop0000755000175000001440000000052411440746150032612 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Mac Plugin X-KDE-Library=soundkonverter_codec_mac ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_mac X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/PaxHeaders.25599/soundkonverter_codec_mac.h0000644000175000001440000000006212105142354031746 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.232409884 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/soundkonverter_codec_mac.h0000755000175000001440000000242312105142354031363 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_MAC_H #define SOUNDKONVERTER_CODEC_MAC_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_mac : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_mac( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_mac(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( mac, soundkonverter_codec_mac ) #endif // _SOUNDKONVERTER_CODEC_MAC_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/PaxHeaders.25599/maccodecglobal.h0000644000175000001440000000006211440746150027625 xustar000000000000000020 atime=1371411852 30 ctime=1387631579.281409272 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_mac/maccodecglobal.h0000644000175000001440000000010411440746150027231 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Mac" #endif ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_neroaac0000644000175000001440000000006212105142354025323 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.318408809 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/0000755000175000001440000000000012105142354025011 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/PaxHeaders.25599/neroaaccodecglobal.h0000644000175000001440000000006211374527057031356 xustar000000000000000020 atime=1371411858 30 ctime=1387631579.317408822 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/neroaaccodecglobal.h0000644000175000001440000000011111374527057030760 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Nero AAC" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/PaxHeaders.25599/soundkonverter_codec_ne0000644000175000001440000000006212105142354032232 xustar000000000000000020 atime=1387530398 30 ctime=1387631579.317408822 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.cpp0000755000175000001440000001652312105142354033444 0ustar00danielusers00000000000000 #include "neroaaccodecglobal.h" #include "soundkonverter_codec_neroaac.h" #include "neroaaccodecwidget.h" #include "../../core/conversionoptions.h" #include "../../metadata/tagengine.h" // NeroAAC is a propritary implementation of an aac encoder that claims to reach a better quality then faac.\nYou can download it at http://www.nero.com/enu/downloads-nerodigital-nero-aac-codec.php soundkonverter_codec_neroaac::soundkonverter_codec_neroaac( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["neroAacEnc"] = ""; binaries["neroAacDec"] = ""; allCodecs += "m4a/aac"; allCodecs += "mp4"; allCodecs += "wav"; } soundkonverter_codec_neroaac::~soundkonverter_codec_neroaac() {} QString soundkonverter_codec_neroaac::name() { return global_plugin_name; } QList soundkonverter_codec_neroaac::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "m4a/aac"; newTrunk.rating = 90; newTrunk.enabled = ( binaries["neroAacEnc"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "m4a/aac", "neroAacEnc" ) + "\n" + i18n( "You can download '%1' at '%2' after entering an email address.", QString("neroAacEnc"), QString("http://www.nero.com/enu/downloads-nerodigital-nero-aac-codec.php") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "m4a/aac"; newTrunk.codecTo = "wav"; newTrunk.rating = 90; newTrunk.enabled = ( binaries["neroAacDec"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "m4a/aac", "neroAacDec" ) + "\n" + i18n( "You can download '%1' at '%2' after entering an email address.", QString("neroAacDec"), QString("http://www.nero.com/enu/downloads-nerodigital-nero-aac-codec.php") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "mp4"; newTrunk.codecTo = "wav"; newTrunk.rating = 90; newTrunk.enabled = ( binaries["neroAacDec"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "mp4", "neroAacDec" ) + "\n" + i18n( "You can download '%1' at '%2' after entering an email address.", QString("neroAacDec"), QString("http://www.nero.com/enu/downloads-nerodigital-nero-aac-codec.php") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_neroaac::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_neroaac::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_neroaac::hasInfo() { return false; } void soundkonverter_codec_neroaac::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_neroaac::newCodecWidget() { NeroaacCodecWidget *widget = new NeroaacCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_neroaac::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->data.length = tags ? tags->length : 200; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_neroaac::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "m4a/aac" ) { command += binaries["neroAacEnc"]; if( conversionOptions->qualityMode == ConversionOptions::Quality ) { command += "-q"; command += QString::number(conversionOptions->quality); } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { if( conversionOptions->bitrateMode == ConversionOptions::Abr ) { command += "-br"; command += QString::number(conversionOptions->bitrate*1000); } else if( conversionOptions->bitrateMode == ConversionOptions::Cbr ) { command += "-cbr"; command += QString::number(conversionOptions->bitrate*1000); } } command += "-if"; command += "\"" + escapeUrl(inputFile) + "\""; command += "-of"; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["neroAacDec"]; command += "-if"; command += "\"" + escapeUrl(inputFile) + "\""; command += "-of"; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_neroaac::parseOutput( const QString& output, int length ) { if( length == 0 ) return -1; // Processed 218 seconds... QRegExp regEnc("Processed (\\d+) seconds"); if( output.contains(regEnc) ) { return (float)regEnc.cap(1).toInt()*100/length; } // no output when decoding return -1; } float soundkonverter_codec_neroaac::parseOutput( const QString& output ) { return parseOutput( output, 0 ); } void soundkonverter_codec_neroaac::processOutput() { CodecPluginItem *pluginItem; float progress; for( int i=0; iprocess == QObject::sender() ) { QString output = backendItems.at(i)->process->readAllStandardOutput().data(); pluginItem = qobject_cast(backendItems.at(i)); progress = parseOutput( output, pluginItem->data.length ); if( progress == -1 && !output.simplified().isEmpty() ) logOutput( backendItems.at(i)->id, output ); if( progress > backendItems.at(i)->progress ) backendItems.at(i)->progress = progress; return; } } } #include "soundkonverter_codec_neroaac.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605650030153 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.317408822 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/CMakeLists.txt0000755000175000001440000000122011726605650027562 0ustar00danielusers00000000000000project(soundkonverter_codec_neroaac) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_neroaac_SRCS soundkonverter_codec_neroaac.cpp neroaaccodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_neroaac ${soundkonverter_codec_neroaac_SRCS}) target_link_libraries(soundkonverter_codec_neroaac ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_neroaac DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_neroaac.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/PaxHeaders.25599/neroaaccodecwidget.h0000644000175000001440000000006212105142354031363 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.317408822 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.h0000644000175000001440000000176312105142354031003 0ustar00danielusers00000000000000 #ifndef NEROAACCODECWIDGET_H #define NEROAACCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QDoubleSpinBox; class NeroaacCodecWidget : public CodecWidget { Q_OBJECT public: NeroaacCodecWidget(); ~NeroaacCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: KComboBox *cMode; QSlider *sQuality; QDoubleSpinBox *dQuality; KComboBox *cBitrateMode; QString currentFormat; // holds the current output file format int bitrateForQuality( double quality ); double qualityForBitrate( int bitrate ); private slots: void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( double quality ); }; #endif // NEROAACCODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/PaxHeaders.25599/neroaaccodecwidget.cpp0000644000175000001440000000006212105142354031716 xustar000000000000000020 atime=1368948787 30 ctime=1387631579.317408822 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/neroaaccodecwidget.cpp0000644000175000001440000002304412105142354031332 0ustar00danielusers00000000000000 #include "neroaaccodecglobal.h" #include "neroaaccodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include #include #include #include NeroaacCodecWidget::NeroaacCodecWidget() : CodecWidget(), currentFormat( "m4a/aac" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lMode = new QLabel( i18n("Mode:"), this ); topBox->addWidget( lMode ); cMode = new KComboBox( this ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cMode ); sQuality = new QSlider( Qt::Horizontal, this ); // sQuality->setTickPosition( QSlider::TicksBelow ); // sQuality->setFixedWidth( sQuality->sizeHint().width() ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); dQuality = new QDoubleSpinBox( this ); dQuality->setRange( 8, 320 ); dQuality->setSuffix( " kbps" ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); // dQuality->setFixedHeight( cMode->minimumSizeHint().height() ); connect( dQuality, SIGNAL(valueChanged(double)), this, SLOT(qualitySpinBoxChanged(double)) ); connect( dQuality, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); topBox->addWidget( dQuality ); topBox->addSpacing( 12 ); QLabel *lBitrateMode = new QLabel( i18n("Bitrate mode:"), this ); topBox->addWidget( lBitrateMode ); cBitrateMode = new KComboBox( this ); cBitrateMode->addItem( i18n("Variable") ); cBitrateMode->addItem( i18n("Average") ); cBitrateMode->addItem( i18n("Constant") ); cBitrateMode->setFixedWidth( cBitrateMode->sizeHint().width() ); connect( cBitrateMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cBitrateMode ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); modeChanged( 0 ); } NeroaacCodecWidget::~NeroaacCodecWidget() {} // TODO optimize int NeroaacCodecWidget::bitrateForQuality( double quality ) { return quality*100/3; } // TODO optimize double NeroaacCodecWidget::qualityForBitrate( int bitrate ) { return (double)bitrate*3/100; } ConversionOptions *NeroaacCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); if( cMode->currentText()==i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); options->bitrate = bitrateForQuality( options->quality ); options->bitrateMode = ConversionOptions::Vbr; } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = dQuality->value(); options->quality = qualityForBitrate( options->bitrate ); options->bitrateMode = ( cBitrateMode->currentText()==i18n("Average") ) ? ConversionOptions::Abr : ConversionOptions::Cbr; } return options; } bool NeroaacCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( cMode->findText(i18n("Quality")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->quality ); cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Variable")) ); } else { cMode->setCurrentIndex( cMode->findText(i18n("Bitrate")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->bitrate ); if( options->bitrateMode == ConversionOptions::Abr ) cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Average")) ); else cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Constant")) ); } return true; } void NeroaacCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString NeroaacCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 0.3 ) { return i18n("Very low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 0.4 ) { return i18n("Low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 0.5 ) { return i18n("Medium"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 0.6 ) { return i18n("High"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 0.7 ) { return i18n("Very high"); } return i18n("User defined"); } bool NeroaacCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 60 ); dQuality->setValue( 60 ); cBitrateMode->setCurrentIndex( 0 ); // chChannels->setChecked( true ); // chSamplerate->setChecked( true ); // cSamplerate->setCurrentIndex( 4 ); return true; } else if( profile == i18n("Low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 80 ); dQuality->setValue( 80 ); cBitrateMode->setCurrentIndex( 0 ); // chChannels->setChecked( false ); // chSamplerate->setChecked( true ); // cSamplerate->setCurrentIndex( 4 ); return true; } else if( profile == i18n("Medium") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 100 ); dQuality->setValue( 100 ); cBitrateMode->setCurrentIndex( 0 ); // chChannels->setChecked( false ); // chSamplerate->setChecked( false ); return true; } else if( profile == i18n("High") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 120 ); dQuality->setValue( 120 ); cBitrateMode->setCurrentIndex( 0 ); // chChannels->setChecked( false ); // chSamplerate->setChecked( false ); return true; } else if( profile == i18n("Very high") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 140 ); dQuality->setValue( 140 ); cBitrateMode->setCurrentIndex( 0 ); // chChannels->setChecked( false ); // chSamplerate->setChecked( false ); return true; } return false; } int NeroaacCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { if( cMode->currentIndex() == 0 ) { dataRate = 500000 + dQuality->value()*150000; if( dQuality->value() > 7 ) dataRate += (dQuality->value()-7)*250000; if( dQuality->value() > 9 ) dataRate += (dQuality->value()-9)*800000; } else { dataRate = dQuality->value()/8*60*1000; } // if( chChannels->isChecked() ) // { // dataRate *= 0.9f; // } // if( chSamplerate->isChecked() && cSamplerate->currentText().replace(" Hz","").toInt() <= 22050 ) // { // dataRate *= 0.9f; // } } return dataRate; } void NeroaacCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( 0, 100 ); sQuality->setSingleStep( 5 ); dQuality->setRange( 0, 1 ); dQuality->setSingleStep( 0.01 ); dQuality->setDecimals( 2 ); dQuality->setSuffix( "" ); sQuality->setValue( 50 ); dQuality->setValue( 0.5 ); // dQuality->setValue( qualityForBitrate(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); cBitrateMode->clear(); cBitrateMode->addItem( i18n("Variable") ); cBitrateMode->setEnabled( false ); } else { sQuality->setRange( 1600, 40000 ); sQuality->setSingleStep( 1600 ); dQuality->setRange( 16, 400 ); dQuality->setSingleStep( 1 ); dQuality->setDecimals( 0 ); dQuality->setSuffix( " kbps" ); sQuality->setValue( 16000 ); dQuality->setValue( 160 ); // dQuality->setValue( bitrateForQuality(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); cBitrateMode->clear(); cBitrateMode->addItem( i18n("Average") ); cBitrateMode->addItem( i18n("Constant") ); cBitrateMode->setEnabled( true ); } } void NeroaacCodecWidget::qualitySliderChanged( int quality ) { dQuality->setValue( double(quality)/100 ); } void NeroaacCodecWidget::qualitySpinBoxChanged( double quality ) { sQuality->setValue( round(quality*100) ); } // void NeroaacCodecWidget::channelsToggled( bool enabled ) // { // cChannels->setEnabled( enabled ); // } // void NeroaacCodecWidget::samplerateToggled( bool enabled ) // { // cSamplerate->setEnabled( enabled ); // } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/PaxHeaders.25599/soundkonverter_codec_ne0000644000175000001440000000006211374526761032251 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.318408809 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.desktop0000755000175000001440000000054111374526761034343 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Nero AAC Plugin X-KDE-Library=soundkonverter_codec_neroaac ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_neroaac X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/PaxHeaders.25599/soundkonverter_codec_ne0000644000175000001440000000006212105142354032232 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.318408809 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_neroaac/soundkonverter_codec_neroaac.h0000755000175000001440000000267412105142354033113 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_NEROAAC_H #define SOUNDKONVERTER_CODEC_NEROAAC_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_neroaac : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_neroaac( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_neroaac(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output, int length ); float parseOutput( const QString& output ); private slots: /** Get the process' output */ void processOutput(); }; K_EXPORT_SOUNDKONVERTER_CODEC( neroaac, soundkonverter_codec_neroaac ) #endif // _SOUNDKONVERTER_CODEC_NEROAAC_H_ ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_wavpack0000644000175000001440000000006212105142355025350 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.358408309 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/0000755000175000001440000000000012105142355025036 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/PaxHeaders.25599/soundkonverter_codec_wa0000644000175000001440000000006212105142355032264 xustar000000000000000020 atime=1379147581 30 ctime=1387631579.328408684 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.cpp0000755000175000001440000001265712105142355033521 0ustar00danielusers00000000000000 #include "wavpackcodecglobal.h" #include "soundkonverter_codec_wavpack.h" #include "../../core/conversionoptions.h" #include "wavpackcodecwidget.h" soundkonverter_codec_wavpack::soundkonverter_codec_wavpack( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["wavpack"] = ""; binaries["wvunpack"] = ""; allCodecs += "wavpack"; allCodecs += "wav"; } soundkonverter_codec_wavpack::~soundkonverter_codec_wavpack() {} QString soundkonverter_codec_wavpack::name() { return global_plugin_name; } QList soundkonverter_codec_wavpack::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "wavpack"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["wavpack"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "wavpack", "wavpack" ) + "\n" + standardMessage( "install_website_backend,url", "wavpack", "http://www.wavpack.com" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "wavpack"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["wvunpack"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "wavpack", "wvunpack" ) + "\n" + i18n( "'%1' is usually in the package '%2' which you can download at %3", QString("wvunpack"), QString("wavpack"), QString("http://www.wavpack.com") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_wavpack::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_wavpack::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_wavpack::hasInfo() { return false; } void soundkonverter_codec_wavpack::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_wavpack::newCodecWidget() { WavPackCodecWidget *widget = new WavPackCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_wavpack::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_wavpack::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "wavpack" ) { command += binaries["wavpack"]; if( conversionOptions->pluginName == global_plugin_name ) { switch( (int)conversionOptions->compressionLevel ) { case 0: { command += "-f"; break; } case 2: { command += "-h"; break; } case 3: { command += "-hh"; break; } } command += conversionOptions->cmdArguments; } if( inputFile.isEmpty() ) { command += "--raw-pcm"; } command += "\"" + escapeUrl(inputFile) + "\""; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["wvunpack"]; command += "\"" + escapeUrl(inputFile) + "\""; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_wavpack::parseOutput( const QString& output ) { // creating test.wv, 58% done... // restoring test.wv.wav, 31% done... QRegExp reg("\\s+(\\d+)% done"); if( output.contains(reg) ) { return (float)reg.cap(1).toInt(); } return -1; } #include "soundkonverter_codec_wavpack.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605607030201 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.328408684 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/CMakeLists.txt0000755000175000001440000000122011726605607027610 0ustar00danielusers00000000000000project(soundkonverter_codec_wavpack) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_wavpack_SRCS soundkonverter_codec_wavpack.cpp wavpackcodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_wavpack ${soundkonverter_codec_wavpack_SRCS}) target_link_libraries(soundkonverter_codec_wavpack ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_wavpack DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_wavpack.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/PaxHeaders.25599/wavpackcodecglobal.h0000644000175000001440000000006211440753432031416 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.347408447 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/wavpackcodecglobal.h0000644000175000001440000000011011440753432031017 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "WavPack" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/PaxHeaders.25599/soundkonverter_codec_wa0000644000175000001440000000006212105142355032264 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.358408309 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.h0000755000175000001440000000246312105142355033160 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_WAVPACK_H #define SOUNDKONVERTER_CODEC_WAVPACK_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_wavpack : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_wavpack( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_wavpack(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( wavpack, soundkonverter_codec_wavpack ) #endif // _SOUNDKONVERTER_CODEC_WAVPACK_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/PaxHeaders.25599/wavpackcodecwidget.cpp0000644000175000001440000000006212105142355031767 xustar000000000000000020 atime=1387530404 30 ctime=1387631579.358408309 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.cpp0000644000175000001440000000601312105142355031400 0ustar00danielusers00000000000000 #include "wavpackcodecglobal.h" #include "wavpackcodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include WavPackCodecWidget::WavPackCodecWidget() : CodecWidget(), currentFormat( "wavpack" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lCompressionLevel = new QLabel( i18n("Compression level:"), this ); topBox->addWidget( lCompressionLevel ); cCompressionLevel = new KComboBox( this ); cCompressionLevel->addItem( i18n("Fast") ); cCompressionLevel->addItem( i18n("Normal") ); cCompressionLevel->addItem( i18n("High quality") ); cCompressionLevel->addItem( i18n("Very high quality") ); topBox->addWidget( cCompressionLevel ); topBox->addStretch(); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); cCompressionLevel->setCurrentIndex( 1 ); } WavPackCodecWidget::~WavPackCodecWidget() {} ConversionOptions *WavPackCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Lossless; options->compressionLevel = cCompressionLevel->currentIndex(); if( cCmdArguments->isChecked() ) options->cmdArguments = lCmdArguments->text(); else options->cmdArguments = ""; return options; } bool WavPackCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; cCompressionLevel->setCurrentIndex( options->compressionLevel ); cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void WavPackCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString WavPackCodecWidget::currentProfile() { return i18n("Lossless"); } bool WavPackCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int WavPackCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/PaxHeaders.25599/wavpackcodecwidget.h0000644000175000001440000000006212105142355031434 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.358408309 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/wavpackcodecwidget.h0000644000175000001440000000137212105142355031050 0ustar00danielusers00000000000000 #ifndef WAVPACKCODECWIDGET_H #define WAVPACKCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QCheckBox; class KLineEdit; class WavPackCodecWidget : public CodecWidget { Q_OBJECT public: WavPackCodecWidget(); ~WavPackCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: KComboBox *cCompressionLevel; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format }; #endif // WAVPACKCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/PaxHeaders.25599/soundkonverter_codec_wa0000644000175000001440000000006211440753432032271 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.358408309 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_wavpack/soundkonverter_codec_wavpack.desktop0000755000175000001440000000054011440753432034401 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter WavPack Plugin X-KDE-Library=soundkonverter_codec_wavpack ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_wavpack X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_replaygain_aacgain0000644000175000001440000000006212105142507026354 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.418407559 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/0000755000175000001440000000000012105142507026042 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605602031201 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.392407884 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/CMakeLists.txt0000755000175000001440000000121211726605602030611 0ustar00danielusers00000000000000project(soundkonverter_replaygain_aacgain) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_replaygain_aacgain_SRCS soundkonverter_replaygain_aacgain.cpp ) kde4_add_plugin(soundkonverter_replaygain_aacgain ${soundkonverter_replaygain_aacgain_SRCS}) target_link_libraries(soundkonverter_replaygain_aacgain ${KDE4_KDEUI_LIBS} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_replaygain_aacgain DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_replaygain_aacgain.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/PaxHeaders.25599/soundkonverter_rep0000644000175000001440000000024611375521755032334 xustar0000000000000000116 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.desktop 20 atime=1357667634 30 ctime=1387631579.392407884 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.d0000755000175000001440000000055711375521755035205 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter aacgain plugin X-KDE-Library=soundkonverter_replaygain_aacgain ServiceTypes=soundKonverter/ReplayGainPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_replaygain_aacgain X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/PaxHeaders.25599/aacreplaygaingloba0000644000175000001440000000006211773075463032201 xustar000000000000000020 atime=1387530397 30 ctime=1387631579.392407884 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/aacreplaygainglobal.h0000644000175000001440000000011111773075463032205 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "AAC Gain" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/PaxHeaders.25599/soundkonverter_rep0000644000175000001440000000006212105142507032312 xustar000000000000000020 atime=1360315719 30 ctime=1387631579.417407572 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.h0000755000175000001440000000316412105142507035170 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_REPLAYGAIN_AACGAIN_H #define SOUNDKONVERTER_REPLAYGAIN_AACGAIN_H #include "../../core/replaygainplugin.h" #include #include class ConversionOptions; class KDialog; class QComboBox; class QCheckBox; class AacGainPluginItem : public ReplayGainPluginItem { Q_OBJECT public: AacGainPluginItem( QObject *parent=0 ); ~AacGainPluginItem(); KUrl::List undoFileList; }; class soundkonverter_replaygain_aacgain : public ReplayGainPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_replaygain_aacgain( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_replaygain_aacgain(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); unsigned int apply( const KUrl::List& fileList, ApplyMode mode = Add ); float parseOutput( const QString& output ); private: QWeakPointer configDialog; QComboBox *configDialogTagModeComboBox; QCheckBox *configDialogModifyAudioStreamCheckBox; int tagMode; bool modifyAudioStream; private slots: /** The undo process has exited */ virtual void undoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ); void configDialogSave(); void configDialogDefault(); }; K_EXPORT_SOUNDKONVERTER_REPLAYGAIN( aacgain, soundkonverter_replaygain_aacgain ) #endif // _SOUNDKONVERTER_REPLAYGAIN_AACGAIN_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/PaxHeaders.25599/soundkonverter_rep0000644000175000001440000000024212105142507032312 xustar0000000000000000112 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.cpp 20 atime=1371411858 30 ctime=1387631579.418407559 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_aacgain/soundkonverter_replaygain_aacgain.c0000755000175000001440000002213012105142507035155 0ustar00danielusers00000000000000 #include "aacreplaygainglobal.h" #include "soundkonverter_replaygain_aacgain.h" #include #include #include #include #include AacGainPluginItem::AacGainPluginItem( QObject *parent ) : ReplayGainPluginItem( parent ) {} AacGainPluginItem::~AacGainPluginItem() {} soundkonverter_replaygain_aacgain::soundkonverter_replaygain_aacgain( QObject *parent, const QStringList& args ) : ReplayGainPlugin( parent ) { Q_UNUSED(args) binaries["aacgain"] = ""; allCodecs += "m4v"; allCodecs += "mp3"; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); tagMode = group.readEntry( "tagMode", 0 ); modifyAudioStream = group.readEntry( "modifyAudioStream", true ); } soundkonverter_replaygain_aacgain::~soundkonverter_replaygain_aacgain() {} QString soundkonverter_replaygain_aacgain::name() { return global_plugin_name; } QList soundkonverter_replaygain_aacgain::codecTable() { QList table; ReplayGainPipe newPipe; newPipe.codecName = "m4a/aac"; newPipe.rating = 100; newPipe.enabled = ( binaries["aacgain"] != "" ); newPipe.problemInfo = standardMessage( "replygain_codec,backend", "m4a/aac", "aacgain" ) + "\n" + standardMessage( "install_patented_backend", "aacgain" ); table.append( newPipe ); newPipe.codecName = "mp3"; newPipe.rating = 95; newPipe.enabled = ( binaries["aacgain"] != "" ); newPipe.problemInfo = standardMessage( "replygain_codec,backend", "mp3", "aacgain" ) + "\n" + standardMessage( "install_patented_backend", "aacgain" ); table.append( newPipe ); return table; } bool soundkonverter_replaygain_aacgain::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return true; } void soundkonverter_replaygain_aacgain::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) if( !configDialog.data() ) { configDialog = new KDialog( parent ); configDialog.data()->setCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Default ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QVBoxLayout *configDialogBox = new QVBoxLayout( configDialogWidget ); QHBoxLayout *configDialogBox1 = new QHBoxLayout(); QLabel *configDialogTagModeLabel = new QLabel( i18n("Use tag format:"), configDialogWidget ); configDialogBox1->addWidget( configDialogTagModeLabel ); configDialogTagModeComboBox = new QComboBox( configDialogWidget ); configDialogTagModeComboBox->addItem( "APE" ); configDialogTagModeComboBox->addItem( "ID3v2" ); configDialogBox1->addWidget( configDialogTagModeComboBox ); configDialogBox->addLayout( configDialogBox1 ); QHBoxLayout *configDialogBox2 = new QHBoxLayout(); configDialogModifyAudioStreamCheckBox = new QCheckBox( i18n("Modify audio stream"), configDialogWidget ); configDialogModifyAudioStreamCheckBox->setToolTip( i18n("Write gain adjustments directly into the encoded data. That way the adjustment works with all mp3 players.\nUndoing the changes is still possible since correction data will be written as well.") ); configDialogBox2->addWidget( configDialogModifyAudioStreamCheckBox ); configDialogBox->addLayout( configDialogBox2 ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); connect( configDialog.data(), SIGNAL( defaultClicked() ), this, SLOT( configDialogDefault() ) ); } configDialogTagModeComboBox->setCurrentIndex( tagMode ); configDialogModifyAudioStreamCheckBox->setChecked( modifyAudioStream ); configDialog.data()->show(); } void soundkonverter_replaygain_aacgain::configDialogSave() { if( configDialog.data() ) { tagMode = configDialogTagModeComboBox->currentIndex(); modifyAudioStream = configDialogModifyAudioStreamCheckBox->isChecked(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "tagMode", tagMode ); group.writeEntry( "modifyAudioStream", modifyAudioStream ); configDialog.data()->deleteLater(); } } void soundkonverter_replaygain_aacgain::configDialogDefault() { if( configDialog.data() ) { configDialogTagModeComboBox->setCurrentIndex( 0 ); configDialogModifyAudioStreamCheckBox->setChecked( true ); } } bool soundkonverter_replaygain_aacgain::hasInfo() { return false; } void soundkonverter_replaygain_aacgain::showInfo( QWidget *parent ) { Q_UNUSED(parent) } unsigned int soundkonverter_replaygain_aacgain::apply( const KUrl::List& fileList, ReplayGainPlugin::ApplyMode mode ) { if( fileList.count() <= 0 ) return BackendPlugin::UnknownError; AacGainPluginItem *newItem = new AacGainPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); QStringList command; command += binaries["aacgain"]; command += "-k"; if( mode == ReplayGainPlugin::Add ) { if( modifyAudioStream ) { command += "-a"; } connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); } else if( mode == ReplayGainPlugin::Force ) { if( modifyAudioStream ) { command += "-a"; } command += "-s"; command += "r"; connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); } else { command += "-u"; connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(undoProcessExit(int,QProcess::ExitStatus)) ); newItem->undoFileList = fileList; } if( mode == ReplayGainPlugin::Add || mode == ReplayGainPlugin::Force ) { if( tagMode == 0 ) { // APE tags command += "-s"; command += "a"; } else { // ID3v2 tags command += "-s"; command += "i"; } } foreach( const KUrl file, fileList ) { command += "\"" + escapeUrl(file) + "\""; } newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } void soundkonverter_replaygain_aacgain::undoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ) { Q_UNUSED(exitCode) Q_UNUSED(exitStatus) AacGainPluginItem *item = 0; for( int i=0; iprocess == QObject::sender() ) { item = (AacGainPluginItem*)backendItems.at(i); break; } } if( !item ) return; if( item->undoFileList.count() <= 0 ) return; if( item->process ) item->process->deleteLater(); item->process = new KProcess( item ); item->process->setOutputChannelMode( KProcess::MergedChannels ); connect( item->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( item->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["aacgain"]; command += "-s"; command += "d"; foreach( const KUrl file, item->undoFileList ) { command += "\"" + escapeUrl(file) + "\""; } item->process->clearProgram(); item->process->setShellCommand( command.join(" ") ); item->process->start(); logCommand( item->id, command.join(" ") ); } float soundkonverter_replaygain_aacgain::parseOutput( const QString& output ) { // 9% of 45218064 bytes analyzed // [1/10] 32% of 13066690 bytes analyzed float progress = -1.0f; QRegExp reg1("\\[(\\d+)/(\\d+)\\] (\\d+)%"); QRegExp reg2("(\\d+)%"); if( output.contains(reg1) ) { float fraction = 1.0f/reg1.cap(2).toInt(); progress = 100*(reg1.cap(1).toInt()-1)*fraction + reg1.cap(3).toInt()*fraction; } else if( output.contains(reg2) ) { progress = reg2.cap(1).toInt(); } // Applying mp3 gain change of -6 to /home/user/file.mp3... // Undoing mp3gain changes (6,6) to /home/user/file.mp3... // Deleting tag info of /home/user/file.mp3... QRegExp reg3("[Applying mp3 gain change|Undoing mp3gain changes|Deleting tag info]"); if( progress == -1 && output.contains(reg3) ) { progress = 0.0f; } return progress; } #include "soundkonverter_replaygain_aacgain.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_flake0000644000175000001440000000006212105142354024775 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.474406859 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/0000755000175000001440000000000012105142354024463 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605703027624 xustar000000000000000020 atime=1357667633 30 ctime=1387631579.448407184 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/CMakeLists.txt0000755000175000001440000000117611726605703027245 0ustar00danielusers00000000000000project(soundkonverter_codec_flake) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_flake_SRCS soundkonverter_codec_flake.cpp flakecodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_flake ${soundkonverter_codec_flake_SRCS}) target_link_libraries(soundkonverter_codec_flake ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_flake DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_flake.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/PaxHeaders.25599/flakecodecwidget.cpp0000644000175000001440000000006212105142353031041 xustar000000000000000020 atime=1379576790 30 ctime=1387631579.448407184 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/flakecodecwidget.cpp0000644000175000001440000001353112105142353030455 0ustar00danielusers00000000000000 #include "flakecodecglobal.h" #include "flakecodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include #include FlakeCodecWidget::FlakeCodecWidget() : CodecWidget(), currentFormat( "flac" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lCompressionLevel = new QLabel( i18n("Compression level:"), this ); topBox->addWidget( lCompressionLevel ); sCompressionLevel = new QSlider( Qt::Horizontal, this ); sCompressionLevel->setRange( 0, 12 ); sCompressionLevel->setSingleStep( 1 ); sCompressionLevel->setPageStep( 1 ); // sQuality->setTickPosition( QSlider::TicksBelow ); // sQuality->setFixedWidth( sQuality->sizeHint().width() ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSliderChanged(int)) ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sCompressionLevel ); iCompressionLevel = new QSpinBox( this ); iCompressionLevel->setRange( 0, 12 ); iCompressionLevel->setSingleStep( 1 ); iCompressionLevel->setFixedWidth( iCompressionLevel->sizeHint().width() ); // dQuality->setFixedHeight( cMode->minimumSizeHint().height() ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSpinBoxChanged(int)) ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( iCompressionLevel ); topBox->addStretch(); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); const QString toolTip = "[-p #]\tPadding bytes to put in header (default: 4096)\n" // "[-0 ... -12]\tCompression level (default: 5)\n" // "\t\t0 = -b 1152 -t 1 -l 2,2 -m 0 -r 4,4 -s 0\n" // "\t\t1 = -b 1152 -t 1 -l 3,4 -m 1 -r 2,2 -s 1\n" // "\t\t2 = -b 1152 -t 1 -l 2,4 -m 1 -r 3 -s 1\n" // "\t\t3 = -b 4608 -t 2 -l 6 -m 1 -r 3 -s 1\n" // "\t\t4 = -b 4608 -t 2 -l 8 -m 1 -r 3 -s 1\n" // "\t\t5 = -b 4608 -t 2 -l 8 -m 1 -r 6 -s 1\n" // "\t\t6 = -b 4608 -t 2 -l 8 -m 2 -r 8 -s 1\n" // "\t\t7 = -b 4608 -t 2 -l 8 -m 3 -r 8 -s 1\n" // "\t\t8 = -b 4608 -t 2 -l 12 -m 3 -r 8 -s 1\n" // "\t\t9 = -b 4608 -t 2 -l 12 -m 6 -r 8 -s 1\n" // "\t\t10 = -b 4608 -t 2 -l 12 -m 5 -r 8 -s 1\n" // "\t\t11 = -b 4608 -t 2 -l 32 -m 6 -r 8 -s 1\n" // "\t\t12 = -b 4608 -t 2 -l 32 -m 5 -r 8 -s 1\n" "[-b #]\tBlock size [16 - 65535] (default: 4608)\n" "[-t #]\tPrediction type\n" "\t\t0 = no prediction / verbatim\n" "\t\t1 = fixed prediction\n" "\t\t2 = Levinson-Durbin recursion (default)\n" "[-l #[,#]]\tPrediction order {max} or {min},{max} (default: 1,8)\n" "[-m #]\tPrediction order selection method\n" "\t\t0 = maximum\n" "\t\t1 = estimate (default)\n" "\t\t2 = 2-level\n" "\t\t3 = 4-level\n" "\t\t4 = 8-level\n" "\t\t5 = full search\n" "\t\t6 = log search\n" "[-r #[,#]]\tRice partition order {max} or {min},{max} (default: 0,6)\n" "[-s #]\tStereo decorrelation method\n" "\t\t0 = independent L+R channels\n" "\t\t1 = mid-side (default)\n" "[-v #]\tVariable block size\n" "\t\t0 = fixed (default)\n" "\t\t1 = variable, method 1\n" "\t\t2 = variable, method 2"; lCmdArguments->setToolTip( toolTip ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); iCompressionLevel->setValue( 5 ); } FlakeCodecWidget::~FlakeCodecWidget() {} ConversionOptions *FlakeCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); options->qualityMode = ConversionOptions::Lossless; options->compressionLevel = iCompressionLevel->value(); if( cCmdArguments->isChecked() ) options->cmdArguments = lCmdArguments->text(); else options->cmdArguments = ""; return options; } bool FlakeCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; iCompressionLevel->setValue( options->compressionLevel ); cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void FlakeCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString FlakeCodecWidget::currentProfile() { return i18n("Lossless"); } bool FlakeCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("Lossless"); } int FlakeCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } void FlakeCodecWidget::compressionLevelSliderChanged( int quality ) { iCompressionLevel->setValue( quality ); } void FlakeCodecWidget::compressionLevelSpinBoxChanged( int quality ) { sCompressionLevel->setValue( quality ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/PaxHeaders.25599/soundkonverter_codec_flak0000644000175000001440000000006212105142354032217 xustar000000000000000020 atime=1371411858 30 ctime=1387631579.448407184 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/soundkonverter_codec_flake.cpp0000755000175000001440000001054112105142354032562 0ustar00danielusers00000000000000 #include "flakecodecglobal.h" #include "soundkonverter_codec_flake.h" #include "../../core/conversionoptions.h" #include "flakecodecwidget.h" soundkonverter_codec_flake::soundkonverter_codec_flake( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["flake"] = ""; allCodecs += "flac"; allCodecs += "wav"; } soundkonverter_codec_flake::~soundkonverter_codec_flake() {} QString soundkonverter_codec_flake::name() { return global_plugin_name; } QList soundkonverter_codec_flake::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "flac"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["flake"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "flac", "flake" ) + "\n" + standardMessage( "install_website_backend,url", "flake", "http://flake-enc.sourceforge.net" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_flake::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_flake::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_flake::hasInfo() { return false; } void soundkonverter_codec_flake::showInfo( QWidget *parent ) { Q_UNUSED(parent) // info.description = i18n("Flake is an alternative flac encoder.\nFor more information see: http://flake-enc.sourceforge.net"); } CodecWidget *soundkonverter_codec_flake::newCodecWidget() { FlakeCodecWidget *widget = new FlakeCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_flake::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_flake::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "flac" ) { command += binaries["flake"]; if( conversionOptions->pluginName == global_plugin_name ) { command += "-"+QString::number((int)conversionOptions->compressionLevel); command += conversionOptions->cmdArguments; } command += "\"" + escapeUrl(inputFile) + "\""; command += "-o"; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_flake::parseOutput( const QString& output ) { // progress: 6% | ratio: 0.556 | bitrate: 784.4 kbps QRegExp regEnc("progress:\\s+(\\d+)%"); if( output.contains(regEnc) ) { return (float)regEnc.cap(1).toInt(); } return -1; } #include "soundkonverter_codec_flake.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/PaxHeaders.25599/flakecodecwidget.h0000644000175000001440000000006212105142354030507 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.448407184 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/flakecodecwidget.h0000644000175000001440000000165312105142354030125 0ustar00danielusers00000000000000 #ifndef FLAKECODECWIDGET_H #define FLAKECODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QSpinBox; class QCheckBox; class KLineEdit; class FlakeCodecWidget : public CodecWidget { Q_OBJECT public: FlakeCodecWidget(); ~FlakeCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QSlider *sCompressionLevel; QSpinBox *iCompressionLevel; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format private slots: void compressionLevelSliderChanged( int quality ); void compressionLevelSpinBoxChanged( int quality ); }; #endif // FLAKECODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/PaxHeaders.25599/flakecodecglobal.h0000644000175000001440000000006211440644622030472 xustar000000000000000020 atime=1387530392 30 ctime=1387631579.448407184 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/flakecodecglobal.h0000644000175000001440000000010611440644622030100 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Flake" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/PaxHeaders.25599/soundkonverter_codec_flak0000644000175000001440000000006211440646653032233 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.450407159 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/soundkonverter_codec_flake.desktop0000755000175000001440000000053211440646653033464 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Flake Plugin X-KDE-Library=soundkonverter_codec_flake ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_flake X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/PaxHeaders.25599/soundkonverter_codec_flak0000644000175000001440000000006212105142354032217 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.474406859 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_flake/soundkonverter_codec_flake.h0000755000175000001440000000244312105142354032231 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_FLAKE_H #define SOUNDKONVERTER_CODEC_FLAKE_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_flake : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_flake( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_flake(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( flake, soundkonverter_codec_flake ) #endif // _SOUNDKONVERTER_CODEC_FLAKE_H_ ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_filter_sox0000644000175000001440000000006212106405146024736 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.527406196 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/0000755000175000001440000000000012106405146024424 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxcodecwidget.h0000644000175000001440000000006212105142355030176 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.491406647 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxcodecwidget.h0000644000175000001440000000263012105142355027610 0ustar00danielusers00000000000000 #ifndef SOXCODECWIDGET_H #define SOXCODECWIDGET_H #include "../../core/codecwidget.h" class QCheckBox; class QSlider; class QSpinBox; class QDoubleSpinBox; class QLabel; class KComboBox; class KLineEdit; class SoxCodecWidget : public CodecWidget { Q_OBJECT public: SoxCodecWidget(); ~SoxCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: // flac QLabel *lCompressionLevel; QSlider *sCompressionLevel; QSpinBox *iCompressionLevel; // mp2, mp3 and ogg vorbis QLabel *lMode; KComboBox *cMode; QLabel *lQuality; QSlider *sQuality; QDoubleSpinBox *dQuality; // amr nb and amr wb QLabel *lBitratePreset; KComboBox *cBitratePreset; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format private slots: void compressionLevelSliderChanged( int quality ); void compressionLevelSpinBoxChanged( int quality ); void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( double quality ); }; #endif // SOXCODECWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxeffectwidget.h0000644000175000001440000000006212105142355030355 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.491406647 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxeffectwidget.h0000644000175000001440000000170312105142355027767 0ustar00danielusers00000000000000 #ifndef SOXEFFECTWIDGET_H #define SOXEFFECTWIDGET_H #include "../../core/codecwidget.h" #include "soxfilteroptions.h" class KComboBox; class KPushButton; class QHBoxLayout; class SoxEffectWidget : public QWidget { Q_OBJECT public: SoxEffectWidget( QWidget *parent = 0 ); ~SoxEffectWidget(); void setRemoveButtonShown( bool shown ); void setAddButtonShown( bool shown ); SoxFilterOptions::EffectData currentEffectOptions(); bool setEffectOptions( SoxFilterOptions::EffectData effectData ); private: KComboBox *cEffect; QHBoxLayout *widgetsBox; QList widgets; KPushButton *pRemove; KPushButton *pAdd; private slots: void removeClicked(); void effectChanged( int index ); void normalizeVolumeChanged( double value ); signals: void addEffectWidgetClicked(); void removeEffectWidgetClicked( SoxEffectWidget *widget ); void optionsChanged(); }; #endif // SOXEFFECTWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006212105142355027552 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.491406647 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/CMakeLists.txt0000755000175000001440000000127212105142355027170 0ustar00danielusers00000000000000project(soundkonverter_filter_sox) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_filter_sox_SRCS soundkonverter_filter_sox.cpp soxfilteroptions.cpp soxcodecwidget.cpp soxfilterwidget.cpp soxeffectwidget.cpp ) kde4_add_plugin(soundkonverter_filter_sox ${soundkonverter_filter_sox_SRCS}) target_link_libraries(soundkonverter_filter_sox ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_filter_sox DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_filter_sox.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soundkonverter_filter_sox.0000644000175000001440000000006212105444576032353 xustar000000000000000020 atime=1360415102 30 ctime=1387631579.492406634 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.cpp0000755000175000001440000004457712105444576032513 0ustar00danielusers00000000000000 #include "soxfilterglobal.h" #include "soundkonverter_filter_sox.h" #include "../../core/conversionoptions.h" #include "soxfilteroptions.h" #include "soxfilterwidget.h" #include "soxcodecwidget.h" #include #include #include #include #include #include soundkonverter_filter_sox::soundkonverter_filter_sox( QObject *parent, const QStringList& args ) : FilterPlugin( parent ) { Q_UNUSED(args) binaries["sox"] = ""; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); configVersion = group.readEntry( "configVersion", 0 ); samplingRateQuality = group.readEntry( "samplingRateQuality", "high" ); experimentalEffectsEnabled = group.readEntry( "experimentalEffectsEnabled", false ); soxLastModified = group.readEntry( "soxLastModified", QDateTime() ); soxCodecList = group.readEntry( "codecList", QStringList() ).toSet(); SoxCodecData data; // 8svx aif aifc aiff aiffc al amb amr-nb amr-wb anb au avr awb caf cdda cdr cvs cvsd cvu dat dvms f32 f4 f64 f8 fap flac fssd gsm gsrt hcom htk ima ircam la lpc lpc10 lu mat mat4 mat5 maud mp2 mp3 nist ogg paf prc pvf raw s1 s16 s2 s24 s3 s32 s4 s8 sb sd2 sds sf sl sln smp snd sndfile sndr sndt sou sox sph sw txw u1 u16 u2 u24 u3 u32 u4 u8 ub ul uw vms voc vorbis vox w64 wav wavpcm wv wve xa xi // todo // al amb anb au avr awb caf cdda cdr cvs cvsd cvu dat dvms f32 f4 f64 f8 fap fssd gsm gsrt hcom htk ima ircam la lpc lpc10 lu mat mat4 mat5 maud nist ogg paf prc pvf raw s1 s16 s2 s24 s3 s32 s4 s8 sb sd2 sds sf sl sln smp snd sndfile sndr sndt sou sox sph sw txw u1 u16 u2 u24 u3 u32 u4 u8 ub ul uw vms voc vox w64 wavpcm wv wve xa xi // WARNING enabled codecs need to be rescanned everytime new codecs are added here -> increase plugin version data.codecName = "wav"; data.soxCodecName = "wav"; data.external = false; data.experimental = false; codecList.append( data ); data.codecName = "flac"; data.soxCodecName = "flac"; data.external = true; data.experimental = false; codecList.append( data ); data.codecName = "ogg vorbis"; data.soxCodecName = "vorbis"; data.external = true; data.experimental = false; codecList.append( data ); data.codecName = "mp2"; data.soxCodecName = "mp2"; data.external = true; data.experimental = false; codecList.append( data ); data.codecName = "mp3"; data.soxCodecName = "mp3"; data.external = true; data.experimental = false; codecList.append( data ); data.codecName = "amr nb"; data.soxCodecName = "amr-nb"; data.external = true; data.experimental = false; codecList.append( data ); data.codecName = "amr wb"; data.soxCodecName = "amr-wb"; data.external = true; data.experimental = false; codecList.append( data ); data.codecName = "8svx"; data.soxCodecName = "8svx"; data.external = false; data.experimental = false; codecList.append( data ); data.codecName = "aiff"; data.soxCodecName = "aiff"; // aiff has meta data, aif not data.external = false; data.experimental = false; codecList.append( data ); // sox only supports uncompressed aiff-c // data.codecName = "aiff-c"; // data.soxCodecName = "aifc"; // data.external = false; // data.experimental = false; // codecList.append( data ); for( int i=0; i soundkonverter_filter_sox::codecTable() { QList table; if( !binaries["sox"].isEmpty() ) { QFileInfo soxInfo( binaries["sox"] ); if( soxInfo.lastModified() > soxLastModified || configVersion < version() ) { infoProcess = new KProcess(); infoProcess.data()->setOutputChannelMode( KProcess::MergedChannels ); connect( infoProcess.data(), SIGNAL(readyRead()), this, SLOT(infoProcessOutput()) ); connect( infoProcess.data(), SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(infoProcessExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["sox"]; command += "--help"; infoProcess.data()->clearProgram(); infoProcess.data()->setShellCommand( command.join(" ") ); infoProcess.data()->start(); infoProcess.data()->waitForFinished( 3000 ); } } for( int i=0; isetCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Default ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QHBoxLayout *configDialogBox = new QHBoxLayout( configDialogWidget ); QLabel *configDialogSamplingRateQualityLabel = new QLabel( i18n("Sample rate change quality:"), configDialogWidget ); configDialogBox->addWidget( configDialogSamplingRateQualityLabel ); configDialogSamplingRateQualityComboBox = new KComboBox( configDialogWidget ); configDialogSamplingRateQualityComboBox->addItem( i18n("Quick"), "quick" ); configDialogSamplingRateQualityComboBox->addItem( i18n("Low"), "low" ); configDialogSamplingRateQualityComboBox->addItem( i18n("Medium"), "medium" ); configDialogSamplingRateQualityComboBox->addItem( i18n("High"), "high" ); configDialogSamplingRateQualityComboBox->addItem( i18n("Very high"), "very high" ); configDialogBox->addWidget( configDialogSamplingRateQualityComboBox ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); connect( configDialog.data(), SIGNAL( defaultClicked() ), this, SLOT( configDialogDefault() ) ); } configDialogSamplingRateQualityComboBox->setCurrentIndex( configDialogSamplingRateQualityComboBox->findData(samplingRateQuality) ); configDialog.data()->show(); } void soundkonverter_filter_sox::configDialogSave() { if( configDialog.data() ) { samplingRateQuality = configDialogSamplingRateQualityComboBox->itemData( configDialogSamplingRateQualityComboBox->currentIndex() ).toString(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "samplingRateQuality", samplingRateQuality ); configDialog.data()->deleteLater(); } } void soundkonverter_filter_sox::configDialogDefault() { if( configDialog.data() ) { configDialogSamplingRateQualityComboBox->setCurrentIndex( configDialogSamplingRateQualityComboBox->findData("high") ); } } bool soundkonverter_filter_sox::hasInfo() { return false; } void soundkonverter_filter_sox::showInfo( QWidget *parent ) { Q_UNUSED(parent) } FilterWidget *soundkonverter_filter_sox::newFilterWidget() { SoxFilterWidget *widget = new SoxFilterWidget(); if( lastUsedFilterOptions ) { widget->setCurrentFilterOptions( lastUsedFilterOptions ); delete lastUsedFilterOptions; lastUsedFilterOptions = 0; } return qobject_cast(widget); } CodecWidget *soundkonverter_filter_sox::newCodecWidget() { SoxCodecWidget *widget = new SoxCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_filter_sox::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; FilterPluginItem *newItem = new FilterPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_filter_sox::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED( tags ); Q_UNUSED( replayGain ); if( !_conversionOptions ) return QStringList(); ConversionOptions *conversionOptions = _conversionOptions; QStringList command; SoxFilterOptions *filterOptions = 0; foreach( FilterOptions *_filterOptions, conversionOptions->filterOptions ) { if( _filterOptions->pluginName == global_plugin_name ) filterOptions = dynamic_cast(_filterOptions); } command += binaries["sox"]; command += "--no-glob"; if( conversionOptions->pluginName == name() ) { command += conversionOptions->cmdArguments; } if( inputFile.isEmpty() || inputCodec == "amr nb" ) // NOTE sox expects anb as extension for amr nb files { command += "--type"; command += soxCodecName(inputCodec); } command += "\"" + escapeUrl(inputFile) + "\""; if( filterOptions && filterOptions->data.sampleSize ) { command += "--bits"; command += QString::number(filterOptions->data.sampleSize); } if( filterOptions && filterOptions->data.channels ) { command += "--channels"; command += QString::number(filterOptions->data.channels); } if( outputCodec == "flac" && ( conversionOptions->pluginName == global_plugin_name || conversionOptions->pluginName == "FLAC" ) ) { command += "--compression"; command += QString::number(conversionOptions->compressionLevel); } else if( outputCodec == "ogg vorbis" && ( conversionOptions->pluginName == global_plugin_name || conversionOptions->pluginName == "Vorbis Tools" ) ) { command += "--compression"; command += QString::number(conversionOptions->quality); } else if( outputCodec == "mp2" ) { command += "--compression"; command += QString::number(conversionOptions->bitrate); } else if( outputCodec == "mp3" && ( conversionOptions->pluginName == global_plugin_name || conversionOptions->pluginName == "lame" ) ) { command += "--compression"; QString compressionLevel = QString::number(conversionOptions->compressionLevel); if( compressionLevel == "0" ) compressionLevel = "01"; if( conversionOptions->qualityMode == ConversionOptions::Quality ) { command += "-" + QString::number(conversionOptions->quality) + "." + compressionLevel; } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { command += QString::number(conversionOptions->bitrate) + "." + compressionLevel; } } else if( outputCodec == "amr nb" && conversionOptions->pluginName == global_plugin_name ) { command += "--compression"; command += QString::number(conversionOptions->quality); } else if( outputCodec == "amr wb" && conversionOptions->pluginName == global_plugin_name ) { command += "--compression"; command += QString::number(conversionOptions->quality); } if( outputFile.isEmpty() || outputCodec == "amr nb" ) // NOTE sox expects anb as extension for amr nb files { command += "--type"; command += soxCodecName(outputCodec); } command += "\"" + escapeUrl(outputFile) + "\""; if( filterOptions && filterOptions->data.sampleRate ) { command += "rate"; if( samplingRateQuality == "quick" ) command += "-q"; else if( samplingRateQuality == "low" ) command += "-l"; else if( samplingRateQuality == "medium" ) command += "-m"; else if( samplingRateQuality == "high" ) command += "-h"; else if( samplingRateQuality == "very high" ) command += "-v"; command += QString::number(filterOptions->data.sampleRate); } if( filterOptions ) { foreach( const SoxFilterOptions::EffectData effectData, filterOptions->data.effects ) { if( effectData.effectName == "norm" || effectData.effectName == "bass" || effectData.effectName == "treble" ) { command += effectData.effectName; command += QString::number(effectData.data.at(0).toDouble()); } } } return command; } float soundkonverter_filter_sox::parseOutput( const QString& output ) { Q_UNUSED( output ); // // 01-Unknown.wav: 98% complete, ratio=0,479 // encode // // 01-Unknown.wav: 27% complete // decode // // QRegExp regEnc("(\\d+)% complete"); // if( output.contains(regEnc) ) // { // return (float)regEnc.cap(1).toInt(); // } // return -1; } FilterOptions *soundkonverter_filter_sox::filterOptionsFromXml( QDomElement filterOptions ) { SoxFilterOptions *options = new SoxFilterOptions(); options->fromXml( filterOptions ); return options; } QString soundkonverter_filter_sox::soxCodecName( const QString& codecName ) { foreach( SoxCodecData data, codecList ) { if( data.codecName == codecName ) return data.soxCodecName; } return codecName; } void soundkonverter_filter_sox::infoProcessOutput() { infoProcessOutputData.append( infoProcess.data()->readAllStandardOutput().data() ); } void soundkonverter_filter_sox::infoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ) { Q_UNUSED(exitStatus) Q_UNUSED(exitCode) QRegExp formatsReg("AUDIO FILE FORMATS: ([^\n]*)"); if( infoProcessOutputData.contains(formatsReg) ) { const QStringList formats = formatsReg.cap(1).split(" ",QString::SkipEmptyParts); soxCodecList.clear(); for( int i=0; igroup( "Plugin-"+name() ); group.writeEntry( "configVersion", version() ); group.writeEntry( "soxLastModified", soxLastModified ); group.writeEntry( "codecList", soxCodecList.toList() ); } infoProcessOutputData.clear(); infoProcess.data()->deleteLater(); } #include "soundkonverter_filter_sox.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxeffectwidget.cpp0000644000175000001440000000006212105142355030710 xustar000000000000000020 atime=1387530393 30 ctime=1387631579.492406634 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxeffectwidget.cpp0000644000175000001440000002134412105142355030325 0ustar00danielusers00000000000000 #include "soxfilterglobal.h" #include "soxeffectwidget.h" #include #include #include #include #include #include #include SoxEffectWidget::SoxEffectWidget( QWidget *parent ) : QWidget( parent ) { QHBoxLayout *box = new QHBoxLayout( this ); box->setMargin( 0 ); QLabel *lEffect = new QLabel( i18n("Effect:") ); box->addWidget( lEffect ); cEffect = new KComboBox( this ); connect( cEffect, SIGNAL(activated(int)), this, SLOT(effectChanged(int)) ); cEffect->addItem( i18n("Disabled") ); // cEffect->addItem( "allpass" ); // cEffect->addItem( "band" ); // cEffect->addItem( "bandpass" ); // cEffect->addItem( "bandreject" ); cEffect->addItem( "bass" ); // cEffect->addItem( "bend" ); // cEffect->addItem( "biquad" ); // cEffect->addItem( "chorus" ); // cEffect->addItem( "channels" ); // cEffect->addItem( "compand" ); // cEffect->addItem( "contrast" ); // cEffect->addItem( "dcshift" ); // cEffect->addItem( "deemph" ); // cEffect->addItem( "delay" ); // cEffect->addItem( "dither" ); // // cEffect1->addItem( "divide" ); // experimental // cEffect->addItem( "downsample" ); // cEffect->addItem( "earwax" ); // cEffect->addItem( "echo" ); // cEffect->addItem( "echos" ); // cEffect->addItem( "equalizer" ); // cEffect->addItem( "fade" ); // cEffect->addItem( "fir" ); // // cEffect1->addItem( "firfit" ); // experimental // cEffect->addItem( "flanger" ); // cEffect->addItem( "gain" ); // cEffect->addItem( "highpass" ); // cEffect->addItem( "hilbert" ); // // cEffect1->addItem( "input" ); // libSoX-only // cEffect->addItem( "ladspa" ); // cEffect->addItem( "loudness" ); // cEffect->addItem( "lowpass" ); // cEffect->addItem( "mcompand" ); // // cEffect1->addItem( "mixer" ); // deprecated // cEffect->addItem( "noiseprof" ); // cEffect->addItem( "noisered" ); cEffect->addItem( "norm" ); // cEffect->addItem( "oops" ); // // cEffect1->addItem( "output" ); // libSoX-only // cEffect->addItem( "overdrive" ); // cEffect->addItem( "pad" ); // cEffect->addItem( "phaser" ); // cEffect->addItem( "pitch" ); // cEffect->addItem( "rate" ); // cEffect->addItem( "remix" ); // cEffect->addItem( "repeat" ); // cEffect->addItem( "reverb" ); // cEffect->addItem( "reverse" ); // cEffect->addItem( "riaa" ); // cEffect->addItem( "silence" ); // cEffect->addItem( "sinc" ); // cEffect->addItem( "spectrogram" ); // cEffect->addItem( "speed" ); // cEffect->addItem( "splice" ); // cEffect->addItem( "stat" ); // cEffect->addItem( "stats" ); // cEffect->addItem( "stretch" ); // cEffect->addItem( "swap" ); // cEffect->addItem( "synth" ); // cEffect->addItem( "tempo" ); cEffect->addItem( "treble" ); // cEffect->addItem( "tremolo" ); // cEffect->addItem( "trim" ); // cEffect->addItem( "upsample" ); // cEffect->addItem( "vad" ); // cEffect->addItem( "vol" ); box->addWidget( cEffect ); widgetsBox = new QHBoxLayout(); box->addLayout( widgetsBox ); box->addStretch(); pRemove = new KPushButton( KIcon("list-remove"), i18n("Remove"), this ); pRemove->setToolTip( i18n("Remove this effect") ); box->addWidget( pRemove ); connect( pRemove, SIGNAL(clicked()), this, SLOT(removeClicked()) ); pAdd = new KPushButton( KIcon("list-add"), i18n("Add"), this ); pAdd->setToolTip( i18n("Add another effect") ); box->addWidget( pAdd ); connect( pAdd, SIGNAL(clicked()), SIGNAL(addEffectWidgetClicked()) ); pAdd->setEnabled( false ); } SoxEffectWidget::~SoxEffectWidget() {} void SoxEffectWidget::setAddButtonShown( bool shown ) { pAdd->setShown( shown ); } void SoxEffectWidget::setRemoveButtonShown( bool shown ) { pRemove->setShown( shown ); } void SoxEffectWidget::removeClicked() { emit removeEffectWidgetClicked( this ); } void SoxEffectWidget::effectChanged( int index ) { const QString effect = cEffect->itemText( index ); foreach( QWidget *widget, widgets ) { widgetsBox->removeWidget( widget ); widget->deleteLater(); } widgets.clear(); cEffect->setToolTip( "" ); if( effect == "norm" ) { cEffect->setToolTip( i18n("Normalize:\nChange the volume so all files have the same loudness") ); QDoubleSpinBox *dNormalizeVolume = new QDoubleSpinBox( this ); dNormalizeVolume->setRange( -99, 99 ); dNormalizeVolume->setSuffix( " " + i18nc("decibel","dB") ); connect( dNormalizeVolume, SIGNAL(valueChanged(double)), this, SLOT(normalizeVolumeChanged(double)) ); connect( dNormalizeVolume, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); widgetsBox->addWidget( dNormalizeVolume ); dNormalizeVolume->setValue( 0 ); dNormalizeVolume->setPrefix( "+" ); widgets.append( (QWidget*)dNormalizeVolume ); } else if( effect == "bass" ) { cEffect->setToolTip( i18n("Bass:\nAmplify the low frequencies") ); QDoubleSpinBox *dBassGain = new QDoubleSpinBox( this ); dBassGain->setRange( -99, 99 ); dBassGain->setSuffix( " " + i18nc("decibel","dB") ); connect( dBassGain, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); widgetsBox->addWidget( dBassGain ); dBassGain->setValue( 0 ); widgets.append( (QWidget*)dBassGain ); } else if( effect == "treble" ) { cEffect->setToolTip( i18n("Treble:\nAmplify the high frequencies") ); QDoubleSpinBox *dTrebleGain = new QDoubleSpinBox( this ); dTrebleGain->setRange( -99, 99 ); dTrebleGain->setSuffix( " " + i18nc("decibel","dB") ); connect( dTrebleGain, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); widgetsBox->addWidget( dTrebleGain ); dTrebleGain->setValue( 0 ); widgets.append( (QWidget*)dTrebleGain ); } pAdd->setEnabled( cEffect->currentText() != i18n("Disabled") ); } SoxFilterOptions::EffectData SoxEffectWidget::currentEffectOptions() { SoxFilterOptions::EffectData effectData; const QString effect = cEffect->currentText(); effectData.effectName = effect; if( effect == "norm" ) { if( widgets.isEmpty() ) return effectData; QDoubleSpinBox *dNormalizeVolume = qobject_cast(widgets.at(0)); if( !dNormalizeVolume ) return effectData; effectData.data.append( dNormalizeVolume->value() ); } else if( effect == "bass" ) { if( widgets.isEmpty() ) return effectData; QDoubleSpinBox *dBassGain = qobject_cast(widgets.at(0)); if( !dBassGain ) return effectData; effectData.data.append( dBassGain->value() ); } else if( effect == "treble" ) { if( widgets.isEmpty() ) return effectData; QDoubleSpinBox *dTrebleGain = qobject_cast(widgets.at(0)); if( !dTrebleGain ) return effectData; effectData.data.append( dTrebleGain->value() ); } return effectData; } bool SoxEffectWidget::setEffectOptions( SoxFilterOptions::EffectData effectData ) { int index = cEffect->findText( effectData.effectName ); if( index == -1 ) index = 0; cEffect->setCurrentIndex( index ); effectChanged( index ); if( effectData.effectName == "norm" ) { if( widgets.isEmpty() ) return false; QDoubleSpinBox *dNormalizeVolume = qobject_cast(widgets.at(0)); if( !dNormalizeVolume ) return false; dNormalizeVolume->setValue( effectData.data.at(0).toDouble() ); } else if( effectData.effectName == "bass" ) { if( widgets.isEmpty() ) return false; QDoubleSpinBox *dBassGain = qobject_cast(widgets.at(0)); if( !dBassGain ) return false; dBassGain->setValue( effectData.data.at(0).toDouble() ); } else if( effectData.effectName == "treble" ) { if( widgets.isEmpty() ) return false; QDoubleSpinBox *dTrebleGain = qobject_cast(widgets.at(0)); if( !dTrebleGain ) return false; dTrebleGain->setValue( effectData.data.at(0).toDouble() ); } return true; } void SoxEffectWidget::normalizeVolumeChanged( double value ) { if( widgets.isEmpty() ) return; QDoubleSpinBox *dNormalizeVolume = qobject_cast(widgets.at(0)); if( !dNormalizeVolume ) return; if( value >= 0 ) dNormalizeVolume->setPrefix( "+" ); else dNormalizeVolume->setPrefix( "" ); } ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxfilterglobal.h0000644000175000001440000000006212105142355030363 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.513406371 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxfilterglobal.h0000644000175000001440000000014412105142355027773 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "SoX" #define global_plugin_version 1 #endif ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soundkonverter_filter_sox.0000644000175000001440000000006212105142355032341 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.513406371 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.desktop0000755000175000001440000000052712105142355033353 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter sox Plugin X-KDE-Library=soundkonverter_filter_sox ServiceTypes=soundKonverter/FilterPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_filter_sox X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxfilterwidget.h0000644000175000001440000000006212105142355030406 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.513406371 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxfilterwidget.h0000644000175000001440000000142612105142355030022 0ustar00danielusers00000000000000 #ifndef SOXFILTERWIDGET_H #define SOXFILTERWIDGET_H #include "../../core/codecwidget.h" class SoxEffectWidget; class QCheckBox; class KComboBox; class QVBoxLayout; class SoxFilterWidget : public FilterWidget { Q_OBJECT public: SoxFilterWidget(); ~SoxFilterWidget(); FilterOptions *currentFilterOptions(); bool setCurrentFilterOptions( FilterOptions *_options ); private: QCheckBox *chSampleSize; KComboBox *cSampleSize; QCheckBox *chSampleRate; KComboBox *cSampleRate; QCheckBox *chChannels; KComboBox *cChannels; QVBoxLayout *effectWidgetsBox; QList effectWidgets; private slots: void addEffectWidgetClicked(); void removeEffectWidgetClicked( SoxEffectWidget *widget ); }; #endif // SOXFILTERWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxcodecwidget.cpp0000644000175000001440000000006212106405146030532 xustar000000000000000020 atime=1379576793 30 ctime=1387631579.513406371 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxcodecwidget.cpp0000644000175000001440000004414412106405146030152 0ustar00danielusers00000000000000 #include "soxfilterglobal.h" #include "soxcodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include #include #include #include #include SoxCodecWidget::SoxCodecWidget() : CodecWidget(), currentFormat( "" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); // flac lCompressionLevel = new QLabel( i18n("Compression level:"), this ); topBox->addWidget( lCompressionLevel ); sCompressionLevel = new QSlider( Qt::Horizontal, this ); sCompressionLevel->setRange( 0, 8 ); sCompressionLevel->setSingleStep( 1 ); sCompressionLevel->setPageStep( 1 ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSliderChanged(int)) ); connect( sCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sCompressionLevel ); iCompressionLevel = new QSpinBox( this ); iCompressionLevel->setRange( 0, 8 ); iCompressionLevel->setSingleStep( 1 ); iCompressionLevel->setFixedWidth( iCompressionLevel->sizeHint().width() ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), this, SLOT(compressionLevelSpinBoxChanged(int)) ); connect( iCompressionLevel, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( iCompressionLevel ); iCompressionLevel->setValue( 5 ); // mp2, mp3 and ogg vorbis lMode = new QLabel( i18n("Mode:"), this ); topBox->addWidget( lMode ); cMode = new KComboBox( this ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cMode ); lQuality = new QLabel( i18n("Quality:"), this ); topBox->addWidget( lQuality ); sQuality = new QSlider( Qt::Horizontal, this ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); dQuality = new QDoubleSpinBox( this ); dQuality->setRange( 8, 320 ); dQuality->setSuffix( " kbps" ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); connect( dQuality, SIGNAL(valueChanged(double)), this, SLOT(qualitySpinBoxChanged(double)) ); connect( dQuality, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); topBox->addWidget( dQuality ); // amr nb and amr wb lBitratePreset = new QLabel( i18n("Bitrate:"), this ); topBox->addWidget( lBitratePreset ); cBitratePreset = new KComboBox( this ); cBitratePreset->addItem( "00.00 kbps" ); topBox->addWidget( cBitratePreset ); topBox->addStretch(); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); modeChanged( 0 ); } SoxCodecWidget::~SoxCodecWidget() {} ConversionOptions *SoxCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); if( currentFormat == "wav" || currentFormat == "aiff" || currentFormat == "flac" ) { options->qualityMode = ConversionOptions::Lossless; options->compressionLevel = iCompressionLevel->value(); } else if( currentFormat == "mp2" ) { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = dQuality->value(); options->bitrateMode = ConversionOptions::Cbr; } else if( currentFormat == "mp3" ) { if( cMode->currentText() == i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = dQuality->value(); options->bitrateMode = ConversionOptions::Cbr; } } else if( currentFormat == "ogg vorbis" ) { options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); } else if( currentFormat == "amr nb" || currentFormat == "amr wb" ) { options->qualityMode = ConversionOptions::Quality; options->quality = cBitratePreset->itemData( cBitratePreset->currentIndex() ).toInt(); } options->cmdArguments = cCmdArguments->isChecked() ? lCmdArguments->text() : ""; return options; } bool SoxCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( currentFormat == "wav" || currentFormat == "aiff" || currentFormat == "flac" ) { iCompressionLevel->setValue( options->compressionLevel ); } else if( currentFormat == "mp2" ) { dQuality->setValue( options->bitrate ); } else if( currentFormat == "mp3" ) { if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); dQuality->setValue( options->quality ); } else { cMode->setCurrentIndex( 1 ); modeChanged( 1 ); dQuality->setValue( options->bitrate ); } } else if( currentFormat == "ogg vorbis" ) { dQuality->setValue( options->quality ); } else if( currentFormat == "amr nb" || currentFormat == "amr wb" ) { cBitratePreset->setCurrentIndex( cBitratePreset->findData(options->quality) ); } cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); else lCmdArguments->clear(); return true; } void SoxCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; if( currentFormat == "flac" ) { lCompressionLevel->show(); sCompressionLevel->show(); iCompressionLevel->show(); lMode->hide(); cMode->hide(); lQuality->hide(); sQuality->hide(); dQuality->hide(); lBitratePreset->hide(); cBitratePreset->hide(); } else if( currentFormat == "mp2" ) { lCompressionLevel->hide(); sCompressionLevel->hide(); iCompressionLevel->hide(); lMode->hide(); cMode->hide(); lQuality->show(); lQuality->setText( i18n("Bitrate:") ); sQuality->show(); dQuality->show(); sQuality->setRange( 32, 384 ); sQuality->setSingleStep( 8 ); dQuality->setRange( 32, 384 ); dQuality->setSingleStep( 1 ); dQuality->setDecimals( 0 ); dQuality->setSuffix( " kbps" ); sQuality->setValue( 160 ); dQuality->setValue( 160 ); lBitratePreset->hide(); cBitratePreset->hide(); } else if( currentFormat == "mp3" ) { lCompressionLevel->hide(); sCompressionLevel->hide(); iCompressionLevel->hide(); lMode->show(); cMode->show(); lQuality->hide(); sQuality->show(); dQuality->show(); modeChanged( 0 ); lBitratePreset->hide(); cBitratePreset->hide(); } else if( currentFormat == "ogg vorbis" ) { lCompressionLevel->hide(); sCompressionLevel->hide(); iCompressionLevel->hide(); lMode->hide(); cMode->hide(); lQuality->show(); lQuality->setText( i18n("Quality:") ); sQuality->show(); dQuality->show(); sQuality->setRange( -100, 1000 ); sQuality->setSingleStep( 50 ); dQuality->setRange( -1, 10 ); dQuality->setSingleStep( 0.01 ); dQuality->setDecimals( 2 ); dQuality->setSuffix( "" ); sQuality->setValue( 400 ); dQuality->setValue( 4.0 ); lBitratePreset->hide(); cBitratePreset->hide(); } else if( currentFormat == "amr nb" ) { lCompressionLevel->hide(); sCompressionLevel->hide(); iCompressionLevel->hide(); lMode->hide(); cMode->hide(); lQuality->hide(); sQuality->hide(); dQuality->hide(); lBitratePreset->show(); cBitratePreset->show(); cBitratePreset->clear(); cBitratePreset->addItem( "4.75 kbps", 0 ); cBitratePreset->addItem( "5.15 kbps", 1 ); cBitratePreset->addItem( "5.9 kbps", 2 ); cBitratePreset->addItem( "6.7 kbps", 3 ); cBitratePreset->addItem( "7.4 kbps", 4 ); cBitratePreset->addItem( "7.95 kbps", 5 ); cBitratePreset->addItem( "10.2 kbps", 6 ); cBitratePreset->addItem( "12.2 kbps", 7 ); } else if( currentFormat == "amr wb" ) { lCompressionLevel->hide(); sCompressionLevel->hide(); iCompressionLevel->hide(); lMode->hide(); cMode->hide(); lQuality->hide(); sQuality->hide(); dQuality->hide(); lBitratePreset->show(); cBitratePreset->show(); cBitratePreset->clear(); cBitratePreset->addItem( "6.6 kbps", 0 ); cBitratePreset->addItem( "8.85 kbps", 1 ); cBitratePreset->addItem( "12.65 kbps", 2 ); cBitratePreset->addItem( "14.25 kbps", 3 ); cBitratePreset->addItem( "15.85 kbps", 4 ); cBitratePreset->addItem( "18.25 kbps", 5 ); cBitratePreset->addItem( "19.85 kbps", 6 ); cBitratePreset->addItem( "23.05 kbps", 7 ); cBitratePreset->addItem( "23.85 kbps", 8 ); } else if( currentFormat == "wav" || currentFormat == "8svx" || currentFormat == "aiff" ) { lCompressionLevel->hide(); sCompressionLevel->hide(); iCompressionLevel->hide(); lMode->hide(); cMode->hide(); lQuality->hide(); sQuality->hide(); dQuality->hide(); lBitratePreset->hide(); cBitratePreset->hide(); } } QString SoxCodecWidget::currentProfile() { if( currentFormat == "wav" || currentFormat == "aiff" || currentFormat == "flac" ) { return i18n("Lossless"); } else if( currentFormat == "mp2" ) { if( dQuality->value() == 64 ) { return i18n("Very low"); } else if( dQuality->value() == 128 ) { return i18n("Low"); } else if( dQuality->value() == 160 ) { return i18n("Medium"); } else if( dQuality->value() == 240 ) { return i18n("High"); } else if( dQuality->value() == 320 ) { return i18n("Very high"); } } else if( currentFormat == "mp3" ) { if( cMode->currentIndex() == 0 && dQuality->value() == 6 ) { return i18n("Very low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 5 ) { return i18n("Low"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 4 ) { return i18n("Medium"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 3 ) { return i18n("High"); } else if( cMode->currentIndex() == 0 && dQuality->value() == 2 ) { return i18n("Very high"); } } else if( currentFormat == "ogg vorbis" ) { if( dQuality->value() == 2 ) { return i18n("Very low"); } else if( dQuality->value() == 3 ) { return i18n("Low"); } else if( dQuality->value() == 4 ) { return i18n("Medium"); } else if( dQuality->value() == 5 ) { return i18n("High"); } else if( dQuality->value() == 6 ) { return i18n("Very high"); } } // amr nb, amr wb, 8svx return i18n("User defined"); } bool SoxCodecWidget::setCurrentProfile( const QString& profile ) { cCmdArguments->setChecked( false ); lCmdArguments->clear(); if( profile == i18n("Very low") ) { if( currentFormat == "mp2" ) { sQuality->setValue( 64 ); dQuality->setValue( 64 ); return true; } else if( currentFormat == "mp3" ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 6 ); dQuality->setValue( 6 ); return true; } else if( currentFormat == "ogg vorbis" ) { sQuality->setValue( 200 ); dQuality->setValue( 2 ); return true; } } else if( profile == i18n("Low") ) { if( currentFormat == "mp2" ) { sQuality->setValue( 128 ); dQuality->setValue( 128 ); return true; } else if( currentFormat == "mp3" ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 5 ); dQuality->setValue( 5 ); return true; } else if( currentFormat == "ogg vorbis" ) { sQuality->setValue( 300 ); dQuality->setValue( 3 ); return true; } } else if( profile == i18n("Medium") ) { if( currentFormat == "mp2" ) { sQuality->setValue( 160 ); dQuality->setValue( 160 ); return true; } else if( currentFormat == "mp3" ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 4 ); dQuality->setValue( 4 ); return true; } else if( currentFormat == "ogg vorbis" ) { sQuality->setValue( 400 ); dQuality->setValue( 4 ); return true; } } else if( profile == i18n("High") ) { if( currentFormat == "mp2" ) { sQuality->setValue( 240 ); dQuality->setValue( 240 ); return true; } else if( currentFormat == "mp3" ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 5 ); dQuality->setValue( 5 ); return true; } else if( currentFormat == "ogg vorbis" ) { sQuality->setValue( 500 ); dQuality->setValue( 5 ); return true; } } else if( profile == i18n("Very high") ) { if( currentFormat == "mp2" ) { sQuality->setValue( 320 ); dQuality->setValue( 320 ); return true; } else if( currentFormat == "mp3" ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 2 ); dQuality->setValue( 2 ); return true; } else if( currentFormat == "ogg vorbis" ) { sQuality->setValue( 600 ); dQuality->setValue( 6 ); return true; } } else if( profile == i18n("Lossless") ) { if( currentFormat == "wav" || currentFormat == "aiff" || currentFormat == "flac" ) { return true; } } return false; } int SoxCodecWidget::currentDataRate() // TODO { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = 6400000; } return dataRate; } void SoxCodecWidget::compressionLevelSliderChanged( int quality ) { iCompressionLevel->setValue( quality ); } void SoxCodecWidget::compressionLevelSpinBoxChanged( int quality ) { sCompressionLevel->setValue( quality ); } void SoxCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( 0, 9 ); sQuality->setSingleStep( 1 ); dQuality->setRange( 0, 9 ); dQuality->setSingleStep( 1 ); dQuality->setDecimals( 0 ); dQuality->setSuffix( "" ); sQuality->setValue( 5 ); dQuality->setValue( 5 ); //dQuality->setValue( qualityForBitrate(dQuality->value()) ); //qualitySpinBoxChanged( dQuality->value() ); dQuality->setToolTip( i18n("Quality level from 9 to 0 where 0 is the highest quality.") ); } else { sQuality->setRange( 8, 320 ); sQuality->setSingleStep( 8 ); dQuality->setRange( 8, 320 ); dQuality->setSingleStep( 1 ); dQuality->setDecimals( 0 ); dQuality->setSuffix( " kbps" ); sQuality->setValue( 160 ); dQuality->setValue( 160 ); //dQuality->setValue( bitrateForQuality(dQuality->value()) ); //qualitySpinBoxChanged( dQuality->value() ); } } void SoxCodecWidget::qualitySliderChanged( int quality ) { double value; if( currentFormat == "ogg vorbis" ) value = double(quality)/100.0; else if( currentFormat == "mp3" && cMode->currentIndex() == 0 ) value = 9 - quality; else value = quality; dQuality->setValue( value ); } void SoxCodecWidget::qualitySpinBoxChanged( double quality ) { int value; if( currentFormat == "ogg vorbis" ) value = round(quality*100.0); else if( currentFormat == "mp3" && cMode->currentIndex() == 0 ) value = 9 - quality; else value = quality; sQuality->setValue( value ); } ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soundkonverter_filter_sox.0000644000175000001440000000006212105142355032341 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.527406196 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soundkonverter_filter_sox.h0000755000175000001440000000435712105142355032136 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_FILTER_SOX_H #define SOUNDKONVERTER_FILTER_SOX_H #include "../../core/filterplugin.h" #include #include class FilterOptions; class KDialog; class KComboBox; class soundkonverter_filter_sox : public FilterPlugin { Q_OBJECT public: struct SoxCodecData { QString codecName; QString soxCodecName; bool external; bool experimental; bool enabled; }; /** Default Constructor */ soundkonverter_filter_sox( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_filter_sox(); QString name(); int version(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); FilterWidget *newFilterWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); FilterOptions *filterOptionsFromXml( QDomElement filterOptions ); private: QList codecList; QWeakPointer infoProcess; QString infoProcessOutputData; QWeakPointer configDialog; KComboBox *configDialogSamplingRateQualityComboBox; int configVersion; QString samplingRateQuality; bool experimentalEffectsEnabled; QDateTime soxLastModified; QSet soxCodecList; QString soxCodecName( const QString& codecName ); private slots: void configDialogSave(); void configDialogDefault(); void infoProcessOutput(); void infoProcessExit( int exitCode, QProcess::ExitStatus exitStatus ); }; K_EXPORT_SOUNDKONVERTER_FILTER( sox, soundkonverter_filter_sox ) #endif // SOUNDKONVERTER_FILTER_SOX_H ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxfilteroptions.cpp0000644000175000001440000000006212105142355031151 xustar000000000000000020 atime=1371411851 30 ctime=1387631579.527406196 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxfilteroptions.cpp0000644000175000001440000001027112105142355030563 0ustar00danielusers00000000000000 #include "soxfilterglobal.h" #include "soxfilteroptions.h" #include "../../core/conversionoptions.h" SoxFilterOptions::SoxFilterOptions() { pluginName = global_plugin_name; } SoxFilterOptions::~SoxFilterOptions() {} bool SoxFilterOptions::equals( FilterOptions *_other ) { if( !_other || _other->pluginName!=pluginName ) return false; if( !FilterOptions::equals( _other ) ) return false; SoxFilterOptions *other = dynamic_cast(_other); if( !other ) return false; if( data.sampleRate != other->data.sampleRate ) return false; if( data.sampleSize != other->data.sampleSize ) return false; if( data.channels != other->data.channels ) return false; QStringList effects; foreach( EffectData effectData, data.effects ) { effects.append( effectData.effectName ); } effects.sort(); QStringList other_effects; foreach( EffectData otherEffectData, other->data.effects ) { other_effects.append( otherEffectData.effectName ); } other_effects.sort(); if( effects == other_effects ) { foreach( const EffectData effectData, data.effects ) { foreach( const EffectData otherEffectData, other->data.effects ) { if( otherEffectData.effectName == effectData.effectName ) { if( otherEffectData.data != effectData.data ) return false; break; } } } } else { return false; } return true; } QDomElement SoxFilterOptions::toXml( QDomDocument document, const QString elementName ) { QDomElement filterOptions = FilterOptions::toXml( document, elementName ); filterOptions.setAttribute("sampleRate",data.sampleRate); filterOptions.setAttribute("sampleSize",data.sampleSize); filterOptions.setAttribute("channels",data.channels); int i = 0; foreach( const EffectData effectData, data.effects ) { if( effectData.effectName == i18n("Disabled") ) continue; QDomElement effectElement = document.createElement("effect"+QString::number(i++)); effectElement.setAttribute("name",effectData.effectName); if( effectData.effectName == "norm" ) { if( !effectData.data.isEmpty() ) effectElement.setAttribute("normalizeVolume",effectData.data.at(0).toDouble()); } else if( effectData.effectName == "bass" ) { if( !effectData.data.isEmpty() ) effectElement.setAttribute("bassGain",effectData.data.at(0).toDouble()); } else if( effectData.effectName == "treble" ) { if( !effectData.data.isEmpty() ) effectElement.setAttribute("trebleGain",effectData.data.at(0).toDouble()); } filterOptions.appendChild(effectElement); } return filterOptions; } bool SoxFilterOptions::fromXml( QDomElement filterOptions ) { FilterOptions::fromXml( filterOptions ); data.sampleRate = filterOptions.attribute("sampleRate").toInt(); data.sampleSize = filterOptions.attribute("sampleSize").toInt(); data.channels = filterOptions.attribute("channels").toInt(); for( QDomNode node = filterOptions.firstChild(); !node.isNull(); node = node.nextSibling() ) { if( node.nodeName().startsWith("effect") ) { QDomElement effectElement = node.toElement(); SoxFilterOptions::EffectData effectData; effectData.effectName = effectElement.attribute("name"); if( effectData.effectName == "norm" ) { effectData.data.append( effectElement.attribute("normalizeVolume").toDouble() ); } else if( effectData.effectName == "bass" ) { effectData.data.append( effectElement.attribute("bassGain").toDouble() ); } else if( effectData.effectName == "treble" ) { effectData.data.append( effectElement.attribute("trebleGain").toDouble() ); } data.effects.append( effectData ); } } return true; } ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxfilterwidget.cpp0000644000175000001440000000006212105142355030741 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.527406196 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxfilterwidget.cpp0000644000175000001440000001665512105142355030367 0ustar00danielusers00000000000000 #include "soxfilterglobal.h" #include "soxfilterwidget.h" #include "soxeffectwidget.h" #include "soxfilteroptions.h" #include #include #include #include #include SoxFilterWidget::SoxFilterWidget() : FilterWidget() { int gridRow = 0; QGridLayout *grid = new QGridLayout( this ); grid->setMargin( 0 ); // set up filter options selection QHBoxLayout *box1 = new QHBoxLayout(); grid->addLayout( box1, gridRow++, 0 ); chSampleRate = new QCheckBox( i18n("Sample rate:"), this ); connect( chSampleRate, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()) ); box1->addWidget( chSampleRate ); cSampleRate = new KComboBox( this ); cSampleRate->addItem( "8000 Hz" ); cSampleRate->addItem( "11025 Hz" ); cSampleRate->addItem( "12000 Hz" ); cSampleRate->addItem( "16000 Hz" ); cSampleRate->addItem( "22050 Hz" ); cSampleRate->addItem( "24000 Hz" ); cSampleRate->addItem( "32000 Hz" ); cSampleRate->addItem( "44100 Hz" ); cSampleRate->addItem( "48000 Hz" ); cSampleRate->setCurrentIndex( 7 ); cSampleRate->setEditable( true ); cSampleRate->setEnabled( false ); connect( cSampleRate, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); box1->addWidget( cSampleRate ); connect( chSampleRate, SIGNAL(toggled(bool)), cSampleRate, SLOT(setEnabled(bool)) ); box1->addSpacing( 12 ); chSampleSize = new QCheckBox( i18n("Sample size:"), this ); connect( chSampleSize, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()) ); box1->addWidget( chSampleSize ); cSampleSize = new KComboBox( this ); cSampleSize->addItem( "8 bit" ); cSampleSize->addItem( "16 bit" ); cSampleSize->addItem( "24 bit" ); cSampleSize->addItem( "32 bit" ); cSampleSize->setCurrentIndex( 1 ); cSampleSize->setEditable( true ); cSampleSize->setEnabled( false ); box1->addWidget( cSampleSize ); connect( chSampleSize, SIGNAL(toggled(bool)), cSampleSize, SLOT(setEnabled(bool)) ); box1->addSpacing( 12 ); chChannels = new QCheckBox( i18n("Channels:"), this ); connect( chChannels, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()) ); box1->addWidget( chChannels ); cChannels = new KComboBox( this ); cChannels->addItem( i18n("Mono") ); cChannels->addItem( i18n("Stereo") ); cChannels->setEnabled( false ); box1->addWidget( cChannels ); connect( chChannels, SIGNAL(toggled(bool)), cChannels, SLOT(setEnabled(bool)) ); box1->addStretch(); effectWidgetsBox = new QVBoxLayout(); grid->addLayout( effectWidgetsBox, gridRow++, 0 ); SoxEffectWidget *effectWidget = new SoxEffectWidget( this ); effectWidget->setAddButtonShown( true ); effectWidget->setRemoveButtonShown( false ); connect( effectWidget, SIGNAL(addEffectWidgetClicked()), this, SLOT(addEffectWidgetClicked()) ); connect( effectWidget, SIGNAL(removeEffectWidgetClicked(SoxEffectWidget*)), this, SLOT(removeEffectWidgetClicked(SoxEffectWidget*)) ); effectWidgetsBox->addWidget( effectWidget ); effectWidgets.append( effectWidget ); } SoxFilterWidget::~SoxFilterWidget() {} FilterOptions* SoxFilterWidget::currentFilterOptions() { bool valid = false; SoxFilterOptions *options = new SoxFilterOptions(); if( chSampleRate->isChecked() ) { options->data.sampleRate = cSampleRate->currentText().replace(" Hz","").toInt(); valid = true; } else { options->data.sampleRate = 0; } if( chSampleSize->isChecked() ) { options->data.sampleSize = cSampleSize->currentText().replace(" bit","").toInt(); valid = true; } else { options->data.sampleSize = 0; } if( chChannels->isChecked() ) { options->data.channels = cChannels->currentIndex() + 1; valid = true; } else { options->data.channels = 0; } foreach( SoxEffectWidget *effectWidget, effectWidgets ) { const SoxFilterOptions::EffectData data = effectWidget->currentEffectOptions(); if( data.effectName != i18n("Disabled") ) { options->data.effects.append( data ); valid = true; } } if( valid ) { return options; } else { return 0; } } bool SoxFilterWidget::setCurrentFilterOptions( FilterOptions *_options ) { // reset effect widgets for( int i=1; iremoveWidget( effectWidgets.at(i) ); effectWidgets.at(i)->deleteLater(); effectWidgets.removeAt( i ); i--; } if( !effectWidgets.isEmpty() && effectWidgets.last() ) // really should always be true { SoxFilterOptions::EffectData effectData; effectWidgets.last()->setEffectOptions( effectData ); effectWidgets.last()->setAddButtonShown( true ); if( effectWidgets.count() == 1 ) effectWidgets.last()->setRemoveButtonShown( false ); } if( !_options ) { chSampleRate->setChecked( false ); chSampleSize->setChecked( false ); chChannels->setChecked( false ); return true; } if( _options->pluginName != global_plugin_name ) return false; SoxFilterOptions *options = dynamic_cast(_options); chSampleRate->setChecked( options->data.sampleRate > 0 ); if( options->data.sampleRate > 0 ) { cSampleRate->setCurrentItem( QString::number(options->data.sampleRate) + " Hz" ); } chSampleSize->setChecked( options->data.sampleSize > 0 ); if( options->data.sampleSize > 0 ) { cSampleSize->setCurrentItem( QString::number(options->data.sampleSize) + " bit" ); } chChannels->setChecked( options->data.channels > 0 ); if( options->data.channels > 0 ) { cChannels->setCurrentIndex( options->data.channels - 1 ); } bool first = true; foreach( const SoxFilterOptions::EffectData effectData, options->data.effects ) { if( !first ) addEffectWidgetClicked(); effectWidgets.last()->setEffectOptions( effectData ); first = false; } return true; } void SoxFilterWidget::addEffectWidgetClicked() { if( !effectWidgets.isEmpty() && effectWidgets.last() ) // really should alway be true { effectWidgets.last()->setAddButtonShown( false ); effectWidgets.last()->setRemoveButtonShown( true ); } SoxEffectWidget *effectWidget = new SoxEffectWidget( this ); effectWidget->setAddButtonShown( true ); effectWidget->setRemoveButtonShown( true ); connect( effectWidget, SIGNAL(addEffectWidgetClicked()), this, SLOT(addEffectWidgetClicked()) ); connect( effectWidget, SIGNAL(removeEffectWidgetClicked(SoxEffectWidget*)), this, SLOT(removeEffectWidgetClicked(SoxEffectWidget*)) ); effectWidgetsBox->addWidget( effectWidget ); effectWidgets.append( effectWidget ); } void SoxFilterWidget::removeEffectWidgetClicked( SoxEffectWidget *widget ) { if( !widget ) return; const int index = effectWidgets.indexOf( widget ); if( index != -1 ) { effectWidgetsBox->removeWidget( widget ); widget->deleteLater(); effectWidgets.removeAt( index ); } if( !effectWidgets.isEmpty() && effectWidgets.last() ) // really should alway be true { effectWidgets.last()->setAddButtonShown( true ); if( effectWidgets.count() == 1 ) effectWidgets.last()->setRemoveButtonShown( false ); } } ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/PaxHeaders.25599/soxfilteroptions.h0000644000175000001440000000006212105142355030616 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.527406196 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_sox/soxfilteroptions.h0000644000175000001440000000124712105142355030233 0ustar00danielusers00000000000000 #ifndef SOXFILTEROPTIONS_H #define SOXFILTEROPTIONS_H #include "../../core/conversionoptions.h" class SoxFilterOptions : public FilterOptions { public: SoxFilterOptions(); ~SoxFilterOptions(); bool equals( FilterOptions *_other ); QDomElement toXml( QDomDocument document, const QString elementName ); bool fromXml( QDomElement filterOptions ); struct EffectData { QString effectName; QVariantList data; }; struct Data { int sampleRate; // 0 if disabled int sampleSize; // 0 if disabled short channels; // 0 if disabled QList effects; } data; }; #endif // SOXFILTEROPTIONS_H ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_musepack0000644000175000001440000000006212105142354025523 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.575405596 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/0000755000175000001440000000000012105142354025211 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/soundkonverter_codec_m0000644000175000001440000000006212105142354032264 xustar000000000000000020 atime=1379147589 30 ctime=1387631579.547405946 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/soundkonverter_codec_musepack.cpp0000755000175000001440000002054312105142354034041 0ustar00danielusers00000000000000 #include "musepackcodecglobal.h" #include "soundkonverter_codec_musepack.h" #include "musepackconversionoptions.h" #include "musepackcodecwidget.h" #include #include soundkonverter_codec_musepack::soundkonverter_codec_musepack( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["mppenc"] = ""; binaries["mppdec"] = ""; allCodecs += "musepack"; allCodecs += "wav"; } soundkonverter_codec_musepack::~soundkonverter_codec_musepack() {} QString soundkonverter_codec_musepack::name() { return global_plugin_name; } void soundkonverter_codec_musepack::scanForBackends( const QStringList& directoryList ) { binaries["mppenc"] = KStandardDirs::findExe( "mppenc" ); // sv7 if( binaries["mppenc"].isEmpty() ) binaries["mppenc"] = KStandardDirs::findExe( "mpcenc" ); // sv8 if( binaries["mppenc"].isEmpty() ) { for( QList::const_iterator b = directoryList.begin(); b != directoryList.end(); ++b ) { if( QFile::exists((*b) + "/mppenc") ) { binaries["mppenc"] = (*b) + "/mppenc"; break; } else if( QFile::exists((*b) + "/mpcenc") ) { binaries["mppenc"] = (*b) + "/mpcenc"; break; } } } binaries["mppdec"] = KStandardDirs::findExe( "mppdec" ); // sv7 if( binaries["mppdec"].isEmpty() ) binaries["mppdec"] = KStandardDirs::findExe( "mpcdec" ); // sv8 if( binaries["mppdec"].isEmpty() ) { for( QList::const_iterator b = directoryList.begin(); b != directoryList.end(); ++b ) { if( QFile::exists((*b) + "/mppdec") ) { binaries["mppdec"] = (*b) + "/mppdec"; break; } else if( QFile::exists((*b) + "/mpcdec") ) { binaries["mppdec"] = (*b) + "/mpcdec"; break; } } } } QList soundkonverter_codec_musepack::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "musepack"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["mppenc"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "musepack", "mppenc" ) + "\n" + standardMessage( "install_website_backend,url", "mppenc", "http://www.musepack.net" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "musepack"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["mppdec"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "musepack", "mppdec" ) + "\n" + standardMessage( "install_website_backend,url", "mppdec", "http://www.musepack.net" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_musepack::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_musepack::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_musepack::hasInfo() { return false; } void soundkonverter_codec_musepack::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_musepack::newCodecWidget() { MusePackCodecWidget *widget = new MusePackCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_musepack::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_musepack::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; MusePackConversionOptions *musepackConversionOptions = 0; if( conversionOptions->pluginName == name() ) { musepackConversionOptions = static_cast(conversionOptions); } if( outputCodec == "musepack" ) { command += binaries["mppenc"]; if( musepackConversionOptions && musepackConversionOptions->data.preset != MusePackConversionOptions::Data::UserDefined ) { if( musepackConversionOptions->data.preset == MusePackConversionOptions::Data::Telephone ) { command += "--telephone"; } else if( musepackConversionOptions->data.preset == MusePackConversionOptions::Data::Thumb ) { command += "--thumb"; } else if( musepackConversionOptions->data.preset == MusePackConversionOptions::Data::Radio ) { command += "--radio"; } else if( musepackConversionOptions->data.preset == MusePackConversionOptions::Data::Standard ) { command += "--standard"; } else if( musepackConversionOptions->data.preset == MusePackConversionOptions::Data::Extreme ) { command += "--extreme"; } else if( musepackConversionOptions->data.preset == MusePackConversionOptions::Data::Insane ) { command += "--insane"; } else if( musepackConversionOptions->data.preset == MusePackConversionOptions::Data::Braindead ) { command += "--braindead"; } } else { command += "--quality"; command += QString::number(conversionOptions->quality); } if( conversionOptions->pluginName == name() ) { command += conversionOptions->cmdArguments; } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["mppdec"]; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_musepack::parseOutput( const QString& output ) { // sv7 // 47.4 143.7 kbps 23.92x 1:43.3 3:38.1 0:04.3 0:09.1 0:04.8 // sv8 // 37.5 // 171.2 kbps // 23.03x // 0:36.1 // 1:36.5 // 0:01.5 // 0:04.1 // 0:02.6 QRegExp reg("(\\d+\\.\\d)\\s+\\d+\\.\\d kbps"); if( output.contains(reg) ) { return reg.cap(1).toFloat(); } return -1; } ConversionOptions *soundkonverter_codec_musepack::conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { MusePackConversionOptions *options = new MusePackConversionOptions(); options->fromXml( conversionOptions, filterOptionsElements ); return options; } #include "soundkonverter_codec_musepack.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605655030360 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.548405934 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/CMakeLists.txt0000755000175000001440000000127211726605655027776 0ustar00danielusers00000000000000project(soundkonverter_codec_musepack) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_musepack_SRCS soundkonverter_codec_musepack.cpp musepackcodecwidget.cpp musepackconversionoptions.cpp ) kde4_add_plugin(soundkonverter_codec_musepack ${soundkonverter_codec_musepack_SRCS}) target_link_libraries(soundkonverter_codec_musepack ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_musepack DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_musepack.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/musepackconversionopti0000644000175000001440000000006212105142354032335 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.548405934 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/musepackconversionoptions.cpp0000644000175000001440000000335012105142354033250 0ustar00danielusers00000000000000 #include "musepackcodecglobal.h" #include "musepackconversionoptions.h" MusePackConversionOptions::MusePackConversionOptions() : ConversionOptions() { pluginName = global_plugin_name; } MusePackConversionOptions::~MusePackConversionOptions() {} bool MusePackConversionOptions::equals( ConversionOptions *_other ) { if( !_other || _other->pluginName!=pluginName ) return false; MusePackConversionOptions *other = dynamic_cast(_other); if( data.preset==other->data.preset && data.preset==Data::UserDefined ) { return ConversionOptions::equals(_other); } else if( data.preset==other->data.preset ) { return ( equalsBasics(_other) && equalsFilters(_other) ); } else { return false; } } QDomElement MusePackConversionOptions::toXml( QDomDocument document ) { QDomElement conversionOptions = ConversionOptions::toXml( document ); QDomElement encodingOptions = conversionOptions.elementsByTagName("encodingOptions").at(0).toElement(); QDomElement data = document.createElement("data"); data.setAttribute("preset",MusePackConversionOptions::data.preset); encodingOptions.appendChild(data); return conversionOptions; } bool MusePackConversionOptions::fromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { ConversionOptions::fromXml( conversionOptions, filterOptionsElements ); QDomElement encodingOptions = conversionOptions.elementsByTagName("encodingOptions").at(0).toElement(); QDomElement data = encodingOptions.elementsByTagName("data").at(0).toElement(); MusePackConversionOptions::data.preset = (Data::Preset)data.attribute("preset").toInt(); return true; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/musepackconversionopti0000644000175000001440000000006212105142354032335 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.548405934 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/musepackconversionoptions.h0000644000175000001440000000137112105142354032716 0ustar00danielusers00000000000000 #ifndef MUSEPACKCONVERSIONOPTIONS_H #define MUSEPACKCONVERSIONOPTIONS_H #include "../../core/conversionoptions.h" class MusePackConversionOptions : public ConversionOptions { public: MusePackConversionOptions(); ~MusePackConversionOptions(); bool equals( ConversionOptions *_other ); QDomElement toXml( QDomDocument document ); bool fromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); struct Data { enum Preset { Telephone = 0, Thumb = 1, Radio = 2, Standard = 3, Extreme = 4, Insane = 5, Braindead = 6, UserDefined = 7 } preset; } data; }; #endif // MUSEPACKCONVERSIONOPTIONS_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/soundkonverter_codec_m0000644000175000001440000000006211441643247032275 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.548405934 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/soundkonverter_codec_musepack.desktop0000755000175000001440000000054311441643247034737 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter MusePack Plugin X-KDE-Library=soundkonverter_codec_musepack ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_musepack X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/musepackcodecwidget.h0000644000175000001440000000006212105142354031763 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.548405934 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/musepackcodecwidget.h0000644000175000001440000000233212105142354031374 0ustar00danielusers00000000000000 #ifndef MUSEPACKCODECWIDGET_H #define MUSEPACKCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class KLineEdit; class QSlider; class QDoubleSpinBox; class QGroupBox; class QCheckBox; class MusePackCodecWidget : public CodecWidget { Q_OBJECT public: MusePackCodecWidget(); ~MusePackCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: // preset selection KComboBox *cPreset; // user defined options QGroupBox *userdefinedBox; QSlider *sQuality; QDoubleSpinBox *dQuality; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format int bitrateForQuality( double quality ); double qualityForBitrate( int bitrate ); private slots: // presets void presetChanged( const QString& preset ); // user defined options void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( double quality ); }; #endif // MUSEPACKCODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/soundkonverter_codec_m0000644000175000001440000000006212105142354032264 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.566405709 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/soundkonverter_codec_musepack.h0000755000175000001440000000312512105142354033503 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_MUSEPACK_H #define SOUNDKONVERTER_CODEC_MUSEPACK_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_musepack : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_musepack( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_musepack(); QString name(); /** search for the backend binaries in the given directories */ virtual void scanForBackends( const QStringList& directoryList = QStringList() ); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); ConversionOptions *conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); }; K_EXPORT_SOUNDKONVERTER_CODEC( musepack, soundkonverter_codec_musepack ) #endif // SOUNDKONVERTER_CODEC_MUSEPACK_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/musepackcodecwidget.cp0000644000175000001440000000006212105142354032136 xustar000000000000000020 atime=1387530398 30 ctime=1387631579.566405709 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/musepackcodecwidget.cpp0000644000175000001440000002250212105142354031730 0ustar00danielusers00000000000000 #include "musepackcodecglobal.h" #include "musepackcodecwidget.h" #include "musepackconversionoptions.h" #include #include #include #include #include #include #include #include #include #include MusePackCodecWidget::MusePackCodecWidget() : CodecWidget(), currentFormat( "musepack" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up preset selection QHBoxLayout *presetBox = new QHBoxLayout(); grid->addLayout( presetBox, 0, 0 ); QLabel *lPreset = new QLabel( i18n("Preset:"), this ); presetBox->addWidget( lPreset ); cPreset = new KComboBox( this ); cPreset->addItem( i18nc("Backend profile","Telephone") ); cPreset->addItem( i18nc("Backend profile","Thumb") ); cPreset->addItem( i18nc("Backend profile","Radio") ); cPreset->addItem( i18nc("Backend profile","Standard") ); cPreset->addItem( i18nc("Backend profile","Extreme") ); cPreset->addItem( i18nc("Backend profile","Insane") ); cPreset->addItem( i18nc("Backend profile","Braindead") ); cPreset->addItem( i18n("User defined") ); cPreset->setCurrentIndex( 3 ); cPreset->setToolTip( i18n("Either use one of MusePacks's presets or your own settings.") ); connect( cPreset, SIGNAL(activated(const QString&)), this, SLOT(presetChanged(const QString&)) ); connect( cPreset, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); presetBox->addWidget( cPreset ); presetBox->addStretch(); // set up user defined options userdefinedBox = new QGroupBox( /*i18n("User defined"),*/ this ); grid->addWidget( userdefinedBox, 1, 0 ); QVBoxLayout *userdefinedBoxLayout = new QVBoxLayout(); userdefinedBox->setLayout( userdefinedBoxLayout ); // top box ---------------------------------------- QHBoxLayout *userdefinedTopBox = new QHBoxLayout(); userdefinedBoxLayout->addLayout( userdefinedTopBox ); QLabel *lQuality = new QLabel( i18n("Quality"), userdefinedBox ); userdefinedTopBox->addWidget( lQuality ); userdefinedTopBox->addSpacing( 5 ); sQuality = new QSlider( Qt::Horizontal, userdefinedBox ); sQuality->setRange( 0, 1000 ); sQuality->setSingleStep( 100 ); sQuality->setValue( 500 ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); userdefinedTopBox->addWidget( sQuality ); dQuality = new QDoubleSpinBox( userdefinedBox ); dQuality->setRange( 0, 10 ); dQuality->setSingleStep( 1 ); dQuality->setValue( 5 ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); connect( dQuality, SIGNAL(valueChanged(double)), this, SLOT(qualitySpinBoxChanged(double)) ); connect( dQuality, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); userdefinedTopBox->addWidget( dQuality ); userdefinedTopBox->addStretch(); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 2, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 3, 1 ); presetChanged( cPreset->currentText() ); } MusePackCodecWidget::~MusePackCodecWidget() {} // TODO optimize int MusePackCodecWidget::bitrateForQuality( double quality ) { return quality*100/3; } // TODO optimize double MusePackCodecWidget::qualityForBitrate( int bitrate ) { return (double)bitrate*3/100; } ConversionOptions *MusePackCodecWidget::currentConversionOptions() { MusePackConversionOptions *options = new MusePackConversionOptions(); options->data.preset = (MusePackConversionOptions::Data::Preset)cPreset->currentIndex(); options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); options->bitrate = bitrateForQuality( options->quality ); options->bitrateMode = ConversionOptions::Vbr; return options; } bool MusePackCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; MusePackConversionOptions *options = static_cast(_options); cPreset->setCurrentIndex( (int)options->data.preset ); presetChanged( cPreset->currentText() ); dQuality->setValue( options->quality ); cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void MusePackCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString MusePackCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( cPreset->currentIndex() == 7 && dQuality->value() == 3.0 ) { return i18n("Very low"); } else if( cPreset->currentIndex() == 7 && dQuality->value() == 4.0 ) { return i18n("Low"); } else if( cPreset->currentIndex() == 7 && dQuality->value() == 5.0 ) { return i18n("Medium"); } else if( cPreset->currentIndex() == 7 && dQuality->value() == 6.0 ) { return i18n("High"); } else if( cPreset->currentIndex() == 7 && dQuality->value() == 7.0 ) { return i18n("Very high"); } return i18n("User defined"); } bool MusePackCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { cPreset->setCurrentIndex( 7 ); presetChanged( cPreset->currentText() ); sQuality->setValue( 300 ); dQuality->setValue( 3.0 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Low") ) { cPreset->setCurrentIndex( 7 ); presetChanged( cPreset->currentText() ); sQuality->setValue( 400 ); dQuality->setValue( 4.0 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Medium") ) { cPreset->setCurrentIndex( 7 ); presetChanged( cPreset->currentText() ); sQuality->setValue( 500 ); dQuality->setValue( 5.0 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("High") ) { cPreset->setCurrentIndex( 7 ); presetChanged( cPreset->currentText() ); sQuality->setValue( 600 ); dQuality->setValue( 6.0 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Very high") ) { cPreset->setCurrentIndex( 7 ); presetChanged( cPreset->currentText() ); sQuality->setValue( 700 ); dQuality->setValue( 7.0 ); cCmdArguments->setChecked( false ); return true; } return false; } int MusePackCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { // dataRate = 500000 + dQuality->value()*150000; // if( dQuality->value() > 7 ) dataRate += (dQuality->value()-7)*250000; // if( dQuality->value() > 9 ) dataRate += (dQuality->value()-9)*800000; dataRate = 0; } return dataRate; } void MusePackCodecWidget::presetChanged( const QString& preset ) { cPreset->setToolTip( "" ); if( preset == i18nc("Backend profile","Telephone") ) { userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("low quality (~60 kbps abr).") ); } else if( preset == i18nc("Backend profile","Thumb") ) { userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("low/medium quality (~90 kbps abr).") ); } else if( preset == i18nc("Backend profile","Radio") ) { userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("medium quality (~130 kbps abr).") ); } else if( preset == i18nc("Backend profile","Standard") ) { userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("high quality (~180 kbps abr).") ); } else if( preset == i18nc("Backend profile","Extreme") ) { userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("excellent quality (~210 kbps abr).") ); } else if( preset == i18nc("Backend profile","Insane") ) { userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("excellent quality (~240 kbps abr).") ); } else if( preset == i18nc("Backend profile","Braindead") ) { userdefinedBox->setEnabled( false ); cPreset->setToolTip( i18n("excellent quality (~270 kbps abr).") ); } else // "User defined" { userdefinedBox->setEnabled( true ); } } void MusePackCodecWidget::qualitySliderChanged( int quality ) { dQuality->setValue( double(quality)/100.0 ); } void MusePackCodecWidget::qualitySpinBoxChanged( double quality ) { sQuality->setValue( round(quality*100.0) ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/PaxHeaders.25599/musepackcodecglobal.h0000644000175000001440000000006211773075463031760 xustar000000000000000020 atime=1360922607 30 ctime=1387631579.575405596 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_musepack/musepackcodecglobal.h0000644000175000001440000000011111773075463031362 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "MusePack" #endif ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_twolame0000644000175000001440000000006212105142355025364 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.625404971 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/0000755000175000001440000000000012105142355025052 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/PaxHeaders.25599/twolamecodecwidget.h0000644000175000001440000000006212105142355031464 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.603405246 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/twolamecodecwidget.h0000644000175000001440000000217212105142355031077 0ustar00danielusers00000000000000 #ifndef TWOLAMECODECWIDGET_H #define TWOLAMECODECWIDGET_H #include "../../core/codecwidget.h" #include class KComboBox; class QSpinBox; class QCheckBox; class QLabel; class QSlider; class KLineEdit; class TwoLameCodecWidget : public CodecWidget { Q_OBJECT public: TwoLameCodecWidget(); ~TwoLameCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: // user defined options KComboBox *cMode; QSpinBox *iQuality; QSlider *sQuality; QCheckBox *cCmdArguments; KLineEdit *lCmdArguments; QString currentFormat; // holds the current output file format int bitrateForQuality( int quality ); int qualityForBitrate( int bitrate ); private slots: // user defined options void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( int quality ); }; #endif // TWOLAMECODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605617030216 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.603405246 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/CMakeLists.txt0000755000175000001440000000122011726605617027625 0ustar00danielusers00000000000000project(soundkonverter_codec_twolame) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_twolame_SRCS soundkonverter_codec_twolame.cpp twolamecodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_twolame ${soundkonverter_codec_twolame_SRCS}) target_link_libraries(soundkonverter_codec_twolame ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_twolame DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_twolame.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/PaxHeaders.25599/twolamecodecglobal.h0000644000175000001440000000006211440655205031445 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.625404971 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/twolamecodecglobal.h0000644000175000001440000000011011440655205031046 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "twolame" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/PaxHeaders.25599/soundkonverter_codec_tw0000644000175000001440000000006212105142355032323 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.625404971 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.h0000755000175000001440000000250312105142355033203 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_TWOLAME_H #define SOUNDKONVERTER_CODEC_TWOLAME_H #include "../../core/codecplugin.h" #include class ConversionOptions; class soundkonverter_codec_twolame : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_twolame( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_twolame(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( twolame, soundkonverter_codec_twolame ) #endif // _SOUNDKONVERTER_CODEC_TWOLAME_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/PaxHeaders.25599/soundkonverter_codec_tw0000644000175000001440000000006212105142355032323 xustar000000000000000020 atime=1387530397 30 ctime=1387631579.625404971 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.cpp0000755000175000001440000001464112105142355033544 0ustar00danielusers00000000000000 #include "twolamecodecglobal.h" #include "soundkonverter_codec_twolame.h" #include "twolamecodecwidget.h" #include #include #include #include #include #include #include #include #include #include soundkonverter_codec_twolame::soundkonverter_codec_twolame( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["twolame"] = ""; allCodecs += "mp2"; allCodecs += "wav"; } soundkonverter_codec_twolame::~soundkonverter_codec_twolame() {} QString soundkonverter_codec_twolame::name() { return global_plugin_name; } QList soundkonverter_codec_twolame::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "mp2"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["twolame"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "mp2", "twolame" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_twolame::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_twolame::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) // KDialog *dialog = new KDialog( parent ); // dialog->setCaption( i18n("Configure %1").arg(global_plugin_name) ); // dialog->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Apply ); // QWidget *widget = new QWidget( dialog ); // dialog->setMainWidget( widget ); // connect( dialog, SIGNAL( applyClicked() ), widget, SLOT( save() ) ); // connect( dialog, SIGNAL( okClicked() ), widget, SLOT( save() ) ); // connect( widget, SIGNAL( changed( bool ) ), dialog, SLOT( enableButtonApply( bool ) ) ); // dialog->enableButtonApply( false ); // dialog->show(); } bool soundkonverter_codec_twolame::hasInfo() { return true; } void soundkonverter_codec_twolame::showInfo( QWidget *parent ) { KDialog *dialog = new KDialog( parent ); dialog->setCaption( i18n("About %1").arg(global_plugin_name) ); dialog->setButtons( KDialog::Ok ); QLabel *widget = new QLabel( dialog ); widget->setText( i18n("TwoLame is a free MP2 encoder.\nYou can get it at: http://www.twolame.org") ); dialog->setMainWidget( widget ); dialog->enableButtonApply( false ); dialog->show(); } CodecWidget *soundkonverter_codec_twolame::newCodecWidget() { TwoLameCodecWidget *widget = new TwoLameCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_twolame::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_twolame::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "mp2" ) { command += binaries["twolame"]; if( inputFile.isEmpty() ) { command += "-r"; } if( conversionOptions->qualityMode == ConversionOptions::Quality ) { command += "-V"; command += QString::number(conversionOptions->quality); } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { command += "-b"; command += QString::number(conversionOptions->bitrate); } if( conversionOptions->pluginName == name() ) { command += conversionOptions->cmdArguments; } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_twolame::parseOutput( const QString& output ) { // decoding // Frame# 1398/8202 256 kbps L R (...) // encoding // \r 3600/3696 (97%)| 0:05/ 0:05| 0:05/ 0:05| 18.190x| 0:00 QString data = output; QString frame, count; if( output.contains("Frame#") ) { data.remove( 0, data.indexOf("Frame#")+7 ); frame = data.left( data.indexOf("/") ); data.remove( 0, data.indexOf("/")+1 ); count = data.left( data.indexOf(" ") ); return frame.toFloat()/count.toFloat()*100.0f; } if( output.contains("%") ) { frame = data.left( data.indexOf("/") ); frame.remove( 0, frame.lastIndexOf(" ")+1 ); data.remove( 0, data.indexOf("/")+1 ); count = data.left( data.indexOf(" ") ); return frame.toFloat()/count.toFloat()*100.0f; } /*if( output.contains("%") ) { data.remove( 0, data.indexOf("(")+1 ); data.remove( data.indexOf("%"), data.length()-data.indexOf("%") ); return data.toFloat(); }*/ return -1; } #include "soundkonverter_codec_twolame.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/PaxHeaders.25599/soundkonverter_codec_tw0000644000175000001440000000006211440655361032332 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.625404971 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/soundkonverter_codec_twolame.desktop0000755000175000001440000000054011440655361034433 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter TwoLame Plugin X-KDE-Library=soundkonverter_codec_twolame ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_twolame X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/PaxHeaders.25599/twolamecodecwidget.cpp0000644000175000001440000000006212105142355032017 xustar000000000000000020 atime=1368948787 30 ctime=1387631579.625404971 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_twolame/twolamecodecwidget.cpp0000644000175000001440000001705612105142355031441 0ustar00danielusers00000000000000 #include "twolamecodecglobal.h" #include "twolamecodecwidget.h" #include "../../core/conversionoptions.h" #include #include #include #include #include #include // #include #include // TODO calibrate quality profiles TwoLameCodecWidget::TwoLameCodecWidget() : CodecWidget(), currentFormat( "mp2" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // top box ---------------------------------------- QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lMode = new QLabel( i18n("Mode:"), this ); topBox->addWidget( lMode ); cMode = new KComboBox( this ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cMode ); sQuality = new QSlider( Qt::Horizontal, this ); sQuality->setRange( 32, 384 ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); iQuality = new QSpinBox( this ); iQuality->setRange( 32, 384 ); iQuality->setSuffix( " kbps" ); iQuality->setFixedWidth( iQuality->sizeHint().width() ); connect( iQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySpinBoxChanged(int)) ); connect( iQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( iQuality ); topBox->addStretch(); // cmd arguments box QHBoxLayout *cmdArgumentsBox = new QHBoxLayout(); grid->addLayout( cmdArgumentsBox, 1, 0 ); cCmdArguments = new QCheckBox( i18n("Additional encoder arguments:"), this ); cmdArgumentsBox->addWidget( cCmdArguments ); lCmdArguments = new KLineEdit( this ); lCmdArguments->setEnabled( false ); cmdArgumentsBox->addWidget( lCmdArguments ); connect( cCmdArguments, SIGNAL(toggled(bool)), lCmdArguments, SLOT(setEnabled(bool)) ); grid->setRowStretch( 2, 1 ); modeChanged( 0 ); } TwoLameCodecWidget::~TwoLameCodecWidget() {} // TODO optimize int TwoLameCodecWidget::bitrateForQuality( int quality ) { return 384+(quality-50)*383/100; } // TODO optimize int TwoLameCodecWidget::qualityForBitrate( int bitrate ) { return (bitrate-384)*100/384+50; } ConversionOptions *TwoLameCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); if( cMode->currentText() == i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = iQuality->value(); options->bitrate = bitrateForQuality( options->quality ); options->bitrateMode = ConversionOptions::Vbr; } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = iQuality->value(); options->quality = qualityForBitrate( options->bitrate ); options->bitrateMode = ConversionOptions::Cbr; } if( cCmdArguments->isChecked() ) options->cmdArguments = lCmdArguments->text(); else options->cmdArguments = ""; return options; } bool TwoLameCodecWidget::setCurrentConversionOptions( ConversionOptions *options ) { if( !options || options->pluginName != global_plugin_name ) return false; if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( cMode->findText(i18n("Quality")) ); modeChanged( cMode->currentIndex() ); iQuality->setValue( options->quality ); } else { cMode->setCurrentIndex( cMode->findText(i18n("Bitrate")) ); modeChanged( cMode->currentIndex() ); iQuality->setValue( options->bitrate ); } cCmdArguments->setChecked( !options->cmdArguments.isEmpty() ); if( !options->cmdArguments.isEmpty() ) lCmdArguments->setText( options->cmdArguments ); return true; } void TwoLameCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString TwoLameCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( cMode->currentIndex() == 0 && iQuality->value() == -25 ) { return i18n("Very low"); } else if( cMode->currentIndex() == 0 && iQuality->value() == -10 ) { return i18n("Low"); } else if( cMode->currentIndex() == 0 && iQuality->value() == 5 ) { return i18n("Medium"); } else if( cMode->currentIndex() == 0 && iQuality->value() == 20 ) { return i18n("High"); } else if( cMode->currentIndex() == 0 && iQuality->value() == 35 ) { return i18n("Very high"); } return i18n("User defined"); } bool TwoLameCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( -25 ); iQuality->setValue( -25 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Low") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( -10 ); iQuality->setValue( -10 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Medium") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 5 ); iQuality->setValue( 5 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("High") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 20 ); iQuality->setValue( 20 ); cCmdArguments->setChecked( false ); return true; } else if( profile == i18n("Very high") ) { cMode->setCurrentIndex( 0 ); modeChanged( 0 ); sQuality->setValue( 35 ); iQuality->setValue( 35 ); cCmdArguments->setChecked( false ); return true; } return false; } int TwoLameCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { if( cMode->currentIndex() == 0 ) { dataRate = 1440000 + iQuality->value()*28800; // TODO calc properly } else { dataRate = iQuality->value()/8*60*1000; } } return dataRate; } void TwoLameCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( -50, 50 ); sQuality->setSingleStep( 5 ); iQuality->setRange( -50, 50 ); iQuality->setSingleStep( 5 ); iQuality->setSuffix( "" ); sQuality->setValue( 5 ); iQuality->setValue( 5 ); iQuality->setToolTip( i18n("Quality level from -50 to 50.") ); } else { sQuality->setRange( 32, 384 ); sQuality->setSingleStep( 8 ); iQuality->setRange( 32, 384 ); iQuality->setSingleStep( 8 ); iQuality->setSuffix( " kbps" ); sQuality->setValue( 160 ); iQuality->setValue( 160 ); iQuality->setToolTip( i18n("Bitrate") ); } } void TwoLameCodecWidget::qualitySliderChanged( int quality ) { iQuality->setValue( quality ); } void TwoLameCodecWidget::qualitySpinBoxChanged( int quality ) { sQuality->setValue( quality ); } ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_filter_normalize0000644000175000001440000000012012255307066026127 xustar000000000000000030 mtime=1387630134.210891275 20 atime=1360315629 30 ctime=1387631579.647404696 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/0000755000175000001440000000000012255307066025622 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/normalizefilterwidge0000644000175000001440000000006212105142355032352 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.644404734 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/normalizefilterwidget.h0000644000175000001440000000066112105142355032400 0ustar00danielusers00000000000000 #ifndef NORMALIZEFILTERWIDGET_H #define NORMALIZEFILTERWIDGET_H #include "../../core/codecwidget.h" class QCheckBox; class NormalizeFilterWidget : public FilterWidget { Q_OBJECT public: NormalizeFilterWidget(); ~NormalizeFilterWidget(); FilterOptions *currentFilterOptions(); bool setCurrentFilterOptions( FilterOptions *_options ); private: QCheckBox *cNormalize; }; #endif // NORMALIZEFILTERWIDGET_H ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006212105142355030741 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.644404734 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/CMakeLists.txt0000755000175000001440000000131112105142355030351 0ustar00danielusers00000000000000project(soundkonverter_filter_normalize) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_filter_normalize_SRCS soundkonverter_filter_normalize.cpp normalizefilteroptions.cpp normalizefilterwidget.cpp ) kde4_add_plugin(soundkonverter_filter_normalize ${soundkonverter_filter_normalize_SRCS}) target_link_libraries(soundkonverter_filter_normalize ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_filter_normalize DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_filter_normalize.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/soundkonverter_filte0000644000175000001440000000013212255307066032405 xustar000000000000000030 mtime=1387630134.210891275 30 atime=1387630134.210891275 30 ctime=1387631579.644404734 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/soundkonverter_filter_normalize.h0000755000175000001440000000266312255307066034522 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_FILTER_NORMALIZE_H #define SOUNDKONVERTER_FILTER_NORMALIZE_H #include "../../core/filterplugin.h" class FilterOptions; class soundkonverter_filter_normalize : public FilterPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_filter_normalize( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_filter_normalize(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); FilterWidget *newFilterWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); FilterOptions *filterOptionsFromXml( QDomElement filterOptions ); }; K_EXPORT_SOUNDKONVERTER_FILTER( normalize, soundkonverter_filter_normalize ) #endif // SOUNDKONVERTER_FILTER_NORMALIZE_H ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/soundkonverter_filte0000644000175000001440000000024212105142355032377 xustar0000000000000000112 path=./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/soundkonverter_filter_normalize.desktop 20 atime=1360315629 30 ctime=1387631579.644404734 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/soundkonverter_filter_normalize.deskt0000755000175000001440000000055112105142355035367 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter normalize Plugin X-KDE-Library=soundkonverter_filter_normalize ServiceTypes=soundKonverter/FilterPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_filter_normalize X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/normalizefiltergloba0000644000175000001440000000006212105142355032337 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.647404696 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/normalizefilterglobal.h0000644000175000001440000000011212105142355032344 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "normalize" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/normalizefilteroptio0000644000175000001440000000006212105142355032405 xustar000000000000000020 atime=1371411853 30 ctime=1387631579.647404696 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/normalizefilteroptions.cpp0000644000175000001440000000202212105142355033134 0ustar00danielusers00000000000000 #include "normalizefilterglobal.h" #include "normalizefilteroptions.h" #include "../../core/conversionoptions.h" NormalizeFilterOptions::NormalizeFilterOptions() { pluginName = global_plugin_name; } NormalizeFilterOptions::~NormalizeFilterOptions() {} bool NormalizeFilterOptions::equals( FilterOptions *_other ) { if( !_other || _other->pluginName!=pluginName ) return false; NormalizeFilterOptions *other = dynamic_cast(_other); return ( FilterOptions::equals( _other ) && data.normalize == other->data.normalize ); } QDomElement NormalizeFilterOptions::toXml( QDomDocument document, const QString elementName ) { QDomElement filterOptions = FilterOptions::toXml( document,elementName ); filterOptions.setAttribute("normalize",data.normalize); return filterOptions; } bool NormalizeFilterOptions::fromXml( QDomElement filterOptions ) { FilterOptions::fromXml( filterOptions ); data.normalize = filterOptions.attribute("normalize").toInt(); return true; } ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/soundkonverter_filte0000644000175000001440000000013212255307066032405 xustar000000000000000030 mtime=1387630134.210891275 30 atime=1387630134.210891275 30 ctime=1387631579.647404696 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/soundkonverter_filter_normalize.cpp0000755000175000001440000001235412255307066035053 0ustar00danielusers00000000000000 #include "normalizefilterglobal.h" #include "soundkonverter_filter_normalize.h" #include "../../core/conversionoptions.h" #include "normalizefilteroptions.h" #include "normalizefilterwidget.h" #include soundkonverter_filter_normalize::soundkonverter_filter_normalize( QObject *parent, const QStringList& args ) : FilterPlugin( parent ) { Q_UNUSED(args) binaries["normalize"] = ""; allCodecs += "wav"; } soundkonverter_filter_normalize::~soundkonverter_filter_normalize() {} QString soundkonverter_filter_normalize::name() { return global_plugin_name; } QList soundkonverter_filter_normalize::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["normalize"] != "" ); newTrunk.problemInfo = standardMessage( "filter,backend", "normalize", "normalize" ) + "\n" + standardMessage( "install_opensource_backend", "normalize" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_filter_normalize::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_filter_normalize::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_filter_normalize::hasInfo() { return false; } void soundkonverter_filter_normalize::showInfo( QWidget *parent ) { Q_UNUSED(parent) } FilterWidget *soundkonverter_filter_normalize::newFilterWidget() { NormalizeFilterWidget *widget = new NormalizeFilterWidget(); if( lastUsedFilterOptions ) { widget->setCurrentFilterOptions( lastUsedFilterOptions ); delete lastUsedFilterOptions; lastUsedFilterOptions = 0; } return qobject_cast(widget); } CodecWidget *soundkonverter_filter_normalize::newCodecWidget() { // CodecWidget *widget = new CodecWidget(); // if( lastUsedConversionOptions ) // { // widget->setCurrentConversionOptions( lastUsedConversionOptions ); // delete lastUsedConversionOptions; // lastUsedConversionOptions = 0; // } // return qobject_cast(widget); return 0; } unsigned int soundkonverter_filter_normalize::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; FilterPluginItem *newItem = new FilterPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_filter_normalize::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED( inputCodec ); Q_UNUSED( outputCodec ); Q_UNUSED( tags ); Q_UNUSED( replayGain ); if( !_conversionOptions ) return QStringList(); if( inputFile.isEmpty() || outputFile.isEmpty() ) return QStringList(); QStringList command; foreach( FilterOptions *_filterOptions,_conversionOptions->filterOptions ) { if( _filterOptions->pluginName == global_plugin_name ) { NormalizeFilterOptions *filterOptions = dynamic_cast(_filterOptions); if( filterOptions->data.normalize ) { command += binaries["normalize"]; command += "\"" + escapeUrl(outputFile) + "\""; if( !command.isEmpty() ) QFile::copy( inputFile.toLocalFile(), outputFile.toLocalFile() ); } } } return command; } float soundkonverter_filter_normalize::parseOutput( const QString& output ) { Q_UNUSED( output ); // // 01-Unknown.wav: 98% complete, ratio=0,479 // encode // // 01-Unknown.wav: 27% complete // decode // // QRegExp regEnc("(\\d+)% complete"); // if( output.contains(regEnc) ) // { // return (float)regEnc.cap(1).toInt(); // } // return -1; } FilterOptions *soundkonverter_filter_normalize::filterOptionsFromXml( QDomElement filterOptions ) { NormalizeFilterOptions *options = new NormalizeFilterOptions(); options->fromXml( filterOptions ); return options; } #include "soundkonverter_filter_normalize.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/normalizefilteroptio0000644000175000001440000000006212105142355032405 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.647404696 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/normalizefilteroptions.h0000644000175000001440000000075612105142355032615 0ustar00danielusers00000000000000 #ifndef NORMALIZEFILTEROPTIONS_H #define NORMALIZEFILTEROPTIONS_H #include "../../core/conversionoptions.h" class NormalizeFilterOptions : public FilterOptions { public: NormalizeFilterOptions(); ~NormalizeFilterOptions(); bool equals( FilterOptions *_other ); QDomElement toXml( QDomDocument document, const QString elementName ); bool fromXml( QDomElement filterOptions ); struct Data { bool normalize; } data; }; #endif // NORMALIZEFILTEROPTIONS_H ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/PaxHeaders.25599/normalizefilterwidge0000644000175000001440000000013212255307066032360 xustar000000000000000030 mtime=1387630134.210891275 30 atime=1387630134.197891438 30 ctime=1387631579.647404696 ./soundkonverter-2.0.5/plugins/soundkonverter_filter_normalize/normalizefilterwidget.cpp0000644000175000001440000000302512255307066032740 0ustar00danielusers00000000000000 #include "normalizefilterglobal.h" #include "normalizefilterwidget.h" #include "normalizefilteroptions.h" #include #include #include #include NormalizeFilterWidget::NormalizeFilterWidget() : FilterWidget() { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); cNormalize = new QCheckBox( i18n("Normalize"), this ); connect( cNormalize, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()) ); topBox->addWidget( cNormalize ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); cNormalize->setChecked( false ); } NormalizeFilterWidget::~NormalizeFilterWidget() {} FilterOptions* NormalizeFilterWidget::currentFilterOptions() { if( cNormalize->isChecked() ) { NormalizeFilterOptions *options = new NormalizeFilterOptions(); options->data.normalize = cNormalize->isChecked(); return options; } else { return 0; } } bool NormalizeFilterWidget::setCurrentFilterOptions( FilterOptions *_options ) { if( !_options ) { cNormalize->setChecked( false ); return true; } if( _options->pluginName != global_plugin_name ) return false; NormalizeFilterOptions *options = dynamic_cast(_options); cNormalize->setChecked( options->data.normalize ); return true; } ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_opustools0000644000175000001440000000006212105142355025763 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.700404034 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/0000755000175000001440000000000012105142355025451 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/opustoolscodecglobal.0000644000175000001440000000006212105142354032266 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.694404109 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/opustoolscodecglobal.h0000644000175000001440000000011312105142354032042 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Opus Tools" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/opustoolsconversionop0000644000175000001440000000006212105142355032477 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.694404109 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/opustoolsconversionoptions.cpp0000644000175000001440000000310012105142355033740 0ustar00danielusers00000000000000 #include "opustoolscodecglobal.h" #include "opustoolsconversionoptions.h" OpusToolsConversionOptions::OpusToolsConversionOptions() : ConversionOptions() { pluginName = global_plugin_name; } OpusToolsConversionOptions::~OpusToolsConversionOptions() {} bool OpusToolsConversionOptions::equals( ConversionOptions *_other ) { if( !_other || _other->pluginName!=pluginName ) return false; OpusToolsConversionOptions *other = dynamic_cast(_other); return ( equalsBasics(_other) && equalsFilters(_other) && data.floatBitrate == other->data.floatBitrate ); } QDomElement OpusToolsConversionOptions::toXml( QDomDocument document ) { QDomElement conversionOptions = ConversionOptions::toXml( document ); QDomElement encodingOptions = conversionOptions.elementsByTagName("encodingOptions").at(0).toElement(); QDomElement data = document.createElement("data"); data.setAttribute("floatBitrate",OpusToolsConversionOptions::data.floatBitrate); encodingOptions.appendChild(data); return conversionOptions; } bool OpusToolsConversionOptions::fromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { ConversionOptions::fromXml( conversionOptions, filterOptionsElements ); QDomElement encodingOptions = conversionOptions.elementsByTagName("encodingOptions").at(0).toElement(); QDomElement data = encodingOptions.elementsByTagName("data").at(0).toElement(); OpusToolsConversionOptions::data.floatBitrate = data.attribute("floatBitrate").toFloat(); return true; } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/soundkonverter_codec_0000644000175000001440000000006212105142355032347 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.699404046 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.h0000755000175000001440000000334512105142355034206 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_OPUSTOOLS_H #define SOUNDKONVERTER_CODEC_OPUSTOOLS_H #include "../../core/codecplugin.h" #include class ConversionOptions; class KDialog; class QCheckBox; class soundkonverter_codec_opustools : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_opustools( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_opustools(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); ConversionOptions *conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); private: QWeakPointer configDialog; QCheckBox *configDialogUncoupledChannelsCheckBox; int configVersion; bool uncoupledChannels; private slots: void configDialogSave(); void configDialogDefault(); }; K_EXPORT_SOUNDKONVERTER_CODEC( opustools, soundkonverter_codec_opustools ) #endif // SOUNDKONVERTER_CODEC_OPUSTOOLS_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/soundkonverter_codec_0000644000175000001440000000006212105142355032347 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.699404046 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.desktop0000755000175000001440000000054712105142355035431 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Opus Tools Plugin X-KDE-Library=soundkonverter_codec_opustools ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_opustools X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006212105142354030577 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.699404046 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/CMakeLists.txt0000755000175000001440000000130412105142354030211 0ustar00danielusers00000000000000project(soundkonverter_codec_opustools) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_opustools_SRCS soundkonverter_codec_opustools.cpp opustoolscodecwidget.cpp opustoolsconversionoptions.cpp ) kde4_add_plugin(soundkonverter_codec_opustools ${soundkonverter_codec_opustools_SRCS}) target_link_libraries(soundkonverter_codec_opustools ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_opustools DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_opustools.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/opustoolscodecwidget.0000644000175000001440000000006212105142354032311 xustar000000000000000020 atime=1360315628 30 ctime=1387631579.699404046 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/opustoolscodecwidget.h0000644000175000001440000000170712105142354032077 0ustar00danielusers00000000000000 #ifndef OPUSTOOLSCODECWIDGET_H #define OPUSTOOLSCODECWIDGET_H #include "../../core/codecwidget.h" class QSlider; class QDoubleSpinBox; class KComboBox; class OpusToolsCodecWidget : public CodecWidget { Q_OBJECT public: OpusToolsCodecWidget(); ~OpusToolsCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: QSlider *sQuality; QDoubleSpinBox *dQuality; KComboBox *cBitrateMode; QString currentFormat; // holds the current output file format int bitrateForQuality( double quality ); double qualityForBitrate( int bitrate ); private slots: void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( double quality ); }; #endif // OPUSTOOLSCODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/soundkonverter_codec_0000644000175000001440000000006212105142355032347 xustar000000000000000020 atime=1379147586 30 ctime=1387631579.699404046 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/soundkonverter_codec_opustools.cpp0000755000175000001440000001760712105142355034547 0ustar00danielusers00000000000000 #include "opustoolscodecglobal.h" #include "soundkonverter_codec_opustools.h" #include "../../core/conversionoptions.h" #include "opustoolscodecwidget.h" #include "opustoolsconversionoptions.h" #include #include #include soundkonverter_codec_opustools::soundkonverter_codec_opustools( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["opusenc"] = ""; binaries["opusdec"] = ""; allCodecs += "opus"; allCodecs += "wav"; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); configVersion = group.readEntry( "configVersion", 0 ); uncoupledChannels = group.readEntry( "uncoupledChannels", false ); } soundkonverter_codec_opustools::~soundkonverter_codec_opustools() {} QString soundkonverter_codec_opustools::name() { return global_plugin_name; } QList soundkonverter_codec_opustools::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "opus"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["opusenc"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "opus", "opusenc" ) + "\n" + i18n( "'%1' is usually in the package '%2' which should be shipped with your distribution.", QString("opusenc"), QString("opus-tools") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "opus"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["opusdec"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "opus", "opusdec" ) + "\n" + i18n( "'%1' is usually in the package '%2' which should be shipped with your distribution.", QString("opusdec"), QString("opus-tools") ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_opustools::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return true; } void soundkonverter_codec_opustools::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) if( !configDialog.data() ) { configDialog = new KDialog( parent ); configDialog.data()->setCaption( i18n("Configure %1").arg(global_plugin_name) ); configDialog.data()->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Default ); QWidget *configDialogWidget = new QWidget( configDialog.data() ); QVBoxLayout *configDialogBox = new QVBoxLayout( configDialogWidget ); configDialogUncoupledChannelsCheckBox = new QCheckBox( i18n("Uncoupled channels"), configDialogWidget ); configDialogUncoupledChannelsCheckBox->setToolTip( i18n("Use one mono stream per channel") ); configDialogBox->addWidget( configDialogUncoupledChannelsCheckBox ); configDialog.data()->setMainWidget( configDialogWidget ); connect( configDialog.data(), SIGNAL( okClicked() ), this, SLOT( configDialogSave() ) ); connect( configDialog.data(), SIGNAL( defaultClicked() ), this, SLOT( configDialogDefault() ) ); } configDialogUncoupledChannelsCheckBox->setChecked( uncoupledChannels ); configDialog.data()->show(); } void soundkonverter_codec_opustools::configDialogSave() { if( configDialog.data() ) { uncoupledChannels = configDialogUncoupledChannelsCheckBox->isChecked(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "Plugin-"+name() ); group.writeEntry( "uncoupledChannels", uncoupledChannels ); configDialog.data()->deleteLater(); } } void soundkonverter_codec_opustools::configDialogDefault() { if( configDialog.data() ) { configDialogUncoupledChannelsCheckBox->setChecked( false ); } } bool soundkonverter_codec_opustools::hasInfo() { return false; } void soundkonverter_codec_opustools::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_opustools::newCodecWidget() { OpusToolsCodecWidget *widget = new OpusToolsCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_opustools::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_opustools::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; OpusToolsConversionOptions *opusToolsConversionOptions = 0; if( conversionOptions->pluginName == name() ) { opusToolsConversionOptions = static_cast(conversionOptions); } if( outputCodec == "opus" ) { command += binaries["opusenc"]; command += "--bitrate"; if( opusToolsConversionOptions ) { command += QString::number(opusToolsConversionOptions->data.floatBitrate); } else { command += QString::number(conversionOptions->bitrate); } if( conversionOptions->bitrateMode == ConversionOptions::Abr ) { command += "--vbr"; } else if( conversionOptions->bitrateMode == ConversionOptions::Cbr ) { command += "--hard-cbr"; } // TODO --comp Encoding computational complexity (0-10, default: 10) if( uncoupledChannels ) { command += "--uncoupled"; } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["opusdec"]; if( outputFile.isEmpty() ) { command += "--quiet"; } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_opustools::parseOutput( const QString& output ) { // [|] 00:00:30.66 15.3x realtime, 309.3kbit/s return -1; } ConversionOptions *soundkonverter_codec_opustools::conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { OpusToolsConversionOptions *options = new OpusToolsConversionOptions(); options->fromXml( conversionOptions, filterOptionsElements ); return options; } #include "soundkonverter_codec_opustools.moc" ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/opustoolscodecwidget.0000644000175000001440000000006212105142354032311 xustar000000000000000020 atime=1387530395 30 ctime=1387631579.699404046 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/opustoolscodecwidget.cpp0000644000175000001440000001344512105142354032434 0ustar00danielusers00000000000000 #include "opustoolscodecglobal.h" #include "opustoolscodecwidget.h" #include "../../core/conversionoptions.h" #include "opustoolsconversionoptions.h" #include #include #include #include #include #include #include #include OpusToolsCodecWidget::OpusToolsCodecWidget() : CodecWidget(), currentFormat( "opus" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); sQuality = new QSlider( Qt::Horizontal, this ); sQuality->setRange( 600, 51200 ); sQuality->setSingleStep( 100 ); sQuality->setValue( 16000 ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); dQuality = new QDoubleSpinBox( this ); dQuality->setRange( 6, 512 ); dQuality->setSingleStep( 1 ); dQuality->setDecimals( 2 ); dQuality->setSuffix( " kbps" ); dQuality->setValue( 160 ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); connect( dQuality, SIGNAL(valueChanged(double)), this, SLOT(qualitySpinBoxChanged(double)) ); connect( dQuality, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); topBox->addWidget( dQuality ); topBox->addSpacing( 12 ); QLabel *lBitrateMode = new QLabel( i18n("Bitrate mode:"), this ); topBox->addWidget( lBitrateMode ); cBitrateMode = new KComboBox( this ); cBitrateMode->addItem( i18n("Average") ); cBitrateMode->addItem( i18n("Constant") ); cBitrateMode->setCurrentIndex( 0 ); cBitrateMode->setFixedWidth( cBitrateMode->sizeHint().width() ); connect( cBitrateMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cBitrateMode ); topBox->addStretch(); grid->setRowStretch( 1, 1 ); } OpusToolsCodecWidget::~OpusToolsCodecWidget() {} // TODO optimize int OpusToolsCodecWidget::bitrateForQuality( double quality ) { return quality*100/3; } // TODO optimize double OpusToolsCodecWidget::qualityForBitrate( int bitrate ) { return (double)bitrate*3/100; } ConversionOptions *OpusToolsCodecWidget::currentConversionOptions() { OpusToolsConversionOptions *options = new OpusToolsConversionOptions(); options->qualityMode = ConversionOptions::Bitrate; options->bitrate = (int)dQuality->value(); options->data.floatBitrate = dQuality->value(); options->quality = qualityForBitrate( options->bitrate ); options->bitrateMode = ( cBitrateMode->currentText()==i18n("Average") ) ? ConversionOptions::Abr : ConversionOptions::Cbr; return options; } bool OpusToolsCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options ) return false; ConversionOptions *options = _options; OpusToolsConversionOptions *opusToolsOptions = 0; if( options->pluginName == global_plugin_name ) { opusToolsOptions = static_cast(options); } if( opusToolsOptions ) dQuality->setValue( opusToolsOptions->data.floatBitrate ); else dQuality->setValue( options->bitrate ); if( options->bitrateMode == ConversionOptions::Abr ) cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Average")) ); else cBitrateMode->setCurrentIndex( cBitrateMode->findText(i18n("Constant")) ); return true; } void OpusToolsCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString OpusToolsCodecWidget::currentProfile() { if( currentFormat == "wav" ) { return i18n("Lossless"); } else if( dQuality->value() == 80 ) { return i18n("Very low"); } else if( dQuality->value() == 128 ) { return i18n("Low"); } else if( dQuality->value() == 192 ) { return i18n("Medium"); } else if( dQuality->value() == 240 ) { return i18n("High"); } else if( dQuality->value() == 320 ) { return i18n("Very high"); } return i18n("User defined"); } bool OpusToolsCodecWidget::setCurrentProfile( const QString& profile ) { if( profile == i18n("Very low") ) { sQuality->setValue( 8000 ); dQuality->setValue( 80 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Low") ) { sQuality->setValue( 12800 ); dQuality->setValue( 128 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Medium") ) { sQuality->setValue( 19200 ); dQuality->setValue( 192 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("High") ) { sQuality->setValue( 24000 ); dQuality->setValue( 240 ); cBitrateMode->setCurrentIndex( 0 ); return true; } else if( profile == i18n("Very high") ) { sQuality->setValue( 32000 ); dQuality->setValue( 320 ); cBitrateMode->setCurrentIndex( 0 ); return true; } return false; } int OpusToolsCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } else { dataRate = dQuality->value()/8*60*1000; } return dataRate; } void OpusToolsCodecWidget::qualitySliderChanged( int quality ) { dQuality->setValue( double(quality)/100.0 ); } void OpusToolsCodecWidget::qualitySpinBoxChanged( double quality ) { sQuality->setValue( round(quality*100.0) ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/PaxHeaders.25599/opustoolsconversionop0000644000175000001440000000006212105142355032477 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.700404034 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_opustools/opustoolsconversionoptions.h0000644000175000001440000000105012105142355033407 0ustar00danielusers00000000000000 #ifndef OPUSTOOLSCONVERSIONOPTIONS_H #define OPUSTOOLSCONVERSIONOPTIONS_H #include "../../core/conversionoptions.h" class OpusToolsConversionOptions : public ConversionOptions { public: OpusToolsConversionOptions(); ~OpusToolsConversionOptions(); bool equals( ConversionOptions *_other ); QDomElement toXml( QDomDocument document ); bool fromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); struct Data { float floatBitrate; } data; }; #endif // OPUSTOOLSCONVERSIONOPTIONS_H./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_replaygain_musepack0000644000175000001440000000006212105142356026603 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.749403421 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/0000755000175000001440000000000012105142356026271 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/PaxHeaders.25599/musepackreplaygai0000644000175000001440000000006211773075463032327 xustar000000000000000020 atime=1371411857 30 ctime=1387631579.747403446 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/musepackreplaygainglobal.h0000644000175000001440000000011611773075463033523 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Musepack Gain" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605555031435 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.747403446 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/CMakeLists.txt0000755000175000001440000000126211726605555031052 0ustar00danielusers00000000000000project(soundkonverter_replaygain_musepackgain) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_replaygain_musepackgain_SRCS soundkonverter_replaygain_musepackgain.cpp ) kde4_add_plugin(soundkonverter_replaygain_musepackgain ${soundkonverter_replaygain_musepackgain_SRCS}) target_link_libraries(soundkonverter_replaygain_musepackgain ${KDE4_KDEUI_LIBS} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_replaygain_musepackgain DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_replaygain_musepackgain.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/PaxHeaders.25599/soundkonverter_re0000644000175000001440000000025411441644134032367 xustar0000000000000000122 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/soundkonverter_replaygain_musepackgain.desktop 20 atime=1357667634 30 ctime=1387631579.747403446 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/soundkonverter_replaygain_musepack0000755000175000001440000000060611441644134035417 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter MusePack Replay Gain plugin X-KDE-Library=soundkonverter_replaygain_musepackgain ServiceTypes=soundKonverter/ReplayGainPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_replaygain_musepackgain X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/PaxHeaders.25599/soundkonverter_re0000644000175000001440000000024612105142356032365 xustar0000000000000000116 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/soundkonverter_replaygain_musepackgain.h 20 atime=1360315630 30 ctime=1387631579.749403421 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/soundkonverter_replaygain_musepack0000755000175000001440000000225512105142356035416 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_REPLAYGAIN_MUSEPACKGAIN_H #define SOUNDKONVERTER_REPLAYGAIN_MUSEPACKGAIN_H #include "../../core/replaygainplugin.h" #include class ConversionOptions; class soundkonverter_replaygain_musepackgain : public ReplayGainPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_replaygain_musepackgain( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_replaygain_musepackgain(); QString name(); /** search for the backend binaries in the given directories */ virtual void scanForBackends( const QStringList& directoryList = QStringList() ); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); unsigned int apply( const KUrl::List& fileList, ApplyMode mode = Add ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_REPLAYGAIN( musepackgain, soundkonverter_replaygain_musepackgain ) #endif // _SOUNDKONVERTER_REPLAYGAIN_MUSEPACKGAIN_H_ ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/PaxHeaders.25599/soundkonverter_re0000644000175000001440000000025012105142356032360 xustar0000000000000000118 path=./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/soundkonverter_replaygain_musepackgain.cpp 20 atime=1387530393 30 ctime=1387631579.749403421 ./soundkonverter-2.0.5/plugins/soundkonverter_replaygain_musepack/soundkonverter_replaygain_musepack0000755000175000001440000000737412105142356035425 0ustar00danielusers00000000000000 #include "musepackreplaygainglobal.h" #include "soundkonverter_replaygain_musepackgain.h" #include #include soundkonverter_replaygain_musepackgain::soundkonverter_replaygain_musepackgain( QObject *parent, const QStringList& args ) : ReplayGainPlugin( parent ) { Q_UNUSED(args) binaries["replaygain"] = ""; allCodecs += "musepack"; } soundkonverter_replaygain_musepackgain::~soundkonverter_replaygain_musepackgain() {} QString soundkonverter_replaygain_musepackgain::name() { return global_plugin_name; } void soundkonverter_replaygain_musepackgain::scanForBackends( const QStringList& directoryList ) { binaries["replaygain"] = KStandardDirs::findExe( "replaygain" ); // sv7 if( binaries["replaygain"].isEmpty() ) binaries["replaygain"] = KStandardDirs::findExe( "mpcgain" ); // sv8 if( binaries["replaygain"].isEmpty() ) { for( QList::const_iterator b = directoryList.begin(); b != directoryList.end(); ++b ) { if( QFile::exists((*b) + "/replaygain") ) { binaries["replaygain"] = (*b) + "/replaygain"; break; } else if( QFile::exists((*b) + "/mpcgain") ) { binaries["replaygain"] = (*b) + "/mpcgain"; break; } } } } QList soundkonverter_replaygain_musepackgain::codecTable() { QList table; ReplayGainPipe newPipe; newPipe.codecName = "musepack"; newPipe.rating = 100; newPipe.enabled = ( binaries["replaygain"] != "" ); newPipe.problemInfo = standardMessage( "replygain_codec,backend", "musepack", "replaygain" ) + "\n" + standardMessage( "install_website_backend,url", "replaygain", "http://www.musepack.net" ); table.append( newPipe ); return table; } bool soundkonverter_replaygain_musepackgain::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_replaygain_musepackgain::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_replaygain_musepackgain::hasInfo() { return false; } void soundkonverter_replaygain_musepackgain::showInfo( QWidget *parent ) { Q_UNUSED(parent) } unsigned int soundkonverter_replaygain_musepackgain::apply( const KUrl::List& fileList, ReplayGainPlugin::ApplyMode mode ) { if( fileList.count() <= 0 ) return BackendPlugin::UnknownError; if( mode == ReplayGainPlugin::Remove ) return BackendPlugin::FeatureNotSupported; // NOTE mpc gain does not support removing Replay Gain tags ReplayGainPluginItem *newItem = new ReplayGainPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); QStringList command; command += binaries["replaygain"]; foreach( const KUrl file, fileList ) { command += "\"" + escapeUrl(file) + "\""; } newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } float soundkonverter_replaygain_musepackgain::parseOutput( const QString& output ) { Q_UNUSED(output) // no progress provided return -1; } #include "soundkonverter_replaygain_musepackgain.moc" ./soundkonverter-2.0.5/plugins/PaxHeaders.25599/soundkonverter_codec_speex0000644000175000001440000000006212105142355025040 xustar000000000000000020 atime=1357667235 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/0000755000175000001440000000000012105142355024526 5ustar00danielusers00000000000000./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/PaxHeaders.25599/soundkonverter_codec_spee0000644000175000001440000000006211441445460032306 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.777403071 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/soundkonverter_codec_speex.desktop0000755000175000001440000000054111441445460033562 0ustar00danielusers00000000000000[Desktop Entry] Encoding=UTF-8 Type=Service Name=soundKonverter Vorbis Tools Plugin X-KDE-Library=soundkonverter_codec_speex ServiceTypes=soundKonverter/CodecPlugin X-KDE-PluginInfo-Author=Daniel Faust X-KDE-PluginInfo-Email=hessijames@gmail.com X-KDE-PluginInfo-Name=soundkonverter_codec_speex X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-License=GPL ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/PaxHeaders.25599/CMakeLists.txt0000644000175000001440000000006211726605635027672 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.777403071 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/CMakeLists.txt0000755000175000001440000000117611726605635027313 0ustar00danielusers00000000000000project(soundkonverter_codec_speex) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} ) set(soundkonverter_codec_speex_SRCS soundkonverter_codec_speex.cpp speexcodecwidget.cpp ) kde4_add_plugin(soundkonverter_codec_speex ${soundkonverter_codec_speex_SRCS}) target_link_libraries(soundkonverter_codec_speex ${KDE4_KDEUI_LIBS} ${QT_QTXML_LIBRARY} soundkonvertercore ) ########### install files ############### install(TARGETS soundkonverter_codec_speex DESTINATION ${PLUGIN_INSTALL_DIR}) install(FILES soundkonverter_codec_speex.desktop DESTINATION ${SERVICES_INSTALL_DIR}) ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/PaxHeaders.25599/soundkonverter_codec_spee0000644000175000001440000000006212105142355032301 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.801402771 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/soundkonverter_codec_speex.h0000755000175000001440000000244012105142355032333 0ustar00danielusers00000000000000 #ifndef SOUNDKONVERTER_CODEC_SPEEX_H #define SOUNDKONVERTER_CODEC_SPEEX_H #include "../../core/codecplugin.h" class ConversionOptions; class soundkonverter_codec_speex : public CodecPlugin { Q_OBJECT public: /** Default Constructor */ soundkonverter_codec_speex( QObject *parent, const QStringList& args ); /** Default Destructor */ ~soundkonverter_codec_speex(); QString name(); QList codecTable(); bool isConfigSupported( ActionType action, const QString& codecName ); void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ); bool hasInfo(); void showInfo( QWidget *parent ); CodecWidget *newCodecWidget(); unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ); float parseOutput( const QString& output ); }; K_EXPORT_SOUNDKONVERTER_CODEC( speex, soundkonverter_codec_speex ) #endif // SOUNDKONVERTER_CODEC_SPEEX_H ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/PaxHeaders.25599/speexcodecwidget.h0000644000175000001440000000006212105142355030614 xustar000000000000000020 atime=1360315629 30 ctime=1387631579.801402771 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/speexcodecwidget.h0000644000175000001440000000173612105142355030234 0ustar00danielusers00000000000000 #ifndef SPEEXCODECWIDGET_H #define SPEEXCODECWIDGET_H #include "../../core/codecwidget.h" class KComboBox; class QSlider; class QDoubleSpinBox; // class QCheckBox; class SpeexCodecWidget : public CodecWidget { Q_OBJECT public: SpeexCodecWidget(); ~SpeexCodecWidget(); ConversionOptions *currentConversionOptions(); bool setCurrentConversionOptions( ConversionOptions *_options ); void setCurrentFormat( const QString& format ); QString currentProfile(); bool setCurrentProfile( const QString& profile ); int currentDataRate(); private: KComboBox *cMode; QSlider *sQuality; QDoubleSpinBox *dQuality; QString currentFormat; // holds the current output file format int bitrateForQuality( double quality ); double qualityForBitrate( int bitrate ); private slots: void modeChanged( int mode ); void qualitySliderChanged( int quality ); void qualitySpinBoxChanged( double quality ); }; #endif // SPEEXCODECWIDGET_H./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/PaxHeaders.25599/speexcodecwidget.cpp0000644000175000001440000000006212105142355031147 xustar000000000000000020 atime=1387530391 30 ctime=1387631579.801402771 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/speexcodecwidget.cpp0000644000175000001440000001203012105142355030554 0ustar00danielusers00000000000000 #include "speexcodecglobal.h" #include "speexcodecwidget.h" #include "../../core/conversionoptions.h" // #include #include #include #include #include #include #include // #include #include SpeexCodecWidget::SpeexCodecWidget() : CodecWidget(), currentFormat( "speex" ) { QGridLayout *grid = new QGridLayout( this ); grid->setContentsMargins( 0, 0, 0, 0 ); grid->setSpacing( 6 ); // set up encoding options selection QHBoxLayout *topBox = new QHBoxLayout(); grid->addLayout( topBox, 0, 0 ); QLabel *lMode = new QLabel( i18n("Mode:"), this ); topBox->addWidget( lMode ); cMode = new KComboBox( this ); cMode->addItem( i18n("Quality") ); cMode->addItem( i18n("Bitrate") ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChanged(int)) ); connect( cMode, SIGNAL(activated(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( cMode ); sQuality = new QSlider( Qt::Horizontal, this ); connect( sQuality, SIGNAL(valueChanged(int)), this, SLOT(qualitySliderChanged(int)) ); connect( sQuality, SIGNAL(valueChanged(int)), SIGNAL(optionsChanged()) ); topBox->addWidget( sQuality ); dQuality = new QDoubleSpinBox( this ); dQuality->setRange( 8, 160 ); dQuality->setSuffix( " kbps" ); dQuality->setFixedWidth( dQuality->sizeHint().width() ); connect( dQuality, SIGNAL(valueChanged(double)), this, SLOT(qualitySpinBoxChanged(double)) ); connect( dQuality, SIGNAL(valueChanged(double)), SIGNAL(optionsChanged()) ); topBox->addWidget( dQuality ); topBox->addStretch(); QHBoxLayout *midBox = new QHBoxLayout(); grid->addLayout( midBox, 1, 0 ); midBox->addStretch(); grid->setRowStretch( 2, 1 ); modeChanged( 0 ); } SpeexCodecWidget::~SpeexCodecWidget() {} // TODO optimize int SpeexCodecWidget::bitrateForQuality( double quality ) { return quality*100/3; } // TODO optimize double SpeexCodecWidget::qualityForBitrate( int bitrate ) { return (double)bitrate*3/100; } ConversionOptions *SpeexCodecWidget::currentConversionOptions() { ConversionOptions *options = new ConversionOptions(); if( cMode->currentText()==i18n("Quality") ) { options->qualityMode = ConversionOptions::Quality; options->quality = dQuality->value(); options->bitrate = bitrateForQuality( options->quality ); options->bitrateMode = ConversionOptions::Vbr; } else { options->qualityMode = ConversionOptions::Bitrate; options->bitrate = dQuality->value(); options->quality = qualityForBitrate( options->bitrate ); options->bitrateMode = ConversionOptions::Abr; } return options; } bool SpeexCodecWidget::setCurrentConversionOptions( ConversionOptions *_options ) { if( !_options || _options->pluginName != global_plugin_name ) return false; ConversionOptions *options = _options; if( options->qualityMode == ConversionOptions::Quality ) { cMode->setCurrentIndex( cMode->findText(i18n("Quality")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->quality ); } else { cMode->setCurrentIndex( cMode->findText(i18n("Bitrate")) ); modeChanged( cMode->currentIndex() ); dQuality->setValue( options->bitrate ); } return true; } void SpeexCodecWidget::setCurrentFormat( const QString& format ) { if( currentFormat == format ) return; currentFormat = format; setEnabled( currentFormat != "wav" ); } QString SpeexCodecWidget::currentProfile() { return i18n("User defined"); } bool SpeexCodecWidget::setCurrentProfile( const QString& profile ) { return profile == i18n("User defined"); } int SpeexCodecWidget::currentDataRate() { int dataRate; if( currentFormat == "wav" ) { dataRate = 10590000; } return dataRate; } void SpeexCodecWidget::modeChanged( int mode ) { if( mode == 0 ) { sQuality->setRange( 0, 10 ); sQuality->setSingleStep( 1 ); dQuality->setRange( 0, 10 ); dQuality->setSingleStep( 1 ); dQuality->setDecimals( 0 ); dQuality->setSuffix( "" ); sQuality->setValue( 8 ); dQuality->setValue( 8 ); // dQuality->setValue( qualityForBitrate(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); } else { sQuality->setRange( 8, 160 ); sQuality->setSingleStep( 8 ); dQuality->setRange( 8, 160 ); dQuality->setSingleStep( 8 ); dQuality->setDecimals( 0 ); dQuality->setSuffix( " kbps" ); sQuality->setValue( 64 ); dQuality->setValue( 64 ); // dQuality->setValue( bitrateForQuality(dQuality->value()) ); // qualitySpinBoxChanged( dQuality->value() ); } } void SpeexCodecWidget::qualitySliderChanged( int quality ) { dQuality->setValue( quality ); } void SpeexCodecWidget::qualitySpinBoxChanged( double quality ) { sQuality->setValue( quality ); } ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/PaxHeaders.25599/speexcodecglobal.h0000644000175000001440000000006211441446045030576 xustar000000000000000020 atime=1357667634 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/speexcodecglobal.h0000644000175000001440000000010611441446045030204 0ustar00danielusers00000000000000 #ifndef global_plugin_name #define global_plugin_name "Speex" #endif ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/PaxHeaders.25599/soundkonverter_codec_spee0000644000175000001440000000006212105142355032301 xustar000000000000000020 atime=1379576792 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/plugins/soundkonverter_codec_speex/soundkonverter_codec_speex.cpp0000755000175000001440000001145112105142355032670 0ustar00danielusers00000000000000 #include "speexcodecglobal.h" #include "soundkonverter_codec_speex.h" #include "../../core/conversionoptions.h" #include "speexcodecwidget.h" soundkonverter_codec_speex::soundkonverter_codec_speex( QObject *parent, const QStringList& args ) : CodecPlugin( parent ) { Q_UNUSED(args) binaries["speexenc"] = ""; binaries["speexdec"] = ""; allCodecs += "speex"; allCodecs += "wav"; } soundkonverter_codec_speex::~soundkonverter_codec_speex() {} QString soundkonverter_codec_speex::name() { return global_plugin_name; } QList soundkonverter_codec_speex::codecTable() { QList table; ConversionPipeTrunk newTrunk; newTrunk.codecFrom = "wav"; newTrunk.codecTo = "speex"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["speexenc"] != "" ); newTrunk.problemInfo = standardMessage( "encode_codec,backend", "speex", "speex" ) + "\n" + standardMessage( "install_opensource_backend", "speex" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); newTrunk.codecFrom = "speex"; newTrunk.codecTo = "wav"; newTrunk.rating = 100; newTrunk.enabled = ( binaries["speexdec"] != "" ); newTrunk.problemInfo = standardMessage( "decode_codec,backend", "speex", "speex" ) + "\n" + standardMessage( "install_opensource_backend", "speex" ); newTrunk.data.hasInternalReplayGain = false; table.append( newTrunk ); return table; } bool soundkonverter_codec_speex::isConfigSupported( ActionType action, const QString& codecName ) { Q_UNUSED(action) Q_UNUSED(codecName) return false; } void soundkonverter_codec_speex::showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) { Q_UNUSED(action) Q_UNUSED(codecName) Q_UNUSED(parent) } bool soundkonverter_codec_speex::hasInfo() { return false; } void soundkonverter_codec_speex::showInfo( QWidget *parent ) { Q_UNUSED(parent) } CodecWidget *soundkonverter_codec_speex::newCodecWidget() { SpeexCodecWidget *widget = new SpeexCodecWidget(); if( lastUsedConversionOptions ) { widget->setCurrentConversionOptions( lastUsedConversionOptions ); delete lastUsedConversionOptions; lastUsedConversionOptions = 0; } return qobject_cast(widget); } unsigned int soundkonverter_codec_speex::convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { const QStringList command = convertCommand( inputFile, outputFile, inputCodec, outputCodec, _conversionOptions, tags, replayGain ); if( command.isEmpty() ) return BackendPlugin::UnknownError; CodecPluginItem *newItem = new CodecPluginItem( this ); newItem->id = lastId++; newItem->process = new KProcess( newItem ); newItem->process->setOutputChannelMode( KProcess::MergedChannels ); connect( newItem->process, SIGNAL(readyRead()), this, SLOT(processOutput()) ); connect( newItem->process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processExit(int,QProcess::ExitStatus)) ); newItem->process->clearProgram(); newItem->process->setShellCommand( command.join(" ") ); newItem->process->start(); logCommand( newItem->id, command.join(" ") ); backendItems.append( newItem ); return newItem->id; } QStringList soundkonverter_codec_speex::convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags, bool replayGain ) { Q_UNUSED(inputCodec) Q_UNUSED(tags) Q_UNUSED(replayGain) if( !_conversionOptions ) return QStringList(); QStringList command; ConversionOptions *conversionOptions = _conversionOptions; if( outputCodec == "speex" ) { command += binaries["speexenc"]; if( conversionOptions->qualityMode == ConversionOptions::Quality ) { command += "--vbr"; command += "--quality"; command += QString::number(conversionOptions->quality); } else if( conversionOptions->qualityMode == ConversionOptions::Bitrate ) { command += "--abr"; command += QString::number(conversionOptions->bitrate*1000); } command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } else { command += binaries["speexdec"]; command += "\"" + escapeUrl(inputFile) + "\""; command += "\"" + escapeUrl(outputFile) + "\""; } return command; } float soundkonverter_codec_speex::parseOutput( const QString& output ) { Q_UNUSED(output) // no output return -1; } #include "soundkonverter_codec_speex.moc" ./soundkonverter-2.0.5/PaxHeaders.25599/filelist.cpp0000644000175000001440000000013212255306740020326 xustar000000000000000030 mtime=1387630048.419963809 30 atime=1387630048.419963809 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/filelist.cpp0000755000175000001440000014372012255306740017753 0ustar00danielusers00000000000000 #include "filelist.h" // // #include "filelistitem.h" #include "config.h" #include "logger.h" #include "optionseditor.h" #include "optionslayer.h" #include "core/conversionoptions.h" #include "outputdirectory.h" #include "codecproblems.h" #include #include #include // #include #include #include // #include #include // #include #include #include #include #include #include #include #include #include FileList::FileList( Logger *_logger, Config *_config, QWidget *parent ) : QTreeWidget( parent ), logger( _logger ), config( _config ) { queue = false; optionsEditor = 0; tagEngine = config->tagEngine(); setAcceptDrops( true ); setDragEnabled( false ); setItemDelegate( new FileListItemDelegate(this) ); setColumnCount( 4 ); QStringList labels; labels.append( i18n("State") ); labels.append( i18n("Input") ); labels.append( i18n("Output") ); labels.append( i18n("Quality") ); setHeaderLabels( labels ); // header()->setClickEnabled( false ); setSelectionBehavior( QAbstractItemView::SelectRows ); setSelectionMode( QAbstractItemView::ExtendedSelection ); setSortingEnabled( false ); setRootIsDecorated( false ); setDragDropMode( QAbstractItemView::InternalMove ); setMinimumHeight( 200 ); QGridLayout *grid = new QGridLayout( this ); grid->setRowStretch( 0, 1 ); grid->setRowStretch( 2, 1 ); grid->setColumnStretch( 0, 1 ); grid->setColumnStretch( 2, 1 ); pScanStatus = new QProgressBar( this ); pScanStatus->setMinimumHeight( pScanStatus->height() ); pScanStatus->setFormat( "%v / %m" ); pScanStatus->hide(); grid->addWidget( pScanStatus, 1, 1 ); grid->setColumnStretch( 1, 2 ); // we haven't got access to the action collection of soundKonverter, so let's create a new one // actionCollection = new KActionCollection( this ); editAction = new KAction( KIcon("view-list-text"), i18n("Edit options..."), this ); connect( editAction, SIGNAL(triggered()), this, SLOT(showOptionsEditorDialog()) ); startAction = new KAction( KIcon("system-run"), i18n("Start conversion"), this ); connect( startAction, SIGNAL(triggered()), this, SLOT(convertSelectedItems()) ); stopAction = new KAction( KIcon("process-stop"), i18n("Stop conversion"), this ); connect( stopAction, SIGNAL(triggered()), this, SLOT(killSelectedItems()) ); removeAction = new KAction( KIcon("edit-delete"), i18n("Remove"), this ); removeAction->setShortcut( QKeySequence::Delete ); connect( removeAction, SIGNAL(triggered()), this, SLOT(removeSelectedItems()) ); addAction( removeAction ); // KAction *removeActionGlobal = new KAction( KIcon("edit-delete"), i18n("Remove"), this ); // removeActionGlobal->setShortcut( QKeySequence::Delete ); // connect( removeActionGlobal, SIGNAL(triggered()), this, SLOT(removeSelectedItems()) ); // addAction( removeActionGlobal ); // paste = new KAction( i18n("Paste"), "editpaste", 0, this, 0, actionCollection, "paste" ); // TODO paste contextMenu = new QMenu( this ); setContextMenuPolicy( Qt::CustomContextMenu ); connect( this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showContextMenu(const QPoint&)) ); connect( this, SIGNAL(itemSelectionChanged()), this, SLOT(itemsSelected()) ); } FileList::~FileList() { // NOTE no cleanup needed since it all gets cleaned up in other classes if( !KApplication::kApplication()->sessionSaving() ) { QFile listFile( KStandardDirs::locateLocal("data","soundkonverter/filelist_autosave.xml") ); listFile.remove(); } } void FileList::dragEnterEvent( QDragEnterEvent *event ) { if( event->mimeData()->hasFormat("text/uri-list") ) event->acceptProposedAction(); } void FileList::dropEvent( QDropEvent *event ) { QList q_urls = event->mimeData()->urls(); KUrl::List k_urls; QStringList errorList; // codec @0 files @1 solutions QMap< QString, QList > problems; QString fileName; const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; for( int i=0; ipluginLoader()->getCodecFromFile( q_urls.at(i), &mimeType, checkM4a ); if( mimeType == "inode/directory" || config->pluginLoader()->canDecode(codecName,&errorList) ) { k_urls += q_urls.at(i); } else { if( codecName.isEmpty() && !mimeType.startsWith("audio") && !mimeType.startsWith("video") && !mimeType.startsWith("application") ) continue; if( mimeType == "application/x-ole-storage" || // Thumbs.db mimeType == "application/x-wine-extension-ini" || mimeType == "application/x-cue" || mimeType == "application/x-k3b" || mimeType == "application/pdf" || mimeType == "application/x-trash" || mimeType.startsWith("application/vnd.oasis.opendocument") || mimeType.startsWith("application/vnd.openxmlformats-officedocument") || mimeType.startsWith("application/vnd.sun.xml") ) continue; fileName = KUrl(q_urls.at(i)).pathOrUrl(); if( codecName.isEmpty() ) codecName = mimeType; if( codecName.isEmpty() ) codecName = fileName.right(fileName.length()-fileName.lastIndexOf(".")-1); if( problems.value(codecName).count() < 2 ) { problems[codecName] += QStringList(); problems[codecName] += QStringList(); } problems[codecName][0] += fileName; if( !errorList.isEmpty() ) { problems[codecName][1] += errorList; } else { problems[codecName][1] += i18n("This file type is unknown to soundKonverter.\nMaybe you need to install an additional soundKonverter plugin.\nYou should have a look at your distribution's package manager for this."); } } } QList problemList; for( int i=0; i= 0x040500 problems[problem.codecName][1].removeDuplicates(); #else QStringList found; for( int j=0; j 0 ) { CodecProblems *problemsDialog = new CodecProblems( CodecProblems::Decode, problemList, this ); problemsDialog->exec(); } if( k_urls.count() > 0 ) { ConversionOptions *conversionOptions = config->data.profiles.value("soundkonverter_last_used"); if( conversionOptions ) optionsLayer->setCurrentConversionOptions( conversionOptions ); optionsLayer->addUrls( k_urls ); optionsLayer->fadeIn(); } event->acceptProposedAction(); } void FileList::resizeEvent( QResizeEvent *event ) { if( event->size().width() < 500 ) return; setColumnWidth( Column_State, 150 ); setColumnWidth( Column_Input, (event->size().width()-270)/2 ); setColumnWidth( Column_Output, (event->size().width()-270)/2 ); setColumnWidth( Column_Quality, 120 ); } int FileList::countDir( const QString& directory, bool recursive, int count ) { QDir dir( directory ); dir.setFilter( QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Readable ); dir.setSorting( QDir::Unsorted ); count += dir.count(); if( recursive ) { dir.setFilter( QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Readable ); const QStringList list = dir.entryList(); foreach( const QString fileName, list ) { count = countDir( directory + "/" + fileName, recursive, count ); } } if( tScanStatus.elapsed() > ConfigUpdateDelay * 10 ) { pScanStatus->setMaximum( count ); kapp->processEvents(); tScanStatus.start(); } return count; } int FileList::listDir( const QString& directory, const QStringList& filter, bool recursive, int conversionOptionsId, int count ) { QString codecName; QDir dir( directory ); dir.setFilter( QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Readable ); dir.setSorting( QDir::LocaleAware ); const QStringList list = dir.entryList(); const bool containsAac = filter.contains("m4a/aac"); const bool containsAlac = filter.contains("m4a/alac"); const bool checkM4a = ( containsAac || containsAlac ) && containsAac != containsAlac; foreach( const QString fileName, list ) { QFileInfo fileInfo( directory + "/" + fileName ); const bool isDir = fileInfo.isDir(); // NOTE checking for isFile might not work with all file names if( isDir && recursive ) { count = listDir( directory + "/" + fileName, filter, recursive, conversionOptionsId, count ); } else if( !isDir ) { count++; codecName = config->pluginLoader()->getCodecFromFile( directory + "/" + fileName, 0, checkM4a ); if( filter.contains(codecName) ) { addFiles( KUrl(directory + "/" + fileName), 0, "", codecName, conversionOptionsId ); } if( tScanStatus.elapsed() > ConfigUpdateDelay * 10 ) { pScanStatus->setValue( count ); tScanStatus.start(); } } } return count; } void FileList::addFiles( const KUrl::List& fileList, ConversionOptions *conversionOptions, const QString& command, const QString& _codecName, int conversionOptionsId ) { QString codecName; QString filePathName; QString device; int lastConversionOptionsId = -1; bool optionsLayerHidden = false; // shouldn't be necessary if( !conversionOptions && conversionOptionsId == -1 ) { logger->log( 1000, "@addFiles: No conversion options given" ); return; } int batchNumber = 0; foreach( const KUrl fileName, fileList ) { if( !_codecName.isEmpty() ) { codecName = _codecName; } else { QFileInfo fileInfo( fileName.toLocalFile() ); if( fileInfo.isDir() ) { if( !optionsLayerHidden && QObject::sender() == optionsLayer ) { optionsLayerHidden = true; optionsLayer->hide(); kapp->processEvents(); } // debug // logger->log( 1000, "@addFiles: adding dir: " + fileName.toLocalFile() ); addDir( fileName, true, config->pluginLoader()->formatList(PluginLoader::Decode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)), conversionOptions ); continue; } else { const bool canDecodeAac = config->pluginLoader()->canDecode( "m4a/aac" ); const bool canDecodeAlac = config->pluginLoader()->canDecode( "m4a/alac" ); const bool checkM4a = ( !canDecodeAac || !canDecodeAlac ) && canDecodeAac != canDecodeAlac; codecName = config->pluginLoader()->getCodecFromFile( fileName, 0, checkM4a ); if( !config->pluginLoader()->canDecode(codecName) ) continue; } } // logger->log( 1000, "adding file: " + fileName.toLocalFile() + ", codec: " + codecName ); FileListItem * const newItem = new FileListItem( this ); if( conversionOptionsId == -1 ) { if( batchNumber == 0 ) { newItem->conversionOptionsId = config->conversionOptionsManager()->addConversionOptions( conversionOptions ); } else { newItem->conversionOptionsId = config->conversionOptionsManager()->increaseReferences( lastConversionOptionsId ); } } else { newItem->conversionOptionsId = config->conversionOptionsManager()->increaseReferences( conversionOptionsId ); } lastConversionOptionsId = newItem->conversionOptionsId; newItem->codecName = codecName; newItem->track = -1; newItem->url = fileName; newItem->local = ( newItem->url.isLocalFile() || newItem->url.protocol() == "file" ); newItem->tags = tagEngine->readTags( newItem->url ); if( !newItem->tags && newItem->codecName == "wav" && newItem->local ) { QFile file( newItem->url.toLocalFile() ); newItem->length = file.size() / 176400; // assuming it's a 44100 Hz, 16 bit wave file } else { newItem->length = ( newItem->tags && newItem->tags->length > 0 ) ? newItem->tags->length : 200.0f; } newItem->notifyCommand = command; addTopLevelItem( newItem ); updateItem( newItem ); emit timeChanged( newItem->length ); batchNumber++; if( batchNumber % 50 == 0 ) kapp->processEvents(); } if( !pScanStatus->isVisible() ) { emit fileCountChanged( topLevelItemCount() ); if( queue ) convertNextItem(); } } void FileList::addDir( const KUrl& directory, bool recursive, const QStringList& codecList, ConversionOptions *conversionOptions ) { if( !conversionOptions ) { logger->log( 1000, "@addDir: No conversion options given" ); return; } const int conversionOptionsId = config->conversionOptionsManager()->addConversionOptions( conversionOptions ); pScanStatus->setValue( 0 ); pScanStatus->setMaximum( 0 ); pScanStatus->show(); // show the status while scanning the directories tScanStatus.start(); const int count = countDir( directory.toLocalFile(), recursive ); pScanStatus->setMaximum( count ); kapp->processEvents(); listDir( directory.toLocalFile(), codecList, recursive, conversionOptionsId ); pScanStatus->hide(); // hide the status bar, when the scan is done emit fileCountChanged( topLevelItemCount() ); if( queue ) convertNextItem(); } void FileList::addTracks( const QString& device, QList trackList, int tracks, QList tagList, ConversionOptions *conversionOptions, const QString& notifyCommand ) { FileListItem *lastListItem = 0; if( !conversionOptions ) { logger->log( 1000, "@addTracks: No conversion options given" ); return; } for( int i=0; iconversionOptionsId = config->conversionOptionsManager()->addConversionOptions( conversionOptions ); } else { newItem->conversionOptionsId = config->conversionOptionsManager()->increaseReferences( lastListItem->conversionOptionsId ); } lastListItem = newItem; newItem->codecName = "audio cd"; newItem->notifyCommand = notifyCommand; newItem->track = trackList.at(i); newItem->tracks = tracks; newItem->device = device; newItem->tags = tagList.at(i); newItem->length = newItem->tags ? newItem->tags->length : 200.0f; addTopLevelItem( newItem ); updateItem( newItem ); emit timeChanged( newItem->length ); } emit fileCountChanged( topLevelItemCount() ); if( queue ) convertNextItem(); } void FileList::updateItem( FileListItem *item ) { if( !item ) return; // KUrl outputUrl; // if( !item->outputUrl.toLocalFile().isEmpty() ) // { // outputUrl = item->outputUrl; // } // else // { // outputUrl = OutputDirectory::calcPath( item, config ); // } const KUrl outputUrl = OutputDirectory::calcPath( item, config ); item->setText( Column_Output, outputUrl.toLocalFile() ); removeItemWidget( item, Column_State ); if( item->lInfo.data() ) { disconnect( item->lInfo.data(), SIGNAL(linkActivated(const QString&)), this, 0 ); delete item->lInfo.data(); } item->setText( Column_State, "" ); item->setToolTip( Column_State, "" ); item->setToolTip( Column_Input, "" ); item->setToolTip( Column_Output, "" ); item->setToolTip( Column_Quality, "" ); switch( item->state ) { case FileListItem::WaitingForConversion: { if( QFile::exists(outputUrl.toLocalFile()) ) { item->setText( Column_State, i18n("Will be skipped") ); } else { item->setText( Column_State, i18n("Waiting") ); } break; } case FileListItem::ApplyingReplayGain: { item->setText( Column_State, i18n("Replay Gain") ); break; } case FileListItem::WaitingForAlbumGain: { item->setText( Column_State, i18n("Waiting for Replay Gain") ); break; } case FileListItem::ApplyingAlbumGain: { item->setText( Column_State, i18n("Replay Gain") ); break; } case FileListItem::Ripping: { item->setText( Column_State, i18n("Ripping") ); break; } case FileListItem::Converting: { item->setText( Column_State, i18n("Converting") ); break; } case FileListItem::Stopped: { switch( item->returnCode ) { case FileListItem::Succeeded: case FileListItem::SucceededWithProblems: { break; } case FileListItem::StoppedByUser: { item->setText( Column_State, i18n("Stopped") ); break; } case FileListItem::BackendNeedsConfiguration: { item->setText( Column_State, i18n("Backend not configured") ); break; } case FileListItem::DiscFull: { item->setText( Column_State, i18n("Disc full") ); break; } case FileListItem::Skipped: { item->setText( Column_State, i18n("Will be skipped") ); break; } case FileListItem::Failed: { item->lInfo = new QLabel( "logId) + "\">" + i18n("Failed") + "" ); connect( item->lInfo.data(), SIGNAL(linkActivated(const QString&)), this, SLOT(showLogClicked(const QString&)) ); setItemWidget( item, Column_State, item->lInfo.data() ); const QString toolTip = i18n("The conversion has failed.\nSee the log for more information."); item->setToolTip( Column_State, toolTip ); item->setToolTip( Column_Input, toolTip ); item->setToolTip( Column_Output, toolTip ); item->setToolTip( Column_Quality, toolTip ); break; } } break; } } ConversionOptions *options = config->conversionOptionsManager()->getConversionOptions(item->conversionOptionsId); if( options ) item->setText( Column_Quality, options->profile ); if( item->track >= 0 ) { if( item->tags ) { item->setText( Column_Input, QString().sprintf("%02i",item->tags->track) + " - " + item->tags->artist + " - " + item->tags->title ); } else // shouldn't be possible { item->setText( Column_Input, i18n("CD track %1").arg(item->track) ); } } else { item->setText( Column_Input, item->url.pathOrUrl() ); } } void FileList::showLogClicked( const QString& logIdString ) { const int logId = logIdString.toInt(); if( !logId ) return; emit showLog( logId ); } void FileList::updateItems( QList items ) { for( int i=0; istate ) { case FileListItem::WaitingForConversion: break; case FileListItem::Ripping: break; case FileListItem::Converting: break; case FileListItem::ApplyingReplayGain: break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: isStopped = true; break; } } if( isStopped ) { item->state = FileListItem::WaitingForConversion; updateItem( item ); } } queue = true; emit queueModeChanged( queue ); emit conversionStarted(); convertNextItem(); } void FileList::killConversion() { queue = false; emit queueModeChanged( queue ); FileListItem *item; for( int i=0; istate ) { case FileListItem::WaitingForConversion: break; case FileListItem::Ripping: canKill = true; break; case FileListItem::Converting: canKill = true; break; case FileListItem::ApplyingReplayGain: canKill = true; break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: break; } } if( canKill ) emit killItem( item ); } } void FileList::stopConversion() { queue = false; emit queueModeChanged( queue ); } void FileList::continueConversion() { queue = true; emit queueModeChanged( queue ); convertNextItem(); } void FileList::convertNextItem() { if( !queue ) return; int count = convertingCount(); bool callItemsSelected = false; QStringList devices; // look for tracks that are being ripped for( int i=0; istate == FileListItem::Ripping ) { devices += item->device; } } // look for waiting files for( int i=0; idata.general.numFiles; i++ ) { FileListItem *item = topLevelItem( i ); if( item->state == FileListItem::WaitingForConversion ) { if( item->track >= 0 && !devices.contains(item->device) ) { count++; devices += item->device; emit convertItem( item ); if( selectedFiles.contains(item) ) callItemsSelected = true; } else if( item->track < 0 ) { count++; emit convertItem( item ); if( selectedFiles.contains(item) ) callItemsSelected = true; } } } if( callItemsSelected ) itemsSelected(); if( count == 0 ) itemFinished( 0, FileListItem::Succeeded ); } int FileList::waitingCount() { int count = 0; FileListItem *item; for( int i=0; istate == FileListItem::WaitingForConversion ) count++; } return count; } int FileList::convertingCount() // TODO use Convert { int count = 0; FileListItem *item; QString albumName; for( int i=0; istate ) { case FileListItem::WaitingForConversion: break; case FileListItem::Ripping: isConverting = true; break; case FileListItem::Converting: isConverting = true; break; case FileListItem::ApplyingReplayGain: isConverting = true; break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: break; } if( isConverting ) count++; } return count; } // qulonglong FileList::spaceLeftForDirectory( const QString& dir ) // { // if( dir.isEmpty() ) // return 0; // // KMountPoint::Ptr mp = KMountPoint::currentMountPoints().findByPath( dir ); // if( !mp ) // return 0; // // KDiskFreeSpaceInfo job = KDiskFreeSpaceInfo::freeSpaceInfo( mp->mountPoint() ); // if( !job.isValid() ) // return 0; // // KIO::filesize_t mBSize = job.size() / 1024 / 1024; // KIO::filesize_t mBUsed = job.used() / 1024 / 1024; // // return mBSize - mBUsed; // } void FileList::itemFinished( FileListItem *item, FileListItem::ReturnCode returnCode, bool waitingForAlbumGain ) { if( item ) { if( waitingForAlbumGain ) { item->state = FileListItem::WaitingForAlbumGain; item->returnCode = returnCode; updateItem( item ); } else if( returnCode == FileListItem::Succeeded || returnCode == FileListItem::SucceededWithProblems ) { config->conversionOptionsManager()->removeConversionOptions( item->conversionOptionsId ); if( selectedFiles.contains(item) ) itemsSelected(); delete item; item = 0; } else { item->state = FileListItem::Stopped; item->returnCode = returnCode; updateItem( item ); } } // FIXME disabled until saving gets faster // save( false ); if( queue && waitingCount() > 0 ) { convertNextItem(); } else if( convertingCount() == 0 ) { queue = false; save( false ); emit queueModeChanged( queue ); // float time = 0; // for( int i=0; ilength; // } // emit finished( time ); emit finished( true ); emit conversionStopped( returnCode != FileListItem::Succeeded ); emit fileCountChanged( topLevelItemCount() ); } } bool FileList::waitForAlbumGain( FileListItem *item ) // TODO was ist wenn die datei unten drunter schon fertig ist, was ist wenn eine datei oben drpber noch nicht fertig ist { if( !config->data.general.waitForAlbumGain ) return false; if( !item || !item->tags ) return false; if( item->tags->album.isEmpty() ) return false; FileListItem *nextItem; nextItem = item; while( ( nextItem = (FileListItem*)itemAbove(nextItem) ) ) { if( nextItem && nextItem->tags && nextItem->tags->album == item->tags->album ) { if( nextItem->state != FileListItem::WaitingForAlbumGain ) { return true; } } else { break; } } nextItem = item; while( ( nextItem = (FileListItem*)itemBelow(nextItem) ) ) { if( nextItem && nextItem->tags && nextItem->tags->album == item->tags->album ) { if( nextItem->state != FileListItem::WaitingForAlbumGain ) { return true; } } else { break; } } return false; } void FileList::rippingFinished( const QString& device ) { if( waitingCount() > 0 && queue ) { // look for waiting files for( int i=0; istate == FileListItem::WaitingForConversion ) { if( item->track >= 0 && item->device == device ) { emit convertItem( item ); if( selectedFiles.contains(item) ) itemsSelected(); return; } } } } } void FileList::showContextMenu( const QPoint& point ) { const FileListItem * const item = (FileListItem*)itemAt( point ); // if item is null, we can abort here if( !item ) return; // add a tilte to our context manu //contextMenu->insertTitle( static_cast(item)->fileName ); // TODO sqeeze or something else // TODO implement pasting, etc. contextMenu->clear(); // is this file (of our item) beeing converted at the moment? bool isConverting = false; if( item ) { switch( item->state ) { case FileListItem::WaitingForConversion: break; case FileListItem::Ripping: isConverting = true; break; case FileListItem::Converting: isConverting = true; break; case FileListItem::ApplyingReplayGain: isConverting = true; break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: break; } } if( item->state == FileListItem::ApplyingAlbumGain ) { } if( item->state == FileListItem::WaitingForAlbumGain ) { contextMenu->addAction( removeAction ); } else if( isConverting ) { //contextMenu->addAction( paste ); //contextMenu->addSeparator(); contextMenu->addAction( stopAction ); } else { contextMenu->addAction( editAction ); contextMenu->addSeparator(); contextMenu->addAction( removeAction ); //contextMenu->addAction( paste ); contextMenu->addSeparator(); contextMenu->addAction( startAction ); } // show the popup menu contextMenu->popup( viewport()->mapToGlobal(point) ); } void FileList::showOptionsEditorDialog() { if( !optionsEditor ) { optionsEditor = new OptionsEditor( config, this ); if( !optionsEditor ) { // TODO error message return; } connect( this, SIGNAL(editItems(QList)), optionsEditor, SLOT(itemsSelected(QList)) ); connect( this, SIGNAL(setPreviousItemEnabled(bool)), optionsEditor, SLOT(setPreviousEnabled(bool)) ); connect( this, SIGNAL(setNextItemEnabled(bool)), optionsEditor, SLOT(setNextEnabled(bool)) ); connect( this, SIGNAL(itemRemoved(FileListItem*)), optionsEditor, SLOT(itemRemoved(FileListItem*)) ); connect( optionsEditor, SIGNAL(user2Clicked()), this, SLOT(selectPreviousItem()) ); connect( optionsEditor, SIGNAL(user1Clicked()), this, SLOT(selectNextItem()) ); connect( optionsEditor, SIGNAL(updateFileListItems(QList)), this, SLOT(updateItems(QList)) ); } itemsSelected(); optionsEditor->show(); } void FileList::selectPreviousItem() { QTreeWidgetItem * const item = itemAbove( selectedItems().first() ); if( !item ) return; disconnect( this, SIGNAL(itemSelectionChanged()), 0, 0 ); // avoid backfireing for( int i=0; isetSelected( false ); } item->setSelected( true ); scrollToItem( item ); connect( this, SIGNAL(itemSelectionChanged()), this, SLOT(itemsSelected()) ); itemsSelected(); } void FileList::selectNextItem() { QTreeWidgetItem * const item = itemBelow( selectedItems().last() ); if( !item ) return; disconnect( this, SIGNAL(itemSelectionChanged()), 0, 0 ); // avoid backfireing for( int i=0; isetSelected( false ); } item->setSelected( true ); scrollToItem( item ); connect( this, SIGNAL(itemSelectionChanged()), this, SLOT(itemsSelected()) ); itemsSelected(); } void FileList::removeSelectedItems() { FileListItem *item; QList items = selectedItems(); for( int i=0; iisSelected() ) { switch( item->state ) { case FileListItem::WaitingForConversion: canRemove = true; break; case FileListItem::Ripping: break; case FileListItem::Converting: break; case FileListItem::ApplyingReplayGain: break; case FileListItem::WaitingForAlbumGain: canRemove = true; break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: canRemove = true; break; } if( canRemove ) { emit timeChanged( -item->length ); config->conversionOptionsManager()->removeConversionOptions( item->conversionOptionsId ); delete item; } } } emit fileCountChanged( topLevelItemCount() ); itemsSelected(); } void FileList::convertSelectedItems() { bool started = false; bool callItemsSelected = false; FileListItem *item; QList items = selectedItems(); for( int i=0; istate ) { case FileListItem::WaitingForConversion: canConvert = true; break; case FileListItem::Ripping: break; case FileListItem::Converting: break; case FileListItem::ApplyingReplayGain: break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: canConvert = true; break; } } if( canConvert ) { // emit conversionStarted first because in case the plugin reports an error the conversion stop immediately // and the itemFinished slot gets called. If conversionStarted was emitted at the end of this function // it might broadcast the message that the conversion has started after the conversion already stopped if( !started ) emit conversionStarted(); emit convertItem( item ); if( selectedFiles.contains(item) ) callItemsSelected = true; started = true; } } if( callItemsSelected ) itemsSelected(); } void FileList::killSelectedItems() { FileListItem *item; QList items = selectedItems(); for( int i=0; istate ) { case FileListItem::WaitingForConversion: break; case FileListItem::Ripping: canKill = true; break; case FileListItem::Converting: canKill = true; break; case FileListItem::ApplyingReplayGain: canKill = true; break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: break; } } if( canKill ) emit killItem( item ); } } void FileList::itemsSelected() { selectedFiles.clear(); QList items = selectedItems(); foreach( QTreeWidgetItem* item, items ) { selectedFiles.append( (FileListItem*)item ); } if( selectedFiles.count() > 0 ) { emit setPreviousItemEnabled( itemAbove(selectedFiles.first()) != 0 ); emit setNextItemEnabled( itemBelow(selectedFiles.last()) != 0 ); } else { emit setPreviousItemEnabled( false ); emit setNextItemEnabled( false ); } emit editItems( selectedFiles ); } void FileList::load( bool user ) { if( topLevelItemCount() > 0 ) { const int ret = KMessageBox::questionYesNo( this, i18n("Do you want to overwrite the current file list?\n\nIf not, the saved file list will be appended.") ); if( ret == KMessageBox::Yes ) { FileListItem *item; for( int i=0; istate ) { case FileListItem::WaitingForConversion: canRemove = true; break; case FileListItem::Ripping: break; case FileListItem::Converting: break; case FileListItem::ApplyingReplayGain: break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: break; case FileListItem::Stopped: canRemove = true; break; } } if( canRemove ) { config->conversionOptionsManager()->removeConversionOptions( item->conversionOptionsId ); delete item; i--; } } itemsSelected(); } } QMap conversionOptionsIds; QMap conversionOptionsReferences; QString fileName = user ? "filelist.xml" : "filelist_autosave.xml"; QFile listFile( KStandardDirs::locateLocal("data","soundkonverter/"+fileName) ); if( listFile.open( QIODevice::ReadOnly ) ) { QDomDocument list("soundkonverter_filelist"); if( list.setContent( &listFile ) ) { QDomElement root = list.documentElement(); if( root.nodeName() == "soundkonverter" && root.attribute("type") == "filelist" ) { QDomNodeList conversionOptionsElements = root.elementsByTagName("conversionOptions"); for( int i=0; i filterOptionsElements; const QString pluginName = conversionOptionsElements.at(i).toElement().attribute("pluginName"); CodecPlugin *plugin = (CodecPlugin*)config->pluginLoader()->backendPluginByName( pluginName ); if( plugin ) { conversionOptions = plugin->conversionOptionsFromXml( conversionOptionsElements.at(i).toElement(), &filterOptionsElements ); } else { continue; } if( conversionOptions ) { foreach( QDomElement filterOptionsElement, filterOptionsElements ) { FilterOptions *filterOptions = 0; const QString filterPluginName = filterOptionsElement.attribute("pluginName"); FilterPlugin *filterPlugin = (FilterPlugin*)config->pluginLoader()->backendPluginByName( filterPluginName ); if( filterPlugin ) { filterOptions = filterPlugin->filterOptionsFromXml( filterOptionsElement ); } else { continue; } conversionOptions->filterOptions.append( filterOptions ); } } const int id = conversionOptionsElements.at(i).toElement().attribute("id").toInt(); conversionOptionsIds[id] = config->conversionOptionsManager()->addConversionOptions( conversionOptions ); conversionOptionsReferences[conversionOptionsIds[id]] = 0; } QDomNodeList files = root.elementsByTagName("file"); pScanStatus->setValue( 0 ); pScanStatus->setMaximum( files.count() ); pScanStatus->show(); tScanStatus.start(); for( int i=0; iurl = KUrl(file.attribute("url")); // item->outputUrl = KUrl(file.attribute("outputUrl")); item->codecName = file.attribute("codecName"); item->conversionOptionsId = conversionOptionsIds[file.attribute("conversionOptionsId").toInt()]; // TODO check if id exists item->local = file.attribute("local").toInt(); item->track = file.attribute("track").toInt(); item->tracks = file.attribute("tracks").toInt(); item->device = file.attribute("device"); item->length = file.attribute("time").toInt(); item->notifyCommand = file.attribute("notifyCommand"); if( conversionOptionsReferences[item->conversionOptionsId] != 0 ) config->conversionOptionsManager()->increaseReferences( item->conversionOptionsId ); conversionOptionsReferences[item->conversionOptionsId]++; if( file.elementsByTagName("tags").count() > 0 ) { QDomElement tags = file.elementsByTagName("tags").at(0).toElement(); item->tags = new TagData(); item->tags->artist = tags.attribute("artist"); item->tags->composer = tags.attribute("composer"); item->tags->album = tags.attribute("album"); item->tags->title = tags.attribute("title"); item->tags->genre = tags.attribute("genre"); item->tags->comment = tags.attribute("comment"); item->tags->track = tags.attribute("track").toInt(); item->tags->trackTotal = tags.attribute("trackTotal").toInt(); item->tags->disc = tags.attribute("disc").toInt(); item->tags->discTotal = tags.attribute("discTotal").toInt(); item->tags->year = tags.attribute("year").toInt(); item->tags->trackGain = tags.attribute("track_gain").toFloat(); item->tags->albumGain = tags.attribute("album_gain").toFloat(); item->tags->length = tags.attribute("length").toInt(); item->tags->samplingRate = tags.attribute("samplingRate").toInt(); } addTopLevelItem( item ); updateItem( item ); emit timeChanged( item->length ); if( tScanStatus.elapsed() > ConfigUpdateDelay * 10 ) { pScanStatus->setValue( i ); tScanStatus.start(); } } pScanStatus->hide(); } } listFile.close(); emit fileCountChanged( topLevelItemCount() ); } } void FileList::save( bool user ) { // assume it's a misclick if there's nothing to save if( user && topLevelItemCount() == 0 ) return; QTime time; time.start(); QDomDocument list("soundkonverter_filelist"); QDomElement root = list.createElement("soundkonverter"); root.setAttribute("type","filelist"); list.appendChild(root); QList ids = config->conversionOptionsManager()->getAllIds(); for( int i=0; iconversionOptionsManager()->getConversionOptions(ids.at(i)) ) { // FIXME error message, null pointer for conversion options continue; } QDomElement conversionOptions = config->conversionOptionsManager()->getConversionOptions(ids.at(i))->toXml(list); conversionOptions.setAttribute("id",ids.at(i)); root.appendChild(conversionOptions); } FileListItem *item; for( int i=0; iurl.pathOrUrl()); // file.setAttribute("outputUrl",item->outputUrl.pathOrUrl()); file.setAttribute("codecName",item->codecName); file.setAttribute("conversionOptionsId",item->conversionOptionsId); file.setAttribute("local",item->local); file.setAttribute("track",item->track); file.setAttribute("tracks",item->tracks); file.setAttribute("device",item->device); file.setAttribute("time",item->length); file.setAttribute("notifyCommand",item->notifyCommand); root.appendChild(file); if( item->tags ) { QDomElement tags = list.createElement("tags"); tags.setAttribute("artist",item->tags->artist); tags.setAttribute("composer",item->tags->composer); tags.setAttribute("album",item->tags->album); tags.setAttribute("title",item->tags->title); tags.setAttribute("genre",item->tags->genre); tags.setAttribute("comment",item->tags->comment); tags.setAttribute("track",item->tags->track); tags.setAttribute("trackTotal",item->tags->trackTotal); tags.setAttribute("disc",item->tags->disc); tags.setAttribute("discTotal",item->tags->discTotal); tags.setAttribute("year",item->tags->year); tags.setAttribute("track_gain",item->tags->trackGain); tags.setAttribute("album_gain",item->tags->albumGain); tags.setAttribute("length",item->tags->length); tags.setAttribute("samplingRate",item->tags->samplingRate); file.appendChild(tags); } } const QString fileName = user ? "filelist.xml" : "filelist_autosave.xml"; QFile listFile( KStandardDirs::locateLocal("data","soundkonverter/"+fileName) ); if( listFile.open( QIODevice::WriteOnly ) ) { QTextStream stream(&listFile); stream << list.toString(); listFile.close(); } logger->log( 1000, QString("Saving the file list took %1 ms").arg(time.elapsed()) ); } ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverterui.rc0000644000175000001440000000006211633417264021770 xustar000000000000000020 atime=1357667506 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/soundkonverterui.rc0000744000175000001440000000222211633417264021400 0ustar00danielusers00000000000000 Conversion Tools ./soundkonverter-2.0.5/PaxHeaders.25599/convertitem.h0000644000175000001440000000006212105142352020510 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/convertitem.h0000644000175000001440000000641712105142352020131 0ustar00danielusers00000000000000 #ifndef CONVERTITEM_H #define CONVERTITEM_H #include "pluginloader.h" #include #include #include #include class FileListItem; class KProcess; /** * @short The items for the conversion (for every active file) * @author Daniel Faust */ class ConvertItem { public: /** * A list of flags for knowing what to do */ enum Mode { get = 0x0001, // Copy the file to tmp convert = 0x0002, // Convert the file rip = 0x0004, // Ripping the file (only for the current state) decode = 0x0008, // Decoding the file (only for the current state) filter = 0x0010, // Applying filters (only for the current state) encode = 0x0020, // Encoding the file (only for the current state) replaygain = 0x0040, // Apply replaygain write_tags = 0x0080, // Write the tags to the file execute_userscript = 0x0100 // Run the user script }; /** Constructor, @p item a pointer to the file list item */ ConvertItem( FileListItem *item ); /** Destructor */ ~ConvertItem(); /** a reference to the file list item, in case it's a convert item */ FileListItem *fileListItem; /** a list of conversion pipes that are suitable for this item */ QList conversionPipes; /** a list of replaygain pipes that are suitable for this item */ QList replaygainPipes; /** number of the current attempt to convert the file/add replaygain (for the pipes lists) */ int take; /** number of the last try in case the conversion wasn't successful in the end */ int lastTake; // TODO use cleaner solution /** for the conversion and moving the file to a temporary place */ QWeakPointer process; /** for moving the file to the temporary directory */ QWeakPointer kioCopyJob; /** the active plugin */ BackendPlugin *backendPlugin; /** the id from the active plugin (-1 if false) */ int backendID; /** the current conversion step */ int conversionPipesStep; /** has the process been killed on purpose? */ bool killed; /** has the internal replaygain been used in this conversion take? */ bool internalReplayGainUsed; /** the url from fileListItem or the download temp file */ KUrl inputUrl; /** the path and the name of the output file */ KUrl outputUrl; /** the downloaded input file */ KUrl tempInputUrl; /** the temp files for the conversion */ QList tempConvertUrls; KUrl generateTempUrl( const QString& prefix, const QString& extension, bool useSharedMemory = false ); /** what shall we do with the file? */ Mode mode; /** and what are we doing with the file? */ Mode state; /** the id with that the item is registered at the logger */ int logID; /** the time from the file list item splitted up */ float getTime; QList convertTimes; float replaygainTime; float finishedTime; // the time of the finished conversion steps void updateTimes(); /** the current conversion progress */ float progress; QTime progressedTime; }; #endif // CONVERTITEM_H ./soundkonverter-2.0.5/PaxHeaders.25599/progressindicator.cpp0000644000175000001440000000006212105142356022251 xustar000000000000000020 atime=1360315630 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/progressindicator.cpp0000755000175000001440000001247212105142356021673 0ustar00danielusers00000000000000 #include "progressindicator.h" #include "global.h" #include #include #include #include #include #include TrailingAverage::TrailingAverage() { count = 10; } TrailingAverage::~TrailingAverage() {} void TrailingAverage::setCount( int _count ) { count = _count; while( deltaTime.count() > count ) deltaTime.removeFirst(); while( deltaValue.count() > count ) deltaValue.removeFirst(); } void TrailingAverage::addData( float _deltaTime, float _deltaValue ) { while( deltaTime.count() > count ) deltaTime.removeFirst(); while( deltaValue.count() > count ) deltaValue.removeFirst(); deltaTime.append( _deltaTime ); deltaValue.append( _deltaValue ); } float TrailingAverage::average() { float _deltaTime = 0; foreach( const float time, deltaTime ) _deltaTime += time; float _deltaValue = 0; foreach( const float value, deltaValue ) _deltaValue += value; return _deltaValue / _deltaTime; } ProgressIndicator::ProgressIndicator( QWidget *parent, Feature features ) : QWidget( parent ), lSpeed( 0 ), lTime( 0 ) { totalTime = processedTime = 0; QHBoxLayout *box = new QHBoxLayout( this ); box->setContentsMargins( 0, 0, 0, 0 ); pBar = new QProgressBar( this ); box->addWidget( pBar, 0, Qt::AlignVCenter ); pBar->setRange( 0, 1 ); pBar->setValue( 0 ); if( features != 0 ) { box->addSpacing( 4 ); QGridLayout *statusChildGrid = new QGridLayout(); statusChildGrid->setContentsMargins( 0, 0, 0, 0 ); box->addLayout( statusChildGrid ); box->setAlignment( statusChildGrid, Qt::AlignVCenter ); if( features & FeatureSpeed ) { QLabel *lSpeedText = new QLabel( i18n("Speed:"), this ); statusChildGrid->addWidget( lSpeedText, 0, 0, Qt::AlignVCenter ); QString actSpeed = " 0x"; lSpeed = new QLabel( "
" + actSpeed + "
", this ); statusChildGrid->addWidget( lSpeed, 0, 1, Qt::AlignVCenter | Qt::AlignRight ); speedAverage.setCount( 10 ); } if( features & FeatureTime ) { QLabel *lTimeText = new QLabel( i18n("Remaining time:"), this ); statusChildGrid->addWidget( lTimeText, 1, 0, Qt::AlignVCenter ); lTime = new QLabel( "
 0s
", this ); lTime->setFont( QFont( "Courier" ) ); statusChildGrid->addWidget( lTime, 1, 1, Qt::AlignVCenter | Qt::AlignRight ); timeAverage.setCount( 60 ); } updateTime.setHMS( 24, 0, 0 ); } } ProgressIndicator::~ProgressIndicator() {} void ProgressIndicator::timeChanged( float timeDelta ) { totalTime += timeDelta; if( totalTime > 0 ) pBar->setRange( 0, (int)totalTime ); else pBar->setRange( 0, 1 ); } void ProgressIndicator::timeFinished( float timeDelta ) { processedTime += timeDelta; pBar->setValue( (int)processedTime ); } void ProgressIndicator::finished( bool reset ) { if( reset ) { totalTime -= processedTime; if( totalTime < 0 ) totalTime = 0.0f; } processedTime = 0.0f; pBar->setRange( 0, totalTime > 0 ? (int)totalTime : 1 ); if( reset ) pBar->setValue( totalTime > 0 ? 0 : 1 ); else pBar->setValue( pBar->maximum() ); updateTime.setHMS( 24, 0, 0 ); if( lTime ) { lTime->setText( "
 0s
" ); } if( lSpeed ) { QString actSpeed = " 0x"; lSpeed->setText( "
" + actSpeed + "
" ); } emit progressChanged( i18n("Finished") ); } void ProgressIndicator::update( float timeProgress ) { const float currentProcessedTime = processedTime + timeProgress; pBar->setValue( (int)currentProcessedTime ); const int iPercent = ( pBar->maximum() > 0 ) ? pBar->value() * 100 / pBar->maximum() : 0; if( lTime || lSpeed ) { if( !updateTime.isValid() ) updateTime.start(); if( updateTime.elapsed() >= 1000 ) { const float deltaTime = updateTime.restart() / 1000; if( lTime ) { timeAverage.addData( deltaTime, currentProcessedTime - lastProcessedTime ); const float remainingProcessTime = totalTime - currentProcessedTime; const float remainingTime = remainingProcessTime / timeAverage.average() + 1; lTime->setText( "
" + Global::prettyNumber(remainingTime,"s") + "
" ); } if( lSpeed ) { speedAverage.addData( deltaTime, currentProcessedTime - lastProcessedTime ); const float speed = speedAverage.average(); if( speed >= 0.0f && speed < 100000.0f ) { QString speedString = QString::number(qRound(speed)) + "x"; if( speed < 10 ) speedString = " " + speedString; if( speed < 100 ) speedString = " " + speedString; lSpeed->setText( "
" + speedString + "
" ); } } lastProcessedTime = currentProcessedTime; } } emit progressChanged( QString::number(iPercent) + "%" ); } ./soundkonverter-2.0.5/PaxHeaders.25599/global.cpp0000644000175000001440000000006212105142352017744 xustar000000000000000020 atime=1387631527 30 ctime=1387631579.820402533 ./soundkonverter-2.0.5/global.cpp0000644000175000001440000001144212105142352017357 0ustar00danielusers00000000000000// // C++ Implementation: global // // Description: // // // Author: Daniel Faust , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "global.h" #include #include Global::Global() {} Global::~Global() {} QString Global::prettyNumber( double num, QString unit, short digits ) { QString prettyString; if( unit == "%" && digits == 3 ) { if( num < 10 ) prettyString.sprintf("%.2f %%",num); else if( num < 100 ) prettyString.sprintf("%.1f %%",num); else prettyString.sprintf("%.0f %%",num); if( KGlobal::locale()->decimalSymbol() != "." ) prettyString.replace(".",KGlobal::locale()->decimalSymbol()); } else if( unit == "%" && digits == 2 ) { if( num < 10 ) prettyString.sprintf("%.1f %%",num); else prettyString.sprintf("%.0f %%",num); if( KGlobal::locale()->decimalSymbol() != "." ) prettyString.replace(".",KGlobal::locale()->decimalSymbol()); } else if( unit == "B" ) { short pow = 0; while( num > 1024 ) { num /= 1024; pow++; } if( pow == 0 ) unit = "B"; else if( pow == 1 ) unit = "KiB"; else if( pow == 2 ) unit = "MiB"; else if( pow == 3 ) unit = "GiB"; else if( pow == 4 ) unit = "TiB"; else if( pow == 5 ) unit = "PiB"; else if( pow == 6 ) unit = "EiB"; else if( pow == 7 ) unit = "ZiB"; else if( pow == 8 ) unit = "YiB"; else unit = "Nan"; if( num < 100 || num > 999 ) prettyString = QString::number(num).left(4); else prettyString = QString::number(num).left(3); prettyString = prettyString + " " + unit; if( KGlobal::locale()->decimalSymbol() != "." ) prettyString.replace(".",KGlobal::locale()->decimalSymbol()); } else if( unit == "ms" ) { short days = (int)(num/86400000.0f); short hours = (int)(num/3600000.0f)%24; short minutes = (int)(num/60000.0f)%60; short seconds = (int)(num/1000.0f)%60; short milliseconds = (int)num%1000; if( days >= 10 ) prettyString = QString("%1%2").arg(days).arg(i18nc("days","d")); else if( days >= 1 ) prettyString = QString("%1%2 %3%4").arg(days).arg(i18nc("days","d")).arg(hours).arg(i18nc("hours","h")); else if( hours >= 1 ) prettyString = QString("%1%2 %3%4").arg(hours).arg(i18nc("hours","h")).arg(minutes).arg(i18nc("minutes","m")); else if( minutes >= 1 && seconds < 10 ) prettyString = QString("%1%2 0%3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s")); else if( minutes >= 1 ) prettyString = QString("%1%2 %3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s")); else if( seconds >= 1 && milliseconds < 10 ) prettyString = QString("%1%2 00%3%4").arg(seconds).arg(i18nc("seconds","s")).arg(milliseconds).arg(i18nc("milliseconds","ms")); else if( seconds >= 1 && milliseconds < 100 ) prettyString = QString("%1%2 0%3%4").arg(seconds).arg(i18nc("seconds","s")).arg(milliseconds).arg(i18nc("milliseconds","ms")); else if( seconds >= 1 ) prettyString = QString("%1%2 %3%4").arg(seconds).arg(i18nc("seconds","s")).arg(milliseconds).arg(i18nc("milliseconds","ms")); else if( milliseconds >= 1 ) prettyString = QString("%1%2").arg(milliseconds).arg(i18nc("milliseconds","ms")); } else if( unit == "s" ) { short days = (int)(num/86400); short hours = (int)(num/3600)%24; short minutes = (int)(num/60)%60; short seconds = (int)(num)%60; if( days >= 10 ) prettyString = QString("%1%2").arg(days).arg(i18nc("days","d")); else if( days >= 1 ) prettyString = QString("%1%2 %3%4").arg(days).arg(i18nc("days","d")).arg(hours).arg(i18nc("hours","h")); else if( hours >= 1 ) prettyString = QString("%1%2 %3%4").arg(hours).arg(i18nc("hours","h")).arg(minutes).arg(i18nc("minutes","m")); else if( minutes >= 1 && seconds < 10 ) prettyString = QString("%1%2 0%3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s")); else if( minutes >= 1 ) prettyString = QString("%1%2 %3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s")); else if( seconds >= 1 ) prettyString = QString("%1%2").arg(seconds).arg(i18nc("seconds","s")); } return prettyString; } ./soundkonverter-2.0.5/PaxHeaders.25599/outputdirectory.cpp0000644000175000001440000000013212255306740022000 xustar000000000000000030 mtime=1387630048.455963359 30 atime=1387630048.455963359 30 ctime=1387631579.821402521 ./soundkonverter-2.0.5/outputdirectory.cpp0000755000175000001440000005213412255306740021423 0ustar00danielusers00000000000000 #include "outputdirectory.h" #include "filelistitem.h" #include "core/conversionoptions.h" #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include OutputDirectory::OutputDirectory( Config *_config, QWidget *parent ) : QWidget( parent ), config( _config ) { QGridLayout *grid = new QGridLayout( this ); grid->setMargin( 0 ); QHBoxLayout *box = new QHBoxLayout( ); grid->addLayout( box, 0, 0 ); cMode = new KComboBox( this ); cMode->addItem( i18n("By meta data") ); cMode->addItem( i18n("Source directory") ); cMode->addItem( i18n("Specify output directory") ); cMode->addItem( i18n("Copy directory structure") ); box->addWidget( cMode ); connect( cMode, SIGNAL(activated(int)), this, SLOT(modeChangedSlot(int)) ); cDir = new KComboBox( true, this ); box->addWidget( cDir, 1 ); connect( cDir, SIGNAL(editTextChanged(const QString&)), this, SLOT(directoryChangedSlot(const QString&)) ); pDirSelect = new KPushButton( KIcon("folder"), "", this ); box->addWidget( pDirSelect ); pDirSelect->setFixedWidth( pDirSelect->height() ); pDirSelect->setToolTip( i18n("Choose an output directory") ); connect( pDirSelect, SIGNAL(clicked()), this, SLOT(selectDir()) ); pDirGoto = new KPushButton( KIcon("system-file-manager"), "", this ); box->addWidget( pDirGoto ); pDirGoto->setFixedWidth( pDirGoto->height() ); pDirGoto->setToolTip( i18n("Open the output directory with Dolphin") ); connect( pDirGoto, SIGNAL(clicked()), this, SLOT(gotoDir()) ); setMode( (OutputDirectory::Mode)config->data.general.lastOutputDirectoryMode ); } OutputDirectory::~OutputDirectory() {} void OutputDirectory::disable() { cMode->setEnabled( false ); cDir->setEnabled( false ); pDirSelect->setEnabled( false ); } void OutputDirectory::enable() { cMode->setEnabled( true ); modeChangedSlot( cMode->currentIndex() ); } OutputDirectory::Mode OutputDirectory::mode() { return (Mode)cMode->currentIndex(); } void OutputDirectory::setMode( OutputDirectory::Mode mode ) { cMode->setCurrentIndex( (int)mode ); updateMode( mode ); } QString OutputDirectory::directory() { if( (Mode)cMode->currentIndex() != Source ) return cDir->currentText(); else return ""; } void OutputDirectory::setDirectory( const QString& directory ) { if( (Mode)cMode->currentIndex() != Source ) cDir->setEditText( directory ); } QString OutputDirectory::filesystem() { return filesystemForDirectory( directory() ); } QString OutputDirectory::filesystemForDirectory( const QString& dir ) { if( dir.isEmpty() ) return QString(); KMountPoint::Ptr mp = KMountPoint::currentMountPoints().findByPath( dir ); if( !mp ) return QString(); return mp->mountType(); } KUrl OutputDirectory::calcPath( FileListItem *fileListItem, Config *config, const QStringList& usedOutputNames ) { ConversionOptions *options = config->conversionOptionsManager()->getConversionOptions(fileListItem->conversionOptionsId); if( !options ) return KUrl(); QString path; KUrl url; QString extension; if( config->pluginLoader()->codecExtensions(options->codecName).count() > 0 ) extension = config->pluginLoader()->codecExtensions(options->codecName).first(); if( extension.isEmpty() ) extension = options->codecName; QString fileName; if( fileListItem->track == -1 ) fileName = fileListItem->url.fileName(); else fileName = QString().sprintf("%02i",fileListItem->tags->track) + " - " + fileListItem->tags->artist + " - " + fileListItem->tags->title + "." + extension; if( options->outputDirectoryMode == Specify ) { path = options->outputDirectory+"/"+fileName; if( config->data.general.useVFATNames || options->outputFilesystem == "vfat" ) path = vfatPath( path ); if( options->outputFilesystem == "ntfs" ) path = ntfsPath( path ); url = changeExtension( KUrl(path), extension ); if( config->data.general.conflictHandling == Config::Data::General::NewFileName ) url = uniqueFileName( url, usedOutputNames ); return url; } else if( options->outputDirectoryMode == MetaData ) { path = options->outputDirectory; // TODO a little bit redundant, adding %f if file name wasn't set properly // TODO these restrictions could be a little bit over the top if( path.right(1) == "/" ) path += "%f"; else if( path.lastIndexOf(QRegExp("%[abcdfgnpty]")) < path.lastIndexOf("/") ) path += "/%f"; const int fileNameBegin = path.lastIndexOf("/"); if( fileListItem->tags == 0 || ( path.mid(fileNameBegin).contains("%n") && fileListItem->tags->track == 0 ) || ( path.mid(fileNameBegin).contains("%t") && fileListItem->tags->title.isEmpty() ) ) { path = path.left( fileNameBegin ) + "/%f"; } path.replace( "\\[", "$quared_bracket_open$" ); path.replace( "\\]", "$quared_bracket_close$" ); QRegExp reg( "\\[(.*)%([abcdfgnpty])(.*)\\]" ); reg.setMinimal( true ); while( path.indexOf(reg) != -1 ) { if( fileListItem->tags && ( ( reg.cap(2) == "a" && !fileListItem->tags->artist.isEmpty() ) || ( reg.cap(2) == "b" && !fileListItem->tags->album.isEmpty() ) || ( reg.cap(2) == "c" && !fileListItem->tags->comment.isEmpty() ) || ( reg.cap(2) == "d" && fileListItem->tags->disc != 0 ) || ( reg.cap(2) == "g" && !fileListItem->tags->genre.isEmpty() ) || ( reg.cap(2) == "n" && fileListItem->tags->track != 0 ) || ( reg.cap(2) == "p" && !fileListItem->tags->composer.isEmpty() ) || ( reg.cap(2) == "t" && !fileListItem->tags->title.isEmpty() ) || ( reg.cap(2) == "y" && fileListItem->tags->year != 0 ) ) ) { path.replace( reg, "\\1%\\2\\3" ); } else { path.replace( reg, "" ); } } path.replace( "$quared_bracket_open$", "[" ); path.replace( "$quared_bracket_close$", "]" ); while( path.contains("//") ) path.replace( "//", "/" ); path.replace( "%a", "$replace_by_artist$" ); path.replace( "%b", "$replace_by_album$" ); path.replace( "%c", "$replace_by_comment$" ); path.replace( "%d", "$replace_by_disc$" ); path.replace( "%g", "$replace_by_genre$" ); path.replace( "%n", "$replace_by_track$" ); path.replace( "%p", "$replace_by_composer$" ); path.replace( "%t", "$replace_by_title$" ); path.replace( "%y", "$replace_by_year$" ); path.replace( "%f", "$replace_by_filename$" ); QString artist = ( fileListItem->tags == 0 || fileListItem->tags->artist.isEmpty() ) ? i18n("Unknown Artist") : fileListItem->tags->artist; artist.replace("/",","); path.replace( "$replace_by_artist$", artist ); QString album = ( fileListItem->tags == 0 || fileListItem->tags->album.isEmpty() ) ? i18n("Unknown Album") : fileListItem->tags->album; album.replace("/",","); path.replace( "$replace_by_album$", album ); QString comment = ( fileListItem->tags == 0 || fileListItem->tags->comment.isEmpty() ) ? i18n("No Comment") : fileListItem->tags->comment; comment.replace("/",","); path.replace( "$replace_by_comment$", comment ); QString disc = ( fileListItem->tags == 0 ) ? "0" : QString().sprintf("%i",fileListItem->tags->disc); path.replace( "$replace_by_disc$", disc ); QString genre = ( fileListItem->tags == 0 || fileListItem->tags->genre.isEmpty() ) ? i18n("Unknown Genre") : fileListItem->tags->genre; genre.replace("/",","); path.replace( "$replace_by_genre$", genre ); QString track = ( fileListItem->tags == 0 ) ? "00" : QString().sprintf("%02i",fileListItem->tags->track); path.replace( "$replace_by_track$", track ); QString composer = ( fileListItem->tags == 0 || fileListItem->tags->composer.isEmpty() ) ? i18n("Unknown Composer") : fileListItem->tags->composer; composer.replace("/",","); path.replace( "$replace_by_composer$", composer ); QString title = ( fileListItem->tags == 0 || fileListItem->tags->title.isEmpty() ) ? i18n("Unknown Title") : fileListItem->tags->title; title.replace("/",","); path.replace( "$replace_by_title$", title ); QString year = ( fileListItem->tags == 0 ) ? "0000" : QString().sprintf("%04i",fileListItem->tags->year); path.replace( "$replace_by_year$", year ); QString filename = fileName.left( fileName.lastIndexOf(".") ); filename.replace("/",","); path.replace( "$replace_by_filename$", filename ); if( config->data.general.useVFATNames || options->outputFilesystem == "vfat" ) path = vfatPath( path ); if( options->outputFilesystem == "ntfs" ) path = ntfsPath( path ); url = KUrl( path + "." + extension ); if( config->data.general.conflictHandling == Config::Data::General::NewFileName ) url = uniqueFileName( url, usedOutputNames ); return url; } else if( options->outputDirectoryMode == CopyStructure ) { QString basePath = options->outputDirectory; QString originalPath = fileListItem->url.pathOrUrl(); int cutpos = basePath.length(); while( basePath.left(cutpos) != originalPath.left(cutpos) ) { cutpos = basePath.lastIndexOf( '/', cutpos - 1 ); } // At this point, basePath and originalPath overlap on the left for cutpos characters (which might be 0). path = basePath+originalPath.mid(cutpos); if( config->data.general.useVFATNames || options->outputFilesystem == "vfat" ) path = vfatPath( path ); if( options->outputFilesystem == "ntfs" ) path = ntfsPath( path ); url = changeExtension( KUrl(path), extension ); if( config->data.general.conflictHandling == Config::Data::General::NewFileName ) url = uniqueFileName( url, usedOutputNames ); return url; } else // SourceDirectory { path = fileListItem->url.toLocalFile(); url = changeExtension( KUrl(path), extension ); if( config->data.general.conflictHandling == Config::Data::General::NewFileName ) url = uniqueFileName( url, usedOutputNames ); return url; } } KUrl OutputDirectory::changeExtension( const KUrl& url, const QString& extension ) { KUrl newUrl = url; QString fileName = newUrl.fileName(); fileName = newUrl.fileName().left( newUrl.fileName().lastIndexOf(".")+1 ) + extension; newUrl.setFileName( fileName ); return newUrl; } KUrl OutputDirectory::uniqueFileName( const KUrl& url, const QStringList& usedOutputNames ) { KUrl uniqueUrl = url; while( QFile::exists(uniqueUrl.toLocalFile()) || usedOutputNames.contains(uniqueUrl.toLocalFile()) ) { QString fileName = uniqueUrl.fileName(); fileName = fileName.left( fileName.lastIndexOf(".")+1 ) + i18nc("will be appended to the filename if a file with the same name already exists","new") + fileName.mid( fileName.lastIndexOf(".") ); uniqueUrl.setFileName( fileName ); } return uniqueUrl; } KUrl OutputDirectory::makePath( const KUrl& url ) { QFileInfo fileInfo( url.toLocalFile() ); QStringList dirs = fileInfo.absoluteDir().absolutePath().split( "/" ); QString mkDir; QDir dir; for( QStringList::Iterator it = dirs.begin(); it != dirs.end(); ++it ) { mkDir += "/" + *it; dir.setPath( mkDir ); if( !dir.exists() ) dir.mkdir( mkDir ); } return url; } // from amarok 2.3.0 // copyright : (C) 2010 by Amarok developers // web : amarok.kde.org QString OutputDirectory::vfatPath( const QString& path ) { QString s = path; if( QDir::separator() == '/' ) // we are on *nix, \ is a valid character in file or directory names, NOT the dir separator s.replace( '\\', '_' ); else s.replace( '/', '_' ); // on windows we have to replace / instead for( int i = 0; i < s.length(); i++ ) { QChar c = s[ i ]; if( c < QChar(0x20) || c == QChar(0x7F) // 0x7F = 127 = DEL control character || c=='*' || c=='?' || c=='<' || c=='>' || c=='|' || c=='"' || c==':' ) c = '_'; else if( c == '[' ) c = '('; else if ( c == ']' ) c = ')'; s[ i ] = c; } /* beware of reserved device names */ uint len = s.length(); if( len == 3 || (len > 3 && s[3] == '.') ) { QString l = s.left(3).toLower(); if( l=="aux" || l=="con" || l=="nul" || l=="prn" ) s = '_' + s; } else if( len == 4 || (len > 4 && s[4] == '.') ) { QString l = s.left(3).toLower(); QString d = s.mid(3,1); if( (l=="com" || l=="lpt") && (d=="0" || d=="1" || d=="2" || d=="3" || d=="4" || d=="5" || d=="6" || d=="7" || d=="8" || d=="9") ) s = '_' + s; } // "clock$" is only allowed WITH extension, according to: // http://en.wikipedia.org/w/index.php?title=Filename&oldid=303934888#Comparison_of_file_name_limitations if( QString::compare( s, "clock$", Qt::CaseInsensitive ) == 0 ) s = '_' + s; /* max path length of Windows API */ s = s.left(255); /* whitespace at the end of folder/file names or extensions are bad */ len = s.length(); if( s[len-1] == ' ' ) s[len-1] = '_'; int extensionIndex = s.lastIndexOf( '.' ); // correct trailing spaces in file name itself if( ( s.length() > 1 ) && ( extensionIndex > 0 ) ) if( s.at( extensionIndex - 1 ) == ' ' ) s[extensionIndex - 1] = '_'; for( int i = 1; i < s.length(); i++ ) // correct trailing whitespace in folder names { if( ( s.at( i ) == QDir::separator() ) && ( s.at( i - 1 ) == ' ' ) ) s[i - 1] = '_'; } return s; } QString OutputDirectory::ntfsPath( const QString& path ) { QString s = path; if( QDir::separator() == '/' ) // we are on *nix, \ is a valid character in file or directory names, NOT the dir separator s.replace( '\\', '_' ); else s.replace( '/', '_' ); // on windows we have to replace / instead for( int i = 0; i < s.length(); i++ ) { QChar c = s[ i ]; if( c=='*' || c=='?' || c=='<' || c=='>' || c=='|' || c=='"' || c==':' ) c = '_'; s[ i ] = c; } /* max path length of Windows API */ s = s.left(255); return s; } void OutputDirectory::selectDir() { QString dir = cDir->currentText(); QString startDir = dir; QString params; int i = dir.indexOf( QRegExp("%[aAbBcCdDfFgGnNpPtTyY]{1,1}") ); if( i != -1 && cMode->currentIndex() == 0 ) { i = dir.lastIndexOf( "/", i ); startDir = dir.left( i ); params = dir.mid( i ); } QString directory = KFileDialog::getExistingDirectory( startDir, this, i18n("Choose an output directory") ); if( !directory.isEmpty() ) { if( i != -1 && cMode->currentIndex() == 0 ) { cDir->setEditText( directory + params ); } else { cDir->setEditText( directory ); } emit directoryChanged( cDir->currentText() ); } } void OutputDirectory::gotoDir() { QString startDir = cDir->currentText(); int i = startDir.indexOf( QRegExp("%[aAbBcCdDfFgGnNpPtTyY]{1,1}") ); if( i != -1 ) { i = startDir.lastIndexOf( "/", i ); startDir = startDir.left( i ); } QProcess::startDetached( "dolphin", QStringList(startDir) ); } void OutputDirectory::modeChangedSlot( int mode ) { config->data.general.lastOutputDirectoryMode = mode; disconnect( cDir, SIGNAL(editTextChanged(const QString&)), 0, 0 ); updateMode( (Mode)mode ); connect( cDir, SIGNAL(editTextChanged(const QString&)), this, SLOT(directoryChangedSlot(const QString&)) ); emit modeChanged( mode ); } void OutputDirectory::updateMode( Mode mode ) { if( mode == MetaData ) { cDir->clear(); cDir->addItems( config->data.general.lastMetaDataOutputDirectoryPaths ); cDir->setEditText( config->data.general.metaDataOutputDirectory ); cDir->setEnabled( true ); pDirSelect->setEnabled( true ); pDirGoto->setEnabled( true ); cMode->setToolTip( i18n("Name all converted files according to the specified pattern") ); cDir->setToolTip( i18n("The following strings are wildcards that will be replaced\nby the information in the meta data:\n\n" "%a - Artist\n%b - Album\n%c - Comment\n%d - Disc number\n%g - Genre\n%n - Track number\n%p - Composer\n%t - Title\n%y - Year\n%f - Original file name\n\n" "You may parenthesize these wildcards and surrounding characters with squared brackets ('[' and ']')\nso they will be ignored if the replacement value is empty.\n" "In order to use squared brackets you will have to escape them with a backslash ('\\[' and '\\]').") ); } else if( mode == Source ) { cDir->clear(); cDir->setEditText( "" ); cDir->setEnabled( false ); pDirSelect->setEnabled( false ); pDirGoto->setEnabled( false ); cMode->setToolTip( i18n("Output all converted files into the same directory as the original files") ); cDir->setToolTip(""); } else if( mode == Specify ) { cDir->clear(); cDir->addItems( config->data.general.lastNormalOutputDirectoryPaths ); cDir->setEditText( config->data.general.specifyOutputDirectory ); cDir->setEnabled( true ); pDirSelect->setEnabled( true ); pDirGoto->setEnabled( true ); cMode->setToolTip( i18n("Output all converted files into the specified output directory") ); cDir->setToolTip(""); } else if( mode == CopyStructure ) { cDir->clear(); cDir->addItems( config->data.general.lastNormalOutputDirectoryPaths ); cDir->setEditText( config->data.general.copyStructureOutputDirectory ); cDir->setEnabled( true ); pDirSelect->setEnabled( true ); pDirGoto->setEnabled( true ); cMode->setToolTip( i18n("Copy the whole directory structure for all converted files") ); cDir->setToolTip(""); } // Prevent the directory combo box from beeing too wide because of the directory history cDir->setMinimumWidth( 200 ); cDir->view()->setMinimumWidth( cDir->view()->sizeHintForColumn(0) ); } void OutputDirectory::directoryChangedSlot( const QString& directory ) { Mode mode = (Mode)cMode->currentIndex(); if( mode == MetaData ) config->data.general.metaDataOutputDirectory = directory; else if( mode == Specify ) config->data.general.specifyOutputDirectory = directory; else if( mode == CopyStructure ) config->data.general.copyStructureOutputDirectory = directory; emit directoryChanged( directory ); } /*void OutputDirectory::modeInfo() { int mode = cMode->currentItem(); QString sModeString = cMode->currentText(); if( (Mode)mode == Default ) { KMessageBox::information( this, i18n("This will output each file into the soundKonverter default directory."), QString(i18n("Mode")+": ").append(sModeString) ); } else if( (Mode)mode == Source ) { KMessageBox::information( this, i18n("This will output each file into the same directory as the original file."), QString(i18n("Mode")+": ").append(sModeString) ); } else if( (Mode)mode == Specify ) { KMessageBox::information( this, i18n("This will output each file into the directory specified in the editbox behind."), QString(i18n("Mode")+": ").append(sModeString) ); } else if( (Mode)mode == MetaData ) { KMessageBox::information( this, i18n("This will output each file into a directory, which is created based on the metadata in the audio files. Select a directory, where the new directories should be created."), QString(i18n("Mode")+": ").append(sModeString) ); } else if( (Mode)mode == CopyStructure ) { KMessageBox::information( this, i18n("This will output each file into a directory, which is created based on the name of the original directory. So you can copy a whole directory structure, in one you have the original files, in the other the converted."), QString(i18n("Mode")+": ").append(sModeString) ); } else { KMessageBox::error( this, i18n("This mode (%s) doesn't exist.", sModeString), QString(i18n("Mode")+": ").append(sModeString) ); } }*/ ./soundkonverter-2.0.5/PaxHeaders.25599/filelistitem.h0000644000175000001440000000006212105142352020643 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.821402521 ./soundkonverter-2.0.5/filelistitem.h0000644000175000001440000000524112105142352020256 0ustar00danielusers00000000000000 #ifndef FILELISTITEM_H #define FILELISTITEM_H #include "metadata/tagengine.h" #include #include #include #include #include /** @author Daniel Faust */ class FileListItem : public QTreeWidgetItem { public: enum State { WaitingForConversion, Ripping, Converting, ApplyingReplayGain, WaitingForAlbumGain, ApplyingAlbumGain, Stopped }; // code values will be displayed in the log files enum ReturnCode { Succeeded = 0, SucceededWithProblems = 1, StoppedByUser = 2, Skipped = 3, BackendNeedsConfiguration = 4, DiscFull = 5, Failed = 6 }; FileListItem( QTreeWidget *parent ); FileListItem( QTreeWidget *parent, QTreeWidgetItem *after ); ~FileListItem(); int conversionOptionsId; TagData *tags; // we need to instruct the tagengine to read the tags from the file! // and the user can change them! KUrl url; // the original input file path name // KUrl outputUrl; // if the user wants to change the output directory/file name per file QString codecName; // the codec name of the input file State state; // is this item being converted or ripper or etc. ReturnCode returnCode; // what's the return code of the conversion bool local; // is this a local file? int track; // the number of the track, if it is on an audio cd // if it is lower than 0, it isn't an audio cd track at all int tracks; // the total amount of tracks on the cd QString device; // the device of the audio cd float length; // the length of the track, used for the calculation of the progress bar QString notifyCommand; // execute this command, when the file is converted (%i=input file, %o=output file) int logId; // the id the item is registered at the logger with, 0 if the conversion hasn't started yet QWeakPointer lInfo; // a pointer to button to show additional information (e.g. error log). if no butotn shall be shown the pointer must be 0 }; class FileListItemDelegate : public QItemDelegate { public: FileListItemDelegate( QObject *parent = 0 ); virtual void paint( QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/filelist.h0000644000175000001440000000006212105142352017764 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.821402521 ./soundkonverter-2.0.5/filelist.h0000755000175000001440000001162312105142352017403 0ustar00danielusers00000000000000 #ifndef FILELIST_H #define FILELIST_H #include #include "filelistitem.h" #include // #include class FileListItem; class Config; class Logger; class TagEngine; class OptionsEditor; class OptionsLayer; class ConversionOptions; class QMenu; class KAction; class QProgressBar; /** * @short The file list * @author Daniel Faust * @version 0.3 */ class FileList : public QTreeWidget { Q_OBJECT public: enum Columns { Column_State = 0, Column_Input = 1, Column_Output = 2, Column_Quality = 3 }; /** Constructor */ FileList( Logger *_logger, Config *_config, QWidget *parent = 0 ); /** Destructor */ ~FileList(); FileListItem *topLevelItem( int index ) const { return static_cast( QTreeWidget::topLevelItem(index) ); } // FileListItem *itemAbove( FileListItem* item ) const { return static_cast( QTreeWidget::itemAbove(item) ); } // FileListItem *itemBelow( FileListItem* item ) const { return static_cast( QTreeWidget::itemBelow(item) ); } void setOptionsLayer( OptionsLayer *_optionsLayer ) { optionsLayer = _optionsLayer; } void load( bool user = false ); void updateAllItems(); // Gets triggered if the configuration changes and the file list needs to be updated void updateItem( FileListItem *item ); bool waitForAlbumGain( FileListItem *item ); private: /** Counts all files in a directory */ int countDir( const QString& directory, bool recursive, int count = 0 ); /** Lists all files in a directory and adds them to the file list */ int listDir( const QString& directory, const QStringList& filter, bool recursive, int conversionOptionsId, int count = 0 ); /** A progressbar, that is shown, when a directory is added recursive */ QProgressBar *pScanStatus; /** Update timer for the scan status */ QTime tScanStatus; // debug // int TimeCount; // QTime Time; void convertNextItem(); int waitingCount(); int convertingCount(); // qulonglong spaceLeftForDirectory( const QString& dir ); // QStringList fullDiscs; // a list of mount points with volumes that don't have enougth space left QList selectedFiles; void dragEnterEvent( QDragEnterEvent *event ); void dropEvent( QDropEvent *event ); void resizeEvent( QResizeEvent *event ); bool queue; Logger *logger; Config *config; TagEngine *tagEngine; OptionsEditor *optionsEditor; OptionsLayer *optionsLayer; QMenu *contextMenu; KAction *editAction; KAction *startAction; KAction *stopAction; KAction *removeAction; // KAction* paste; private slots: void showContextMenu( const QPoint& point ); void showOptionsEditorDialog(); void removeSelectedItems(); void convertSelectedItems(); void killSelectedItems(); void itemsSelected(); // connected to OptionsEditor void updateItems( QList items ); void selectPreviousItem(); void selectNextItem(); void showLogClicked( const QString& logIdString ); public slots: // connected to soundKonverterView void addFiles( const KUrl::List& fileList, ConversionOptions *conversionOptions, const QString& notifyCommand = "", const QString& _codecName = "", int conversionOptionsId = -1 ); void addDir( const KUrl& directory, bool recursive, const QStringList& codecList, ConversionOptions *conversionOptions ); void addTracks( const QString& device, QList trackList, int tracks, QList tagList, ConversionOptions *conversionOptions, const QString& notifyCommand = "" ); void startConversion(); void killConversion(); void stopConversion(); void continueConversion(); void save( bool user = false ); // connected to Convert /** The conversion of an item has finished and the state is reported */ void itemFinished( FileListItem *item, FileListItem::ReturnCode returnCode, bool waitingForAlbumGain = false ); /** The ripping of a track has finished, so the device is free for ripping the next track */ void rippingFinished( const QString& device ); signals: // connected to ProgressIndicator void timeChanged( float timeDelta ); void finished( bool ); // connected to soundKonverterView void fileCountChanged( int count ); void conversionStarted(); void conversionStopped( bool failed ); void queueModeChanged( bool enabled ); void showLog( const int logId ); // void stopClicked(); // void continueClicked(); // connected to Convert void convertItem( FileListItem* ); void killItem( FileListItem* ); void replaygainItems( QList ); // connected to OptionsEditor void editItems( QList ); void setPreviousItemEnabled( bool ); void setNextItemEnabled( bool ); void itemRemoved( FileListItem* ); }; #endif // FILELIST_H ./soundkonverter-2.0.5/PaxHeaders.25599/metadata0000644000175000001440000000012012255307114017503 xustar000000000000000030 mtime=1387630156.756609415 20 atime=1357667220 30 ctime=1387631579.845402221 ./soundkonverter-2.0.5/metadata/0000755000175000001440000000000012255307114017176 5ustar00danielusers00000000000000./soundkonverter-2.0.5/metadata/PaxHeaders.25599/MetaReplayGain.h0000644000175000001440000000006211507653544022612 xustar000000000000000020 atime=1357667574 30 ctime=1387631579.845402221 ./soundkonverter-2.0.5/metadata/MetaReplayGain.h0000644000175000001440000000422011507653544022221 0ustar00danielusers00000000000000/**************************************************************************************** * Copyright (c) 2009 Alex Merry * * Modyfied by Daniel Faust * * * * This program is free software; you can redistribute it and/or modify it under * * the terms of the GNU General Public License as published by the Free Software * * Foundation; either version 2 of the License, or (at your option) any later * * version. * * * * This program is distributed in the hope that it will be useful, but WITHOUT ANY * * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * * PARTICULAR PURPOSE. See the GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License along with * * this program. If not, see . * ****************************************************************************************/ #ifndef AMAROK_METAREPLAYGAIN_H #define AMAROK_METAREPLAYGAIN_H #include // Taglib #include /* This file exists (rather than putting the method in MetaUtility.h and * MetaUtility.cpp) because we need to share the implementation between * amaroklib and amarokcollectionscanner (which doesn't link to amaroklib). */ namespace Meta { enum ReplayGainTag { ReplayGain_Track_Gain, ReplayGain_Track_Peak, ReplayGain_Album_Gain, ReplayGain_Album_Peak }; typedef QMap ReplayGainTagMap; /** * Reads the replay gain tags from a taglib file. */ ReplayGainTagMap readReplayGainTags( TagLib::FileRef fileref ); } #endif // AMAROK_METAREPLAYGAIN_H ./soundkonverter-2.0.5/metadata/PaxHeaders.25599/tagengine.h0000644000175000001440000000013212255306740021701 xustar000000000000000030 mtime=1387630048.453963384 30 atime=1387630048.453963384 30 ctime=1387631579.845402221 ./soundkonverter-2.0.5/metadata/tagengine.h0000755000175000001440000000675712255306740021336 0ustar00danielusers00000000000000 #ifndef TAGENGINE_H #define TAGENGINE_H #include #include class Config; class CoverData : public QObject { public: /*! * This describes the function or content of the picture. * copyright: (C) 2002 - 2008 by Scott Wheeler */ enum Role { //! A type not enumerated below Other = 0x00, //! 32x32 PNG image that should be used as the file icon FileIcon = 0x01, //! File icon of a different size or format OtherFileIcon = 0x02, //! Front cover image of the album FrontCover = 0x03, //! Back cover image of the album BackCover = 0x04, //! Inside leaflet page of the album LeafletPage = 0x05, //! Image from the album itself Media = 0x06, //! Picture of the lead artist or soloist LeadArtist = 0x07, //! Picture of the artist or performer Artist = 0x08, //! Picture of the conductor Conductor = 0x09, //! Picture of the band or orchestra Band = 0x0A, //! Picture of the composer Composer = 0x0B, //! Picture of the lyricist or text writer Lyricist = 0x0C, //! Picture of the recording location or studio RecordingLocation = 0x0D, //! Picture of the artists during recording DuringRecording = 0x0E, //! Picture of the artists during performance DuringPerformance = 0x0F, //! Picture from a movie or video related to the track MovieScreenCapture = 0x10, //! Picture of a large, coloured fish ColouredFish = 0x11, //! Illustration related to the track Illustration = 0x12, //! Logo of the band or performer BandLogo = 0x13, //! Logo of the publisher (record company) PublisherLogo = 0x14 }; CoverData( const QByteArray& _data = QByteArray(), const QString& _mimyType = QString::null, Role _role = Other, const QString& _description = QString::null, QObject *parent = 0 ); ~CoverData(); QByteArray data; QString mimeType; Role role; QString description; static QString roleName( Role role ); }; class TagData : public QObject { Q_OBJECT public: TagData(); ~TagData(); /** The tags */ QString artist; QString composer; QString album; QString title; QString genre; QString comment; short track; short trackTotal; short disc; short discTotal; short year; float trackGain; float albumGain; QString musicBrainzTrackId; QString musicBrainzReleaseId; /** Covers */ QList covers; enum TagsRead { TrackGain = 0x01, AlbumGain = 0x02, Covers = 0x04 } tagsRead; /** The technical information */ int length; int samplingRate; }; class TagEngine { public: TagEngine( Config *_config ); ~TagEngine(); /** A list of all genre */ QStringList genreList; TagData* readTags( const KUrl& fileName ); bool writeTags( const KUrl& fileName, TagData *tagData ); QList readCovers( const KUrl& fileName ); bool writeCovers( const KUrl& fileName, QList covers ); bool writeCoversToDirectory( const QString& directoryName, TagData *tags ); private: Config *config; }; #endif // TAGENGINE_H ./soundkonverter-2.0.5/metadata/PaxHeaders.25599/tagengine.cpp0000644000175000001440000000013212255307114022230 xustar000000000000000030 mtime=1387630156.756609415 30 atime=1387630156.756609415 30 ctime=1387631579.845402221 ./soundkonverter-2.0.5/metadata/tagengine.cpp0000755000175000001440000015321012255307114021650 0ustar00danielusers00000000000000 #include "tagengine.h" #include "MetaReplayGain.h" #include "config.h" #include #include #include #include #include #include //used to load genre list #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Taglib added support for FLAC pictures in 1.7.0 #if (TAGLIB_MAJOR_VERSION > 1) || (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION >= 7) # define TAGLIB_HAS_FLAC_PICTURELIST # define TAGLIB_HAS_ASF_PICTURE #endif CoverData::CoverData( const QByteArray& _data, const QString& _mimyType, Role _role, const QString& _description, QObject *parent ) : QObject( parent ) { data = _data; mimeType = _mimyType; role = _role; description = _description; } CoverData::~CoverData() {} QString CoverData::roleName( Role role ) { switch( role ) { case Other: return i18nc("cover type","Unclassified"); case FileIcon: return i18nc("cover type","32x32 PNG file icon"); case OtherFileIcon: return i18nc("cover type","File icon"); case FrontCover: return i18nc("cover type","Front cover"); case BackCover: return i18nc("cover type","Back cover"); case LeafletPage: return i18nc("cover type","Leaflet page"); case Media: return i18nc("cover type","CD photo"); case LeadArtist: return i18nc("cover type","Lead artist picture"); case Artist: return i18nc("cover type","Artist picture"); case Conductor: return i18nc("cover type","Conductor picture"); case Band: return i18nc("cover type","Band picture"); case Composer: return i18nc("cover type","Composer picture"); case Lyricist: return i18nc("cover type","Lyricist picture"); case RecordingLocation: return i18nc("cover type","Picture of the recording location"); case DuringRecording: return i18nc("cover type","Picture of the artists during recording"); case DuringPerformance: return i18nc("cover type","Picture of the artists during performance"); case MovieScreenCapture: return i18nc("cover type","Picture from a video"); case ColouredFish: return i18nc("cover type","Picture of a large, coloured fish"); case Illustration: return i18nc("cover type","Illustration related to the track"); case BandLogo: return i18nc("cover type","Band logo"); case PublisherLogo: return i18nc("cover type","Publisher logo"); } return QString(); } TagData::TagData() { track = 0; trackTotal = 0; disc = 0; discTotal = 0; year = 0; trackGain = 0; albumGain = 0; tagsRead = TagsRead(0); length = 0; samplingRate = 0; } TagData::~TagData() { qDeleteAll( covers ); } TagEngine::TagEngine( Config *_config ) : config( _config ) { TagLib::StringList genres = TagLib::ID3v1::genreList(); for( TagLib::StringList::ConstIterator it = genres.begin(), end = genres.end(); it != end; ++it ) genreList += TStringToQString( (*it) ); genreList.sort(); } TagEngine::~TagEngine() {} TagData* TagEngine::readTags( const KUrl& fileName ) { TagLib::FileRef fileref( fileName.pathOrUrl().toLocal8Bit() ); if( !fileref.isNull() ) { TagData *tagData = new TagData(); TagLib::Tag *tag = fileref.tag(); if( tag ) { tagData->title = TStringToQString( tag->title() ); tagData->artist = TStringToQString( tag->artist() ); tagData->album = TStringToQString( tag->album() ); tagData->genre = TStringToQString( tag->genre() ); if( TagLib::Ogg::Vorbis::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->tag() ) { const QString preferredOggVorbisCommentTag = config->data.general.preferredVorbisCommentCommentTag; const QString otherOggVorbisCommentTag = ( preferredOggVorbisCommentTag == "COMMENT" ) ? "DESCRIPTION" : "COMMENT"; if( tag && tag->fieldListMap().contains(TagLib::String(preferredOggVorbisCommentTag.toUtf8().data(),TagLib::String::UTF8)) ) tagData->comment = TStringToQString( tag->fieldListMap()[TagLib::String(preferredOggVorbisCommentTag.toUtf8().data(), TagLib::String::UTF8)].front() ); else if( tag && tag->fieldListMap().contains(TagLib::String(otherOggVorbisCommentTag.toUtf8().data(),TagLib::String::UTF8)) ) tagData->comment = TStringToQString( tag->fieldListMap()[TagLib::String(otherOggVorbisCommentTag.toUtf8().data(), TagLib::String::UTF8)].front() ); } } else if( TagLib::FLAC::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->xiphComment() ) { const QString preferredOggVorbisCommentTag = config->data.general.preferredVorbisCommentCommentTag; const QString otherOggVorbisCommentTag = ( preferredOggVorbisCommentTag == "COMMENT" ) ? "DESCRIPTION" : "COMMENT"; if( tag && tag->fieldListMap().contains(TagLib::String(preferredOggVorbisCommentTag.toUtf8().data(),TagLib::String::UTF8)) ) tagData->comment = TStringToQString( tag->fieldListMap()[TagLib::String(preferredOggVorbisCommentTag.toUtf8().data(), TagLib::String::UTF8)].front() ); else if( tag && tag->fieldListMap().contains(TagLib::String(otherOggVorbisCommentTag.toUtf8().data(),TagLib::String::UTF8)) ) tagData->comment = TStringToQString( tag->fieldListMap()[TagLib::String(otherOggVorbisCommentTag.toUtf8().data(), TagLib::String::UTF8)].front() ); } } else { tagData->comment = TStringToQString( tag->comment() ); } tagData->track = tag->track(); tagData->year = tag->year(); } TagLib::AudioProperties *audioProperties = fileref.audioProperties(); if( audioProperties ) { tagData->length = audioProperties->length(); tagData->samplingRate = audioProperties->sampleRate(); } Meta::ReplayGainTagMap replayGainTags = Meta::readReplayGainTags( fileref ); if( replayGainTags.contains(Meta::ReplayGain_Track_Gain) ) { tagData->trackGain = replayGainTags[ Meta::ReplayGain_Track_Gain ]; tagData->tagsRead = TagData::TagsRead(tagData->tagsRead | TagData::TrackGain); } if( replayGainTags.contains(Meta::ReplayGain_Album_Gain) ) { tagData->albumGain = replayGainTags[ Meta::ReplayGain_Album_Gain ]; tagData->tagsRead = TagData::TagsRead(tagData->tagsRead | TagData::AlbumGain); } QString track; QString disc; if( TagLib::MPEG::File *file = dynamic_cast(fileref.file()) ) { // TCMP : Compilation (true,1 vs. false,0) // POPM : rating, playcount // TXXX : TagLib::ID3v2::UserTextIdentificationFrame // APIC : TagLib::ID3v2::AttachedPictureFrame // UFID : TagLib::ID3v2::UniqueFileIdentifierFrame if( TagLib::ID3v2::Tag *tag = file->ID3v2Tag() ) { if( !tag->frameListMap()["TCOM"].isEmpty() ) tagData->composer = TStringToQString( tag->frameListMap()["TCOM"].front()->toString() ); if( !tag->frameListMap()["TRCK"].isEmpty() ) track = TStringToQString( tag->frameListMap()["TRCK"].front()->toString() ); if( !tag->frameListMap()["TPOS"].isEmpty() ) disc = TStringToQString( tag->frameListMap()["TPOS"].front()->toString() ); TagLib::ID3v2::FrameList ufid = tag->frameListMap()["UFID"]; if( !ufid.isEmpty() ) { for( TagLib::ID3v2::FrameList::Iterator it = ufid.begin(); it != ufid.end(); it++ ) { TagLib::ID3v2::UniqueFileIdentifierFrame *frame = dynamic_cast(*it); if( frame && frame->owner() == "http://musicbrainz.org" ) { const TagLib::ByteVector id = frame->identifier(); tagData->musicBrainzTrackId = QString::fromAscii( id.data(), id.size() ); } } } // Not tested - what about MusicBrainz Album Ids? // if( tagData->musicBrainzTrackId.isEmpty() ) // { // // foobar2k // TagLib::ID3v2::UserTextIdentificationFrame *frame = TagLib::ID3v2::UserTextIdentificationFrame::find( tag, "MUSICBRAINZ_TRACKID" ); // if( frame ) // { // const TagLib::StringList texts = frame->fieldList(); // if( texts.size() > 1) // { // tagData->musicBrainzTrackId = TStringToQString( texts[1] ); // } // } // } TagLib::ID3v2::UserTextIdentificationFrame *frame = TagLib::ID3v2::UserTextIdentificationFrame::find( tag, "MusicBrainz Album Id" ); if( frame ) { const TagLib::StringList texts = frame->fieldList(); if( texts.size() > 1) { tagData->musicBrainzReleaseId = TStringToQString( texts[1] ); } } } } else if( TagLib::Ogg::Vorbis::File *file = dynamic_cast(fileref.file()) ) { // COMPILATION (1 vs. 0) if( TagLib::Ogg::XiphComment *tag = file->tag() ) { if( !tag->fieldListMap()["COMPOSER"].isEmpty() ) tagData->composer = TStringToQString( tag->fieldListMap()["COMPOSER"].front() ); if( !tag->fieldListMap()["TRACKTOTAL"].isEmpty() ) // used by EasyTag tagData->trackTotal = TStringToQString( tag->fieldListMap()["TRACKTOTAL"].front() ).toInt(); else if( !tag->fieldListMap()["TOTALTRACKS"].isEmpty() ) tagData->trackTotal = TStringToQString( tag->fieldListMap()["TOTALTRACKS"].front() ).toInt(); else if( !tag->fieldListMap()["TRACKNUMBER"].isEmpty() ) track = TStringToQString( tag->fieldListMap()["TRACKNUMBER"].front() ); if( !tag->fieldListMap()["DISCNUMBER"].isEmpty() ) // used by Kid3, EasyTag disc = TStringToQString( tag->fieldListMap()["DISCNUMBER"].front() ); if( !tag->fieldListMap()["DISCTOTAL"].isEmpty() ) tagData->discTotal = TStringToQString( tag->fieldListMap()["DISCTOTAL"].front() ).toInt(); else if( !tag->fieldListMap()["TOTALDISCS"].isEmpty() ) tagData->discTotal = TStringToQString( tag->fieldListMap()["TOTALDISCS"].front() ).toInt(); if( !tag->fieldListMap()["MUSICBRAINZ_TRACKID"].isEmpty() ) tagData->musicBrainzTrackId = TStringToQString( tag->fieldListMap()["MUSICBRAINZ_TRACKID"].front() ); if( !tag->fieldListMap()["MUSICBRAINZ_ALBUMID"].isEmpty() ) tagData->musicBrainzReleaseId = TStringToQString( tag->fieldListMap()["MUSICBRAINZ_ALBUMID"].front() ); } } else if( TagLib::FLAC::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->xiphComment() ) { if( !tag->fieldListMap()["COMPOSER"].isEmpty() ) tagData->composer = TStringToQString( tag->fieldListMap()["COMPOSER"].front() ); if( !tag->fieldListMap()["TRACKTOTAL"].isEmpty() ) // used by EasyTag tagData->trackTotal = TStringToQString( tag->fieldListMap()["TRACKTOTAL"].front() ).toInt(); else if( !tag->fieldListMap()["TOTALTRACKS"].isEmpty() ) tagData->trackTotal = TStringToQString( tag->fieldListMap()["TOTALTRACKS"].front() ).toInt(); else if( !tag->fieldListMap()["TRACKNUMBER"].isEmpty() ) // used by Kid3 track = TStringToQString( tag->fieldListMap()["TRACKNUMBER"].front() ); if( !tag->fieldListMap()["DISCNUMBER"].isEmpty() ) // used by Kid3, EasyTag disc = TStringToQString( tag->fieldListMap()["DISCNUMBER"].front() ); if( !tag->fieldListMap()["DISCTOTAL"].isEmpty() ) tagData->discTotal = TStringToQString( tag->fieldListMap()["DISCTOTAL"].front() ).toInt(); else if( !tag->fieldListMap()["TOTALDISCS"].isEmpty() ) tagData->discTotal = TStringToQString( tag->fieldListMap()["TOTALDISCS"].front() ).toInt(); if( !tag->fieldListMap()["MUSICBRAINZ_TRACKID"].isEmpty() ) tagData->musicBrainzTrackId = TStringToQString( tag->fieldListMap()["MUSICBRAINZ_TRACKID"].front() ); if( !tag->fieldListMap()["MUSICBRAINZ_ALBUMID"].isEmpty() ) tagData->musicBrainzReleaseId = TStringToQString( tag->fieldListMap()["MUSICBRAINZ_ALBUMID"].front() ); } } else if( TagLib::MP4::File *file = dynamic_cast(fileref.file()) ) { // cpil : Compilation (true vs. false) if( TagLib::MP4::Tag *tag = file->tag() ) { TagLib::MP4::ItemListMap map = tag->itemListMap(); for( TagLib::MP4::ItemListMap::ConstIterator it = map.begin(); it != map.end(); ++it ) { if( it->first == "\xA9wrt" ) { tagData->composer = TStringToQString( it->second.toStringList().front() ); } else if( it->first == "trkn" ) { tagData->trackTotal = it->second.toIntPair().second; } else if( it->first == "disk" ) { tagData->disc = it->second.toIntPair().first; tagData->discTotal = it->second.toIntPair().second; } // else if( it->first == "\xA9lyr" ) // { // tagData->comment = TStringToQString( it->second.toStringList().front() ); // } else if( it->first == "----:com.apple.iTunes:MusicBrainz Track Id" ) { tagData->musicBrainzTrackId = TStringToQString( it->second.toStringList().front() ); } else if( it->first == "----:com.apple.iTunes:MusicBrainz Album Id" ) { tagData->musicBrainzReleaseId = TStringToQString( it->second.toStringList().front() ); } } } } else if( TagLib::ASF::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::ASF::Tag *tag = file->tag() ) { TagLib::ASF::AttributeListMap map = tag->attributeListMap(); for( TagLib::ASF::AttributeListMap::ConstIterator it = map.begin(); it != map.end(); ++it ) { if( !it->second.size() ) continue; if( it->first == "WM/Composer" ) { tagData->composer = TStringToQString( it->second.front().toString() ); } else if( it->first == "WM/TrackNumber" ) { track = TStringToQString( it->second.front().toString() ); } else if( it->first == "WM/PartOfSet" ) { disc = TStringToQString( it->second.front().toString() ); } else if( it->first == "MusicBrainz/Track Id" ) { tagData->musicBrainzTrackId = TStringToQString( it->second.front().toString() ); } else if( it->first == "MusicBrainz/Album Id" ) { tagData->musicBrainzReleaseId = TStringToQString( it->second.front().toString() ); } } } } /*else if( TagLib::MPC::File *file = dynamic_cast( fileref.file() ) ) { if( file->APETag() ) { if( !file->APETag()->itemListMap()[ "REPLAYGAIN_TRACK_GAIN" ].isEmpty() ) trackGain = TStringToQString( file->APETag()->itemListMap()["REPLAYGAIN_TRACK_GAIN"].toString() ); if( !file->APETag()->itemListMap()[ "REPLAYGAIN_ALBUM_GAIN" ].isEmpty() ) albumGain = TStringToQString( file->APETag()->itemListMap()["REPLAYGAIN_ALBUM_GAIN"].toString() ); } }*/ /* else if( TagLib::WavPack::File *file = dynamic_cast( fileref.file() ) ) { if( file->APETag() ) { if( !file->APETag()->itemListMap()[ "REPLAYGAIN_TRACK_GAIN" ].isEmpty() ) trackGain = TStringToQString( file->APETag()->itemListMap()["REPLAYGAIN_TRACK_GAIN"].toString() ); if( !file->APETag()->itemListMap()[ "REPLAYGAIN_ALBUM_GAIN" ].isEmpty() ) albumGain = TStringToQString( file->APETag()->itemListMap()["REPLAYGAIN_ALBUM_GAIN"].toString() ); } }*/ /*else if( TagLib::TTA::File *file = dynamic_cast( fileref.file() ) ) // NOTE writing works, but reading not { if( file->ID3v2Tag() ) { if( !file->ID3v2Tag()->frameListMap()[ "TPOS" ].isEmpty() ) disc = TStringToQString( file->ID3v2Tag()->frameListMap()["TPOS"].front()->toString() ); if( !file->ID3v2Tag()->frameListMap()[ "TCOM" ].isEmpty() ) tagData->composer = TStringToQString( file->ID3v2Tag()->frameListMap()["TCOM"].front()->toString() ); } }*/ if( !track.isEmpty() ) { const int i = track.indexOf('/'); if( i != -1 ) { tagData->trackTotal = track.right( track.count() - i - 1 ).toInt(); } } if( !disc.isEmpty() ) { const int i = disc.indexOf('/'); if( i != -1 ) { tagData->disc = disc.left( i ).toInt(); tagData->discTotal = disc.right( disc.count() - i - 1 ).toInt(); } else { tagData->disc = disc.toInt(); } } return tagData; } return 0; } bool TagEngine::writeTags( const KUrl& fileName, TagData *tagData ) { if( !tagData ) return false; TagLib::FileRef fileref( fileName.pathOrUrl().toLocal8Bit(), false ); //Set default codec to UTF-8 (see bugs 111246 and 111232) TagLib::ID3v2::FrameFactory::instance()->setDefaultTextEncoding( TagLib::String::UTF8 ); if( !fileref.isNull() ) { if( TagLib::Tag *tag = fileref.tag() ) { tag->setTitle( TagLib::String(tagData->title.toUtf8().data(), TagLib::String::UTF8) ); tag->setArtist( TagLib::String(tagData->artist.toUtf8().data(), TagLib::String::UTF8) ); tag->setAlbum( TagLib::String(tagData->album.toUtf8().data(), TagLib::String::UTF8) ); tag->setTrack( tagData->track ); tag->setYear( tagData->year ); if( TagLib::Ogg::Vorbis::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->tag() ) { if( !tagData->comment.isEmpty() ) tag->addField( TagLib::String(config->data.general.preferredVorbisCommentCommentTag.toUtf8().data(), TagLib::String::UTF8), TagLib::String(tagData->comment.toUtf8().data(), TagLib::String::UTF8), true ); } } else if( TagLib::FLAC::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->xiphComment() ) { if( !tagData->comment.isEmpty() && file->xiphComment() ) tag->addField( TagLib::String(config->data.general.preferredVorbisCommentCommentTag.toUtf8().data(), TagLib::String::UTF8), TagLib::String(tagData->comment.toUtf8().data(), TagLib::String::UTF8), true ); } } else { tag->setComment( TagLib::String(tagData->comment.toUtf8().data(), TagLib::String::UTF8) ); } tag->setGenre( TagLib::String(tagData->genre.toUtf8().data(), TagLib::String::UTF8) ); } else { return false; } QString track; if( tagData->trackTotal > 0 ) { track = QString::number(tagData->track) + "/" + QString::number(tagData->trackTotal); } QString disc; if( tagData->disc > 0 ) { disc = QString::number(tagData->disc); if( tagData->discTotal > 0 ) { disc += "/" + QString::number(tagData->discTotal); } } if( TagLib::MPEG::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::ID3v2::Tag *tag = file->ID3v2Tag() ) { if( !tagData->composer.isEmpty() ) { if( !tag->frameListMap()["TCOM"].isEmpty() ) { tag->frameListMap()["TCOM"].front()->setText( TagLib::String(tagData->composer.toUtf8().data(), TagLib::String::UTF8) ); } else { TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame( "TCOM", TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); frame->setText( TagLib::String(tagData->composer.toUtf8().data(), TagLib::String::UTF8) ); tag->addFrame( frame ); } } if( !track.isEmpty() ) { if( !tag->frameListMap()["TRCK"].isEmpty() ) { tag->frameListMap()["TRCK"].front()->setText( TagLib::String(track.toUtf8().data(), TagLib::String::UTF8) ); } else { TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame( "TRCK", TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); frame->setText( TagLib::String(track.toUtf8().data(), TagLib::String::UTF8) ); tag->addFrame( frame ); } } if( !disc.isEmpty() ) { if( !tag->frameListMap()["TPOS"].isEmpty() ) { tag->frameListMap()["TPOS"].front()->setText( TagLib::String(disc.toUtf8().data(), TagLib::String::UTF8) ); } else { TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame( "TPOS", TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); frame->setText( TagLib::String(disc.toUtf8().data(), TagLib::String::UTF8) ); tag->addFrame( frame ); } } if( !tagData->musicBrainzTrackId.isEmpty() ) { TagLib::ID3v2::UniqueFileIdentifierFrame *frame = new TagLib::ID3v2::UniqueFileIdentifierFrame( "http://musicbrainz.org", TagLib::ByteVector(tagData->musicBrainzTrackId.toUtf8().data(), TagLib::String::UTF8) ); tag->addFrame( frame ); } if( !tagData->musicBrainzReleaseId.isEmpty() ) { TagLib::ID3v2::UserTextIdentificationFrame *frame = new TagLib::ID3v2::UserTextIdentificationFrame( TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); frame->setDescription( "MusicBrainz Album Id" ); frame->setText( TagLib::String(tagData->musicBrainzReleaseId.toUtf8().data(), TagLib::String::UTF8) ); tag->addFrame( frame ); } // // HACK sets the id3v2 genre tag as string // if( !tagData->genre.isEmpty() ) // { // if( !tag->frameListMap()["TCON"].isEmpty() ) // { // tag->frameListMap()["TCON"].front()->setText( TagLib::String(tagData->genre.toUtf8().data(), TagLib::String::UTF8) ); // } // else // { // TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame( "TCON", TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); // frame->setText( TagLib::String(tagData->genre.toUtf8().data(), TagLib::String::UTF8) ); // tag->addFrame( frame ); // } // } // // HACK sets the id3 <= v2.3.0 year tag // if( tagData->year > 0 ) // { // if( !tag->frameListMap()["TYER"].isEmpty() ) // { // tag->frameListMap()["TYER"].front()->setText( TagLib::String(QString::number(tagData->year).toUtf8().data(), TagLib::String::UTF8) ); // } // else // { // TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame( "TYER", TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); // frame->setText( TagLib::String(QString::number(tagData->year).toUtf8().data(), TagLib::String::UTF8) ); // tag->addFrame( frame ); // } // } } } else if( TagLib::Ogg::Vorbis::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->tag() ) { if( !tagData->composer.isEmpty() ) { if( tag->contains("COMPOSER") ) tag->removeField("COMPOSER"); tag->addField( "COMPOSER", TagLib::String(tagData->composer.toUtf8().data(), TagLib::String::UTF8), true ); } if( tagData->trackTotal > 0 ) { if( config->data.general.preferredVorbisCommentTrackTotalTag == "TRACKNUMBER" ) { if( tag->contains("TRACKNUMBER") ) tag->removeField("TRACKNUMBER"); tag->addField( "TRACKNUMBER", TagLib::String(track.toUtf8().data(), TagLib::String::UTF8), true ); } else { tag->addField( TagLib::String(config->data.general.preferredVorbisCommentTrackTotalTag.toUtf8().data(), TagLib::String::UTF8), TagLib::String(QString::number(tagData->trackTotal).toUtf8().data(), TagLib::String::UTF8), true ); } } if( tagData->disc > 0 ) { if( tag->contains("DISCNUMBER") ) tag->removeField("DISCNUMBER"); tag->addField( "DISCNUMBER", TagLib::String(QString::number(tagData->disc).toUtf8().data(), TagLib::String::UTF8), true ); } if( tagData->discTotal > 0 ) { if( config->data.general.preferredVorbisCommentDiscTotalTag == "DISCNUMBER" ) { if( tag->contains("DISCNUMBER") ) tag->removeField("DISCNUMBER"); tag->addField( "DISCNUMBER", TagLib::String(disc.toUtf8().data(), TagLib::String::UTF8), true ); } else { tag->addField( TagLib::String(config->data.general.preferredVorbisCommentDiscTotalTag.toUtf8().data(), TagLib::String::UTF8), TagLib::String(QString::number(tagData->discTotal).toUtf8().data(), TagLib::String::UTF8), true ); } } if( !tagData->musicBrainzTrackId.isEmpty() ) { if( tag->contains("MUSICBRAINZ_TRACKID") ) tag->removeField("MUSICBRAINZ_TRACKID"); tag->addField( "MUSICBRAINZ_TRACKID", TagLib::String(tagData->musicBrainzTrackId.toUtf8().data(), TagLib::String::UTF8), true ); } if( !tagData->musicBrainzReleaseId.isEmpty() ) { if( tag->contains("MUSICBRAINZ_ALBUMID") ) tag->removeField("MUSICBRAINZ_ALBUMID"); tag->addField( "MUSICBRAINZ_ALBUMID", TagLib::String(tagData->musicBrainzReleaseId.toUtf8().data(), TagLib::String::UTF8), true ); } } } else if( TagLib::FLAC::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->xiphComment() ) { if( !tagData->composer.isEmpty() ) { if( tag->contains("COMPOSER") ) tag->removeField("COMPOSER"); tag->addField( "COMPOSER", TagLib::String(tagData->composer.toUtf8().data(), TagLib::String::UTF8), true ); } if( tagData->trackTotal > 0 ) { if( config->data.general.preferredVorbisCommentTrackTotalTag == "TRACKNUMBER" ) { if( tag->contains("TRACKNUMBER") ) tag->removeField("TRACKNUMBER"); tag->addField( "TRACKNUMBER", TagLib::String(track.toUtf8().data(), TagLib::String::UTF8), true ); } else { tag->addField( TagLib::String(config->data.general.preferredVorbisCommentTrackTotalTag.toUtf8().data(), TagLib::String::UTF8), TagLib::String(QString::number(tagData->trackTotal).toUtf8().data(), TagLib::String::UTF8), true ); } } if( tagData->disc > 0 ) { if( tag->contains("DISCNUMBER") ) tag->removeField("DISCNUMBER"); tag->addField( "DISCNUMBER", TagLib::String(QString::number(tagData->disc).toUtf8().data(), TagLib::String::UTF8), true ); } if( tagData->discTotal > 0 ) { if( config->data.general.preferredVorbisCommentDiscTotalTag == "DISCNUMBER" ) { if( tag->contains("DISCNUMBER") ) tag->removeField("DISCNUMBER"); tag->addField( "DISCNUMBER", TagLib::String(disc.toUtf8().data(), TagLib::String::UTF8), true ); } else { tag->addField( TagLib::String(config->data.general.preferredVorbisCommentDiscTotalTag.toUtf8().data(), TagLib::String::UTF8), TagLib::String(QString::number(tagData->discTotal).toUtf8().data(), TagLib::String::UTF8), true ); } } if( !tagData->musicBrainzTrackId.isEmpty() ) { if( tag->contains("MUSICBRAINZ_TRACKID") ) tag->removeField("MUSICBRAINZ_TRACKID"); tag->addField( "MUSICBRAINZ_TRACKID", TagLib::String(tagData->musicBrainzTrackId.toUtf8().data(), TagLib::String::UTF8), true ); } if( !tagData->musicBrainzReleaseId.isEmpty() ) { if( tag->contains("MUSICBRAINZ_ALBUMID") ) tag->removeField("MUSICBRAINZ_ALBUMID"); tag->addField( "MUSICBRAINZ_ALBUMID", TagLib::String(tagData->musicBrainzReleaseId.toUtf8().data(), TagLib::String::UTF8), true ); } } } else if( TagLib::MP4::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::MP4::Tag *tag = file->tag() ) { if( !tagData->composer.isEmpty() ) tag->itemListMap()["\xA9wrt"] = TagLib::StringList(TagLib::String(tagData->composer.toUtf8().data(), TagLib::String::UTF8)); if( tagData->trackTotal > 0 ) tag->itemListMap()["trkn"] = TagLib::MP4::Item( tagData->track, tagData->trackTotal ); if( tagData->disc > 0 ) { if( tagData->discTotal > 0 ) tag->itemListMap()["disk"] = TagLib::MP4::Item( tagData->disc, tagData->discTotal ); else tag->itemListMap()["disk"] = TagLib::MP4::Item( tagData->disc ); } if( !tagData->musicBrainzTrackId.isEmpty() ) tag->itemListMap()["----:com.apple.iTunes:MusicBrainz Track Id"] = TagLib::StringList(TagLib::String(tagData->musicBrainzTrackId.toUtf8().data(), TagLib::String::UTF8)); if( !tagData->musicBrainzReleaseId.isEmpty() ) tag->itemListMap()["----:com.apple.iTunes:MusicBrainz Album Id"] = TagLib::StringList(TagLib::String(tagData->musicBrainzReleaseId.toUtf8().data(), TagLib::String::UTF8)); } } else if( TagLib::ASF::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::ASF::Tag *tag = file->tag() ) { if( !tagData->composer.isEmpty() ) { if( !tag->attributeListMap()["WM/Composer"].isEmpty() ) tag->attributeListMap()["WM/Composer"].clear(); tag->addAttribute( TagLib::String("WM/Composer"), TagLib::String(tagData->composer.toUtf8().data(), TagLib::String::UTF8) ); } if( !track.isEmpty() ) { if( !tag->attributeListMap()["WM/TrackNumber"].isEmpty() ) tag->attributeListMap()["WM/TrackNumber"].clear(); tag->addAttribute( TagLib::String("WM/TrackNumber"), TagLib::String(track.toUtf8().data(), TagLib::String::UTF8) ); } if( !disc.isEmpty() ) { if( !tag->attributeListMap()["WM/PartOfSet"].isEmpty() ) tag->attributeListMap()["WM/PartOfSet"].clear(); tag->addAttribute( TagLib::String("WM/PartOfSet"), TagLib::String(disc.toUtf8().data(), TagLib::String::UTF8) ); } if( !tagData->musicBrainzTrackId.isEmpty() ) { if( !tag->attributeListMap()["MusicBrainz/Track Id"].isEmpty() ) tag->attributeListMap()["MusicBrainz/Track Id"].clear(); tag->addAttribute( TagLib::String("MusicBrainz/Track Id"), TagLib::String(tagData->musicBrainzTrackId.toUtf8().data(), TagLib::String::UTF8) ); } if( !tagData->musicBrainzReleaseId.isEmpty() ) { if( !tag->attributeListMap()["MusicBrainz/Album Id"].isEmpty() ) tag->attributeListMap()["MusicBrainz/Album Id"].clear(); tag->addAttribute( TagLib::String("MusicBrainz/Album Id"), TagLib::String(tagData->musicBrainzReleaseId.toUtf8().data(), TagLib::String::UTF8) ); } } } /*if( TagLib::TTA::File *file = dynamic_cast( fileref.file() ) ) // NOTE writing works, but reading not { if( file->ID3v2Tag() ) { if( !file->ID3v2Tag()->frameListMap()[ "TPOS" ].isEmpty() ) { file->ID3v2Tag()->frameListMap()[ "TPOS" ].front()->setText( QStringToTString( QString::number(tagData->disc) ) ); } else { TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame( "TPOS", TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); frame->setText( QStringToTString( QString::number(tagData->disc) ) ); file->ID3v2Tag()->addFrame( frame ); } if( !file->ID3v2Tag()->frameListMap()[ "TCOM" ].isEmpty() ) { file->ID3v2Tag()->frameListMap()[ "TCOM" ].front()->setText( QStringToTString( tagData->composer ) ); } else { TagLib::ID3v2::TextIdentificationFrame *frame = new TagLib::ID3v2::TextIdentificationFrame( "TCOM", TagLib::ID3v2::FrameFactory::instance()->defaultTextEncoding() ); frame->setText( QStringToTString( tagData->composer ) ); file->ID3v2Tag()->addFrame( frame ); } } }*/ return fileref.save(); } return false; } QList TagEngine::readCovers( const KUrl& fileName ) { QList covers; TagLib::FileRef fileref( fileName.pathOrUrl().toLocal8Bit() ); if( !fileref.isNull() ) { if( TagLib::MPEG::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::ID3v2::Tag *tag = file->ID3v2Tag() ) { TagLib::ID3v2::FrameList apic_frames = tag->frameListMap()["APIC"]; for( TagLib::ID3v2::FrameList::ConstIterator iter = apic_frames.begin(); iter != apic_frames.end(); ++iter ) { TagLib::ID3v2::AttachedPictureFrame *pic = dynamic_cast(*iter); const QByteArray image_data( pic->picture().data(), pic->picture().size() ); CoverData *newCover = new CoverData( image_data, TStringToQString(pic->mimeType()), CoverData::Role(pic->type()), TStringToQString(pic->description()) ); covers.append( newCover ); } } } else if( TagLib::Ogg::Vorbis::File *file = dynamic_cast(fileref.file()) ) { // http://wiki.xiph.org/VorbisComment#Recommended_field_names if( TagLib::Ogg::XiphComment *tag = file->tag() ) { #ifdef TAGLIB_HAS_FLAC_PICTURELIST const TagLib::StringList& block = tag->fieldListMap()["METADATA_BLOCK_PICTURE"]; for( TagLib::StringList::ConstIterator i = block.begin(); i != block.end(); ++i ) { const QByteArray data( QByteArray::fromBase64( i->to8Bit().c_str() ) ); TagLib::ByteVector tdata( data.data(), data.size() ); TagLib::FLAC::Picture picture; if(!picture.parse(tdata)) continue; const QByteArray image_data( picture.data().data(), picture.data().size() ); CoverData *newCover = new CoverData( image_data, TStringToQString(picture.mimeType()), CoverData::Role(picture.type()), TStringToQString(picture.description()) ); covers.append( newCover ); } #endif // TAGLIB_HAS_FLAC_PICTURELIST TagLib::Ogg::FieldListMap map = tag->fieldListMap(); // Ogg lacks a definitive standard for embedding cover art, but it seems // b64 encoding a field called COVERART is the general convention TagLib::StringList coverArtValue; TagLib::StringList mimeTypeValue; TagLib::StringList descriptionValue; for( TagLib::Ogg::FieldListMap::ConstIterator it = map.begin(); it != map.end(); ++it ) { const TagLib::String key = it->first; const TagLib::StringList value = it->second; if( key == TagLib::String("COVERART") ) { coverArtValue = value; } else if( key == TagLib::String("COVERARTMIME") ) { mimeTypeValue = value; } else if( key == TagLib::String("COVERARTDESCRIPTION") ) { descriptionValue = value; } } for( uint i=0; i i ) ? mimeTypeValue[i] : ""; const TagLib::String description = ( descriptionValue.size() > i ) ? descriptionValue[i] : ""; CoverData *newCover = new CoverData( image_data, TStringToQString(mimeType), CoverData::FrontCover, TStringToQString(description) ); covers.append( newCover ); } } } else if( TagLib::FLAC::File *file = dynamic_cast(fileref.file()) ) { #ifdef TAGLIB_HAS_FLAC_PICTURELIST const TagLib::List picturelist = file->pictureList(); for( TagLib::List::ConstIterator it = picturelist.begin(); it != picturelist.end(); it++ ) { const TagLib::FLAC::Picture *picture = *it; const QByteArray image_data( picture->data().data(), picture->data().size() ); CoverData *newCover = new CoverData( image_data, TStringToQString(picture->mimeType()), CoverData::Role(picture->type()), TStringToQString(picture->description()) ); covers.append( newCover ); } #endif // TAGLIB_HAS_FLAC_PICTURELIST } else if( TagLib::MP4::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::MP4::Tag *tag = file->tag() ) { TagLib::MP4::ItemListMap map = tag->itemListMap(); for( TagLib::MP4::ItemListMap::ConstIterator it = map.begin(); it != map.end(); ++it ) { if( it->first == "covr" ) { TagLib::MP4::CoverArtList coverList = it->second.toCoverArtList(); for( TagLib::MP4::CoverArtList::Iterator cover = coverList.begin(); cover != coverList.end(); ++cover ) { const QByteArray image_data( cover->data().data(), cover->data().size() ); const QString mimeType = cover->format() == TagLib::MP4::CoverArt::PNG ? "image/png" : "image/jpeg"; CoverData *newCover = new CoverData( image_data, mimeType, CoverData::FrontCover ); covers.append( newCover ); } } } } } else if( TagLib::ASF::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::ASF::Tag *tag = file->tag() ) { #ifdef TAGLIB_HAS_ASF_PICTURE TagLib::ASF::AttributeListMap map = tag->attributeListMap(); for( TagLib::ASF::AttributeListMap::ConstIterator it = map.begin(); it != map.end(); ++it ) { if( !it->second.size() ) continue; if( it->first == "WM/Picture" ) { TagLib::ASF::AttributeList coverList = it->second; for( TagLib::ASF::AttributeList::ConstIterator cover = coverList.begin(); cover != coverList.end(); ++cover ) { if( cover->type() != TagLib::ASF::Attribute::BytesType ) continue; TagLib::ASF::Picture pic = cover->toPicture(); const QByteArray image_data( pic.picture().data(), pic.picture().size() ); CoverData *newCover = new CoverData( image_data, TStringToQString(pic.mimeType()), CoverData::Role(pic.type()), TStringToQString(pic.description()) ); covers.append( newCover ); } } } #endif // TAGLIB_HAS_ASF_PICTURE } } } return covers; } bool TagEngine::writeCovers( const KUrl& fileName, QList covers ) { if( covers.isEmpty() ) return true; TagLib::FileRef fileref( fileName.pathOrUrl().toLocal8Bit(), false ); if( !fileref.isNull() ) { if( TagLib::MPEG::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::ID3v2::Tag *tag = file->ID3v2Tag() ) { foreach( CoverData *cover, covers ) { TagLib::ID3v2::AttachedPictureFrame *frame = new TagLib::ID3v2::AttachedPictureFrame( "APIC" ); frame->setPicture( TagLib::ByteVector( cover->data.data(), cover->data.size() ) ); frame->setType( TagLib::ID3v2::AttachedPictureFrame::Type( cover->role ) ); if( !cover->mimeType.isEmpty() ) frame->setMimeType( TagLib::ByteVector(cover->mimeType.toUtf8().data()) ); if( !cover->description.isEmpty() ) frame->setDescription( TagLib::ByteVector(cover->description.toUtf8().data()) ); tag->addFrame( frame ); } } return fileref.save(); } else if( TagLib::Ogg::Vorbis::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::Ogg::XiphComment *tag = file->tag() ) { #ifdef TAGLIB_HAS_FLAC_PICTURELIST foreach( CoverData *cover, covers ) { TagLib::FLAC::Picture newPicture; newPicture.setData( TagLib::ByteVector( cover->data.data(), cover->data.size() ) ); newPicture.setType( TagLib::FLAC::Picture::Type( cover->role ) ); if( !cover->mimeType.isEmpty() ) newPicture.setMimeType( TagLib::ByteVector(cover->mimeType.toUtf8().data()) ); if( !cover->description.isEmpty() ) newPicture.setDescription( TagLib::ByteVector(cover->description.toUtf8().data()) ); TagLib::ByteVector t_block = newPicture.render(); const QByteArray q_block = QByteArray( t_block.data(), t_block.size() ); const QByteArray q_block_b64 = q_block.toBase64(); TagLib::ByteVector t_block_b64 = TagLib::ByteVector( q_block_b64.data(), q_block_b64.size() ); tag->addField( "METADATA_BLOCK_PICTURE", t_block_b64, false ); } #endif // TAGLIB_HAS_FLAC_PICTURELIST } return fileref.save(); } else if( TagLib::FLAC::File *file = dynamic_cast(fileref.file()) ) { #ifdef TAGLIB_HAS_FLAC_PICTURELIST foreach( CoverData *cover, covers ) { TagLib::FLAC::Picture *newPicture = new TagLib::FLAC::Picture(); newPicture->setData( TagLib::ByteVector( cover->data.data(), cover->data.size() ) ); newPicture->setType( TagLib::FLAC::Picture::Type( cover->role ) ); if( !cover->mimeType.isEmpty() ) newPicture->setMimeType( TagLib::ByteVector(cover->mimeType.toUtf8().data()) ); if( !cover->description.isEmpty() ) newPicture->setDescription( TagLib::ByteVector(cover->description.toUtf8().data()) ); file->addPicture( newPicture ); } #endif // TAGLIB_HAS_FLAC_PICTURELIST return fileref.save(); } else if( TagLib::MP4::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::MP4::Tag *tag = file->tag() ) { TagLib::MP4::CoverArtList coversList; foreach( CoverData *cover, covers ) { const TagLib::MP4::CoverArt::Format format = cover->mimeType == "image/png" ? TagLib::MP4::CoverArt::PNG : TagLib::MP4::CoverArt::JPEG; coversList.append( TagLib::MP4::CoverArt( format, TagLib::ByteVector( cover->data.data(), cover->data.size() ) ) ); } tag->itemListMap()["covr"] = TagLib::MP4::Item( coversList ); } return fileref.save(); } else if( TagLib::ASF::File *file = dynamic_cast(fileref.file()) ) { if( TagLib::ASF::Tag *tag = file->tag() ) { #ifdef TAGLIB_HAS_ASF_PICTURE foreach( CoverData *cover, covers ) { TagLib::ASF::Picture *newPicture = new TagLib::ASF::Picture(); newPicture->setPicture( TagLib::ByteVector( cover->data.data(), cover->data.size() ) ); newPicture->setType( TagLib::ASF::Picture::Type( cover->role ) ); if( !cover->mimeType.isEmpty() ) newPicture->setMimeType( TagLib::ByteVector(cover->mimeType.toUtf8().data()) ); if( !cover->description.isEmpty() ) newPicture->setDescription( TagLib::ByteVector(cover->description.toUtf8().data()) ); tag->addAttribute( TagLib::String("WM/Picture"), TagLib::ASF::Attribute( newPicture->render() ) ); } #endif // TAGLIB_HAS_ASF_PICTURE } return fileref.save(); } } return false; } bool TagEngine::writeCoversToDirectory( const QString& directoryName, TagData *tags ) { if( !tags ) return false; QList covers = tags->covers; if( covers.isEmpty() ) return true; QDir dir( directoryName ); if( directoryName.isEmpty() || !dir.exists() ) return false; int i = covers.count() > 1 ? 1 : 0; foreach( CoverData *cover, covers ) { QString fileName = cover->description; if( fileName.isEmpty() || config->data.coverArt.writeCoverName == 1 ) { fileName = config->data.coverArt.writeCoverDefaultName; fileName.replace( "%a", "$replace_by_artist$" ); fileName.replace( "%b", "$replace_by_album$" ); fileName.replace( "%d", "$replace_by_description$" ); fileName.replace( "%r", "$replace_by_role$" ); QString artist = tags->artist; artist.replace("/",","); fileName.replace( "$replace_by_artist$", artist ); QString album = tags->album; album.replace("/",","); fileName.replace( "$replace_by_album$", album ); QString description = cover->description; description.replace("/",","); fileName.replace( "$replace_by_description$", description ); QString role = cover->roleName( cover->role ); role.replace("/",","); fileName.replace( "$replace_by_role$", role ); if( i > 0 ) fileName += QString::number(i); } QString extension; if( cover->mimeType == "image/jpeg" ) { extension = ".jpg"; if( fileName.toLower().endsWith(".jpg") ) fileName = fileName.left( fileName.count() - 4 ); if( fileName.toLower().endsWith(".jpeg") ) fileName = fileName.left( fileName.count() - 5 ); } else if( cover->mimeType == "image/png" ) { extension = ".png"; if( fileName.toLower().endsWith(".png") ) fileName = fileName.left( fileName.count() - 4 ); } QFile file( directoryName + "/" + fileName + extension ); if( !file.exists() ) { file.open( QIODevice::WriteOnly ); file.write( cover->data.data(), cover->data.size() ); file.close(); } i++; } return false; } ./soundkonverter-2.0.5/metadata/PaxHeaders.25599/MetaReplayGain.cpp0000644000175000001440000000006212105142352023126 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.845402221 ./soundkonverter-2.0.5/metadata/MetaReplayGain.cpp0000644000175000001440000003401312105142352022540 0ustar00danielusers00000000000000/**************************************************************************************** * Copyright (c) 2009 Alex Merry * * * * This program is free software; you can redistribute it and/or modify it under * * the terms of the GNU General Public License as published by the Free Software * * Foundation; either version 2 of the License, or (at your option) any later * * version. * * * * This program is distributed in the hope that it will be useful, but WITHOUT ANY * * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * * PARTICULAR PURPOSE. See the GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License along with * * this program. If not, see . * ****************************************************************************************/ // NOTE: this file is used by amarokcollectionscanner and CANNOT use any amaroklib // code [this includes debug()] #include "MetaReplayGain.h" #include #include // Taglib #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include // #include // converts a peak value from the normal digital scale form to the more useful decibel form // decibels are relative to the /adjusted/ waveform static qreal peakToDecibels( qreal scaleVal ) { if ( scaleVal > 0 ) return 20 * log10( scaleVal ); else return 0; } // NOTE: representation is taken to be a binary value with units in the first column, // 1/2 in the second and so on. static qreal readRVA2PeakValue( const TagLib::ByteVector &data, int bits, bool *ok ) { qreal peak = 0.0; // discarding digits at the end reduces precision, but doesn't otherwise change the value if ( bits > 32 ) bits = 32; // the +7 makes sure we round up when we divide by 8 unsigned int bytes = (bits + 7) / 8; // normalize appears not to write a peak at all, and hence sets bits to 0 if ( bits == 0 ) { if ( ok ) *ok = true; } else if ( bits >= 4 && data.size() >= bytes ) // fewer than 4 bits would just be daft { // excessBits is the number of bits we have to discard at the end unsigned int excessBits = (8 * bytes) - bits; // mask has 1s everywhere but the last /excessBits/ bits quint32 mask = 0xffffffff << excessBits; quint32 rawValue = 0; for ( unsigned int i = 0; i < bytes; ++i ) { rawValue <<= 8; rawValue += (unsigned char)data[i]; } rawValue &= mask; peak = rawValue; // amount we need to "shift" the value right to make the first digit the unit column unsigned int rightShift = (8 * bytes) - 1; peak /= (qreal)(1 << rightShift); if ( ok ) *ok = true; } else { if ( ok ) *ok = false; } return peak; } // adds the converted version of the scale value if it is a valid, non-negative float static void maybeAddPeak( const TagLib::String &scaleVal, Meta::ReplayGainTag key, Meta::ReplayGainTagMap *map ) { // scale value is >= 0, and typically not much bigger than 1 QString value = TStringToQString( scaleVal ); bool ok = false; qreal peak = value.toFloat( &ok ); if ( ok && peak >= 0 ) (*map)[key] = peakToDecibels( peak ); } static void maybeAddGain( const TagLib::String &input, Meta::ReplayGainTag key, Meta::ReplayGainTagMap *map ) { QString value = TStringToQString( input ).remove( " dB" ); bool ok = false; qreal gain = value.toFloat( &ok ); if (ok) (*map)[key] = gain; } static Meta::ReplayGainTagMap readID3v2Tags( TagLib::ID3v2::Tag *tag ) { Meta::ReplayGainTagMap map; { // ID3v2.4.0 native replay gain tag support (as written by Quod Libet, for example). TagLib::ID3v2::FrameList frames = tag->frameListMap()["RVA2"]; frames.append(tag->frameListMap()["XRVA"]); if ( !frames.isEmpty() ) { for ( unsigned int i = 0; i < frames.size(); ++i ) { // we have to parse this frame ourselves // ID3v2 frame header is 10 bytes, so skip that TagLib::ByteVector data = frames[i]->render().mid( 10 ); unsigned int offset = 0; QString desc( data.data() ); offset += desc.count() + 1; unsigned int channel = data.mid( offset, 1 ).toUInt( true ); // channel 1 is the main volume - the only one we care about if ( channel == 1 ) { ++offset; qint16 adjustment512 = data.mid( offset, 2 ).toShort( true ); qreal adjustment = ( (qreal)adjustment512 ) / 512.0; offset += 2; unsigned int peakBits = data.mid( offset, 1 ).toUInt( true ); ++offset; bool ok = false; qreal peak = readRVA2PeakValue( data.mid( offset ), peakBits, &ok ); if ( ok ) { if ( desc.toLower() == "album" ) { map[Meta::ReplayGain_Album_Gain] = adjustment; map[Meta::ReplayGain_Album_Peak] = peakToDecibels( peak ); } else if ( desc.toLower() == "track" || !map.contains( Meta::ReplayGain_Track_Gain ) ) { map[Meta::ReplayGain_Track_Gain] = adjustment; map[Meta::ReplayGain_Track_Peak] = peakToDecibels( peak ); } } } } if ( !map.isEmpty() ) return map; } } { // Foobar2000-style ID3v2.3.0 tags TagLib::ID3v2::FrameList frames = tag->frameListMap()["TXXX"]; for ( TagLib::ID3v2::FrameList::Iterator it = frames.begin(); it != frames.end(); ++it ) { TagLib::ID3v2::UserTextIdentificationFrame* frame = dynamic_cast( *it ); if ( frame && frame->fieldList().size() >= 2 ) { QString desc = TStringToQString( frame->description() ).toLower(); if ( desc == "replaygain_album_gain" ) maybeAddGain( frame->fieldList()[1], Meta::ReplayGain_Album_Gain, &map ); if ( desc == "replaygain_album_peak" ) maybeAddPeak( frame->fieldList()[1], Meta::ReplayGain_Album_Peak, &map ); if ( desc == "replaygain_track_gain" ) maybeAddGain( frame->fieldList()[1], Meta::ReplayGain_Track_Gain, &map ); if ( desc == "replaygain_track_peak" ) maybeAddPeak( frame->fieldList()[1], Meta::ReplayGain_Track_Peak, &map ); } } } return map; } static Meta::ReplayGainTagMap readAPETags( TagLib::APE::Tag *tag ) { Meta::ReplayGainTagMap map; const TagLib::APE::ItemListMap &items = tag->itemListMap(); if ( items.contains("REPLAYGAIN_TRACK_GAIN") ) { maybeAddGain( items["REPLAYGAIN_TRACK_GAIN"].values()[0], Meta::ReplayGain_Track_Gain, &map ); if ( items.contains("REPLAYGAIN_TRACK_PEAK") ) maybeAddPeak( items["REPLAYGAIN_TRACK_PEAK"].values()[0], Meta::ReplayGain_Track_Peak, &map ); } if ( items.contains("REPLAYGAIN_ALBUM_GAIN") ) { maybeAddGain( items["REPLAYGAIN_ALBUM_GAIN"].values()[0], Meta::ReplayGain_Album_Gain, &map ); if ( items.contains("REPLAYGAIN_ALBUM_PEAK") ) maybeAddPeak( items["REPLAYGAIN_ALBUM_PEAK"].values()[0], Meta::ReplayGain_Album_Peak, &map ); } return map; } static Meta::ReplayGainTagMap readXiphTags( TagLib::Ogg::XiphComment *tag ) { const TagLib::Ogg::FieldListMap &tagMap = tag->fieldListMap(); Meta::ReplayGainTagMap outputMap; if ( !tagMap["REPLAYGAIN_TRACK_GAIN"].isEmpty() ) { maybeAddGain( tagMap["REPLAYGAIN_TRACK_GAIN"].front(), Meta::ReplayGain_Track_Gain, &outputMap ); if ( !tagMap["REPLAYGAIN_TRACK_PEAK"].isEmpty() ) maybeAddPeak( tagMap["REPLAYGAIN_TRACK_PEAK"].front(), Meta::ReplayGain_Track_Peak, &outputMap ); } if ( !tagMap["REPLAYGAIN_ALBUM_GAIN"].isEmpty() ) { maybeAddGain( tagMap["REPLAYGAIN_ALBUM_GAIN"].front(), Meta::ReplayGain_Album_Gain, &outputMap ); if ( !tagMap["REPLAYGAIN_ALBUM_PEAK"].isEmpty() ) maybeAddPeak( tagMap["REPLAYGAIN_ALBUM_PEAK"].front(), Meta::ReplayGain_Album_Peak, &outputMap ); } return outputMap; } /*static Meta::ReplayGainTagMap readASFTags( TagLib::ASF::Tag *tag ) { const TagLib::ASF::AttributeListMap &tagMap = tag->attributeListMap(); Meta::ReplayGainTagMap outputMap; if ( !tagMap["REPLAYGAIN_TRACK_GAIN"].isEmpty() ) { maybeAddGain( tagMap["REPLAYGAIN_TRACK_GAIN"].front().toString(), Meta::ReplayGain_Track_Gain, &outputMap ); if ( !tagMap["REPLAYGAIN_TRACK_PEAK"].isEmpty() ) maybeAddPeak( tagMap["REPLAYGAIN_TRACK_PEAK"].front().toString(), Meta::ReplayGain_Track_Peak, &outputMap ); } if ( !tagMap["REPLAYGAIN_ALBUM_GAIN"].isEmpty() ) { maybeAddGain( tagMap["REPLAYGAIN_ALBUM_GAIN"].front().toString(), Meta::ReplayGain_Album_Gain, &outputMap ); if ( !tagMap["REPLAYGAIN_ALBUM_PEAK"].isEmpty() ) maybeAddPeak( tagMap["REPLAYGAIN_ALBUM_PEAK"].front().toString(), Meta::ReplayGain_Album_Peak, &outputMap ); } return outputMap; }*/ // Bad news: ReplayGain in MP4 is not actually standardized in any way. Maybe reimplement at some point...maybe. See // http://www.hydrogenaudio.org/forums/lofiversion/index.php/t14322.html #ifdef DO_NOT_USE_THIS_UNTIL_FIXED static Meta::ReplayGainTagMap readMP4Tags( TagLib::MP4::Tag *tag ) { Meta::ReplayGainTagMap outputMap; if ( !tag->trackReplayGain().isNull() ) { maybeAddGain( tag->trackReplayGain(), Meta::ReplayGain_Track_Gain, &outputMap ); if ( !tag->trackReplayGainPeak().isNull() ) maybeAddPeak( tag->trackReplayGainPeak(), Meta::ReplayGain_Track_Peak, &outputMap ); } if ( !tag->albumReplayGain().isNull() ) { maybeAddGain( tag->albumReplayGain(), Meta::ReplayGain_Album_Gain, &outputMap ); if ( !tag->albumReplayGainPeak().isNull() ) maybeAddPeak( tag->albumReplayGainPeak(), Meta::ReplayGain_Album_Peak, &outputMap ); } return outputMap; } #endif Meta::ReplayGainTagMap Meta::readReplayGainTags( TagLib::FileRef fileref ) { Meta::ReplayGainTagMap map; // NB: we can't get replay gain info from MPC files, since it's stored in some magic place // and not in the APE tags, and taglib doesn't let us access the information (unless // we want to parse the file ourselves). // FIXME: should we try getting the info from the MPC APE tag just in case? if ( TagLib::MPEG::File *file = dynamic_cast( fileref.file() ) ) { if ( file->ID3v2Tag() ) map = readID3v2Tags( file->ID3v2Tag() ); if ( map.isEmpty() && file->APETag() ) map = readAPETags( file->APETag() ); } else if ( TagLib::Ogg::Vorbis::File *file = dynamic_cast( fileref.file() ) ) { if ( file->tag() ) map = readXiphTags( file->tag() ); } else if ( TagLib::FLAC::File *file = dynamic_cast( fileref.file() ) ) { if ( file->xiphComment() ) map = readXiphTags( file->xiphComment() ); if ( map.isEmpty() && file->ID3v2Tag() ) map = readID3v2Tags( file->ID3v2Tag() ); } else if ( TagLib::Ogg::FLAC::File *file = dynamic_cast( fileref.file() ) ) { if ( file->tag() ) map = readXiphTags( file->tag() ); } else if ( TagLib::WavPack::File *file = dynamic_cast( fileref.file() ) ) { if ( file->APETag() ) map = readAPETags( file->APETag() ); } else if ( TagLib::TrueAudio::File *file = dynamic_cast( fileref.file() ) ) { if ( file->ID3v2Tag() ) map = readID3v2Tags( file->ID3v2Tag() ); } else if ( TagLib::Ogg::Speex::File *file = dynamic_cast( fileref.file() ) ) { if ( file->tag() ) map = readXiphTags( file->tag() ); } else if ( TagLib::MPC::File *file = dynamic_cast( fileref.file() ) ) { // This is NOT the correct way to get replay gain tags from MPC files, but // taglib doesn't allow us access to the real information. // This allows people to work around this issue by copying their replay gain // information to the APE tag. if ( file->APETag() ) map = readAPETags( file->APETag() ); } /* else if ( TagLib::ASF::File *file = dynamic_cast( fileref.file() ) ) { if ( file->tag() ) map = readASFTags( file->tag() ); }*/ // See comment above #ifdef DO_NOT_USE_THIS_UNTIL_FIXED else if ( TagLib::MP4::File *file = dynamic_cast( fileref.file() ) ) { if ( file->tag() ) map = readMP4Tags( file->getMP4Tag() ); } #endif return map; } ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter-1.0.kdev40000644000175000001440000000006211263354124022331 xustar000000000000000020 atime=1357667506 30 ctime=1387631579.845402221 ./soundkonverter-2.0.5/soundkonverter-1.0.kdev40000600000175000001440000000007311263354124021732 0ustar00danielusers00000000000000[Project] Manager=KDevCMakeManager Name=soundkonverter-1.0 ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter-rip-audiocd.desktop0000644000175000001440000000013212255310033024656 xustar000000000000000030 mtime=1387630619.338826341 30 atime=1387630134.326889825 30 ctime=1387631579.846402208 ./soundkonverter-2.0.5/soundkonverter-rip-audiocd.desktop0000644000175000001440000000174012255310033024273 0ustar00danielusers00000000000000[Desktop Entry] X-KDE-Solid-Predicate=OpticalDisc.availableContent & 'Audio' Type=Service Actions=Rip X-KDE-Priority=TopLevel [Desktop Action Rip] Name=Rip Audio CD with soundKonverter Name[ca]=Extreure CD d'àudio amb soundKonverter Name[cs]=Vytáhněte skladby z CD za pomoci soundKonverteru Name[de]=Audio-CD mit soundKonverter auslesen Name[es]=Extraer audio CD con soundKonverter Name[et]=Ripi audio-CD soundKonverteriga Name[fr]=Extraire le CD avec soundKonverter Name[hu]=Audio CD beolvasása a soundKonverterrel Name[it]=Estrai CD audio con soundKonverter Name[pt]=Extrair um CD áudio com o soundKonverter Name[pt_BR]=Extrair um CD de áudio com o soundKonverter Name[ro]=Extrage CD audio cu soundKonverter Name[ru]=Извлечь аудиоданные с CD с помощью soundKonverter Name[sl]=Zajemi zvočni CD s soundKonverter-jem Name[sv_SE]=Rippa ljud CD med soundKonverter Name[zh_TW]=用 soundKonverter 擷取音樂CD Icon=soundkonverter Exec=soundkonverter --rip %d ./soundkonverter-2.0.5/PaxHeaders.25599/soundkonverter_replaygainplugin.desktop0000644000175000001440000000006211265422046026124 xustar000000000000000020 atime=1357667506 30 ctime=1387631579.846402208 ./soundkonverter-2.0.5/soundkonverter_replaygainplugin.desktop0000644000175000001440000000022611265422046025535 0ustar00danielusers00000000000000[Desktop Entry] Type=ServiceType X-KDE-ServiceType=soundKonverter/ReplayGainPlugin X-KDE-Derived=KPluginInfo Comment=soundKonverter replaygain plugin ./soundkonverter-2.0.5/PaxHeaders.25599/core0000644000175000001440000000012012255306740016657 xustar000000000000000030 mtime=1387630048.405963984 20 atime=1357667221 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/core/0000755000175000001440000000000012255306740016352 5ustar00danielusers00000000000000./soundkonverter-2.0.5/core/PaxHeaders.25599/conversionoptions.cpp0000644000175000001440000000006212105142352023235 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.851402146 ./soundkonverter-2.0.5/core/conversionoptions.cpp0000644000175000001440000001426112105142352022652 0ustar00danielusers00000000000000 #include "conversionoptions.h" #include "filterplugin.h" FilterOptions::FilterOptions() {} FilterOptions::~FilterOptions() {} bool FilterOptions::equals( FilterOptions *_other ) { if( !_other ) return false; return ( equalsBasics(_other) ); } bool FilterOptions::equalsBasics( FilterOptions *_other ) { if( !_other ) return false; return ( pluginName ==_other->pluginName && cmdArguments ==_other->cmdArguments ); } QDomElement FilterOptions::toXml( QDomDocument document, const QString elementName ) { QDomElement filterOptions = document.createElement(elementName); filterOptions.setAttribute("pluginName",pluginName); filterOptions.setAttribute("cmdArguments",cmdArguments); return filterOptions; } bool FilterOptions::fromXml( QDomElement filterOptions ) { pluginName = filterOptions.attribute("pluginName"); return true; } ConversionOptions::ConversionOptions() { qualityMode = Quality; quality = 0; bitrate = 0; bitrateMode = Vbr; compressionLevel = 0; outputDirectoryMode = 0; replaygain = false; } ConversionOptions::~ConversionOptions() { qDeleteAll( filterOptions ); } bool ConversionOptions::equals( ConversionOptions *_other ) { if( !_other ) return false; if( !equalsBasics(_other) ) return false; if( qualityMode !=_other->qualityMode ) return false; if( quality !=_other->quality ) return false; if( bitrate !=_other->bitrate ) return false; if( bitrateMode !=_other->bitrateMode ) return false; if( !equalsFilters(_other) ) return false; return true; } bool ConversionOptions::equalsFilters( ConversionOptions *_other ) { if( !_other ) return false; QStringList filters; foreach( FilterOptions *filter, filterOptions ) { filters.append( filter->pluginName ); } filters.sort(); QStringList other_filters; foreach( FilterOptions *otherFilter, _other->filterOptions ) { other_filters.append( otherFilter->pluginName ); } other_filters.sort(); if( filters == other_filters ) { foreach( FilterOptions *filter, filterOptions ) { foreach( FilterOptions *otherFilter, _other->filterOptions ) { if( otherFilter->pluginName == filter->pluginName ) { if( !filter->equals(otherFilter) ) return false; break; } } } } else { return false; } return true; } bool ConversionOptions::equalsBasics( ConversionOptions *_other ) { if( !_other ) return false; return ( pluginName ==_other->pluginName && profile ==_other->profile && codecName ==_other->codecName && outputDirectoryMode ==_other->outputDirectoryMode && outputDirectory ==_other->outputDirectory && replaygain ==_other->replaygain && cmdArguments ==_other->cmdArguments ); } QDomElement ConversionOptions::toXml( QDomDocument document ) { QDomElement conversionOptions = document.createElement("conversionOptions"); conversionOptions.setAttribute("pluginName",pluginName); conversionOptions.setAttribute("profile",profile); conversionOptions.setAttribute("codecName",codecName); QDomElement encodingOptions = document.createElement("encodingOptions"); encodingOptions.setAttribute("qualityMode",qualityMode); encodingOptions.setAttribute("quality",quality); encodingOptions.setAttribute("bitrate",bitrate); encodingOptions.setAttribute("bitrateMode",bitrateMode); encodingOptions.setAttribute("compressionLevel",compressionLevel); encodingOptions.setAttribute("cmdArguments",cmdArguments); conversionOptions.appendChild(encodingOptions); QDomElement outputOptions = document.createElement("outputOptions"); outputOptions.setAttribute("outputDirectoryMode",outputDirectoryMode); outputOptions.setAttribute("outputDirectory",outputDirectory); outputOptions.setAttribute("outputFilesystem",outputFilesystem); conversionOptions.appendChild(outputOptions); QDomElement features = document.createElement("features"); features.setAttribute("replaygain",replaygain); conversionOptions.appendChild(features); int i = 0; foreach( FilterOptions *filter, filterOptions ) { QDomElement filterOptionsElement = filter->toXml(document,"filterOptions"+QString::number(i++)); conversionOptions.appendChild(filterOptionsElement); } return conversionOptions; } bool ConversionOptions::fromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { pluginName = conversionOptions.attribute("pluginName"); profile = conversionOptions.attribute("profile"); codecName = conversionOptions.attribute("codecName"); QDomElement encodingOptions = conversionOptions.elementsByTagName("encodingOptions").at(0).toElement(); qualityMode = (QualityMode)encodingOptions.attribute("qualityMode").toInt(); quality = encodingOptions.attribute("quality").toDouble(); bitrate = encodingOptions.attribute("bitrate").toInt(); bitrateMode = (BitrateMode)encodingOptions.attribute("bitrateMode").toInt(); compressionLevel = encodingOptions.attribute("compressionLevel").toDouble(); cmdArguments = encodingOptions.attribute("cmdArguments"); QDomElement outputOptions = conversionOptions.elementsByTagName("outputOptions").at(0).toElement(); outputDirectoryMode = outputOptions.attribute("outputDirectoryMode").toInt(); outputDirectory = outputOptions.attribute("outputDirectory"); outputFilesystem = outputOptions.attribute("outputFilesystem"); QDomElement features = conversionOptions.elementsByTagName("features").at(0).toElement(); replaygain = features.attribute("replaygain").toInt(); if( filterOptionsElements ) { for( QDomNode node = conversionOptions.firstChild(); !node.isNull(); node = node.nextSibling() ) { if( node.nodeName().startsWith("filterOptions") ) filterOptionsElements->append( node.toElement() ); } } return true; } ./soundkonverter-2.0.5/core/PaxHeaders.25599/filterplugin.cpp0000644000175000001440000000006212105142352022140 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.851402146 ./soundkonverter-2.0.5/core/filterplugin.cpp0000755000175000001440000000173112105142352021556 0ustar00danielusers00000000000000 #include "filterplugin.h" #include "codecwidget.h" // // class FilterPluginItem // //////////////////// FilterPluginItem::FilterPluginItem( QObject *parent ) : CodecPluginItem( parent ) {} FilterPluginItem::~FilterPluginItem() {} // // class FilterPlugin // //////////////////// FilterPlugin::FilterPlugin( QObject *parent ) : CodecPlugin( parent ) { lastUsedFilterOptions = 0; } FilterPlugin::~FilterPlugin() {} QString FilterPlugin::type() { return "filter"; } FilterWidget *FilterPlugin::deleteFilterWidget( FilterWidget *filterWidget ) { if( !filterWidget ) return 0; if( lastUsedFilterOptions ) delete lastUsedFilterOptions; lastUsedFilterOptions = filterWidget->currentFilterOptions(); delete filterWidget; return 0; } FilterOptions *FilterPlugin::filterOptionsFromXml( QDomElement filterOptions ) { FilterOptions *options = new FilterOptions(); options->fromXml( filterOptions ); return options; } ./soundkonverter-2.0.5/core/PaxHeaders.25599/backendplugin.cpp0000644000175000001440000000006212106405146022246 xustar000000000000000020 atime=1360661094 30 ctime=1387631579.851402146 ./soundkonverter-2.0.5/core/backendplugin.cpp0000644000175000001440000006267512106405146021677 0ustar00danielusers00000000000000 #include "backendplugin.h" #include #include BackendPluginItem::BackendPluginItem( QObject *parent ) : QObject( parent ) { process = 0; id = 0; progress = -1; } BackendPluginItem::~BackendPluginItem() {} BackendPlugin::BackendPlugin( QObject *parent ) : QObject( parent ) { lastId = 100; } BackendPlugin::~BackendPlugin() {} BackendPlugin::FormatInfo BackendPlugin::formatInfo( const QString& codecName ) { BackendPlugin::FormatInfo info; info.codecName = codecName; info.priority = 100; info.lossless = false; info.inferiorQuality = false; if( codecName == "wav" ) { info.lossless = true; info.description = i18n("Wave is a very simple audio format that doesn't compress the audio stream so it's lossless but the file size is very big and it doesn't support advanced features like tags.
It is supported by virtually any software or device.

http://en.wikipedia.org/wiki/WAV"); info.mimeTypes.append( "audio/x-wav" ); info.mimeTypes.append( "audio/wav" ); info.extensions.append( "wav" ); } else if( codecName == "aac" ) { info.description = i18n("Advanced Audio Coding (AAC) is a lossy and popular audio format. It is widely used by Apple Inc.
In soundKonverter \"aac\" refers to only the codec. In order to get a file with tagging capabilities use \"m4a/aac\".

http://en.wikipedia.org/wiki/Advanced Audio Coding"); info.mimeTypes.append( "audio/aac" ); info.extensions.append( "aac" ); } else if( codecName == "m4a/aac" ) { info.priority = 90; info.description = i18n("Advanced Audio Coding (AAC) is a lossy and popular audio format. It is widely used by Apple Inc.
In soundKonverter \"m4a/aac\" refers to a MPEG-4 audio file encoded with AAC.

http://en.wikipedia.org/wiki/Advanced Audio Coding"); info.mimeTypes.append( "audio/mp4" ); info.mimeTypes.append( "audio/x-m4a" ); info.extensions.append( "m4a" ); info.extensions.append( "f4a" ); info.extensions.append( "aac" ); info.extensions.append( "mp4" ); } else if( codecName == "m4a/alac" ) { info.priority = 80; info.lossless = true; info.description = i18n("Apple Lossless Audio Codec (ALAC) is a lossless audio format. It is widely used by Apple Inc.
In soundKonverter \"m4a/alac\" refers to a MPEG-4 audio file encoded with ALAC.

http://en.wikipedia.org/wiki/Apple Lossless"); info.mimeTypes.append( "audio/mp4" ); info.mimeTypes.append( "audio/x-m4a" ); info.extensions.append( "m4a" ); info.extensions.append( "f4a" ); info.extensions.append( "alac" ); info.extensions.append( "mp4" ); } else if( codecName == "mp4" ) { // info.description = i18n("mp4 files are video files with an aac encoded audio stream. It is widely used by Apple Inc."); info.mimeTypes.append( "video/mp4" ); info.extensions.append( "mp4" ); info.extensions.append( "m4v" ); info.extensions.append( "f4v" ); } else if( codecName == "ogg vorbis" ) { info.description = i18n("Ogg Vorbis is a lossy and popular audio format.
It is free of any legal restrictions.

http://en.wikipedia.org/wiki/Vorbis"); info.mimeTypes.append( "application/ogg" ); info.mimeTypes.append( "audio/vorbis" ); info.mimeTypes.append( "application/x-ogg" ); info.mimeTypes.append( "audio/ogg" ); info.mimeTypes.append( "audio/x-vorbis+ogg" ); info.extensions.append( "ogg" ); info.extensions.append( "oga" ); } else if( codecName == "opus" ) { info.description = i18n("Opus is a lossy audio format designed for real time communication over the internet.
It can cover a wide range of bitrates with a high quality and it is free of any legal restrictions.

http://en.wikipedia.org/wiki/Opus (audio format)"); info.mimeTypes.append( "audio/ogg" ); info.mimeTypes.append( "audio/opus" ); info.extensions.append( "opus" ); info.extensions.append( "oga" ); } else if( codecName == "mp3" ) { info.description = i18n("MPEG-1 or MPEG-2 Audio Layer III (MP3) is the most popular lossy audio format.
It is supported by virtually all audio players even though it has some legal restrictions.

http://en.wikipedia.org/wiki/MP3"); info.mimeTypes.append( "audio/x-mp3" ); info.mimeTypes.append( "audio/mpeg" ); info.mimeTypes.append( "audio/mp3" ); info.extensions.append( "mp3" ); } else if( codecName == "flac" ) { info.lossless = true; info.description = i18n("Free Lossless Audio Codec (FLAC) is a lossless audio format.
It is free of any legal restrictions.

http://en.wikipedia.org/wiki/FLAC"); info.mimeTypes.append( "audio/flac" ); info.mimeTypes.append( "audio/x-flac" ); info.mimeTypes.append( "audio/x-flac+ogg" ); info.mimeTypes.append( "audio/x-oggflac" ); info.extensions.append( "flac" ); info.extensions.append( "fla" ); } else if( codecName == "wma" ) { info.description = i18n("Windows Media Audio (WMA) is a lossy audio format developed by Microsoft.

http://en.wikipedia.org/wiki/Windows Media Audio"); info.mimeTypes.append( "audio/x-ms-wma" ); info.extensions.append( "wma" ); } else if( codecName == "ac3" ) { info.description = i18n("AC3 or AC-3 is part of the Dolby Digital format family.
It was designed to be used for movies (e.g. DVDs) and supports surround sound.

http://en.wikipedia.org/wiki/Dolby Digital"); info.mimeTypes.append( "audio/ac3" ); info.extensions.append( "ac3" ); } // else if( codecName == "e-ac3" ) // TODO mimtypes, extensions // { // info.lossless = false; // info.description = i18n("Dolby Digital Plus (Enhanced AC-3) is an advanced version of AC-3 for use on Blu-Ray discs."); // info.mimeTypes.append( "audio/eac3" ); // info.extensions.append( "eac3" ); // } else if( codecName == "mp2" ) { info.description = i18n("MPEG-1 or MPEG-2 Audio Layer II (MP2) is an old lossy audio format.

http://en.wikipedia.org/wiki/MPEG-1 Audio Layer II"); info.mimeTypes.append( "audio/mp2" ); info.mimeTypes.append( "audio/x-mp2" ); info.extensions.append( "mp2" ); } // else if( codecName == "sonic" ) // { // info.lossless = false; // info.description = i18n("Sonic"); // } // else if( codecName == "sonicls" ) // { // info.lossless = true; // info.description = i18n("Sonic Lossless"); // } else if( codecName == "als" ) // TODO mime type, etc. { info.lossless = true; // info.description = i18n("MPEG-4 Audio Lossless Coding"); // http://en.wikipedia.org/wiki/Audio_Lossless_Coding info.mimeTypes.append( "audio/mp4" ); info.extensions.append( "mp4" ); } else if( codecName == "amr nb" ) { info.inferiorQuality = true; info.description = i18n("Adaptive Multi-Rate Narrow-Band (AMR NB) is mainly used for speech compression for mobile communication.

http://en.wikipedia.org/wiki/Adaptive Multi-Rate audio codec"); info.mimeTypes.append( "audio/amr" ); info.mimeTypes.append( "audio/3gpp" ); info.mimeTypes.append( "audio/3gpp2" ); info.extensions.append( "amr" ); } else if( codecName == "amr wb" ) { info.inferiorQuality = true; info.description = i18n("Adaptive Multi-Rate Wide-Band (AMR WB) is an advanced version of AMR NB which uses a higher data rate resulting in a higher quality.
Still it should be used only for speech compression.

http://en.wikipedia.org/wiki/Adaptive Multi-Rate Wideband"); info.mimeTypes.append( "audio/amr-wb" ); info.mimeTypes.append( "audio/3gpp" ); info.extensions.append( "awb" ); } else if( codecName == "ape" ) { info.lossless = true; info.description = i18n("Monkey's Audio is a lossless audio format.

http://en.wikipedia.org/wiki/Monkey's Audio"); info.mimeTypes.append( "audio/x-ape" ); info.extensions.append( "ape" ); info.extensions.append( "mac" ); info.extensions.append( "apl" ); } else if( codecName == "speex" ) { info.inferiorQuality = true; info.description = i18n("Speex is a lossy audio format designed for speech encoding.
It is free of any legal restrictions. Since the release of Opus, Speex is considered obsolete.

http://en.wikipedia.org/wiki/Speex"); info.mimeTypes.append( "audio/x-speex" ); info.mimeTypes.append( "audio/x-speex+ogg" ); info.extensions.append( "spx" ); } else if( codecName == "mp1" ) { // info.description = i18n("MPEG-1 Audio Layer I very old and lossy file format."); // http://en.wikipedia.org/wiki/MP1 info.mimeTypes.append( "audio/mpeg" ); info.mimeTypes.append( "audio/mpa" ); info.extensions.append( "mp1" ); } else if( codecName == "musepack" ) { info.description = i18n("Musepack (MPC) is a free and lossy file format based on mp2 and optimized for high quality.

http://en.wikipedia.org/wiki/Musepack"); info.mimeTypes.append( "audio/x-musepack" ); info.mimeTypes.append( "audio/musepack" ); info.extensions.append( "mpc" ); info.extensions.append( "mp+" ); info.extensions.append( "mpp" ); } else if( codecName == "shorten" ) { info.lossless = true; info.description = i18n("Shorten (SHN) is a free and lossless audio format.

http://en.wikipedia.org/wiki/Shorten"); info.mimeTypes.append( "application/x-shorten" ); info.extensions.append( "shn" ); } // else if( codecName == "mlp" ) // { // info.lossless = true; // info.description = i18n("Meridian Lossless Packing is an old propritary lossless audio format."); // http://en.wikipedia.org/wiki/Meridian_Lossless_Packing // } // else if( codecName == "truehd" ) // { // info.lossless = true; // info.description = i18n("Dolby TrueHD is a lossless audio format based on mlp for use on Blu-Ray discs."); // http://en.wikipedia.org/wiki/Dolby_TrueHD // } // else if( codecName == "truespeech" ) // { // info.lossless = false; // info.description = i18n("Truespeech is a propritary speech codec for low bitrates."); // http://en.wikipedia.org/wiki/Truespeech // } else if( codecName == "tta" ) { info.lossless = true; info.description = i18n("True Audio (TTA) is a free and lossless audio format.

http://en.wikipedia.org/wiki/TTA (codec)"); info.mimeTypes.append( "audio/x-tta" ); info.extensions.append( "tta" ); } else if( codecName == "wavpack" ) { info.lossless = true; info.description = i18n("WavPack (WV) is a free and lossless audio format.

http://en.wikipedia.org/wiki/WavPack"); info.mimeTypes.append( "audio/x-wavpack" ); info.extensions.append( "wv" ); info.extensions.append( "wvp" ); } else if( codecName == "ra" ) { // info.description = i18n("Real Media Audio is a proprietary and lossy codec."); info.mimeTypes.append( "audio/vnd.rn-realaudio" ); info.extensions.append( "ra" ); info.extensions.append( "rax" ); } else if( codecName == "3gp" ) { // info.description = i18n("3GP is a audio/video container format for mobile devices."); // http://de.wikipedia.org/wiki/3gp info.mimeTypes.append( "video/3gpp" ); info.mimeTypes.append( "audio/3gpp" ); info.mimeTypes.append( "video/3gpp2" ); info.mimeTypes.append( "audio/3gpp2" ); info.extensions.append( "3gp" ); info.extensions.append( "3g2" ); info.extensions.append( "3gpp" ); info.extensions.append( "3ga" ); info.extensions.append( "3gp2" ); info.extensions.append( "3gpp2" ); } else if( codecName == "rm" ) { // info.description = i18n("Real Media is a proprietary and lossy codec."); info.mimeTypes.append( "application/vnd.rn-realmedia" ); info.extensions.append( "rm" ); info.extensions.append( "rmj" ); info.extensions.append( "rmm" ); info.extensions.append( "rms" ); info.extensions.append( "rmvb" ); info.extensions.append( "rmx" ); } else if( codecName == "avi" ) { info.mimeTypes.append( "video/x-msvideo" ); info.extensions.append( "avi" ); info.extensions.append( "divx" ); } else if( codecName == "mkv" ) { info.mimeTypes.append( "video/x-matroska" ); info.extensions.append( "mkv" ); } else if( codecName == "ogv" ) { info.mimeTypes.append( "video/ogg" ); info.extensions.append( "ogv" ); } else if( codecName == "mpeg" ) { info.mimeTypes.append( "video/mpeg" ); info.extensions.append( "mpg" ); info.extensions.append( "mpeg" ); info.extensions.append( "m2t" ); info.extensions.append( "m2ts" ); info.extensions.append( "mod" ); info.extensions.append( "mp2" ); info.extensions.append( "mpe" ); info.extensions.append( "mts" ); info.extensions.append( "ts" ); info.extensions.append( "vob" ); } else if( codecName == "mov" ) { info.mimeTypes.append( "video/quicktime" ); info.extensions.append( "mov" ); info.extensions.append( "moov" ); info.extensions.append( "qt" ); info.extensions.append( "qtvr" ); } else if( codecName == "flv" ) { info.mimeTypes.append( "video/x-flv" ); info.mimeTypes.append( "video/flv" ); info.extensions.append( "flv" ); } else if( codecName == "wmv" ) { info.mimeTypes.append( "video/x-ms-wmv" ); info.mimeTypes.append( "video/x-ms-asf" ); info.extensions.append( "wmv" ); info.extensions.append( "asf" ); } else if( codecName == "rv" ) { info.mimeTypes.append( "video/vnd.rn-realvideo" ); info.extensions.append( "rv" ); info.extensions.append( "rvx" ); } else if( codecName == "midi" ) { info.inferiorQuality = true; // info.description = i18n("midi is a very old sound file format, that doesn't encode audio waves but stores instrument timings."); info.mimeTypes.append( "audio/midi" ); info.extensions.append( "midi" ); info.extensions.append( "mid" ); info.extensions.append( "kar" ); } else if( codecName == "mod" ) { info.inferiorQuality = true; // info.description = i18n("Amiga-SoundTracker-Audio is a very old sound file format, that doesn't encode audio waves but stores instrument timings."); info.mimeTypes.append( "audio/x-mod" ); info.extensions.append( "669" ); info.extensions.append( "m15" ); info.extensions.append( "med" ); info.extensions.append( "mod" ); info.extensions.append( "mtm" ); info.extensions.append( "ult" ); info.extensions.append( "uni" ); } else if( codecName == "sad" ) { info.inferiorQuality = true; // info.description = i18n("Black & White audio files where used for the game Black & White and contain an MP2 stream."); info.extensions.append( "sad" ); } else if( codecName == "8svx" ) { info.inferiorQuality = true; info.description = i18n("8-Bit Sampled Voice (8SVX) is an audio file format standard developed by Electronic Arts for the Commodore-Amiga computer series.

http://en.wikipedia.org/wiki/8SVX"); info.mimeTypes.append( "audio/x-8svx" ); info.mimeTypes.append( "audio/8svx" ); info.mimeTypes.append( "audio/x-aiff" ); info.mimeTypes.append( "audio/aiff" ); info.extensions.append( "8svx" ); info.extensions.append( "iff" ); } else if( codecName == "aiff" ) { info.lossless = true; info.description = i18n("Audio Interchange File Format (AIFF) is a very simple audio format that doesn't compress the audio stream so it's lossless but the file size is very big and it doesn't support advanced features like tags.

http://en.wikipedia.org/wiki/Audio Interchange File Format"); info.mimeTypes.append( "audio/x-aiff" ); info.mimeTypes.append( "audio/aiff" ); info.extensions.append( "aiff" ); // aiff has meta data, aif not info.extensions.append( "aif" ); } // else if( codecName == "aiff-c" ) // sox only supports uncompressed aiff-c // { // info.lossless = true; // info.description = i18n("AIFF-C is a compressed version of AIFF. There are different compression types available."); // info.mimeTypes.append( "audio/x-aiff" ); // info.mimeTypes.append( "audio/aiff" ); // info.extensions.append( "aifc" ); // info.extensions.append( "aiffc" ); // } return info; } void BackendPlugin::scanForBackends( const QStringList& directoryList ) { for( QMap::Iterator a = binaries.begin(); a != binaries.end(); ++a ) { a.value() = KStandardDirs::findExe( a.key() ); if( a.value().isEmpty() ) { for( QList::const_iterator b = directoryList.begin(); b != directoryList.end(); ++b ) { if( QFile::exists((*b) + "/" + a.key()) ) { a.value() = (*b) + "/" + a.key(); break; } } } } } QString BackendPlugin::getCodecFromFile( const KUrl& filename, const QString& mimeType, short *rating ) { Q_UNUSED(filename) Q_UNUSED(mimeType) Q_UNUSED(rating) return ""; } bool BackendPlugin::pause( int id ) { Q_UNUSED(id) return false; } bool BackendPlugin::resume( int id ) { Q_UNUSED(id) return false; } bool BackendPlugin::kill( int id ) { for( int i=0; iid == id && backendItems.at(i)->process != 0 ) { backendItems.at(i)->process->kill(); emit log( id, "
\t" + i18n("Killing process on user request") + "
" ); return true; } } return false; } float BackendPlugin::progress( int id ) { for( int i=0; iid == id ) { return backendItems.at(i)->progress; } } return 0.0f; } // void BackendPlugin::setPriority( int _priority ) // { // priority = _priority; // // for( int i=0; iprocess->setPriority( priority ); // } // } void BackendPlugin::processOutput() { for( int i=0; iprocess == QObject::sender() ) { const QString output = backendItems.at(i)->process->readAllStandardOutput().data(); const float progress = parseOutput( output ); if( progress > backendItems.at(i)->progress ) backendItems.at(i)->progress = progress; if( progress == -1 ) logOutput( backendItems.at(i)->id, output ); return; } } } void BackendPlugin::processExit( int exitCode, QProcess::ExitStatus exitStatus ) { Q_UNUSED(exitStatus) for( int i=0; iprocess == QObject::sender() ) { emit jobFinished( backendItems.at(i)->id, exitCode ); backendItems.at(i)->deleteLater(); backendItems.removeAt(i); return; } } } QString BackendPlugin::standardMessage( const QString& type, const QStringList& arguments ) { if( type == "encode_codec,backend" ) { if( arguments.count() != 2 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; return i18n( "In order to encode %1 files, you need to install '%2'.", arguments.at(0), arguments.at(1) ); } if( type == "decode_codec,backend" ) { if( arguments.count() != 2 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; return i18n( "In order to decode %1 files, you need to install '%2'.", arguments.at(0), arguments.at(1) ); } if( type == "transcode_codec,backend" ) { if( arguments.count() != 2 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; return i18n( "In order to transcode %1 files, you need to install '%2'.", arguments.at(0), arguments.at(1) ); } if( type == "replygain_codec,backend" ) { if( arguments.count() != 2 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; return i18n( "In order to calculate Replay Gain tags for %1 files, you need to install '%2'.", arguments.at(0), arguments.at(1) ); } if( type == "install_opensource_backend" ) { if( arguments.count() != 1 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; return i18n( "'%1' should be shipped with your distribution.", arguments.at(0) ); } if( type == "install_patented_backend" ) { if( arguments.count() != 1 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; return i18n( "Since '%1' includes patented codecs, it may not be included in the default installation of your distribution. Many distributions offer '%1' in an additional software repository.", arguments.at(0) ); } if( type == "install_website_backend,url" ) { if( arguments.count() != 2 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; return i18n( "You can download '%1' at %2", arguments.at(0), arguments.at(1) ); } if( type == "filter,backend" ) { if( arguments.count() != 3 ) return "BackendPlugin::standardMessage (type: '"+type+"') called with wrong 'arguments' count!"; if( arguments.at(1) == "single" ) { return i18n( "In order to use the filter %1, you need to install '%2'.", arguments.at(0), arguments.at(2) ); } else { return i18n( "In order to use the filters %1, you need to install '%2'.", arguments.at(0), arguments.at(2) ); } } return QString(); } QString BackendPlugin::standardMessage( const QString& type ) { return standardMessage( type, QStringList() ); } QString BackendPlugin::standardMessage( const QString& type, const QString& argument1 ) { return standardMessage( type, QStringList(argument1) ); } QString BackendPlugin::standardMessage(const QString& type, const QString& argument1, const QString& argument2) { QStringList arguments; arguments.append( argument1 ); arguments.append( argument2 ); return standardMessage( type, arguments ); } QString BackendPlugin::standardMessage(const QString& type, const QString& argument1, const QString& argument2, const QString& argument3) { QStringList arguments; arguments.append( argument1 ); arguments.append( argument2 ); arguments.append( argument3 ); return standardMessage( type, arguments ); } /// see http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_03.html QString BackendPlugin::escapeUrl( const KUrl& url ) { // if no file name is given, assume we are using pipes if( url.isEmpty() ) return "-"; return url.toLocalFile().replace("\"","\\\"").replace("$","\\$").replace("`","\\`"); } void BackendPlugin::logOutput( int id, const QString& message ) { emit log( id, "
\t" + message.trimmed().replace("\n","
\t") + "
" ); } void BackendPlugin::logCommand( int id, const QString& message ) { emit log( id, "
\t" + message.trimmed().replace("\n","
\t") + "
" ); } ./soundkonverter-2.0.5/core/PaxHeaders.25599/ripperplugin.h0000644000175000001440000000013212255306740021630 xustar000000000000000030 mtime=1387630048.405963984 30 atime=1387630048.405963984 30 ctime=1387631579.853402121 ./soundkonverter-2.0.5/core/ripperplugin.h0000755000175000001440000000226112255306740021247 0ustar00danielusers00000000000000 #ifndef RIPPERPLUGIN_H #define RIPPERPLUGIN_H #include "backendplugin.h" #include class RipperPlugin; class KDE_EXPORT RipperPluginItem : public BackendPluginItem { Q_OBJECT public: RipperPluginItem( QObject *parent=0 ); virtual ~RipperPluginItem(); struct Data { int fromSector; int toSector; } data; }; /** @author Daniel Faust */ class KDE_EXPORT RipperPlugin : public BackendPlugin { Q_OBJECT public: RipperPlugin( QObject *parent=0 ); virtual ~RipperPlugin(); virtual QString type(); virtual QList codecTable() = 0; /** rips a track */ virtual unsigned int rip( const QString& device, int track, int tracks, const KUrl& outputFile ) = 0; /** returns a command for ripping a track through a pipe; "" if pipes aren't supported */ virtual QStringList ripCommand( const QString& device, int track, int tracks, const KUrl& outputFile ) = 0; }; #define K_EXPORT_SOUNDKONVERTER_RIPPER(libname, classname) \ K_EXPORT_COMPONENT_FACTORY( soundkonverter_ripper_##libname, KGenericFactory("soundkonverter_ripper_" #libname) ) #endif // RIPPERPLUGIN_H ./soundkonverter-2.0.5/core/PaxHeaders.25599/replaygainplugin.cpp0000644000175000001440000000006212105142352023006 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.853402121 ./soundkonverter-2.0.5/core/replaygainplugin.cpp0000755000175000001440000000071612105142352022426 0ustar00danielusers00000000000000 #include "replaygainplugin.h" ReplayGainPluginItem::ReplayGainPluginItem( QObject *parent ) : BackendPluginItem( parent ) { data.fileCount = 0; data.processedFiles = 0; data.lastFileProgress = 0; } ReplayGainPluginItem::~ReplayGainPluginItem() {} ReplayGainPlugin::ReplayGainPlugin( QObject *parent ) : BackendPlugin( parent ) {} ReplayGainPlugin::~ReplayGainPlugin() {} QString ReplayGainPlugin::type() { return "replaygain"; } ./soundkonverter-2.0.5/core/PaxHeaders.25599/backendplugin.h0000644000175000001440000000006212105142352021707 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.853402121 ./soundkonverter-2.0.5/core/backendplugin.h0000644000175000001440000001033612105142352021323 0ustar00danielusers00000000000000 #ifndef BACKENDPLUGIN_H #define BACKENDPLUGIN_H #include #include #include #include #include class BackendPlugin; struct ConversionPipeTrunk { QString codecFrom, codecTo; BackendPlugin *plugin; bool enabled; // can we use this conversion pipe? (all needed backends installed?) int rating; QString problemInfo; // howto message, if a backend is missing struct Data // additional data { bool hasInternalReplayGain; bool canRipEntireCd; } data; bool operator==( const ConversionPipeTrunk& other ) { return plugin == other.plugin; } }; class BackendPluginItem : public QObject { Q_OBJECT public: BackendPluginItem( QObject *parent=0 ); virtual ~BackendPluginItem(); KProcess *process; int id; float progress; // hold the current progress, -1 is the initial value and shows that the progress can't be determined }; /** @author Daniel Faust */ class KDE_EXPORT BackendPlugin : public QObject { Q_OBJECT public: enum ActionType { Decoder, Encoder, Filter, ReplayGain, Ripper, General }; enum ErrorCode { UnknownError, BackendNeedsConfiguration, FeatureNotSupported }; struct FormatInfo { QString codecName; // the internal name of this codec short priority; // atm. we have to guess the codec when handling of a container file bool lossless; // for calculating a possible conversion pipe bool inferiorQuality; // e.g. 8 bit file types QString description; // description for the simple tab QStringList mimeTypes; // TODO this might be obsolete - what's with dolphin's actions context menu? QStringList extensions; }; BackendPlugin( QObject *parent=0 ); virtual ~BackendPlugin(); virtual QString name() = 0; virtual QString type() = 0; virtual FormatInfo formatInfo( const QString& codecName ); virtual QString getCodecFromFile( const KUrl& filename, const QString& mimeType = "application/octet-stream", short *rating = 0 ); virtual bool isConfigSupported( ActionType action, const QString& codecName ) = 0; virtual void showConfigDialog( ActionType action, const QString& codecName, QWidget *parent ) = 0; virtual bool hasInfo() = 0; virtual void showInfo( QWidget *parent ) = 0; virtual bool pause( int id ); virtual bool resume( int id ); virtual bool kill( int id ); // virtual void setPriority( int _priority ); virtual float progress( int id ); virtual float parseOutput( const QString& output ) = 0; // virtual float parseOutput( const QString& output, BackendPluginItem *backendItem = 0 ) = 0; TODO ogg replaygain fix /** search for the backend binaries in the given directories */ virtual void scanForBackends( const QStringList& directoryList = QStringList() ); /** holds all backend binaries and their location if they were found */ QMap binaries; QString standardMessage( const QString& type, const QStringList& arguments ); QString standardMessage( const QString& type ); QString standardMessage( const QString& type, const QString& arguments1 ); QString standardMessage( const QString& type, const QString& arguments1, const QString& arguments2 ); QString standardMessage( const QString& type, const QString& arguments1, const QString& arguments2, const QString& arguments3 ); /** returns the url as a string with all special characters escaped so the bash can find the files */ QString escapeUrl( const KUrl& url ); void logCommand( int id, const QString& message ); void logOutput( int id, const QString& message ); protected: QList backendItems; int lastId; QStringList allCodecs; // int priority; signals: void log( int id, const QString& message ); void jobFinished( int id, int exitCode ); private slots: /** Get the process' output */ virtual void processOutput(); /** The process has exited */ virtual void processExit( int exitCode, QProcess::ExitStatus exitStatus ); }; #endif // BACKENDPLUGIN_H ./soundkonverter-2.0.5/core/PaxHeaders.25599/conversionoptions.h0000644000175000001440000000006212105142352022702 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.853402121 ./soundkonverter-2.0.5/core/conversionoptions.h0000644000175000001440000000542512105142352022321 0ustar00danielusers00000000000000 #ifndef CONVERSIONOPTIONS_H #define CONVERSIONOPTIONS_H #include #include #include /** * @short The options for the filter process can be stored here * @author Daniel Faust * @version 1.0 */ class KDE_EXPORT FilterOptions { public: FilterOptions(); virtual ~FilterOptions(); bool equalsBasics( FilterOptions *_other ); virtual bool equals( FilterOptions *_other ); // checks if the other FilterOptions is equal to this virtual QDomElement toXml( QDomDocument document, const QString elementName ); virtual bool fromXml( QDomElement filterOptions ); QString pluginName; // an identificator to see which plugin created the FilterOptions // NOTE this must be unique for each plugin! QString cmdArguments; // user defined command line arguments }; /** * @short The options for the conversion process can be stored here * @author Daniel Faust * @version 1.0 */ class KDE_EXPORT ConversionOptions { public: ConversionOptions(); virtual ~ConversionOptions(); bool equalsBasics( ConversionOptions *_other ); bool equalsFilters( ConversionOptions *_other ); virtual bool equals( ConversionOptions *_other ); // checks if the other ConversionOptions is equal to this virtual QDomElement toXml( QDomDocument document ); virtual bool fromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); QString pluginName; // an identificator to see which plugin created the ConversionOptions // NOTE this must be unique for each plugin! // plugin must ensure that these values are set, so an alternative plugin can be used enum QualityMode { Quality = 0, Bitrate = 1, Lossless = 2 } qualityMode; double quality; // plugin specific quaily value int bitrate; // set in order to fall back if the other plugin does not support the quality mode [kbit/s] enum BitrateMode { Vbr = 0, Abr = 1, Cbr = 2 } bitrateMode; QString cmdArguments; // user defined command line arguments // plugin specific, may not be used by alternative plugins double compressionLevel; // how hard should the encoder try // these values are set by OptionsDetailed::currentConversionOptions QString profile; // the precalculated profile for the simple tab QString codecName; // the output format (was outputFormat) int outputDirectoryMode; QString outputDirectory; QString outputFilesystem; // the filesystem of the output directory bool replaygain; QList filterOptions; }; #endif // CONVERSIONOPTIONS_H ./soundkonverter-2.0.5/core/PaxHeaders.25599/codecplugin.cpp0000644000175000001440000000006212105142352021730 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.853402121 ./soundkonverter-2.0.5/core/codecplugin.cpp0000755000175000001440000000174512105142352021353 0ustar00danielusers00000000000000 #include "codecplugin.h" #include "codecwidget.h" CodecPluginItem::CodecPluginItem( QObject *parent ) : BackendPluginItem( parent ) { data.length = 0; } CodecPluginItem::~CodecPluginItem() {} CodecPlugin::CodecPlugin( QObject *parent ) : BackendPlugin( parent ) { lastUsedConversionOptions = 0; } CodecPlugin::~CodecPlugin() {} QString CodecPlugin::type() { return "codec"; } CodecWidget *CodecPlugin::deleteCodecWidget( CodecWidget *codecWidget ) { if( !codecWidget ) return 0; if( lastUsedConversionOptions ) delete lastUsedConversionOptions; lastUsedConversionOptions = codecWidget->currentConversionOptions(); delete codecWidget; return 0; } ConversionOptions *CodecPlugin::conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements ) { ConversionOptions *options = new ConversionOptions(); options->fromXml( conversionOptions, filterOptionsElements ); return options; } ./soundkonverter-2.0.5/core/PaxHeaders.25599/codecwidget.cpp0000644000175000001440000000006212105142352021715 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.853402121 ./soundkonverter-2.0.5/core/codecwidget.cpp0000644000175000001440000000027712105142352021334 0ustar00danielusers00000000000000 #include "codecwidget.h" FilterWidget::FilterWidget() : QWidget() {} FilterWidget::~FilterWidget() {} CodecWidget::CodecWidget() : QWidget() {} CodecWidget::~CodecWidget() {} ./soundkonverter-2.0.5/core/PaxHeaders.25599/filterplugin.h0000644000175000001440000000006212105142352021605 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/core/filterplugin.h0000755000175000001440000000337612105142352021232 0ustar00danielusers00000000000000 #ifndef FILTERPLUGIN_H #define FILTERPLUGIN_H #include "codecplugin.h" #include "conversionoptions.h" class QWidget; class FilterPlugin; class FilterWidget; class TagData; // struct FilterPipe // { // FilterPlugin *plugin; // bool enabled; // can we use this conversion pipe? (all needed backends installed?) // QString problemInfo; // howto message, if a backend is missing // }; class KDE_EXPORT FilterPluginItem : public CodecPluginItem { Q_OBJECT public: FilterPluginItem( QObject *parent=0 ); virtual ~FilterPluginItem(); }; /** @author Daniel Faust */ class KDE_EXPORT FilterPlugin : public CodecPlugin { Q_OBJECT public: FilterPlugin( QObject *parent=0 ); virtual ~FilterPlugin(); virtual QString type(); virtual FilterWidget *newFilterWidget() = 0; virtual FilterWidget *deleteFilterWidget( FilterWidget *filterWidget ); // /** // * starts the conversion and returns either a conversion id or an error code: // * // * -1 unknown error // * -100 plugin not configured // */ // virtual int filter( const KUrl& inputFile, const KUrl& outputFile, FilterOptions *_filterOptions ) = 0; // /** returns a command for converting a file through a pipe; "" if pipes aren't supported */ // virtual QStringList filterCommand( const KUrl& inputFile, const KUrl& outputFile, FilterOptions *_filterOptions ) = 0; virtual FilterOptions *filterOptionsFromXml( QDomElement filterOptions ); protected: FilterOptions *lastUsedFilterOptions; }; #define K_EXPORT_SOUNDKONVERTER_FILTER(libname, classname) \ K_EXPORT_COMPONENT_FACTORY( soundkonverter_filter_##libname, KGenericFactory("soundkonverter_filter_" #libname) ) #endif // FILTERPLUGIN_H ./soundkonverter-2.0.5/core/PaxHeaders.25599/ripperplugin.cpp0000644000175000001440000000013212255306740022163 xustar000000000000000030 mtime=1387630048.405963984 30 atime=1387630048.398964072 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/core/ripperplugin.cpp0000755000175000001440000000065712255306740021611 0ustar00danielusers00000000000000 #include "ripperplugin.h" RipperPluginItem::RipperPluginItem( QObject *parent ) : BackendPluginItem( parent ) { data.fromSector = 0; data.toSector = 0; } RipperPluginItem::~RipperPluginItem() {} // // class RipperPlugin // //////////////////// RipperPlugin::RipperPlugin( QObject *parent ) : BackendPlugin( parent ) {} RipperPlugin::~RipperPlugin() {} QString RipperPlugin::type() { return "ripper"; } ./soundkonverter-2.0.5/core/PaxHeaders.25599/codecwidget.h0000644000175000001440000000006212105142352021362 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/core/codecwidget.h0000644000175000001440000000265612105142352021004 0ustar00danielusers00000000000000 #ifndef CODECWIDGET_H #define CODECWIDGET_H #include #include #include class FilterOptions; class ConversionOptions; /** * @short The plugin specific widget for detailed options * @author Daniel Faust * @version 1.0 */ class KDE_EXPORT FilterWidget : public QWidget { Q_OBJECT public: FilterWidget(); virtual ~FilterWidget(); virtual FilterOptions *currentFilterOptions() = 0; virtual bool setCurrentFilterOptions( FilterOptions *_options ) = 0; // returns false if options are invalid (eg. different plugin) signals: void optionsChanged(); }; /** * @short The plugin specific widget for detailed options * @author Daniel Faust * @version 1.0 */ class KDE_EXPORT CodecWidget : public QWidget { Q_OBJECT public: CodecWidget(); virtual ~CodecWidget(); virtual ConversionOptions *currentConversionOptions() = 0; virtual bool setCurrentConversionOptions( ConversionOptions *_options ) = 0; // returns false if options are invalid (eg. different plugin) virtual void setCurrentFormat( const QString& format ) = 0; virtual QString currentProfile() = 0; virtual bool setCurrentProfile( const QString& profile ) = 0; // returns false if options are invalid (eg. plugin doesn't support hybrid) virtual int currentDataRate() = 0; signals: void optionsChanged(); }; #endif // CODECWIDGET_H ./soundkonverter-2.0.5/core/PaxHeaders.25599/codecplugin.h0000644000175000001440000000006212105142352021375 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/core/codecplugin.h0000755000175000001440000000356712105142352021024 0ustar00danielusers00000000000000 #ifndef CODECPLUGIN_H #define CODECPLUGIN_H #include "backendplugin.h" #include "conversionoptions.h" class CodecPlugin; class CodecWidget; class TagData; class KDE_EXPORT CodecPluginItem : public BackendPluginItem { Q_OBJECT public: CodecPluginItem( QObject *parent=0 ); virtual ~CodecPluginItem(); struct Data { int length; } data; }; /** @author Daniel Faust */ class KDE_EXPORT CodecPlugin : public BackendPlugin { Q_OBJECT public: CodecPlugin( QObject *parent=0 ); virtual ~CodecPlugin(); virtual QString type(); virtual QList codecTable() = 0; virtual CodecWidget *newCodecWidget() = 0; virtual CodecWidget *deleteCodecWidget( CodecWidget *codecWidget ); /** * starts the conversion and returns either a conversion id or an error code: * * -1 unknown error * -100 plugin not configured */ virtual unsigned int convert( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ) = 0; /** returns a command for converting a file through a pipe; "" if pipes aren't supported */ virtual QStringList convertCommand( const KUrl& inputFile, const KUrl& outputFile, const QString& inputCodec, const QString& outputCodec, ConversionOptions *_conversionOptions, TagData *tags = 0, bool replayGain = false ) = 0; virtual ConversionOptions *conversionOptionsFromXml( QDomElement conversionOptions, QList *filterOptionsElements = 0 ); protected: ConversionOptions *lastUsedConversionOptions; }; #define K_EXPORT_SOUNDKONVERTER_CODEC(libname, classname) \ K_EXPORT_COMPONENT_FACTORY( soundkonverter_codec_##libname, KGenericFactory("soundkonverter_codec_" #libname) ) #endif // CODECPLUGIN_H ./soundkonverter-2.0.5/core/PaxHeaders.25599/replaygainplugin.h0000644000175000001440000000006212105142352022453 xustar000000000000000020 atime=1360315626 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/core/replaygainplugin.h0000755000175000001440000000272112105142352022071 0ustar00danielusers00000000000000 #ifndef REPLAYGAINPLUGIN_H #define REPLAYGAINPLUGIN_H #include "backendplugin.h" #include #include class ReplayGainPlugin; struct ReplayGainPipe { QString codecName; ReplayGainPlugin *plugin; bool enabled; // can we use this conversion pipe? (all needed backends installed?) int rating; QString problemInfo; // howto message, if a backend is missing }; class KDE_EXPORT ReplayGainPluginItem : public BackendPluginItem { Q_OBJECT public: ReplayGainPluginItem( QObject *parent=0 ); virtual ~ReplayGainPluginItem(); struct Data // additional data { int fileCount; int processedFiles; float lastFileProgress; } data; }; /** @author Daniel Faust */ class KDE_EXPORT ReplayGainPlugin : public BackendPlugin { Q_OBJECT public: enum ApplyMode { Add = 0, Remove = 1, Force = 2 }; ReplayGainPlugin( QObject *parent=0 ); virtual ~ReplayGainPlugin(); virtual QString type(); virtual QList codecTable() = 0; /** adds replaygain to one or more files */ virtual unsigned int apply( const KUrl::List& fileList, ApplyMode mode = Add ) = 0; protected: int lastId; }; #define K_EXPORT_SOUNDKONVERTER_REPLAYGAIN(libname, classname) \ K_EXPORT_COMPONENT_FACTORY( soundkonverter_replaygain_##libname, KGenericFactory("soundkonverter_replaygain_" #libname) ) #endif // REPLAYGAINPLUGIN_H ./soundkonverter-2.0.5/PaxHeaders.25599/config.cpp0000644000175000001440000000013212255306740017760 xustar000000000000000030 mtime=1387630048.397964084 30 atime=1387630048.397964084 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/config.cpp0000755000175000001440000013735212255306740017411 0ustar00danielusers00000000000000 #include "config.h" #include "logger.h" #include "global.h" #include #include #include #include #include #include Config::Config( Logger *_logger, QObject *parent ) : QObject( parent ), logger( _logger ) { connect( this, SIGNAL(updateWriteLogFilesSetting(bool)), logger, SLOT(updateWriteSetting(bool)) ); pPluginLoader = new PluginLoader( logger, this ); pTagEngine = new TagEngine( this ); pConversionOptionsManager = new ConversionOptionsManager( pPluginLoader ); } Config::~Config() { save(); qDeleteAll( data.profiles.values() ); data.profiles.clear(); delete pPluginLoader; delete pTagEngine; delete pConversionOptionsManager; } void Config::load() { QTime time; time.start(); QStringList formats; KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "General" ); data.app.configVersion = group.readEntry( "configVersion", 0 ); data.general.startTab = group.readEntry( "startTab", 0 ); data.general.lastTab = group.readEntry( "lastTab", 0 ); data.general.defaultProfile = group.readEntry( "defaultProfile", i18n("Last used") ); data.general.lastProfile = group.readEntry( "lastProfile", i18n("High") ); data.general.defaultFormat = group.readEntry( "defaultFormat", i18n("Last used") ); data.general.lastFormat = group.readEntry( "lastFormat", "ogg vorbis" ); data.general.lastOutputDirectoryMode = group.readEntry( "lastOutputDirectoryMode", 0 ); data.general.specifyOutputDirectory = group.readEntry( "specifyOutputDirectory", QDir::homePath() + "/soundKonverter" ); data.general.metaDataOutputDirectory = group.readEntry( "metaDataOutputDirectory", QDir::homePath() + "/soundKonverter/%b/%d - %n - %a - %t" ); data.general.copyStructureOutputDirectory = group.readEntry( "copyStructureOutputDirectory", QDir::homePath() + "/soundKonverter" ); data.general.lastMetaDataOutputDirectoryPaths = group.readEntry( "lastMetaDataOutputDirectoryPaths", QStringList() ); data.general.lastNormalOutputDirectoryPaths = group.readEntry( "lastNormalOutputDirectoryPaths", QStringList() ); data.general.waitForAlbumGain = group.readEntry( "waitForAlbumGain", true ); data.general.useVFATNames = group.readEntry( "useVFATNames", false ); data.general.writeLogFiles = group.readEntry( "writeLogFiles", false ); data.general.conflictHandling = (Config::Data::General::ConflictHandling)group.readEntry( "conflictHandling", 0 ); // data.general.priority = group.readEntry( "priority", 10 ); data.general.numFiles = group.readEntry( "numFiles", 0 ); data.general.numReplayGainFiles = group.readEntry( "numReplayGainFiles", 0 ); if( data.general.numFiles == 0 || data.general.numReplayGainFiles == 0 ) { QList processors = Solid::Device::listFromType(Solid::DeviceInterface::Processor, QString()); const int num = processors.count() > 0 ? processors.count() : 1; if( data.general.numFiles == 0 ) data.general.numFiles = num; if( data.general.numReplayGainFiles == 0 ) data.general.numReplayGainFiles = num; } // data.general.executeUserScript = group.readEntry( "executeUserScript", false ); // data.general.showToolBar = group.readEntry( "showToolBar", false ); // data.general.outputFilePermissions = group.readEntry( "outputFilePermissions", 644 ); data.general.actionMenuConvertMimeTypes = group.readEntry( "actionMenuConvertMimeTypes", QStringList() ); data.general.actionMenuReplayGainMimeTypes = group.readEntry( "actionMenuReplayGainMimeTypes", QStringList() ); data.general.replayGainGrouping = (Config::Data::General::ReplayGainGrouping)group.readEntry( "replayGainGrouping", 0 ); data.general.preferredOggVorbisExtension = group.readEntry( "preferredOggVorbisExtension", "ogg" ); data.general.preferredVorbisCommentCommentTag = group.readEntry( "preferredVorbisCommentCommentTag", "DESCRIPTION" ); data.general.preferredVorbisCommentTrackTotalTag = group.readEntry( "preferredVorbisCommentTrackTotalTag", "TRACKTOTAL" ); data.general.preferredVorbisCommentDiscTotalTag = group.readEntry( "preferredVorbisCommentDiscTotalTag", "DISCTOTAL" ); // due to a bug lastNormalOutputDirectoryPaths could have more than 5 items while( data.general.lastNormalOutputDirectoryPaths.count() > 5 ) data.general.lastNormalOutputDirectoryPaths.takeLast(); group = conf->group( "Advanced" ); data.advanced.useSharedMemoryForTempFiles = group.readEntry( "useSharedMemoryForTempFiles", false ); data.advanced.sharedMemorySize = 0; if( QFile::exists("/dev/shm") ) { system("df -B 1M /dev/shm | tail -1 > /dev/shm/soundkonverter_shm_size"); QFile chkdf("/dev/shm/soundkonverter_shm_size"); if( chkdf.open(QIODevice::ReadOnly|QIODevice::Text) ) { QTextStream t( &chkdf ); QString s = t.readLine(); QRegExp rxlen( "^(?:\\S+)(?:\\s+)(?:\\s+)(\\d+)(?:\\s+)(\\d+)(?:\\s+)(\\d+)(?:\\s+)(\\d+)" ); if( s.contains(rxlen) ) { data.advanced.sharedMemorySize = rxlen.cap(1).toInt(); } chkdf.close(); } chkdf.remove(); } data.advanced.maxSizeForSharedMemoryTempFiles = group.readEntry( "maxSizeForSharedMemoryTempFiles", data.advanced.sharedMemorySize / 4 ); data.advanced.usePipes = group.readEntry( "usePipes", false ); group = conf->group( "CoverArt" ); data.coverArt.writeCovers = group.readEntry( "writeCovers", 1 ); data.coverArt.writeCoverName = group.readEntry( "writeCoverName", 0 ); data.coverArt.writeCoverDefaultName = group.readEntry( "writeCoverDefaultName", i18nc("cover file name","cover") ); group = conf->group( "Backends" ); data.backends.rippers = group.readEntry( "rippers", QStringList() ); formats = group.readEntry( "formats", QStringList() ); foreach( const QString format, formats ) { CodecData codecData; codecData.codecName = format; codecData.encoders = group.readEntry( format + "_encoders", QStringList() ); codecData.decoders = group.readEntry( format + "_decoders", QStringList() ); codecData.replaygain = group.readEntry( format + "_replaygain", QStringList() ); data.backends.codecs += codecData; } data.backends.filters = group.readEntry( "filters", QStringList() ); data.backends.enabledFilters = group.readEntry( "enabledFilters", QStringList() ); pPluginLoader->load(); QString pluginName; bool found; QStringList enabledPlugins; QStringList newPlugins; int codecIndex; formats = pPluginLoader->formatList( PluginLoader::Possibilities(PluginLoader::Encode|PluginLoader::Decode|PluginLoader::ReplayGain), PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); // build default backend priority list // rippers enabledPlugins.clear(); newPlugins.clear(); // register existing enabled plugins as such and list new enabled plugins foreach( RipperPlugin *plugin, pPluginLoader->getAllRipperPlugins() ) { pluginName = plugin->name(); foreach( const ConversionPipeTrunk trunk, plugin->codecTable() ) { if( trunk.enabled ) { enabledPlugins += pluginName; if( !data.backends.rippers.contains(pluginName) && newPlugins.filter(QRegExp("[0-9]{8,8}"+pluginName)).count()==0 ) { newPlugins += QString::number(trunk.rating).rightJustified(8,'0') + pluginName; break; } } } } // remove plugins from the ripper list if they aren't enabled any more for( int i=0; iconversionFilterPipeTrunks ) { if( trunk.codecTo == format && trunk.enabled ) { pluginName = trunk.plugin->name(); enabledPlugins += pluginName; if( !data.backends.codecs.at(codecIndex).encoders.contains(pluginName) && newPlugins.filter(QRegExp("[0-9]{8,8}"+pluginName)).count()==0 ) { newPlugins += QString::number(trunk.rating).rightJustified(8,'0') + pluginName; } } } // remove plugins from the encoder list if they aren't enabled any more for( int i=0; i=0; i-- ) // QStringList doesn't support sorting in descending order { data.backends.codecs[codecIndex].encoders += newPlugins.at(i).right(newPlugins.at(i).length()-8); } // decoders enabledPlugins.clear(); newPlugins.clear(); // register existing enabled plugins as such and list new enabled plugins foreach( const ConversionPipeTrunk trunk, pPluginLoader->conversionFilterPipeTrunks ) { if( trunk.codecFrom == format && trunk.enabled ) { pluginName = trunk.plugin->name(); enabledPlugins += pluginName; if( !data.backends.codecs.at(codecIndex).decoders.contains(pluginName) && newPlugins.filter(QRegExp("[0-9]{8,8}"+pluginName)).count()==0 ) { newPlugins += QString::number(trunk.rating).rightJustified(8,'0') + pluginName; } } } // remove plugins from the decoder list if they aren't enabled any more for( int i=0; i=0; i-- ) // QStringList doesn't support sorting in descending order { data.backends.codecs[codecIndex].decoders += newPlugins.at(i).right(newPlugins.at(i).length()-8); } // replaygain enabledPlugins.clear(); const bool internalReplayGainEnabled = pPluginLoader->hasCodecInternalReplayGain(format); if( internalReplayGainEnabled ) { enabledPlugins += i18n("Try internal"); } newPlugins.clear(); // register existing enabled plugins as such and list new enabled plugins foreach( const ReplayGainPipe pipe, pPluginLoader->replaygainPipes ) { if( pipe.codecName == format && pipe.enabled ) { pluginName = pipe.plugin->name(); enabledPlugins += pluginName; if( !data.backends.codecs.at(codecIndex).replaygain.contains(pluginName) && newPlugins.filter(QRegExp("[0-9]{8,8}"+pluginName)).count()==0 ) { newPlugins += QString::number(pipe.rating).rightJustified(8,'0') + pluginName; } } } // remove plugins from the replay gain list if they aren't enabled any more for( int i=0; i=0; i-- ) // QStringList doesn't support sorting in descending order { data.backends.codecs[codecIndex].replaygain += newPlugins.at(i).right(newPlugins.at(i).length()-8); } } // filters enabledPlugins.clear(); newPlugins.clear(); // register existing enabled plugins as such and list new enabled plugins foreach( FilterPlugin *plugin, pPluginLoader->getAllFilterPlugins() ) { pluginName = plugin->name(); foreach( const ConversionPipeTrunk trunk, plugin->codecTable() ) { if( trunk.enabled && trunk.codecFrom == "wav" && trunk.codecTo == "wav" ) { enabledPlugins += pluginName; if( !data.backends.filters.contains(pluginName) && newPlugins.filter(QRegExp("[0-9]{8,8}"+pluginName)).count()==0 ) { newPlugins += QString::number(trunk.rating).rightJustified(8,'0') + pluginName; break; } } } } // remove plugins from the filter list if they aren't enabled any more for( int i=0; i=0; i-- ) // QStringList doesn't support sorting in descending order { data.backends.filters += newPlugins.at(i).right(newPlugins.at(i).length()-8); } // since filters can be completely disabled we have to keep track of data.backends.enabledFilters as well // remove plugins from the enabledFilters list if they aren't enabled any more for( int i=0; i 0 ) { data.backends.enabledFilters.append( data.backends.filters.first() ); } logger->log( 1000, "\nloading profiles ..." ); QFile listFile( KStandardDirs::locateLocal("data","soundkonverter/profiles.xml") ); if( listFile.open( QIODevice::ReadOnly ) ) { QDomDocument list("soundkonverter_profilelist"); if( list.setContent( &listFile ) ) { QDomElement root = list.documentElement(); if( root.nodeName() == "soundkonverter" && root.attribute("type") == "profilelist" ) { QDomNodeList conversionOptionsElements = root.elementsByTagName("conversionOptions"); for( int i=0; i filterOptionsElements; const QString profileName = conversionOptionsElements.at(i).toElement().attribute("profileName"); const QString pluginName = conversionOptionsElements.at(i).toElement().attribute("pluginName"); CodecPlugin *plugin = (CodecPlugin*)pPluginLoader->backendPluginByName( pluginName ); if( plugin ) { conversionOptions = plugin->conversionOptionsFromXml( conversionOptionsElements.at(i).toElement(), &filterOptionsElements ); } else { logger->log( 1000, "\tname: " + profileName + ", plugin: " + pluginName ); logger->log( 1000, "\t\tcannot be loaded beacause the plugin cannot be found" ); continue; } if( conversionOptions ) { foreach( QDomElement filterOptionsElement, filterOptionsElements ) { FilterOptions *filterOptions = 0; const QString filterPluginName = filterOptionsElement.attribute("pluginName"); FilterPlugin *filterPlugin = (FilterPlugin*)pPluginLoader->backendPluginByName( filterPluginName ); if( filterPlugin ) { filterOptions = filterPlugin->filterOptionsFromXml( filterOptionsElement ); } else { logger->log( 1000, "\tcannot load filter for profile: " + profileName ); continue; } conversionOptions->filterOptions.append( filterOptions ); } } if( conversionOptions ) { data.profiles[profileName] = conversionOptions; if( profileName != "soundkonverter_last_used" ) logger->log( 1000, "\tname: " + profileName + ", plugin: " + pluginName ); } } } } listFile.close(); } logger->log( 1000, "... all profiles loaded\n" ); QString profile; QStringList sFormat; QStringList sProfile; sProfile += i18n("Last used"); sProfile += i18n("Very low"); sProfile += i18n("Low"); sProfile += i18n("Medium"); sProfile += i18n("High"); sProfile += i18n("Very high"); sProfile += i18n("Lossless"); sProfile += i18n("Hybrid"); sProfile += customProfiles(); if( sProfile.indexOf(data.general.defaultProfile) == -1 ) { data.general.defaultProfile = i18n("High"); } else { profile = data.general.defaultProfile; if( profile == i18n("Very low") || profile == i18n("Low") || profile == i18n("Medium") || profile == i18n("High") || profile == i18n("Very high") ) { sFormat = pPluginLoader->formatList(PluginLoader::Encode,PluginLoader::Lossy); } else if( profile == i18n("Lossless") ) { sFormat = pPluginLoader->formatList(PluginLoader::Encode,PluginLoader::Lossless); } else if( profile == i18n("Hybrid") ) { sFormat = pPluginLoader->formatList(PluginLoader::Encode,PluginLoader::Hybrid); } else if( profile == i18n("User defined") ) { sFormat = pPluginLoader->formatList(PluginLoader::Encode,PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid)); } else { ConversionOptions *conversionOptions = data.profiles.value( profile ); if( conversionOptions ) sFormat += conversionOptions->codecName; } if( sFormat.indexOf(data.general.defaultFormat) == -1 ) { data.general.defaultFormat = i18n("Last used"); } } group = conf->group( "BackendOptimizationsIgnoreList" ); const int backendOptimizationsIgnoreListCount = group.readEntry( "count", 0 ); CodecOptimizations::Optimization optimization; for( int i=0; ilog( 1000, QString("loading of the configuration took %1 ms").arg(time.elapsed()) ); } void Config::save() { writeServiceMenu(); KSharedConfig::Ptr conf = KGlobal::config(); KConfigGroup group; group = conf->group( "General" ); group.writeEntry( "configVersion", SOUNDKONVERTER_VERSION_NUMBER ); group.writeEntry( "startTab", data.general.startTab ); group.writeEntry( "lastTab", data.general.lastTab ); group.writeEntry( "defaultProfile", data.general.defaultProfile ); group.writeEntry( "lastProfile", data.general.lastProfile ); group.writeEntry( "defaultFormat", data.general.defaultFormat ); group.writeEntry( "lastFormat", data.general.lastFormat ); group.writeEntry( "lastOutputDirectoryMode", data.general.lastOutputDirectoryMode ); group.writeEntry( "specifyOutputDirectory", data.general.specifyOutputDirectory ); group.writeEntry( "metaDataOutputDirectory", data.general.metaDataOutputDirectory ); group.writeEntry( "copyStructureOutputDirectory", data.general.copyStructureOutputDirectory ); group.writeEntry( "lastMetaDataOutputDirectoryPaths", data.general.lastMetaDataOutputDirectoryPaths ); group.writeEntry( "lastNormalOutputDirectoryPaths", data.general.lastNormalOutputDirectoryPaths ); group.writeEntry( "waitForAlbumGain", data.general.waitForAlbumGain ); group.writeEntry( "useVFATNames", data.general.useVFATNames ); group.writeEntry( "writeLogFiles", data.general.writeLogFiles ); group.writeEntry( "conflictHandling", (int)data.general.conflictHandling ); // group.writeEntry( "priority", data.general.priority ); group.writeEntry( "numFiles", data.general.numFiles ); group.writeEntry( "numReplayGainFiles", data.general.numReplayGainFiles ); // group.writeEntry( "executeUserScript", data.general.executeUserScript ); // group.writeEntry( "showToolBar", data.general.showToolBar ); // group.writeEntry( "outputFilePermissions", data.general.outputFilePermissions ); group.writeEntry( "actionMenuConvertMimeTypes", data.general.actionMenuConvertMimeTypes ); group.writeEntry( "actionMenuReplayGainMimeTypes", data.general.actionMenuReplayGainMimeTypes ); group.writeEntry( "replayGainGrouping", (int)data.general.replayGainGrouping ); group.writeEntry( "preferredOggVorbisExtension", data.general.preferredOggVorbisExtension ); group.writeEntry( "preferredVorbisCommentCommentTag", data.general.preferredVorbisCommentCommentTag ); group.writeEntry( "preferredVorbisCommentTrackTotalTag", data.general.preferredVorbisCommentTrackTotalTag ); group.writeEntry( "preferredVorbisCommentDiscTotalTag", data.general.preferredVorbisCommentDiscTotalTag ); group = conf->group( "Advanced" ); group.writeEntry( "useSharedMemoryForTempFiles", data.advanced.useSharedMemoryForTempFiles ); group.writeEntry( "maxSizeForSharedMemoryTempFiles", data.advanced.maxSizeForSharedMemoryTempFiles ); group.writeEntry( "usePipes", data.advanced.usePipes ); group = conf->group( "CoverArt" ); group.writeEntry( "writeCovers", data.coverArt.writeCovers ); group.writeEntry( "writeCoverName", data.coverArt.writeCoverName ); group.writeEntry( "writeCoverDefaultName", data.coverArt.writeCoverDefaultName ); group = conf->group( "Backends" ); group.writeEntry( "rippers", data.backends.rippers ); QStringList formats; foreach( const CodecData codec, data.backends.codecs ) { const QString format = codec.codecName; group.writeEntry( format + "_encoders", codec.encoders ); group.writeEntry( format + "_decoders", codec.decoders ); group.writeEntry( format + "_replaygain", codec.replaygain ); formats += format; } group.writeEntry( "formats", formats ); group.writeEntry( "filters", data.backends.filters ); group.writeEntry( "enabledFilters", data.backends.enabledFilters ); group = conf->group( "BackendOptimizationsIgnoreList" ); group.writeEntry( "count", data.backendOptimizationsIgnoreList.optimizationList.count() ); for( int i=0; iformatList( PluginLoader::Decode, PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); mimeTypes.clear(); foreach( const QString format, convertFormats ) { mimeTypes += pPluginLoader->codecMimeTypes( format ); } content += "ServiceTypes=KonqPopupMenu/Plugin," + mimeTypes.join(",") + "\n"; content += "Icon=soundkonverter\n"; content += "Actions=ConvertWithSoundkonverter;\n\n"; content += "[Desktop Action ConvertWithSoundkonverter]\n"; content += "Name="+i18n("Convert with soundKonverter")+"\n"; content += "Icon=soundkonverter\n"; content += "Exec=soundkonverter %F\n"; const QString convertActionFileName = KStandardDirs::locateLocal( "services", "ServiceMenus/convert_with_soundkonverter.desktop" ); if( ( data.general.actionMenuConvertMimeTypes != mimeTypes || !QFile::exists(convertActionFileName) ) && mimeTypes.count() > 0 ) { QFile convertActionFile( convertActionFileName ); if( convertActionFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) { QTextStream convertActionStream( &convertActionFile ); convertActionStream << content; convertActionFile.close(); } data.general.actionMenuConvertMimeTypes = mimeTypes; } content = ""; content += "[Desktop Entry]\n"; content += "Type=Service\n"; content += "Encoding=UTF-8\n"; const QStringList replaygainFormats = pPluginLoader->formatList( PluginLoader::ReplayGain, PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); mimeTypes.clear(); foreach( const QString format, replaygainFormats ) { mimeTypes += pPluginLoader->codecMimeTypes( format ); } content += "ServiceTypes=KonqPopupMenu/Plugin," + mimeTypes.join(",") + "\n"; content += "Icon=soundkonverter_replaygain\n"; content += "Actions=AddReplayGainWithSoundkonverter;\n\n"; content += "[Desktop Action AddReplayGainWithSoundkonverter]\n"; content += "Name="+i18n("Add Replay Gain with soundKonverter")+"\n"; content += "Icon=soundkonverter-replaygain\n"; content += "Exec=soundkonverter --replaygain %F\n"; const QString replaygainActionFileName = KStandardDirs::locateLocal( "services", "ServiceMenus/add_replaygain_with_soundkonverter.desktop" ); if( ( data.general.actionMenuReplayGainMimeTypes != mimeTypes || !QFile::exists(replaygainActionFileName) ) && mimeTypes.count() > 0 ) { QFile replaygainActionFile( replaygainActionFileName ); if( replaygainActionFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) { QTextStream replaygainActionStream( &replaygainActionFile ); replaygainActionStream << content; replaygainActionFile.close(); } data.general.actionMenuReplayGainMimeTypes = mimeTypes; } } QStringList Config::customProfiles() { QStringList profiles; foreach( const QString profileName, data.profiles.keys() ) { if( profileName == "soundkonverter_last_used" ) continue; QList plugins = pPluginLoader->encodersForCodec( data.profiles.value(profileName)->codecName ); foreach( CodecPlugin *plugin, plugins ) { if( plugin->name() == data.profiles.value(profileName)->pluginName ) { profiles.append( profileName ); break; } } } return profiles; } QList Config::getOptimizations( bool includeIgnored ) { QTime time; time.start(); QList optimizationList; CodecOptimizations::Optimization optimization; QStringList tempPluginList; QStringList optimizedPluginList; int currentBackendRating = 0; int betterBackendRating = 0; int codecIndex; bool ignore; const QStringList formats = pPluginLoader->formatList( PluginLoader::Possibilities(PluginLoader::Encode|PluginLoader::Decode|PluginLoader::ReplayGain), PluginLoader::CompressionType(PluginLoader::InferiorQuality|PluginLoader::Lossy|PluginLoader::Lossless|PluginLoader::Hybrid) ); foreach( const QString format, formats ) { if( format == "wav" ) continue; codecIndex = -1; for( int j=0; jconversionPipeTrunks.count(); j++ ) { if( pPluginLoader->conversionPipeTrunks.at(j).codecTo == format && pPluginLoader->conversionPipeTrunks.at(j).enabled && pPluginLoader->conversionPipeTrunks.at(j).plugin->type() == "codec" ) { const QString pluginName = pPluginLoader->conversionPipeTrunks.at(j).plugin->name(); if( tempPluginList.filter(QRegExp("[0-9]{8,8}"+pluginName)).count() == 0 ) { tempPluginList += QString::number(pPluginLoader->conversionPipeTrunks.at(j).rating).rightJustified(8,'0') + pluginName; } } } for( int j=0; jfilterPipeTrunks.count(); j++ ) { if( pPluginLoader->filterPipeTrunks.at(j).codecTo == format && pPluginLoader->filterPipeTrunks.at(j).enabled && pPluginLoader->filterPipeTrunks.at(j).plugin->type() == "filter" ) { const QString pluginName = pPluginLoader->filterPipeTrunks.at(j).plugin->name(); if( tempPluginList.filter(QRegExp("[0-9]{8,8}"+pluginName)).count() == 0 ) { tempPluginList += QString::number(pPluginLoader->filterPipeTrunks.at(j).rating).rightJustified(8,'0') + pluginName; } } } tempPluginList.sort(); optimizedPluginList.clear(); for( int j=tempPluginList.count()-1; j>=0; j-- ) { const QString pluginName = tempPluginList.at(j).right(tempPluginList.at(j).length()-8); const int pluginRating = tempPluginList.at(j).left(8).toInt(); optimizedPluginList += pluginName; if( data.backends.codecs.at(codecIndex).encoders.count() > 0 && pluginName == data.backends.codecs.at(codecIndex).encoders.first() ) { currentBackendRating = pluginRating; } if( j == tempPluginList.count()-1 ) { betterBackendRating = pluginRating; } } if( optimizedPluginList.count() != 0 && data.backends.codecs.at(codecIndex).encoders.count() != 0 ) { ignore = false; for( int j=0; j currentBackendRating ) { if( ignore && includeIgnored ) { optimization.codecName = format; optimization.mode = CodecOptimizations::Optimization::Encode; optimization.currentBackend = data.backends.codecs.at(codecIndex).encoders.first(); optimization.betterBackend = optimizedPluginList.first(); optimization.solution = CodecOptimizations::Optimization::Ignore; optimizationList.append(optimization); } else if( !ignore ) { optimization.codecName = format; optimization.mode = CodecOptimizations::Optimization::Encode; optimization.currentBackend = data.backends.codecs.at(codecIndex).encoders.first(); optimization.betterBackend = optimizedPluginList.first(); optimization.solution = CodecOptimizations::Optimization::Undecided; optimizationList.append(optimization); } } } // decoders tempPluginList.clear(); for( int j=0; jconversionPipeTrunks.count(); j++ ) { if( pPluginLoader->conversionPipeTrunks.at(j).codecFrom == format && pPluginLoader->conversionPipeTrunks.at(j).enabled && pPluginLoader->conversionPipeTrunks.at(j).plugin->type() == "codec" ) { const QString pluginName = pPluginLoader->conversionPipeTrunks.at(j).plugin->name(); if( tempPluginList.filter(QRegExp("[0-9]{8,8}"+pluginName)).count() == 0 ) { tempPluginList += QString::number(pPluginLoader->conversionPipeTrunks.at(j).rating).rightJustified(8,'0') + pluginName; } } } for( int j=0; jfilterPipeTrunks.count(); j++ ) { if( pPluginLoader->filterPipeTrunks.at(j).codecFrom == format && pPluginLoader->filterPipeTrunks.at(j).enabled && pPluginLoader->filterPipeTrunks.at(j).plugin->type() == "filter" ) { const QString pluginName = pPluginLoader->filterPipeTrunks.at(j).plugin->name(); if( tempPluginList.filter(QRegExp("[0-9]{8,8}"+pluginName)).count() == 0 ) { tempPluginList += QString::number(pPluginLoader->filterPipeTrunks.at(j).rating).rightJustified(8,'0') + pluginName; } } } tempPluginList.sort(); optimizedPluginList.clear(); for( int j=tempPluginList.count()-1; j>=0; j-- ) { const QString pluginName = tempPluginList.at(j).right(tempPluginList.at(j).length()-8); const int pluginRating = tempPluginList.at(j).left(8).toInt(); optimizedPluginList += pluginName; if( data.backends.codecs.at(codecIndex).decoders.count() > 0 && pluginName == data.backends.codecs.at(codecIndex).decoders.first() ) { currentBackendRating = pluginRating; } if( j == tempPluginList.count()-1 ) { betterBackendRating = pluginRating; } } if( optimizedPluginList.count() != 0 && data.backends.codecs.at(codecIndex).decoders.count() != 0 ) { ignore = false; for( int j=0; j currentBackendRating ) { if( ignore && includeIgnored ) { optimization.codecName = format; optimization.mode = CodecOptimizations::Optimization::Decode; optimization.currentBackend = data.backends.codecs.at(codecIndex).decoders.first(); optimization.betterBackend = optimizedPluginList.first(); optimization.solution = CodecOptimizations::Optimization::Ignore; optimizationList.append(optimization); } else if( !ignore ) { optimization.codecName = format; optimization.mode = CodecOptimizations::Optimization::Decode; optimization.currentBackend = data.backends.codecs.at(codecIndex).decoders.first(); optimization.betterBackend = optimizedPluginList.first(); optimization.solution = CodecOptimizations::Optimization::Undecided; optimizationList.append(optimization); } } } // replaygain tempPluginList.clear(); for( int j=0; jreplaygainPipes.count(); j++ ) { if( pPluginLoader->replaygainPipes.at(j).codecName == format && pPluginLoader->replaygainPipes.at(j).enabled ) { const QString pluginName = pPluginLoader->replaygainPipes.at(j).plugin->name(); if( tempPluginList.filter(QRegExp("[0-9]{8,8}"+pluginName)).count() == 0 ) { tempPluginList += QString::number(pPluginLoader->replaygainPipes.at(j).rating).rightJustified(8,'0') + pluginName; } } } tempPluginList.sort(); optimizedPluginList.clear(); for( int j=tempPluginList.count()-1; j>=0; j-- ) { const QString pluginName = tempPluginList.at(j).right(tempPluginList.at(j).length()-8); const int pluginRating = tempPluginList.at(j).left(8).toInt(); optimizedPluginList += pluginName; if( data.backends.codecs.at(codecIndex).replaygain.count() > 0 && pluginName == data.backends.codecs.at(codecIndex).replaygain.first() ) { currentBackendRating = pluginRating; } if( j == tempPluginList.count()-1 ) { betterBackendRating = pluginRating; } } if( optimizedPluginList.count() != 0 && data.backends.codecs.at(codecIndex).replaygain.count() != 0 ) { ignore = false; for( int j=0; j currentBackendRating ) { if( ignore && includeIgnored ) { optimization.codecName = format; optimization.mode = CodecOptimizations::Optimization::ReplayGain; optimization.currentBackend = data.backends.codecs.at(codecIndex).replaygain.first(); optimization.betterBackend = optimizedPluginList.first(); optimization.solution = CodecOptimizations::Optimization::Ignore; optimizationList.append(optimization); } else if( !ignore ) { optimization.codecName = format; optimization.mode = CodecOptimizations::Optimization::ReplayGain; optimization.currentBackend = data.backends.codecs.at(codecIndex).replaygain.first(); optimization.betterBackend = optimizedPluginList.first(); optimization.solution = CodecOptimizations::Optimization::Undecided; optimizationList.append(optimization); } } } } logger->log( 1000, QString("generation of the optimization list took %1 ms").arg(time.elapsed()) ); return optimizationList; } void Config::doOptimizations( const QList& optimizationList ) { int codecIndex; for( int i=0; i FileListItem::FileListItem( QTreeWidget *parent, QTreeWidgetItem *after ) : QTreeWidgetItem( parent, after ), tags( 0 ) { conversionOptionsId = -1; state = WaitingForConversion; local = true; track = -1; tracks = 0; length = 0; logId = -1; } FileListItem::FileListItem( QTreeWidget *parent ) : QTreeWidgetItem( parent ), tags( 0 ) { conversionOptionsId = -1; state = WaitingForConversion; local = true; track = -1; tracks = 0; length = 0; logId = -1; } FileListItem::~FileListItem() { if( tags ) delete tags; if( lInfo.data() ) delete lInfo.data(); } FileListItemDelegate::FileListItemDelegate( QObject *parent ) : QItemDelegate( parent ) {} // TODO margin void FileListItemDelegate::paint( QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { FileListItem *item = static_cast( index.internalPointer() ); QColor backgroundColor; painter->save(); QStyleOptionViewItem _option = option; bool isConverting = false; bool isFailed = false; if( item ) { switch( item->state ) { case FileListItem::WaitingForConversion: break; case FileListItem::Ripping: isConverting = true; break; case FileListItem::Converting: isConverting = true; break; case FileListItem::ApplyingReplayGain: isConverting = true; break; case FileListItem::WaitingForAlbumGain: break; case FileListItem::ApplyingAlbumGain: isConverting = true; break; case FileListItem::Stopped: switch( item->returnCode ) { case FileListItem::Succeeded: break; case FileListItem::SucceededWithProblems: break; case FileListItem::StoppedByUser: break; case FileListItem::BackendNeedsConfiguration: isFailed = true; break; case FileListItem::DiscFull: isFailed = true; break; case FileListItem::Skipped: break; case FileListItem::Failed: isFailed = true; break; } break; } } if( isConverting ) { if( option.state & QStyle::State_Selected ) { backgroundColor = QColor(215,102,102); // hsv: 0, 134, 215 } else { backgroundColor = QColor(255,234,234); // hsv: 0, 21, 255 } } else if( isFailed ) { if( option.state & QStyle::State_Selected ) { backgroundColor = QColor(235,154, 49); // hsv: 34, 202, 235 } else { backgroundColor = QColor(255,204,156); // hsv: 29, 99, 255 } } else { if( option.state & QStyle::State_Selected ) { backgroundColor = option.palette.highlight().color(); } else { backgroundColor = option.palette.base().color(); } } painter->fillRect( option.rect, backgroundColor ); int m_left, m_top, m_right, m_bottom; item->treeWidget()->getContentsMargins( &m_left, &m_top, &m_right, &m_bottom ); //QRect m_rect = QRect( option.rect.x()+m_left, option.rect.y()+m_top, option.rect.width()-m_left-m_right, option.rect.height()-m_top-m_bottom ); QRect m_rect = QRect( option.rect.x()+m_left, option.rect.y(), option.rect.width()-m_left-m_right, option.rect.height() ); if( index.column() == 1 || index.column() == 2 ) { QRect textRect = painter->boundingRect( QRect(), Qt::AlignLeft|Qt::TextSingleLine, item->text(index.column()) ); if ( textRect.width() < m_rect.width() ) { painter->drawText( m_rect, Qt::TextSingleLine|Qt::TextExpandTabs, item->text(index.column()) ); } else { //textRect = painter->boundingRect( QRect(), Qt::AlignLeft, "... " ); painter->drawText( m_rect, Qt::AlignRight|Qt::TextSingleLine|Qt::TextExpandTabs, item->text(index.column()) ); QLinearGradient linearGrad( QPoint(m_rect.x(),0), QPoint(m_rect.x()+15,0) ); linearGrad.setColorAt( 0, backgroundColor ); backgroundColor.setAlpha( 0 ); linearGrad.setColorAt( 1, backgroundColor ); painter->fillRect( m_rect.x(), m_rect.y(), 15, m_rect.height(), linearGrad ); } } else { painter->drawText( m_rect, Qt::TextSingleLine|Qt::TextExpandTabs, item->text(index.column()) ); } //QItemDelegate::paint( painter, _option, index ); painter->restore(); // int progress = (index.row() != 0 ? 100 / index.row() : 0); // // // draw your cool progress bar here // QStyleOptionProgressBar opt; // opt.rect = option.rect; // opt.minimum = 0; // opt.maximum = 100; // opt.progress = progress; // opt.text = QString("%1%").arg(progress); // opt.textVisible = true; // QApplication::style()->drawControl(QStyle::CE_ProgressBar, &opt, painter, 0); // maybe even let default implementation draw list item contents? // QItemDelegate::paint(painter, option, index); } ./soundkonverter-2.0.5/PaxHeaders.25599/pluginloader.cpp0000644000175000001440000000013212146141122021166 xustar000000000000000030 mtime=1368965714.813091105 30 atime=1368965714.812091118 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/pluginloader.cpp0000755000175000001440000012360012146141122020606 0ustar00danielusers00000000000000// // C++ Implementation: pluginloader // // Description: // // // Author: Daniel Faust , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #include "pluginloader.h" #include "logger.h" #include "config.h" #include #include #include #include bool moreThanConversionPipe( const ConversionPipe& pipe1, const ConversionPipe& pipe2 ) { int rating1 = 0; int rating2 = 0; int minimumRating1 = 0; foreach( const ConversionPipeTrunk trunk, pipe1.trunks ) { if( minimumRating1 == 0 || trunk.rating < minimumRating1 ) minimumRating1 = trunk.rating; rating1 -= 10; } rating1 += minimumRating1; int minimumRating2 = 0; foreach( const ConversionPipeTrunk trunk, pipe2.trunks ) { if( minimumRating2 == 0 || trunk.rating < minimumRating2 ) minimumRating2 = trunk.rating; rating2 -= 10; } rating2 += minimumRating2; return rating1 > rating2; } bool moreThanReplayGainPipe( const ReplayGainPipe& pipe1, const ReplayGainPipe& pipe2 ) { return pipe1.rating > pipe2.rating; } PluginLoader::PluginLoader( Logger *_logger, Config *_config ) : logger( _logger ), config( _config ) { atomPath += "moov"; atomPath += "trak"; atomPath += "mdia"; atomPath += "minf"; atomPath += "stbl"; atomPath += "stsd"; } PluginLoader::~PluginLoader() { qDeleteAll( codecPlugins ); qDeleteAll( filterPlugins ); qDeleteAll( replaygainPlugins ); qDeleteAll( ripperPlugins ); } void PluginLoader::addFormatInfo( const QString& codecName, BackendPlugin *plugin ) { BackendPlugin::FormatInfo info = plugin->formatInfo( codecName ); for( int i=0; ilog( 1000, "Disturbing Error: Plugin " + plugin->name() + " says " + codecName + " was " + (info.lossless?"lossless":"lossy") + " but it is already registed as " + (!info.lossless?"lossless":"lossy") + "" ); return; } } formatInfos.append( info ); } void PluginLoader::load() { QTime overallTime; overallTime.start(); QTime createInstanceTime; int createInstanceTimeSum = 0; KService::List offers; logger->log( 1000, "\nloading plugins ..." ); offers = KServiceTypeTrader::self()->query("soundKonverter/CodecPlugin"); if( !offers.isEmpty() ) { for( int i=0; istorageId() << ""; QString error; CodecPlugin *plugin = KService::createInstance( offers.at(i), 0, allArgs, &error ); if( plugin ) { logger->log( 1000, "\tloading plugin: " + plugin->name() ); createInstanceTimeSum += createInstanceTime.elapsed(); codecPlugins.append( plugin ); plugin->scanForBackends(); QMap encodeCodecs; QMap decodeCodecs; QList codecTable = plugin->codecTable(); for( int j = 0; j < codecTable.count(); j++ ) { codecTable[j].plugin = plugin; conversionPipeTrunks.append( codecTable.at(j) ); if( codecTable.at(j).codecTo != "wav" ) encodeCodecs[codecTable.at(j).codecTo] += codecTable.at(j).enabled; if( codecTable.at(j).codecFrom != "wav" ) decodeCodecs[codecTable.at(j).codecFrom] += codecTable.at(j).enabled; addFormatInfo( codecTable.at(j).codecFrom, plugin ); addFormatInfo( codecTable.at(j).codecTo, plugin ); } if( encodeCodecs.count() > 0 ) { logger->log( 1000, "\t\tencode:" ); for( int j=0; jlog( 1000, "
\t\t\t" + QString("%1%2(%3)").arg(encodeCodecs.keys().at(j)).arg(spaces).arg(encodeCodecs.values().at(j) ? "enabled" : "disabled") + "
" ); } } if( decodeCodecs.count() > 0 ) { logger->log( 1000, "\t\tdecode:" ); for( int j=0; jlog( 1000, "
\t\t\t" + QString("%1%2(%3)").arg(decodeCodecs.keys().at(j)).arg(spaces).arg(decodeCodecs.values().at(j) ? "enabled" : "disabled") + "
" ); } } logger->log( 1000, "" ); } else { logger->log( 1000, "
\tfailed to load plugin: " + offers.at(i)->library() + "
" ); } } } offers = KServiceTypeTrader::self()->query("soundKonverter/FilterPlugin"); if( !offers.isEmpty() ) { for( int i=0; istorageId() << ""; QString error; FilterPlugin *plugin = KService::createInstance( offers.at(i), 0, allArgs, &error ); if( plugin ) { logger->log( 1000, "\tloading plugin: " + plugin->name() ); createInstanceTimeSum += createInstanceTime.elapsed(); filterPlugins.append( plugin ); plugin->scanForBackends(); QMap encodeCodecs; QMap decodeCodecs; QList codecTable = plugin->codecTable(); for( int j = 0; j < codecTable.count(); j++ ) { codecTable[j].plugin = plugin; filterPipeTrunks.append( codecTable.at(j) ); if( codecTable.at(j).codecTo != "wav" ) encodeCodecs[codecTable.at(j).codecTo] += codecTable.at(j).enabled; if( codecTable.at(j).codecFrom != "wav" ) decodeCodecs[codecTable.at(j).codecFrom] += codecTable.at(j).enabled; addFormatInfo( codecTable.at(j).codecFrom, plugin ); addFormatInfo( codecTable.at(j).codecTo, plugin ); } if( encodeCodecs.count() > 0 ) { logger->log( 1000, "\t\tencode:" ); for( int j=0; jlog( 1000, "
\t\t\t" + QString("%1%2(%3)").arg(encodeCodecs.keys().at(j)).arg(spaces).arg(encodeCodecs.values().at(j) ? "enabled" : "disabled") + "
" ); } } if( decodeCodecs.count() > 0 ) { logger->log( 1000, "\t\tdecode:" ); for( int j=0; jlog( 1000, "
\t\t\t" + QString("%1%2(%3)").arg(decodeCodecs.keys().at(j)).arg(spaces).arg(decodeCodecs.values().at(j) ? "enabled" : "disabled") + "
" ); } } // TODO filters logger->log( 1000, "" ); } else { logger->log( 1000, "
\tfailed to load plugin: " + offers.at(i)->library() + "
" ); } } } offers = KServiceTypeTrader::self()->query("soundKonverter/ReplayGainPlugin"); if( !offers.isEmpty() ) { for( int i=0; istorageId() << ""; QString error; ReplayGainPlugin *plugin = KService::createInstance( offers.at(i), 0, allArgs, &error ); if( plugin ) { logger->log( 1000, "\tloading plugin: " + plugin->name() ); createInstanceTimeSum += createInstanceTime.elapsed(); replaygainPlugins.append( plugin ); plugin->scanForBackends(); QList codecTable = plugin->codecTable(); for( int j = 0; j < codecTable.count(); j++ ) { codecTable[j].plugin = plugin; replaygainPipes.append( codecTable.at(j) ); QString spaces; spaces.fill( ' ', 12 - codecTable.at(j).codecName.length() ); logger->log( 1000, "
\t\t\t" + QString("%1%2(%3)").arg(codecTable.at(j).codecName).arg(spaces).arg(codecTable.at(j).enabled ? "enabled" : "disabled") + "
" ); addFormatInfo( codecTable.at(j).codecName, plugin ); } logger->log( 1000, "" ); } else { logger->log( 1000, "
\tfailed to load plugin: " + offers.at(i)->library() + "
" ); } } } offers = KServiceTypeTrader::self()->query("soundKonverter/RipperPlugin"); if( !offers.isEmpty() ) { for( int i=0; istorageId() << ""; QString error; RipperPlugin *plugin = KService::createInstance( offers.at(i), 0, allArgs, &error ); if( plugin ) { logger->log( 1000, "\tloading plugin: " + plugin->name() ); createInstanceTimeSum += createInstanceTime.elapsed(); ripperPlugins.append( plugin ); plugin->scanForBackends(); QList codecTable = plugin->codecTable(); for( int j = 0; j < codecTable.count(); j++ ) { codecTable[j].plugin = plugin; conversionPipeTrunks.append( codecTable.at(j) ); QString spaces; spaces.fill( ' ', 12 - codecTable.at(j).codecTo.length() ); logger->log( 1000, "
\t\t\t" + QString("%1%2(%3, %4)").arg(codecTable.at(j).codecTo).arg(spaces).arg(codecTable.at(j).enabled ? "enabled" : "disabled").arg(codecTable.at(j).data.canRipEntireCd ? "can rip to single file" : "can't rip to single file") + "
" ); } logger->log( 1000, "" ); } else { logger->log( 1000, "
\tfailed to load plugin: " + offers.at(i)->library() + "
" ); } } } conversionFilterPipeTrunks = conversionPipeTrunks + filterPipeTrunks; logger->log( 1000, QString("... all plugins loaded (took %1 ms, creating instances: %2 ms)").arg(overallTime.elapsed()).arg(createInstanceTimeSum) + "\n" ); } QStringList PluginLoader::formatList( Possibilities possibilities, CompressionType compressionType ) { QSet set; QStringList list; foreach( const ConversionPipeTrunk trunk, conversionFilterPipeTrunks ) { if( !trunk.enabled ) continue; if( possibilities & Encode ) { const QString codec = trunk.codecTo; const bool isLossless = isCodecLossless(codec); const bool isInferiorQuality = isCodecInferiorQuality(codec); // const bool isHybrid = isCodecHybrid(codec); if( ( ( compressionType & Lossy && !isLossless ) || ( compressionType & Lossless && isLossless ) ) && ( ( compressionType & InferiorQuality && isInferiorQuality ) || !isInferiorQuality ) ) set += codec; // if( compressionType & Hybrid && isCodecHybrid(codec) && ( compressionType & InferiorQuality && isInferiorQuality || !isInferiorQuality ) ) // set += codec; } if( possibilities & Decode ) { const QString codec = trunk.codecFrom; const bool isLossless = isCodecLossless(codec); const bool isInferiorQuality = isCodecInferiorQuality(codec); // const bool isHybrid = isCodecHybrid(codec); if( ( ( compressionType & Lossy && !isLossless ) || ( compressionType & Lossless && isLossless ) ) && ( ( compressionType & InferiorQuality && isInferiorQuality ) || !isInferiorQuality ) ) set += codec; // if( compressionType & Hybrid && isCodecHybrid(codec) && ( compressionType & InferiorQuality && isInferiorQuality || !isInferiorQuality ) ) // set += codec; } } if( possibilities & ReplayGain ) { for( int i=0; i PluginLoader::encodersForCodec( const QString& codecName ) { QSet encoders; foreach( const ConversionPipeTrunk pipeTrunk, conversionFilterPipeTrunks ) { if( pipeTrunk.codecTo == codecName && pipeTrunk.enabled ) { encoders += qobject_cast(pipeTrunk.plugin); } } return encoders.toList(); } // QList PluginLoader::decodersForCodec( const QString& codecName ) // { // QSet decoders; // // for( int i=0; itype() == "codec" ) // { // decoders += qobject_cast(conversionPipeTrunks.at(i).plugin); // } // } // // for( int i=0; itype() == "filter" ) // { // decoders += qobject_cast(filterPipeTrunks.at(i).plugin); // } // } // // return decoders.toList(); // } // QList PluginLoader::replaygainForCodec( const QString& codecName ) // { // QSet replaygain; // // for( int i=0; iname() == name ) { return codecPlugins.at(i); } } for( int i=0; iname() == name ) { return filterPlugins.at(i); } } for( int i=0; iname() == name ) { return replaygainPlugins.at(i); } } for( int i=0; iname() == name ) { return ripperPlugins.at(i); } } return 0; } QList PluginLoader::getConversionPipes( const QString& codecFrom, const QString& codecTo, QList filterOptions, const QString& preferredPlugin ) { QList list; QStringList decoders; QStringList encoders; // get the lists of decoders and encoders ordered by the user in the config dialog for( int i=0; idata.backends.codecs.count(); i++ ) { if( config->data.backends.codecs.at(i).codecName == codecFrom ) { decoders = config->data.backends.codecs.at(i).decoders; } if( config->data.backends.codecs.at(i).codecName == codecTo && codecTo != "wav" ) { encoders = config->data.backends.codecs.at(i).encoders; } } // prepend the preferred plugin if( !preferredPlugin.isEmpty() ) { encoders.removeAll( preferredPlugin ); encoders.prepend( preferredPlugin ); } QList filterPlugins; foreach( FilterOptions *filter, filterOptions ) { filterPlugins.append( qobject_cast(backendPluginByName(filter->pluginName)) ); } // build all possible pipes for( int i=0; i(conversionFilterPipeTrunks.at(i).plugin) ) continue; foreach( ConversionPipeTrunk trunk, filterPipeTrunks ) { if( trunk.plugin == plugin && trunk.codecFrom == "wav" && trunk.codecTo == "wav" && trunk.enabled ) { newPipe.trunks += trunk; break; } } } newPipe.trunks += conversionFilterPipeTrunks.at(i); if( encoders.indexOf(newPipe.trunks.last().plugin->name()) != -1 ) { // add rating depending on the position in the list ordered by the user, encoders do count much const int rating = ( encoders.count() - encoders.indexOf(newPipe.trunks.last().plugin->name()) ) * 1000000; for( int i=0; i(conversionFilterPipeTrunks.at(i).plugin) ) continue; foreach( ConversionPipeTrunk trunk, filterPipeTrunks ) { if( trunk.plugin == plugin && trunk.codecFrom == "wav" && trunk.codecTo == "wav" && trunk.enabled ) { newPipe.trunks += trunk; break; } } } if( decoders.indexOf(newPipe.trunks.first().plugin->name()) != -1 ) { // add rating depending on the position in the list ordered by the user, decoders don't count much const int rating = ( decoders.count() - decoders.indexOf(newPipe.trunks.first().plugin->name()) ) * 1000; for( int i=0; iname()) != -1 ) { // add rating depending on the position in the list ordered by the user, decoders don't count much newPipe.trunks[0].rating += ( decoders.count() - decoders.indexOf(newPipe.trunks.first().plugin->name()) ) * 1000; } if( encoders.indexOf(newPipe.trunks.first().plugin->name()) != -1 ) { // add rating depending on the position in the list ordered by the user, encoders do count much newPipe.trunks[0].rating += ( encoders.count() - encoders.indexOf(newPipe.trunks.first().plugin->name()) ) * 1000000; } list += newPipe; } } else if( conversionFilterPipeTrunks.at(i).codecTo == "wav" ) { if( conversionFilterPipeTrunks.at(i).codecFrom == conversionFilterPipeTrunks.at(i).codecTo ) continue; for( int j = 0; j < conversionFilterPipeTrunks.count(); j++ ) { if( i == j ) continue; if( conversionFilterPipeTrunks.at(j).codecFrom == conversionFilterPipeTrunks.at(j).codecTo ) continue; if( conversionFilterPipeTrunks.at(j).codecFrom == conversionFilterPipeTrunks.at(i).codecTo && conversionFilterPipeTrunks.at(j).codecTo == codecTo && conversionFilterPipeTrunks.at(j).enabled ) { ConversionPipe newPipe; newPipe.trunks += conversionFilterPipeTrunks.at(i); foreach( FilterPlugin *plugin, filterPlugins ) { if( plugin == qobject_cast(conversionFilterPipeTrunks.at(i).plugin) ) continue; if( plugin == qobject_cast(conversionFilterPipeTrunks.at(j).plugin) ) continue; foreach( ConversionPipeTrunk trunk, filterPipeTrunks ) { if( trunk.plugin == plugin && trunk.codecFrom == "wav" && trunk.codecTo == "wav" && trunk.enabled ) { newPipe.trunks += trunk; break; } } } newPipe.trunks += conversionFilterPipeTrunks.at(j); if( decoders.indexOf(newPipe.trunks.first().plugin->name()) != -1 ) { // add rating depending on the position in the list ordered by the user, decoders don't count much const int rating = ( decoders.count() - decoders.indexOf(newPipe.trunks.first().plugin->name()) ) * 1000; for( int i=0; iname()) != -1 ) { // add rating depending on the position in the list ordered by the user, encoders do count much const int rating = ( encoders.count() - encoders.indexOf(newPipe.trunks.last().plugin->name()) ) * 1000000; for( int i=0; i PluginLoader::getReplayGainPipes( const QString& codecName, const QString& preferredPlugin ) { QList list; QStringList backends; // get the lists of decoders and encoders ordered by the user in the config dialog for( int i=0; idata.backends.codecs.count(); i++ ) { if( config->data.backends.codecs.at(i).codecName == codecName ) { backends = config->data.backends.codecs.at(i).replaygain; } } // prepend the preferred plugin backends.removeAll( preferredPlugin ); backends.prepend( preferredPlugin ); for( int i=0; iname()) != -1 ) { // add rating depending on the position in the list ordered by the user newPipe.rating += ( backends.count() - backends.indexOf(newPipe.plugin->name()) ) * 1000; } list += newPipe; } } qSort( list.begin(), list.end(), moreThanReplayGainPipe ); return list; } QString PluginLoader::getCodecFromM4aFile( QFile *file ) { int atomPathDepth = 0; qint64 maxPos = file->size(); while( !file->atEnd() ) { const QByteArray length = file->read(4); const QByteArray name = file->read(4); if( atomPathDepth == 6 && name == "mp4a" ) { // It could be something other than aac but lets assume it's aac for now return "m4a/aac"; } else if( atomPathDepth == 6 && name == "alac" ) { return "m4a/alac"; } else if( length.size() == 4 ) { qint64 int_length = ((static_cast(length.at(0)) & 0xFF) << 24) + ((static_cast(length.at(1)) & 0xFF) << 16) + ((static_cast(length.at(2)) & 0xFF) << 8) + ((static_cast(length.at(3)) & 0xFF) ); if( int_length == 0 ) // Meaning: continues until end of file. return ""; if( int_length == 1 ) // Meaning: length is 64 bits { const QByteArray l = file->read(8); int_length = ((static_cast(l.at(0)) & 0xFF) << 56) + ((static_cast(l.at(1)) & 0xFF) << 48) + ((static_cast(l.at(2)) & 0xFF) << 40) + ((static_cast(l.at(3)) & 0xFF) << 32) + ((static_cast(l.at(4)) & 0xFF) << 24) + ((static_cast(l.at(5)) & 0xFF) << 16) + ((static_cast(l.at(6)) & 0xFF) << 8) + ((static_cast(l.at(7)) & 0xFF) ); } if( name == atomPath.at(atomPathDepth) ) { atomPathDepth++; maxPos = file->pos() - 8 + int_length; if( atomPathDepth == 6 ) file->seek( file->pos() + 8 ); // Skip 'stsd' header } else { if( file->pos() - 8 + int_length > maxPos ) return ""; file->seek( file->pos() - 8 + int_length ); } } else { return ""; } } return ""; } QString PluginLoader::getCodecFromFile( const KUrl& filename, QString *mimeType, bool checkM4a ) { QString codec = ""; short rating = 0; const QString mime = KMimeType::findByUrl(filename)->name(); if( mimeType ) *mimeType = mime; if( mime == "inode/directory" ) return codec; const QString extension = filename.url().mid( filename.url().lastIndexOf(".") + 1 ).toLower(); foreach( const BackendPlugin::FormatInfo info, formatInfos ) { short newRating = info.priority; if( info.mimeTypes.contains(mime) ) newRating += 100 - info.mimeTypes.indexOf(mime); if( info.extensions.contains(extension) ) newRating += 100 - info.extensions.indexOf(extension); // special treatment for the mp4 family if( ( mime == "audio/mp4" || mime == "audio/x-m4a" ) && extension == "aac" && info.codecName == "m4a/aac" ) newRating = 300; else if( ( mime == "audio/mp4" || mime == "audio/x-m4a" ) && extension == "alac" && info.codecName == "m4a/alac" ) newRating = 300; if( newRating == info.priority ) continue; if( newRating == 300 ) { return info.codecName; } else if( newRating > rating ) { rating = newRating; codec = info.codecName; } } // special treatment for the mp4 family if( checkM4a && ( mime == "audio/mp4" || mime == "audio/x-m4a" ) && filename.isLocalFile() ) { QFile file( filename.toLocalFile() ); if( file.open(QIODevice::ReadOnly) ) { const QString newCodec = getCodecFromM4aFile( &file ); file.close(); if( !newCodec.isEmpty() ) return newCodec; } } // get codec from a plugin - not used at the moment // QList allPlugins; // foreach( CodecPlugin *plugin, codecPlugins ) // allPlugins.append( plugin ); // foreach( FilterPlugin *plugin, filterPlugins ) // allPlugins.append( plugin ); // foreach( ReplayGainPlugin *plugin, replaygainPlugins ) // allPlugins.append( plugin ); // // foreach( BackendPlugin *plugin, allPlugins ) // { // short newRating = 0; // const QString newCodec = plugin->getCodecFromFile( filename, mime, &newRating ); // if( !newCodec.isEmpty() && newRating == 300 ) // { // return newCodec; // } // else if( !newCodec.isEmpty() && newRating > rating ) // { // rating = newRating; // codec = newCodec; // } // } return codec; } bool PluginLoader::canDecode( const QString& codecName, QStringList *errorList ) { if( codecName.isEmpty() ) return false; for( int i=0; icontains(conversionFilterPipeTrunks.at(i).problemInfo) ) { errorList->append( conversionFilterPipeTrunks.at(i).problemInfo ); } } } } return false; } bool PluginLoader::canReplayGain( const QString& codecName, CodecPlugin *plugin, QStringList *errorList ) { if( codecName.isEmpty() ) return false; for( int i=0; icontains(replaygainPipes.at(i).problemInfo) ) { errorList->append( replaygainPipes.at(i).problemInfo ); } } } } return false; } bool PluginLoader::canRipEntireCd( QStringList *errorList ) { for( int i=0; itype() == "ripper" && conversionFilterPipeTrunks.at(i).data.canRipEntireCd && conversionFilterPipeTrunks.at(i).enabled ) { return true; } } if( errorList ) { for( int i=0; itype() == "ripper" && conversionFilterPipeTrunks.at(i).data.canRipEntireCd ) { if( !conversionFilterPipeTrunks.at(i).problemInfo.isEmpty() && !errorList->contains(conversionFilterPipeTrunks.at(i).problemInfo) ) { errorList->append( conversionFilterPipeTrunks.at(i).problemInfo ); } } } } return false; } QMap PluginLoader::decodeProblems( bool detailed ) { QMap problems; QStringList errorList; QStringList enabledCodecs; if( !detailed ) { for( int i=0; i PluginLoader::encodeProblems( bool detailed ) { QMap problems; QStringList errorList; QStringList enabledCodecs; if( !detailed ) { for( int i=0; i PluginLoader::replaygainProblems( bool detailed ) { QMap problems; QStringList errorList; QStringList enabledCodecs; if( !detailed ) { for( int i=0; iname() == pluginName && conversionFilterPipeTrunks.at(i).codecFrom == codecName ) { return conversionFilterPipeTrunks.at(i).problemInfo; } } return QString(); } QString PluginLoader::pluginEncodeProblems( const QString& pluginName, const QString& codecName ) { for( int i=0; iname() == pluginName && conversionFilterPipeTrunks.at(i).codecTo == codecName ) { return conversionFilterPipeTrunks.at(i).problemInfo; } } return QString(); } QString PluginLoader::pluginReplayGainProblems( const QString& pluginName, const QString& codecName ) { for( int i=0; iname() == pluginName && replaygainPipes.at(i).codecName == codecName ) { return replaygainPipes.at(i).problemInfo; } } return QString(); } bool PluginLoader::isCodecLossless( const QString& codecName ) { for( int i=0; itype() == "codec" && conversionPipeTrunks.at(i).data.hasInternalReplayGain ) { return true; } } return false; } QStringList PluginLoader::codecExtensions( const QString& codecName ) { for( int i=0; idata.general.preferredOggVorbisExtension == "oga" ) { extensions.removeAll( "oga" ); extensions.prepend( "oga" ); } return extensions; } } return QStringList(); } QStringList PluginLoader::codecMimeTypes( const QString& codecName ) { for( int i=0; i, (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #ifndef OPTIONSLAYER_H #define OPTIONSLAYER_H #include #include #include #include class Config; class Options; class ConversionOptions; class QFrame; class KPushButton; /** @author Daniel Faust */ class OptionsLayer : public QWidget { Q_OBJECT public: /** Constructor */ OptionsLayer( Config *config, QWidget *parent ); /** Destructor */ ~OptionsLayer(); void fadeIn(); void fadeOut(); // should be private void addUrls( const KUrl::List& _urls ); private: QFrame *frame; Options *options; KPushButton *pOk; KPushButton *pCancel; QTimer fadeTimer; float fadeAlpha; int fadeMode; // 1 = fade in, 2 = fade out KUrl::List urls; QString command; inline QBrush brushSetAlpha( QBrush brush, const int alpha ) { QColor color = brush.color(); color.setAlpha( alpha ); brush.setColor( color ); return brush; } public slots: /** Set the current profile */ void setProfile( const QString& profile ); /** Set the current format */ void setFormat( const QString& format ); /** Set the current output directory */ void setOutputDirectory( const QString& directory ); /** Set the command to execute after the conversion is complete */ void setCommand( const QString& _command ); /** Set the current conversion options */ void setCurrentConversionOptions( ConversionOptions *options ); private slots: void fadeAnim(); void abort(); void ok(); signals: void done( const KUrl::List& urls, ConversionOptions *options, const QString& command ); void saveFileList(); }; #endif ./soundkonverter-2.0.5/PaxHeaders.25599/config.h0000644000175000001440000000013212255306740017425 xustar000000000000000030 mtime=1387630048.397964084 30 atime=1387630048.397964084 30 ctime=1387631579.854402108 ./soundkonverter-2.0.5/config.h0000755000175000001440000001024612255306740017046 0ustar00danielusers00000000000000// // C++ Interface: config // #ifndef CONFIG_H #define CONFIG_H #include #include "pluginloader.h" #include "metadata/tagengine.h" #include "conversionoptionsmanager.h" #include "codecoptimizations.h" #include #define ConfigUpdateDelay 100 class Logger; /** @author Daniel Faust */ class Config : public QObject { Q_OBJECT public: struct CodecData { QString codecName; QStringList encoders; QStringList decoders; QStringList replaygain; }; struct ProfileData { QString fileName; QString profileName; QString pluginName; QString codecName; QDomDocument data; }; struct Data { struct General { int startTab; int lastTab; QString defaultProfile; QString lastProfile; // may be obsolete QString defaultFormat; QString lastFormat; int lastOutputDirectoryMode; QString specifyOutputDirectory; QString metaDataOutputDirectory; QString copyStructureOutputDirectory; QStringList lastMetaDataOutputDirectoryPaths; QStringList lastNormalOutputDirectoryPaths; // int priority; bool waitForAlbumGain; bool useVFATNames; bool writeLogFiles; enum ConflictHandling { NewFileName = 0, Skip = 1, Overwrite = 2 } conflictHandling; int numFiles; int numReplayGainFiles; // bool executeUserScript; // bool showToolBar; // int outputFilePermissions; QStringList actionMenuConvertMimeTypes; QStringList actionMenuReplayGainMimeTypes; enum ReplayGainGrouping { AlbumDirectory = 0, Album = 1, Directory = 2 } replayGainGrouping; QString preferredOggVorbisExtension; QString preferredVorbisCommentCommentTag; QString preferredVorbisCommentTrackTotalTag; QString preferredVorbisCommentDiscTotalTag; } general; struct Advanced { bool useSharedMemoryForTempFiles; int maxSizeForSharedMemoryTempFiles; // maximum file size for storing in shared memory [MiB] int sharedMemorySize; // the size of the tmpfs [MiB] bool usePipes; } advanced; struct CoverArt { int writeCovers; int writeCoverName; QString writeCoverDefaultName; } coverArt; struct Backends { QStringList rippers; QList codecs; QStringList filters; QStringList enabledFilters; } backends; struct BackendOptimizationsIgnoreList { QList optimizationList; } backendOptimizationsIgnoreList; struct App { int configVersion; } app; QMap profiles; } data; Config( Logger *_logger, QObject *parent ); ~Config(); void load(); void save(); /// returns a list of all working custom profiles QStringList customProfiles(); /// Check if new backends got installed and the backend settings can be optimized QList getOptimizations( bool includeIgnored = false ); PluginLoader *pluginLoader() { return pPluginLoader; } TagEngine *tagEngine() { return pTagEngine; } ConversionOptionsManager *conversionOptionsManager() { return pConversionOptionsManager; } public slots: /// Optimize backend settings according to the user input void doOptimizations( const QList& optimizationList ); signals: /// connected to logger void updateWriteLogFilesSetting( bool writeLogFiles ); private: Logger *logger; PluginLoader *pPluginLoader; TagEngine *pTagEngine; ConversionOptionsManager *pConversionOptionsManager; void writeServiceMenu(); }; #endif